{"version":3,"sources":["assets/img/edit-icon.png","biolabRequisitionFormConstant.js","api.js","assets/img/safecamp_BRAND.1-nobg.png","assets/img/pdf.svg","assets/img sync /^/.//.*/.png$","assets/img/05abfe0d-7717-46a9-8d02-05e8a2f48915.png","assets/img/2ce90d8b-daa3-4b3c-a685-6bec0dfecb43.png","assets/img/655f8008-f306-4052-a932-3f5622a39925.png","assets/img/6d8ec4ef-f634-4237-9984-c5b337e36546.png","assets/img/8cd1a74a-392c-4378-a8a0-15480ee37a1e.png","assets/img/9a41b680-4f5f-4914-a8f6-2229740dca0b.png","assets/img/Seroclinix.png","assets/img/active-programs.png","assets/img/b63c398e-dc3f-412c-871e-ad89a94ddb0e.png","assets/img/biolab_qr.png","assets/img/close-icon.png","assets/img/colab_white_logo.png","assets/img/female.png","assets/img/hide.png","assets/img/male.png","assets/img/mask.png","assets/img/more.png","assets/img/negative-test.png","assets/img/new_logo.png","assets/img/positive-test.png","assets/img/restore.png","assets/img/safecamp_BRAND.1-nobg-1.png","assets/img/safecamp_biolab.png","assets/img/thrive_1.png","assets/img/tick-white.png","assets/img/tim_80x80.png","assets/img/total-test.png","assets/img/tube.png","assets/img/venturedx_1.png","assets/img/venturedx_2.png","assets/img/video-camera.png","assets/img/view.png","store/features/authentication/authenticationSelectors.js","components/Phone/PhoneNoInput.js","components/Login/LoginUi.js","components/Login/MultiRole.js","components/Login/ResendOTP.js","components/Login/TwoFa.js","util/useLocalStorageState.js","components/Loader/Loader.js","assets/img/edit-icon.svg","context/app-context.js","components/RequisitionPDF.js","components/Message/ErrorMessage.js","assets/img/qr-code-rounded.svg","components/FullPageImageView.js","components/Image/ImageView.js","components/PDF.js","components/Modal/QuarantineModal.js","components/CustomReactSelect/ReactSelectCustomOptionContainer.js","store/features/testDictionary/testDictionarySelectors.js","components/Modal/ConfirmationModal.js","Date/SingleDatePicker.js","components/Input/ImageInput.js","countries.js","components/CheckBox/ViewCheckBox.js","components/EmployeeSearchRecord.js","components/AutoCompleteAddress.js","components/Modal/TestModal.js","assets/fonts/arial.ttf","assets/fonts/arial_bold.ttf","components/BioLabRequisitionPDF.js","components/BiolabPdf.js","components/AltaPdf.js","components/LabReportSisterPierrePdf.js","components/PDF/PDFLayout.js","components/RadioButton/RadioButton.js","components/RadioInput/RadioInput.js","components/CheckBox/FilledCheckBox/FilledCheckBox.js","components/CheckBoxInput/CheckBoxInput.js","views/Test.js","views/Hipaa.js","filterMappingConstant.js","store/features/providers/providersSelectors.js","components/SwitchToggle/SwitchToggle.js","components/RenderFilter.js","store/features/locations/locationsSelectors.js","assets/img/Filter-icon.svg","assets/img/Select-All-Icon.svg","assets/img/filter.svg","assets/img/Delete-Icon.svg","assets/img/window.svg","assets/img/Create-Employee-icon.svg","assets/img/bin.svg","assets/img/addUser.svg","assets/img/Load-Crew-Icon.svg","assets/img/UserInfo.svg","assets/img/Export-Excel-Icon.svg","assets/img/downloadXLS.svg","assets/img/Personalize-Icon.svg","assets/img/viewUser.svg","assets/img/Test-Now-icon.svg","assets/img/testUser.svg","assets/img/Assign-Zone-Icon.svg","assets/img/pinUser.svg","assets/img/Remove-Zone-Icon.svg","assets/img/pinCross.svg","assets/img/Acknowl-Positive-icon.svg","assets/img/tickMark.svg","assets/img/Send-Email-Icon.svg","assets/img/message.svg","assets/img/Send-QR-Icon.svg","assets/img/qr.svg","assets/img/groupByDepartment.svg","assets/img/groupByZone.svg","assets/img/endQuarantine.svg","assets/img/create.svg","assets/img/saveIcon.svg","assets/img/createBlue.svg","assets/img/import.svg","assets/img/download.svg","assets/img/generalCallTime.svg","assets/img/Show-All-Icon.svg","assets/img/show-archive.svg","assets/img/calendar-icon.svg","assets/img/restore-trash.svg","assets/img/printer.svg","assets/img/lab.svg","assets/img/submit.svg","assets/img/negative.svg","assets/img/results.svg","assets/img/pdf-file.svg","assets/img/qr_Icon.svg","assets/img/edit-icon-blue.svg","assets/img/calendar-date.svg","assets/img/downArrow.svg","assets/img/rightArrow.svg","components/Icon.js","views/TestTypeSetting/TestUnitSelector/CreateOptions.js","components/ImagePlaceHolder.js","components/InputField/InputField.js","views/TestTypeSetting/SpecimanContainer/SpecimanContainerModal.js","store/features/general/generalConstant.js","store/features/general/generalSlice.js","store/features/general/generalAction.js","store/features/testDictionary/testDictionarySlice.js","store/features/testDictionary/testDictionaryConstant.js","views/TestTypeSetting/useOptions.js","views/TestTypeSetting/TestTypeComponent/TestTypeSelect.js","store/features/insurances/insuranceSelectors.js","components/Filter.js","components/TimeFilter.js","components/Pagination/MFPagination.js","components/SortIcon.js","components/Table/HeaderItem.js","components/DropdownMenu/DropdownMenu.js","components/CheckBox/ViewOnlyCheckBox.js","views/GraphQL/ClientsView.js","components/SearchBar.js","components/Modal/LabBarCode.js","components/Labs/BarCodeAlert.js","views/TextEditor.js","components/Labs/LabModal.js","views/GraphQL/LabsView.js","components/TextAreaEditor.js","components/Modal/ContactInfo.js","components/Modal/TestTypeDurationModal.js","components/Modal/ChangeStatusModal.js","assets/img/logo.jpg","components/Table/TDNameWithDetail.js","assets/img/qr-code.svg","assets/img/qr-download.svg","components/Table/TDPreRegisteration.js","components/Table/TRData.js","components/FilterSelect.js","components/Table/Header.js","components/ExportToExcel.js","components/PDF/AllTestPDF.js","components/PDF/TestPDFLayout.js","components/SequenceNo.js","views/GraphQL/PendingReleaseTestListView.js","views/Upgrade.js","components/Users/MFUserModal.js","components/Users/UserPasswordModal.js","views/GraphQL/UsersView.js","views/ClientTests.js","components/Modal/TestSubmitResponse.js","components/Modal/TestSubmitModal.js","components/PopoverStick.js","components/TestLogsDetailView.js","components/Modal/DocumentPreviewModal.js","components/Modal/TestLogsModal.js","components/Modal/ChangeTestLabModal.js","components/useInitialRender.js","components/Modal/ImportResultModal.js","components/ResultStatus/ResultModal.js","components/Modal/EditAccessionNoModal.js","assets/img/times-circle.svg","components/Input/MultipleFileInput.js","views/Order/LoadOrdersModal.js","components/RedirectLink.js","store/features/resultsTests/resultsTestSlice.js","store/features/resultsTests/resultsTestConstant.js","store/features/resultsTests/resultsTestAction.js","store/features/resultsTests/resultsTestSelectors.js","components/Notes/Notes.js","constants/hooks/useResizeObserver.js","store/features/resultPdf/resultPdfConstant.js","store/features/resultPdf/reslutPdfSlice.js","views/GraphQL/TestListCompletedTest/ResultCell.js","components/Status.js","components/Table/TDStatus.js","components/Table/MainTable.js","components/Personalization/PersonalizationItem.js","components/Modal/personalizationModal.js","stringConstants.js","store/features/employees/employeesSlice.js","store/features/employees/employeesConstant.js","components/Notes/PreviousNotes.js","components/Notes/pendingOrderNoteModal.js","views/GraphQL/UnprocessedTestsApi.js","components/Tabs/TabPills.js","store/features/users/userSelectors.js","store/features/cptCodes/cptCodeSlice.js","store/features/cptCodes/cptCodeConstant.js","components/GeneralSettings/AddDiagnosisCodeSettingsModal.js","store/features/cptCodes/cptCodeSelectors.js","components/Pagination/PGPagination.js","store/features/companySetting/companySettingSelectors.js","views/GeneralSettings/DiagnosisCodeSettings.js","constants/personalization/InsPersonalization.js","services/InsuranceService.js","store/features/insurances/insuranceConstant.js","store/features/insurances/insuranceSlice.js","components/Input/InputGrid.js","components/Insurances/InsuranceModal.js","views/GeneralSettings/Insurances.js","store/features/subAgents/subAgentsSelectors.js","components/Modal/ProcedureImportModal.js","components/CurrencyInput.js","components/GeneralSettings/AddProcedureCodeSettingsModal.js","views/GeneralSettings/ProcedureCodeSettings.js","components/Users/userPermissions.js","components/Users/CreateUserRolesOptions.js","components/Users/UserRoleSelect.js","components/Users/WhiteLabelUserModal.js","components/Personalization/RenderTd.js","components/Users/RolesViewModal.js","views/GraphQL/UsersViewWhiteLabel.js","components/InputField/InputCPTCodeDropDown.js","views/LabClient/DefaultClientSettingModal.js","store/features/companySetting/companySettingConstants.js","store/features/companySetting/companySettingSlice.js","store/features/providers/providersContants.js","store/features/providers/providersSlice.js","store/features/locations/locationsSlice.js","store/features/locations/locationsConstants.js","components/Modal/ClientProviderModal.js","store/features/clientPcs/clientPcsAction.js","store/features/clientPcs/clientPcsConstant.js","api/defaultApi.js","api/saleApi.js","store/features/salePerson/salePersonAction.js","store/features/salePerson/salePersonConstant.js","store/features/salePerson/salePersonSelector.js","store/features/messageTemplate/messageTemplateSelectors.js","api/messageTemplateApi.js","store/features/messageTemplate/messageTemplateAction.js","store/features/messageTemplate/messageTemplateConstant.js","views/TestTypeSetting/TestPanels/TestTypeSelector.js","views/LabClient/LCTestModal.js","components/TabSettings/TabSettings.jsx","views/LabClient/PrinterSettingsModal.js","views/LabClient/BarcodeSettingModal.js","views/LabClient/LabClientModal.js","components/Modal/ImportErrorModal.js","components/Modal/LocationImportModal.js","components/Notes/NotesModal.js","views/LabClient/LabClient.js","components/Modal/Order/OrderImportModal.js","store/features/providers/providersActions.js","assets/img/search.svg","components/Modal/ProviderModal.js","views/Provider.js","views/TestTypeSetting/TestTypeComponent/AddResultDisclaimer.js","views/TestTypeSetting/TestTypeComponent/TestTypeInput.js","views/TestTypeSetting/TestTypeComponent/ResultDisclaimerSwitch.js","store/features/testAssay/testAssaySelector.js","views/TestTypeSetting/TestDetailsSelector.js","views/TestTypeSetting/TestTypeComponent/TestElementViewModal.js","views/TestTypeSetting/TestTypeComponent/TestElemensInput.js","components/CPT/CptList.js","views/TestTypeSetting/TestTypeComponent/TestIctOrCptSelector.js","views/TestTypeSetting/ProcedureCode/ProcedureCodeDetailView.js","views/TestTypeSetting/TestCptSelector/TestCptSelectorModal.js","views/TestTypeSetting/TestElementPositionModal/ElementPositionDraggableView.js","views/TestTypeSetting/TestElementPositionModal/TestElementPositionModal.js","views/TestTypeSetting/TestTypeComponent/TestTypeInputDate.js","views/TestTypeSetting/TestDetailsRangeView/RangeBacteriaSelector.js","views/TestTypeSetting/TestDetailsRangeView/TestDetailsRangeView.js","views/TestTypeSetting/TestDetailsRangeView/TestRangeModal.js","components/Modal/InputBadge.js","components/Modal/AddQuestionModal.js","views/TestTypeSetting/TestTypeModal.js","views/TestTypeSetting/TestInputField.js","views/TestTypeSetting/TestDetailsRangeView/TestCollapsibleMenu.js","views/TestTypeSetting/TestDetailsRangeView/TestDetailsRangeViewNew.js","views/TestTypeSetting/TestUnitSelector/TestSelector.js","views/TestTypeSetting/TestDetailsModal.js","store/features/testAssay/testAssaySlice.js","store/features/testAssay/testAssayConstant.js","views/TestTypeSetting/TestTypesSetting.js","views/TestTypeSetting/LabelIDSelector/CreateLabelOption.js","views/TestTypeSetting/TestElementModal.js","views/GeneralSettings/LoadTestPanels.js","views/TestTypeSetting/CancelledReasonModal/CancelledReasonModal.js","views/TestTypeSetting/CreateInstrumentModal/CreateInstrumentModal.js","views/GeneralSettings/TestDictionary.js","store/features/messageTemplate/messageTemplateSlice.js","views/MessageTemplate/MessageTemplateView.js","store/features/genericTestsView/genericModalSlice.js","views/GraphQL/RefernceLab/RefernceLabModal.js","views/GraphQL/RefernceLab/RefernceLab.js","views/TestTypeSetting/LabTestTypesSetting.js","constants/tabPillsContants.js","components/ExportToExcelData.js","components/Modal/ChangeResultModal.js","components/Modal/ChangeTestTypeModal.js","components/Modal/AppTestLogsModal.js","components/Modal/ChangeTestConfigModal.js","components/Modal/CalredieLogsModal.js","views/GraphQL/AdminTotalTestApi.js","components/Message/Message.js","views/GraphQL/DeleteTestApi.js","views/ExternelTestCrew.js","components/Input/ImageCropModal.js","components/TestView.js","components/CrewProfile.js","components/Modal/CreateTestLabModal.js","components/Modal/CreateTestDeliveryModal.js","components/PreRegister/StatsView.js","components/PreRegister/RegisterStepOne.js","components/PreRegister/QRCodeView.js","components/PreRegister/ShowSelection.js","views/RegisterCrew.js","components/Modal/OrderDetailModal.js","components/Modal/VaccinationDetailModal.js","views/RegisterCrewManual.js","views/PreRegistrationView.js","views/GenericPreRegistration.js","components/PDF/EmployeePDFLayout.js","components/Table/ProfileHeader.js","components/CrewProfile/ProfileTableHeader.js","components/CrewProfile/ProfileTableItem.js","components/Modal/EmployeeCrewProfileLogsModal.js","components/Modal/EmployeeCrewProfileMergedLogsModal.js","views/GraphQL/ProfilesView.js","components/EmployeeLogsEntries.js","components/EmployeeLogs.js","views/Patient/ProfileRelationListItem.js","views/Patient/RelationView.js","store/features/employees/employeesSelectors.js","views/Patient/ProfileRelationModalOnModal.js","components/Profile/RelationView.js","views/ProfileEmployeeTest.js","components/CloseButton/CloseButton.js","components/CheckBox/FilledCheckBox/MultiInlineCheckBox.js","views/GraphQL/SitesView.js","components/Modal/ReportDataModal.js","views/GraphQL/TestListCompletedTest/TestListAdminApi.js","routes/adminRoutes.js","views/GraphQL/TableListApi.js","views/GraphQL/ProcessedTestListApi.js","routes/labRoutes.js","store/features/clients/clientsSlice.js","store/features/clients/clientsConstant.js","store/features/eligibilityFile/eligibilityFileSlice.js","store/features/eligibilityFile/eligibilityFileConstant.js","store/features/subAgents/subAgentsSlice.js","store/features/subAgents/subAgentsContants.js","store/features/users/userSlice.js","store/features/users/userConstants.js","store/features/users/userAction.js","store/features/authentication/authenticationConstant.js","store/features/authentication/authenticationSlice.js","components/Login/ForgotpassUi.js","components/Login/SendOTPUi.js","components/Login/Login.js","assets/img/sidebar-3.jpg","components/IdleModal.js","components/Modal/Eligibility/PlanItem.js","components/Modal/Eligibility/PayerInformation.js","components/Modal/Eligibility/EligibitlityDetailsCollapsableTable.js","components/Modal/Eligibility/Common.js","components/Modal/Eligibility/HealthBenefitTabularForm.js","components/Modal/Eligibility/EligibilitySearchRecord.js","components/Modal/Eligibility/EligibilityDetailsModal.js","components/Modal/ImportFileStatusModal.js","components/Modal/PatientImportErrorModal.js","assets/img/plusAdd.svg","assets/img/file-icon.svg","components/Input/FileInput.js","components/DropdownMenu/EditableDropdown.js","components/Document/DocumentForm.js","components/Document/DocumentList.js","components/Patient/InsuranceDetailsModal.js","components/Patient/InsuranceViewCard.js","components/Modal/PatientProfileModal.js","components/ProgressBar/ProgressBar.js","components/Navbars/AdminNavbar.js","components/Notes/TestNoteModal.js","store/features/general/generalSelectors.js","components/MainTableInputBox/MainTableInputBox.js","assets/img/info-icon.svg","components/Patient/TestConfirmationModal.js","components/Patient/TestDoneModal.js","components/Result/ResultViewModal.js","components/Sidebar/Sidebar.js","components/TestSchedule/TestScheduleModal.js","components/TestSchedule/Items/DateItem.js","components/TestSchedule/EventBar.js","components/GlobalSearch.js","components/TestSchedule/SideListBar.js","components/TestSchedule/UpComingScheduleModal.js","graphql/subscriptions.js","views/Test/Columns.js","components/BarCode/LabBarCode.js","components/AutoFocusInput/AutoFocusInput.js","views/Order/OrderAdditionalQuestionView.js","views/TestDetails.js","components/Hipaa/Modal/EmployeeModal.js","views/Archive/archivePersonalization.js","views/GraphQL/PatientView.js","components/Provider/ProviderSearchRecord.js","components/Provider/ProviderModal.js","views/PatientProfile.js","views/Order/OrderView.js","routes/HSRoutes.js","routes/labAdminRoutes.js","routes/LabTechRoutes.js","store/features/checkEligibility/checkEligibilitySlice.js","store/features/checkEligibility/checkEligibilityConstant.js","store/features/checkEligibility/checkEligibilitySelectors.js","routes/WhiteLabellabRoutes.js","views/DashboardCharts/DashboardLineChart.js","views/DashboardCharts/DashboardPieChart.js","views/DashboardCharts/DashboardBarChart.js","views/DashboardCharts/DashboardDougnutChart.js","assets/img/icon1.svg","assets/img/plus.svg","assets/img/minus.svg","views/DashboardCharts/DashboardChartTotalTestsData.js","views/DashboardCharts/DashboardChartsTableData.js","views/DashboardCharts/AdminDashboard.js","views/DashboardCharts/ClientsDashboard.js","views/DashboardCharts/LabDashboard.js","views/TestTypeSetting/TestDiagnosisView/DiagnosisAccordionButton.js","views/TestTypeSetting/TestDiagnosisView/DiagnosisAccordionView.js","views/Order/CreateTestItem.js","views/Order/CreateTestHeader.js","views/Order/CreateOrderTest.js","components/SignaturePad/SignaturePad.js","views/Order/OrderTestSelector.js","views/Order/OrderDiagnosisView.js","views/Order/SourceSiteModal.js","views/Order/OrderTestModal.js","components/Test/TestSelectionModal.js","components/ShowAlertMessage.js","components/Modal/AssignResultsTestModal.js","components/BioLabBiologicalPDF.js","components/Modal/RequisitionForm/RequisitionFormViewModal.js","util/printPdf.js","components/Patient/ShowPrintOptions.js","views/MessageTemplate/MessageTemplateModal.js","components/GlobalActionsComponent.js","views/Order/TestAssociatedViewModal.js","views/TestTypeSetting/TestPanels/GenericPanelTestView.js","store/features/genericTestsView/genericTestViewSelector.js","views/TestTypeSetting/TestPanels/GenericPathogenView.js","components/Modal/PanelResultModal.js","store/features/resultPdf/resultPdfSelector.js","components/Result/ResultUploadModal.js","util/dymoXmls.js","util/xmlParser.js","util/printUtil.js","views/Archive/ArchiveModal.js","components/Modal/QuestionnaireTable.js","views/SupportView.js","layouts/AdminNew.js","util/useIdleTimerHook.js","views/PreRegister.js","components/QRLinkView.js","views/GraphQL/TableListApiNew.js","views/GraphQL/ProcessedTestListApiNew.js","routes/labRoutesNew.js","components/Sidebar/LabSidebarNew.js","layouts/LabNew.js","views/CrewQRCode.js","components/Modal/ImportTestDoneModal.js","views/GraphQL/TotalTestApiNew.js","views/GraphQL/PositiveTestApiNew.js","components/Modal/QuarantineDetailsModal.js","views/QuarantineNew.js","components/Modal/ImportCrewPhoneModal.js","components/ExportCrewToExcel.js","components/Modal/EmployeeDemoChange.js","views/GraphQL/HSCrewNew.js","routes/HSRoutesNew.js","components/SitePDF.js","components/Sidebar/SiteSideBarNew.js","views/DashboardCharts/HSDashboard.js","layouts/SiteNew.js","components/Hipaa/component/HipaaRegisterStepOne.js","constants/hippaquestion.js","components/Hipaa/component/QuestionAndAnswerForm.js","components/Hipaa/component/HipaaCertficate.js","components/Hipaa/component/VideoPlayer.js","views/Hipaa/HipaaTest.js","store/features/dashboard/dashboardConstant.js","store/features/dashboard/dashboardSlice.js","store/features/employeeClaims/employeeClaimsConstant.js","store/features/employeeClaims/employeeClaimsSlice.js","store/middlewares/errorMiddleware.js","store/features/documents/documentConstant.js","store/middlewares/loaderMiddleware.js","store/features/employeeLogs/employeeLogsSlice.js","store/features/employeeLogs/employeeLogsConstant.js","store/features/documents/documentSlice.js","store/features/claimInvoice/claimInvoiceSlice.js","store/features/claimInvoice/claimInvoiceConstants.js","store/features/invoiceDocuments/invoiceDocumentSlice.js","store/features/invoiceDocuments/invoiceDocumentConstant.js","store/features/bulkInvoices/bulkInvoicesAction.js","store/features/bulkInvoices/bulkInvoicesConstant.js","store/features/bulkInvoices/bulkInvoicesSlice.js","store/features/processPayment/processPaymentSlice.js","store/features/processPayment/processPaymentConstant.js","store/features/invoicePreview/invoicePreviewAction.js","store/features/invoicePreview/invoicePreviewConstant.js","store/features/invoicePreview/invoicePreviewSlice.js","store/features/clientPcs/clientPcsSlice.js","store/features/salePerson/salePersonSlice.js","store/store.js","views/PreRegisterWhitelabel.js","App.js","index.js","models/index.js","models/schema.js","components/CheckBox/FilledCheckBox/FilledCheckBox.module.css","assets/img/dots.png","assets/img/co_lab-1.png","util/rangeUtil.js","graphql/queries.js","components/CheckBox/ViewCheckBox.module.css","components/CheckBox/ViewOnlyCheckBox.module.css","assets/img/trash-icon.png","views/GraphQL/gqApi.js","assets/img/eye-open-icon.png","assets/img/eye-not-open-icon.png","assets/img/medflow_icon.png","components/InputField/InputStyle.module.css","constants/endpoints.js","assets/img/3eaf991b-b876-4897-8e39-47aef2247dcd.png","assets/img/patient_portal.png","assets/img/settings-garage.png","assets/img/MedFlow-Alpha-LIS.png","assets/img/reactlogo.png","assets/img/biolab_mobile_qr.png","constants/personalization.js","assets/img/default-avatar.png","assets/img/save-icon.png","assets/img/cancel-icon.png","assets/img/user-profile.png","aws-exports.js","util/customLodash.js","assets/img/imagePlcaholder.png","assets/img/biolab_mobile.png","assets/img/safecamp_biolab_1.png","assets/img/phone-svgrepo-com.png","assets/img/envelope-mail-mobile-ui-svgrepo-com.png","assets/img/globe-alt-svgrepo-com.png","assets/img/marker-pin-01-svgrepo-com.png","assets/img/reject-icon.png","assets/img/comment.png","assets/img/range.png","assets/img/roles.png","assets/img/report.png","assets/img/viewreport.png","assets/img/file-icon.png","assets/img/file-icon-gray.png","assets/img/download-black.png","assets/img/chart-simple-solid.png","assets/img/green-tick-icon.png","components/CloseButton/CloseButton.module.css","assets/img/thrive.png","assets/img/venturedx.png","constant.js","assets/img/login_logo.png","assets/img/alta.png","assets/img/employee-icon.png","utils.js","components/Status/Status.js","assets/img/default_profile.png","assets/img/black-check-tick-icon.png","assets/img/tick-icon.png","graphQLApi.js","graphql/mutations.js"],"names":["PROFILE_REQUESTED","internalCode","title","type","INDIVIDUAL_REQUESTED","sub","sub1","MICROBIOLOGY","key","MICROBIOLOGY_CEROCLINIX","CYTOLOGY","BIOPSY","PRESUMPTIVE_ELIGIBILITY","mime","require","PRE_REGISTER_URL","LIVE","DEV","apiName","publicApiName","callAPIPost","path","payload","Auth","currentSession","getAccessToken","getJwtToken","Authorization","clientID","CONFIG","params","headers","body","API","post","getClients","DataStore","query","Client","Predicates","ALL","sort","s","name","SortDirection","ASCENDING","models","exportClamDataToExcel","claimObj","callAmplifyAPI","console","error","getResultClients","client","resultType","getClientById","id","getTestGraphQL","filter","graphQLApi","getTestGQL","employees","getEmployeeGraphQl","getEmployeeGQL","getEmployeeByIdGraphQl","getEmployeeByIdGQl","employee","deleteEmployeeGQL","siteID","ids","updateEmployeeGraphQL","employeeData","first","last","dob","moment","format","id_number","email","sex","phone_number","countryCode","street","street2","city","state","zip","profileImage","vaccinationCardImage","externalTestImage","_version","updateEmployeeGQL","updateEmp","getCurrentUser","currentAuthenticatedUser","bypassCache","response","role","medFlowInLocalStorage","get","attributes","roles","signInUserSession","accessToken","connectedID","providerID","isAdmin","this","some","isLab","isUser","length","isSite","isClient","log","clear","getAllUsers","Employee","getCptData","codes","signIn","username","password","getLabs","Lab","getLabsWithTests","labs","promises","map","model","i","findTestsByLab","tests","push","Promise","all","then","getLabByID","labID","lab","createSite","newSite","loginUser","userName","firstName","lastName","save","Site","contactName","contact_name","contact","phone","contact_email","user_id","userID","antigen","automateTestType","insurance_required","startDate","endDate","orderKitDate","toISOString","orderKitType","enableShipment","orderQuantity","sendInsuranceCard","resetTestDay","showOnSummaryScreen","messageTested","messageResulted","messagePositive","isArchive","isActive","vaccinationCard","externalTest","externalTestAdmit","externalTestType","admit","patternTesting","patternHippa","preRegistration","messageReTest","JSON","stringify","isHRPR","isPCRCustody","sendIdentification","sendExternalRequisition","sendPrescription","sendAuthorization","sendOtherDocuments","isAutoSubmitClaim","isTesting","status","zipcode","safeCampAdmin","setting","practiceID","fax","contact_fax","createdBy","createdByName","updatedByName","discount","commission","siteType","localSiteObject","site","deleteUploadRequest","user","UploadRequestMain","record","dbRequest","copyOf","updated","version","message","clearUploadRequest","delete","clearUploadSubRequest","UploadRequest","clearOrder","Order","order","fetchUploadRequest","twentyMinutesAgo","Date","now","createdAt","sites","getUploadRequestBYReqID","Items","Id","requestID","updateUploadRequest","results","data","fileData","eligibiltyStatus","error_mesg","Object","assign","eligibility","eligibilityMessage","patientCreated","orderCreated","empID","getSites","or","allowSites","f","includes","connectedIDInLocalStorage","getSitesWithTests","findTestsBySite","resp","getShows","getSitesByClient","getSitesByUser","getUserSiteData","getUserSites","allSites","show_contacts","findSiteByID","createUploadResult","param","fileName","filesStatus","fileType","orderDate","uploadCallType","res","getEmployeeByID","employeeID","test","mdID","getEmployeeTestCount","Test","getEmployeeLastShow","DESC","site_name","createEmployee","demographics","phoneNumber","emp","buildAWSDate","idNumber","preRegisterEmployee","env","replaceAll","encodeURIComponent","isVaccinated","appPackage","axios","notification","getPreRegisterByPhone","showId","preRegisterNewEmployee","isVaccinationInfoEnable","step","country","vaccinationType","vaccinationFirstDate","vaccinationFirstLocation","vaccineCardFile","vaccinationSecondDate","vaccinationSecondLocation","isBooster","boosterType","boosterDate","boosterLocation","isExternalTest","externalTestDate","externalTestResult","externalFile","requestTestKit","order_phone","testSend","testSendQty","capacity","designation","reorder","getPregRegistrationPhoneData","hipaaTestSearch","testKey","rows","getHipaaEmployeeList","UpdateHipaaTestAns","answers","UpdateHipaaTestComplete","preRegisterClientShows","preRegisterShowData","createTest","cloneSequence","sequenceNo","dbEmp","demo","insurance_name","insurance_number","gender","whiteGlove","barcode","batch","beenTimed","clientName","createSource","done","emailSend","employee_demographics","expired","isAntigen","isFalsePositive","isLucira","labName","owner","referenceID","sr_no","startTimeStamp","submittedBy","submittedByName","test_number","test_type","testerPhone","tester_name","timerStatus","createClient","newClient","fax_number","whiteLabel","whiteLabelPackage","createLab","newLab","newUserID","city_state_zip","lab_director","testing_notes","clia_number","referredDoctor","default_antigen","default_molecular","default_other","default_rapidflu","default_lucira","tubes_provided","sendInsurance","invalid_notes","indeterminate_notes","logo","barCodeProvided","barCodeAlertLimit","antigen_notes","molecular_notes","other_notes","lucira_notes","rapidflu_notes","custom_notes","pendingRelease","deleteClient","deleteLab","deleteSite","deleteEmployee","e","getTests","DESCENDING","getCompletedTests","result","getExternalTest","ExternalTest","getTotalAdminTests","getPendingTests","getUnSubmittedTest","getUnprocessedTests","getAllEmployees","submitUnprocessedTests","testsByLab","allTests","labData","concat","t","formatTests","formattedTests","bucket","Storage","put","forEach","testObj","saveFileSendToLab","envType","getDocuments","Documents","doc","fetchDocumentAPI","obj","testID","newDocumentCreateAPI","list","updateDocumentAPI","docType","docLabel","fileSize","notes","updatedBy","deleteDocumentAPI","del","fetchSignature","url","download","contentType","fileUrl","fetch","ok","Error","statusText","blob","resolve","reject","reader","FileReader","onloadend","onerror","readAsDataURL","base64String","saveImageFile","file","bucketName","uniqueId","uuidv4","extension","toLowerCase","split","pop","File","uploadOptions","getImageFile","filePath","image","saveDocumentFile","fileContent","BUCKET_EXTERNAL_IMAGES","saveResultFile","isLive","saveTemplateFile","jsonData","uploadPDFTemplate","saveOrderFileIntoBucket","ext","maxRetries","attempt","progressCallback","event","errorCallback","err","completeCallback","saveOrdersFiles","searchCptCode","searchICTCode","reSubmitUnprocessedTests","toString","toLocaleString","timeZone","substring","replace","formatLencoCSV","formatAllianceCSV","formatBiolabCSV","formatSunriseCSV","formatLifebriteCSV","formatAltaCSV","formatNewDiscoveryCSV","formatDLSCSV","formatOxygenCSV","toISOLocal","d","z","n","slice","off","getTimezoneOffset","sign","Math","abs","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","parseDateOfBirth","dateFormat","indexOf","parseDateOfBirthLenco","parse","Provider_ID","patientFirst","patientLast","patientDOB","patientGender","address1","addressCity","addressState","addressZip","emailAddress","patientPhone","Accession","collection_date","jsonToCSV","client_id","date_created","first_name","last_name","address_street","address_city","address_state","address_zip","reference_id","formatBioBillingCSV","filteredTests","uniqueSites","Set","siteToProviderMap","promiseArray","getDefaultProvider","defaultProvider","allSettled","accession_no","dos","payer_id","insuranceCompanyCode","ref_phy","ref_npi","npi","ict_code","isEligible","formatBiolabGenCSV","siteRecord","phy_npi","phy_first_name","phy_last_name","sample_type","swabtype","testPushed","test_code","PatientFirstName","PatientMiddleName","PatientLastName","PatientGender","Address1","Address2","AddressCity","AddressState","AddressZip","EmailAddress","PatientPhone","UniqueID","AccessionOrderID","TestkitID","Covid19TestCode","SpecimenSource","CollectionDateTime","OrderingPhysician","Race","Ethnicity","FirstCovidTest","HealthCareWorker","CovidSymptomatic","SymptomOnsetDate","CovidHospitalized","InICU","CongregateCareSetting","Pregnant","accession_number","requisition_number","date","time","clinic_id","patient_dob","patient_gender","patient_phone","patient_email","patient_ethnicity_code","patient_race_code","provider_first_name","provider_last_name","provider_npi","provider_phone_number","specimen_type","panel_type","getCurrentLabUserTests","l","lab_contacts","getAllCurrentLabUserTests","getCurrentLabUserProcessedTests","filterLab","formatTest","TEST_STATUS","Processed","getPendingReleaseTests","updatedAt","sendToLab","findTestByID","findTestByBarcode","byId","findExternalTestByID","sortModelData","a","b","localeCompare","getTestTypes","category","condition","TestTypes","getPanels","getPanelsAndTests","getTestTypesOptions","and","c","code","isSelected","clinicalcomment","sources","cptCodes","ictCodes","label","value","getTestTypesForFilter","getTestTypesByName","getTestTypesByID","addTestTypes","typeOfTest","targetRanges","units","refInterval","minValue","maxValue","lonicCode","isAssociatedPanel","isARKStone","isPanelOnly","location","ranges","sampleContainer","updateTestTypes","items","totalTime","firstAlert","secondAlert","duration","parseInt","archiveTestType","updateTestPathegon","updateTestFalsePositive","findTestsByClient","releaseTest","setFalsePositiveTest","changeBatchStatusToProcessing","processingTests","ttl","fetchAllUsersInGroup","groupName","NextToken","users","groupname","limit","token","myInit","queryStringParameters","Users","restoreTests","errorIds","fetchAllCrewMembers","fetchAllEmployees","fetchUsersInGroup","fetchAllUsers","changeUserRole","prevRole","newRole","prevRoleAlias","alert","addUserToGroup","confirmUserSignUp","updateUserInfo","note","show","infoUpdated","updateUserInfoV1","rolesData","noteArr","labPrivilege","HEALTH_AND_SAFTEY","join","USER_ROLE_TYPE","LabTech","undefined","isWhiteLabel","whiteLabelID","associated","userRole","systemUser","is2FaEnabled","userPermission","provider","updateUserInfoV2","updateUserSecondRole","adRole","updateUserPassword","updatePatientPassword","verifyOtp","otp","resendOtp","deleteUser","sendSMSNotification","AWS_ENDPOINT","updateClientsHippa","newHippa","hippa","hippaFile","updateSiteHippa","emptySiteUpdateStatus","uploadFileStatus","updateClient","updateProviderClient","pId","cId","cid","updateClientResultTypes","resultTypes","updateSite","contact_phone","callAmplifyAPIPut","updateSiteArchive","updateLabArchive","updateClientArchive","addUserToSite","updatedSite","removeUserToSite","lc","addUserToLab","removeUserToLab","prevLab","updateLab","updateLabBarCodes","barCodeData","row","LencoBarcodes","available","getLabBarCodes","updateLabLogo","updateBarCodeAlert","val","resetDefaultLab","patientUpdateAPI","Tests","dobFromID","awsdob","findHippaConsent","TestConsent","deleteWrongTest","updateDemographics","crew","demos","updateCrewInfo","getTestByIdGraphQl","getTestByIdGQL","getTestBySequenceGraphQl","updateCompleteCrewInfoV1","TestData","appVer","baseSiteID","utc","invalidResultStatus","labelPrinted","patternTestAnswer","pcrStatus","schrID","schrTestID","testTypeID","timezone","SYSTEM_TIME_ZONE","resultDate","graphql","mutations","variables","input","updatedTest","FormatAWSDate","autoRelease","updateTest","updateCompleteCrewInfo","props","isConfirm","chngObj","prevTestType","testDemo","formatTestDemo","resultDateTime","testerID","releaseDate","verifiedBy","verifiedByName","StampByName","scanByLabUserID","scanByLabUserName","parseSrNoObject","sendToID","sendToName","county","employeeType","orderID","prevID","newID","updateEmployeeProfile","insuranceDetails","medicalNo","primaryCarePhysician","referringPyhsician","renderingProvider","referringProvider","orderingProvider","sendSMS","sendEmail","updatedCrew","updateEmployee","updateEmployeeRecord","getRecordById","updateTestData","updateTestingGQL","dbTest","srNo","add","updateTestFromOrder","getPhoneNo","phoneNo","newObj","arr","er","updateBarcodeNumber","appContext","addTestLogs","oldValue","newValue","slug","updateTestRecord","updateTestDataV1","searchProviderAPI","sendEmailToCrew","isPortalCall","sendInvitationEmail","getTestAutoNumber","counterData","getTestFromAPi","getTestFromAPiQueryString","fetchTestFromByClientID","getPreRegisterData","scanType","onlyEmployee","deletePreRegistration","getTestListFromApi","siteid","apiRes","_delete","getTestLogs","getOrderLogs","getLogs","getPatientLogs","getAppTestLogs","getAdminTestList","nextPage","siteKey","siteIndex","LastEvaluatedKey","Item","getPRRecordById","getShowPreRegistration","getExternalTestList","addLogs","addTestAppLogs","getSettingForApp","getTestFromApi","saveUserPersonalisation","personalisationData","personalisation","getUserPersonalisation","updateEmailStatus","updateTestResult","RESULT_VALUE","StampBy","updateSiteStatus","subject","msg","updateTestForTest","labOrderDetail","updateTestLabOnly","updateTestLab","submitToLab","updateTestClientLab","updateExpiredTestResult","updateTestType","updateQuarantineData","quarantinedStart","quarantinedEnd","getExpiredTest","getPositiveTests","UpdateEndQuarantine","getTodaysTest","subtract","startOf","endOf","deleteUserLinkFromEmployee","subID","hrCheckIn","checkIn","getClientShowByApi","archiveOrder","archiveAllOrder","saveFileExternalStorage","saveFileCalredieImg","uploadFileCalredieCsv","getFileExternalBlob","mimeType","lookup","Blob","Body","getFileExternalStorage","getFileProfileStorage","profilePath","cloneTest","getTestListFromPG","statusNew","statusPending","clientIDInLocalStorage","apiParams","exportToCalRedieData","getEmployeeListFromPG","employeDOB","getHipaaEmployeeListFromPG","getOrderListFromPG","getOrderTestList","getOrderListThroughEmpID","empId","getPreRegistrationData","getSummaryFromPG","updateTestStatus","getTestBySequenceNo","num","getEmployees","downloadcsv","setList","text","readString","header","worker","complete","downloadEmployeeCSV","downloadPdf","fileURL","window","URL","createObjectURL","alink","document","createElement","href","click","downloadEmployeePdf","getLabProvidedBarCode","updateTestEmployeeData","getShipBobOrderDetails","shipments","tracking","tracking_url","getPreRegistrationOrderLog","addTestResult","prTestCreation","getCompanyZone","getProfileUpdateLogs","getPRPCRTest","getPGEmployeeData","deleteDuplicateEmployee","empObj","primary_id","deleted_id","getTestByID","getTestByEmployee","mainCrewListing","getEmployeeZoneSchedule","programID","addEmployeeRoles","addEmployee","isUserExistsInDB","updateEmployeeRoles","getEmployeeRoles","getUserFromLocalDB","u","ADMIN_USER","removeWhitespaceAndParentheses","addMultipleUserToGroup","removeMultipleUserFromGroup","g","updateExternalTest","testNow","isDone","scheduleCategory","externalTestFile","deleteLogRecord","changeTestType","confirmEmployeeAccount","getEmployeesTests","createHREmployee","companyID","programName","department","hrEmployeeListing","employeeByIds","getProxyContactData","relations","deleteTestwithHRid","proxyContant","medflowDomain","showID","isCheck","lastUsed","isHospice","errors","proxyContantFromPatient","middleName","previousSiteID","snf","isInsHousing","externalID","customID","eligibilityResponse","errorMessage","searchEmployee","requiredExternalTest","savePreRegistration","recordId","showName","clientId","rStep","labid","insurancesList","checkEligibility","fdos","basename","assignedTestSchedule","employeeIds","detail","dateOfTest","testDate","testType","removeTestSchedule","uploadPatientTestSchedule","acknowledgedPositiveTest","importLabClient","getTodayScheduleTests","resetTestSchedule","upComingSchedule","resApi","objToUpdate","payerList","splitReqForm","downloadRequisitionForm","downloadRequisitionZip","options","size","appendChild","removeChild","revokeObjectURL","getPaymentIntent","amount","payment_methods","exportOrder","getClientInsurances","getTestSources","assingTestResult","addSources","createMulipleTests","createEmployeeTests","createBulkTestFromOrder","createPatientUser","callAmplifyAPIWithError","invoicesPDF","getTestsDetails","searchKey","createTestsDetails","createBulkTestsDetails","updateTestsDetails","getConnectedProfiles","updateRelations","manageEmployeeRelation","getMultipleTests","getEligibilityFile","getCompanySetting","getCptWithTests","getGeneralSetting","settingType","GeneralSettingType","createOption","optionValue","valueField","config","settingTypeConfig","source","labelField","additionalFields","cancelled","default","dataToSave","valueToSearch","field","newOption","createRolesOption","optionData","permission","option","isClientRole","clientBaseRole","access","updateRolesOption","existingOption","dataToUpdate","TEST_SETTING_TYPES","ROLE","updatedOption","updateOptions","keyName","unit","changeLog","newResult","oldResult","logObj","changeObject","deleteOption","deletedOption","createTestLabel","TEST_LABEL","updateTestLabel","updateInstrument","INSTRUMENT","platform","instrument","updateSpecimanContainer","SPECIMEN_CONTAINER","createSpecimanContainer","createInstrument","createResultOptions","OPTIONS","updateResultOptions","getAllGeneralSetting","getEligibilityList","createMessagesTemplate","updateMessagesTemplate","deleteMessagesTemplate","getMessagetTemplate","updateTestNames","createTestPanel","getTestPanel","getTestResultDetails","fetchTestDetail","deleteTestAssay","deletedItems","testsList","deletePanels","ordertestUpdate","changesTestStatus","testData","restoreOrders","canelTests","resendToARKStone","updateOrderTestStatus","acknwoledgedOrder","cancelOrder","orders","receiveTests","saveSignatureFile","signatureURL","metadata","content","Buffer","from","deleteSignatureFile","remove","deleteImageFile","webpackContext","req","webpackContextResolve","__webpack_require__","o","keys","module","exports","selectLoginUser","auth","userGivenPermission","selectLab","selectCountryCode","selectClient","clientData","getDefaultCountryCode","labCountryCode","PhoneNoInput","handleChange","disabled","cssClass","cssCode","useSelector","useState","defaultCountryCode","setDefaultCountryCode","useEffect","validatePhone","isPossiblePhoneNumber","parsePhoneNumber","international","countryCallingCodeEditable","className","defaultCountry","placeholder","onChange","LoginUi","setPhone","setPassword","handleKeyDownEvent","disableBtn","handleSubmit","handleSendOTPUi","showPassword","setShowPassword","minLength","onKeyDown","target","onClick","style","position","right","top","transform","cursor","width","height","src","viewIcon","alt","hideIcon","marginTop","textAlign","fontSize","MultiRole","handleRoleSelection","setError","selectedRole","setSelectedRole","PORTAL_TITLE","Labs","LabTechs","Employer","Employers","Clients","index","htmlFor","optLabel","setTimeout","ResendOTP","setTwoFaError","setLoading","showResend","setShowResend","timer","clearTimeout","handleResendOtp","api","TwoFa","goToPortal","setTwoFa","inputRefs","useRef","createRef","Array","fill","digits","setDigits","handelOtpVerification","history","useHistory","twoFaError","current","focus","verified","formatTwoFaErrorMessage","backToLogin","signOut","showsInSS","onConfirm","_","ref","el","maxLength","newDigits","onKeyUp","handleKeyUp","margin","useLocalStorageState","defaultValue","storedValue","localStorage","getItem","setState","setItem","Loader","left","zIndex","flex","alignItems","justifyContent","AppContext","createContext","styles","StyleSheet","create","page","backgroundColor","paddingVertical","paddingHorizontal","infoText","patientInfo","flexDirection","infoCol","hr","borderLeftColor","borderLeftWidth","address","marginLeft","marginVertical","RequisitionPDF","signature","labInfo","setLabInfo","labModel","today","borderWidth","padding","bottom","color","fontWeight","formatPhoneNumber","logoSrc","objectFit","borderBottomWidth","formatDateOfBirthDOB","formatDateMDY","borderColor","borderBottomStyle","marginRight","lineHeight","alignSelf","borderRightWidth","marginHorizontal","uri","Pragma","toDateString","ErrorMessage","FullImageView","handleClose","allowRotate","onClose","ImageView","imgSrc","crewProfile","showImage","setShowImage","fullView","setFullView","FullPageImageView","onError","imagePlaceholder","paddingTop","paddingBottom","infoTextRightBorder","fontStyle","italicText","pageNumbers","infoHeader","borderRightColor","borderBottomColor","hrTwo","waterMark","opacity","background","PDF","testsLab","parseTestResultForPDF","getDemoGraphics","fixed","logoImage","marginBottom","formatPDFName","getAge","borderRight","fontFamily","disclaimerKey","TEST_TYPE_DISCLAIMER_KEY","getLabDisclaimer","display","currentDate","render","pageNumber","totalPages","QuarantineModal","handleSave","setStartDate","setEndDate","Modal","animation","onHide","paddingLeft","centered","Header","closeButton","Title","formatQuaratineDate","Footer","Button","variant","isBefore","ReactSelectCustomOption","customStyle","Option","children","ReactSelectCustomContainer","values","isArray","MultiValueContainer","ValueContainer","checked","preventDefault","customStyles","provided","valueContainer","whiteSpace","overflow","textOverflow","flexWrap","multiValue","maxWidth","multiValueLabel","generalSettings","settings","associatedPanelSelector","associatedPanelData","ConfirmationModal","handleConfirm","isPreRegister","selectedOptions","handleOptions","isSelectOptions","reasonObj","cancelTestData","actionType","setValue","generalSettingsData","CANCEL_REASON_OPTIONS","useMemo","item","blurInputOnSelect","menuPlacement","setCancelTestsData","preDefineReason","components","reason","SingleDatePicker","onApply","onCancel","initialSettings","singleDatePicker","showDropdowns","autoUpdateInput","autoApply","maxDate","readOnly","ImageInput","selectedImage","setSelectedImage","showCropDialog","setCopyImage","cameraIcon","setImage","useContext","inputFile","handleImageClick","onChangeImage","currentTarget","files","isValidFile","Compressor","quality","convertSize","success","compressedResult","onMouseLeave","onMouseOver","accept","ViewCheckBox","bgColor","Styles","checkboxCustom","red","blue","yellow","orange","green","getColor","checkboxCustomLabel","EmployeeSearchRecord","handleSelect","setSelectSearchData","selectSearchdata","TableRow","formatDOB","scrollable","Row","Col","md","Card","Table","fields","strictBounds","types","AutoCompleteAddress","setAddress","apiKey","process","REACT_GOOGLE_API_KEY","onPlaceSelected","place","postcode","address_components","curr","long_name","short_name","isoCode","trim","handleAddressUpdate","getValidName","TestModal","newTestCreate","handleCloseCreateTest","setTestCreate","clients","isNew","loading","recordData","setRecordData","showPopOver","setShowPopOver","setShow","disableVaccination","setDisabledVaccination","onSelectedCreateTestType","setOnSelectedCreateTestType","onSelectedTester","setOnSelectedTester","setResultTypes","childNode","setLabs","testOptions","setTestOptions","loadTestOptions","getSiteOptions","find","sortByAlphaOrder","m","UN_RESULT","usersData","updates","baseSite","prev","formatPhoneWithOutSpaces","searchPreReg","cc","ph","populate","toTitleCase","fetchFrom","ccCode","phno","countryListAllIsoData","formatDoBForDemo","testerDes","onHandleSave","newTestObj","cloneDeep","isValidName","isValidEmail","isValidDobField","isSame","isBetween","isValidPhoneWithCode","isValidIdNum","zipCodeValidationUS","stringConstant","GQAPI","getTestBySequenceNoByAPI","sequenceData","makeBarcode","getLabTestAutoNumber","newSequenceNo","dailyCounter","counter","flexShrink","makeAlphabetInput","convertToLower","min","max","flag","addressObj","isCode","validSpace","toUpperCase","formatZip","countriesOption","handleTestType","onChangeTesterData","INSURANCE_PROVIDER","convertToUpper","getImageUrl","bioIncLogo","discovery","bioMobileLogo","Font","register","family","fonts","ArialRegular","ArialBold","billingList","BioLabRequisitionPDF","clientInfo","setClientInfo","insuranceType","patientInsuranceType","formatAddress","formatPhone","borderLeft","CLIENT","tickIcon","INSURANCE","MEDICADE","MEDICARE","PATIENT","CASH","formatTimeFromDate","getAMPM","rowGap","stat","SYMPTOMS","nasal","oral","paddingRight","formatIDNumber","yes","no","possibleexposure","confirmedexposure","symptoms","fever","cough","headache","fatigue","soreThroat","diarrhea","other","shortnessOfBreath","muscelBodyAches","lossOfTaste","congestion","nausea","noSymptoms","borderBottom","othercomment","borderTopWidth","hour","minute","hour12","parseSrNoObjectRecviedDate","qrCode","bold","flexRow","flexRow1","flexCol","container","line","textTransform","textUppercase","BiolabPdf","disclaimerText","setDisclaimerText","resultDetails","isQualtative","fetchDisclaimer","getClientByID","clientModal","qrImage","border","minWidth","fasting","analyzeResultValue","minValueM","maxValueM","testResult","resRange","orginalResult","unitToShow","parseTestUnit","showAlphaResult","showTestResult","parseTestResult","generateTagLineQualitativeWithPanleTests","panel","infectionResultBasedUponRange","resultValue","comment","baseTestTypeLabel","testTypeLabel","RESULTS_COLOR","AltalabPdf","isPCR","testHeaderStyles","baseCellStyle","sarcCellStyle","testCell1Style","testCell2Style","testCell2StyleBold","testCell2PCRStyle","testCell3Style","mainTestNameStyle","mainTestHeaderStyle","testRowMainViewStyle","testRowInnerViewStyle","testRowInnerViewStyleResult","pcrColor","pcrFontWeight","pcrOriginalResult","scale","isLabImageExist","GENDER_TEXT","formatReportDate","panelName","testName","showEmptyRow","additionalInfo","resultDescription","RESULT_COLOR","borderNone","borderBottomBlack","borderRight1","borderRightStyle","borderTop1","borderTop","borderTopColor","borderTopStyle","flexVerticalenter","itemsStart","itemsCenter","itemsEnd","justifyStart","justifyCenter","justifyBetween","justifyEnd","flex1","flex40","px5","py5","w50","w30","w40","w20","w80","w100","mb3","mb4","mb10","mb15","mb44","mb50","pt8","mr5","mr10","p5","mx8","text10","text12","textPrimary","bgWhite","bgBlue600","bgTransparent","bgDarkGray","headerTop","contactInfo","contactInfoIcons","formTitle","headerBottom","letterSpacing","licInfo","formWrapper","section","borderStyle","headingBg","headingBgSubtest","minHeight100","minHeight","commentSection","cardContent","inputGroup","boxSizing","inputLabel","inputField","flexGrow","testField","labelSpan","LabReportSisterPirerrePdf","sampleDetail","formatTestForLabReport","newDiscoveryPathogen","formatTestNewDiscovery","customIsJsonString","phoneIcon","envelopeIcon","globeIcon","addressIcon","ref_name","formatOrderDate","pathogenisTests","parsedResult","antibioticTests","targetRange","trItem","comments","PDFLayout","testPdf","setShowPdf","Container","fluid","as","isLocalhost","LAB_ID","alta","caliber","AltaPdf","seroclinix","SerolinixPdf","resultTemplate","loadPDF","RadioButton","handleRadioButtonChange","RadioInput","FilledCheckBox","isChecked","filledCheckBox","checkbox","customLabel","CheckBoxInput","handleButtonChange","ind","Boolean","useLocation","setTest","setSite","siteContactPhone","setSiteContactPhone","setDemographics","showAlert","setShowAlert","modalShow","setModalShow","releaseTo","setReleaseTo","showPDF","setShowPDF","setTestsLab","setTestPdf","showPdfResult","setShowPdfResult","setSignature","hippaConsent","setHippaConsent","setShowImages","showSubmitAlert","setShowSubmitAlert","editButton","setEditButton","editInfo","setEditInfo","setEmployee","openQuarantined","setOpenQuaratined","allowToEditQuarantine","setAllowToEditQuarantine","openDataChangeConfirmation","setOpenDataChangeConfirmation","changeBarcodeConfirmation","setChangeBarcodeConfirmation","phoneError","setPhoneError","vaccinationImage","setVaccinationImage","setExternalTestImage","changeData","setchangeData","changeDataCheck","setchangeDataCheck","profileImageDefault","setProfileImage","setUsers","openCreator","setOpenCreator","TEST_EMPTY_OBJECT","setSelectedTest","getUserDAta","triggerNewData","match","testId","testObject","opType","element","eventObject","dateOfReceive","handleDataChangeConfirm","handleChangeBarcodeNo","gqApi","validateAccessionNo","showErrorMessage","getTest","calculate_age","diff","connectedIDByURL","pathname","vacinatedFilePath","externalTestFilePath","profileImageFilePath","getExternalTestImage","getProfileImage","getVacinationCardImage","getSite","getSignature","imgObject","sigt","isHIPPA","sig","sig1","displayPdf","getEmployeeID","getLab","formatPhoneNumberIntl","phoneArr","pNo","receivedDate","testModal","testVersionNo","versionNo","vaccinationFileName","IMAGE_UPLOAD_TYPE","VacinationCard","externalImageFileName","pendingTestList","pendingTests","paramsData","ChangeObject","logs","resetPendingTests","resetInvalidTests","showSuccessMessage","employeeId","handleCancelButton","emailTest","handleSaveQuarantine","reload","isPatternTest","downloadBlob","filename","addEventListener","clickHandler","removeEventListener","patternConsentFile","dataOfBirthParse","updatedTestData","back","QrCodeDownloadIcon","pngUrl","getElementById","toDataURL","downloadLink","ecLevel","qrResponseJOSN","enableCORS","logoHeight","logoWidth","fgColor","goBack","Form","Group","Control","picker","textDecoration","open","setPhoneNo","externalTypesOptions","isDisabled","scanByTesterName","plaintext","formatIDNo","formatQuaratineDisplayDate","TEST_TYPE_VALUE","sendSmsToCrews","unprocessed","st","showSubmitButton","resetUnprocessedTests","labPortal","admin","newReleaseTo","sendEmailToPendingRelease","Hipaa","openHipaa","resetClients","consentForm","setConsentForm","toUpdate","setToUpdate","savable","setSavable","isEdited","setEdited","originalForm","setOriginalForm","fullscreen","showFileUpload","setShowFileUpload","setFileName","setFilePath","getFileFromStorage","onEditForm","onChangeFile","fname","dialogClassName","filterMapping","selectedProvider","providers","providerList","providerOptionList","openCreatorProviderSelector","newUserProviderSelector","newUser","SwitchToggle","handleToogleChange","renderFilters","categories","triggerFilter","setFilter","filterContent","isGrouped","filterTerms","setFilterTabIndex","filterTabIndex","setTriggerFilter","selectedIndex","onSelect","entries","filters","filterTerm","InputGroup","Text","selectedLocation","locations","locationsSelectors","refLabsSelectors","refLabs","showLocationTestModalSelectors","showLocationTestModal","showPrinterSettingsModalSelectors","showPrinterSettings","showBarcodeSettingsModalSelectors","showBarcodeSettings","Icon","handleClick","iconType","containerClass","innerClass","imageClass","ICONS","filterIcon","selectAllIcon","binIcon","addUserIcon","loadCrewIcon","XLSIcon","personalizeIcon","testNowIcon","assignZoneIcon","removeZoneIcon","acknowledgedPositiveIcon","messageIcon","qrIcon","groupByDepartmentIcon","groupByZoneIcon","endQuarantineIcon","createIcon","saveIcon","createIconBlue","importIcon","downloadIcon","generalCallTimeIcon","createEmployeeIcon","checkEligibilityIcon","showArchiveIcon","calendarIcon","restoreIcon","printerIcon","labIcon","submitIcon","minusIcon","resultsIcon","preload","rangeIcon","downArrow","rightArrow","pdfIcon","importTests","importTestsIcon","qr_Icon","dw_Icon","cancel_Icon","comment_Icon","editIconBlue","calendarDateIcon","reportIcon","report","viewreport","CreateOptions","handleSaveChange","selectedValue","setOption","backdrop","keyboard","ImagePlaceHolder","forwardRef","handleFileChange","onDragOver","dataTransfer","dropEffect","onDrop","xmlns","viewBox","clipRule","fillRule","InputField","labelStyle","inputStyle","maxlength","groupWrapper","errorList","isClearable","getOptionValue","getOptionLabel","componentOptions","onInputChange","required","hideSelectedOptions","isFutureDateAllowed","pattern","isMulti","countryVal","Label","inputType","inputStyling","openCalendarOnFocus","dayPlaceholder","monthPlaceholder","yearPlaceholder","toDate","minDate","getInPutFields","SpecimanContainerModal","handelUpdate","modalTitle","selectedFile","setSelectedFile","fileRef","specimenImage","setSpecimenImage","imageToRender","imagePath","capitalizeLetter","onRemoveImage","SPECIMEN_CONTAINER_TYPE","opt","selectedOption","borderRadius","boxShadow","fileExtension","previewURL","CONSTANTS","GENERAL","SHOW_CONFIRM_MODAL","generalSlice","createAsyncThunk","UPDATE_TEST_NAME","dispatch","createSlice","initialState","loader","testPrint","mode","confirmationModal","showModal","selectedDevice","archivedData","archivedList","personalization","questionTableModal","columns","answerAdditionalQuestion","showQuestionaireTable","reducers","setArchivedList","action","setQuestionTableModal","combinedRows","rowMap","Map","set","uniqueRows","setShowQuestionaireTable","setAnswerAdditionalQuestion","combined","itemMap","uniqueItems","setAnswerAdditionalQuestionUpdate","answerList","answer","questions","setLoader","setTestPrintView","setSelectedDevice","showMessage","setClearConfirmation","extraReducers","builder","addCase","showConfirmationModal","fulfilled","actions","setMessage","confirmationModalData","fetchGeneralSettings","showTestAssociatePanel","MESSAGE_MODES","generalSettingsSlice","emptyAssociatedPanel","useOptions","useDispatch","handleOption","optionName","handleDelete","addOption","updateOption","setOptions","getOptions","optionList","addSpecimenOption","TestTypeSelect","tabIndex","updateMainTest","defaultOptions","showAddIcon","showNumberSelected","mainClass","saveOptions","showCreateOptionModal","setShowCreateOptionModal","handelAddOption","insurnaceSelector","insurances","payerSelector","totalInsurancesRecordsSelector","totalInsurancesRecords","Filter","isUsersTable","handleClearFilter","filterTab","testTypes","setTestTypes","DEPARTMENT_OPTIONS","filteredProviders","DEPARTMENT","SOURCE_OPTIONS","SOURCE","labLocations","providerOptionsForResult","getLabOptions","getList","testAssayTypes","systemUsers","filterAlias","term","personaliseKey","filterKey","itemKey","dateRangeMultiSelection","drops","locale","cancelLabel","getDropDown","prevData","prevSelectedVal","String","getMultiDropDown","keyToReturn","customUniqBy","filterCategories","createFilterMapping","querySelectorAll","RESULT_SENT_OPTIONS","CUSTODY_OPT","BATCH_OPTIONS","GENDER_OPTIONS","NPI_TYPE_OPTIONS","isValid","dateRangeSelection","FILTER_SHOW_STATUS","FILTER_TEST_STATUS","TEST_TYPE_OPTIONS","VACCINATED_OPTIONS","CAPACITY_OPTIONS","TRANSITION_STATUS_OPT","ORDER_CANCELLED_RESASON_OPT","ORDER_STATUS_OPT","ELIGIBILITY_STATUS","EMPLOYEE_STATUS","NETWORK_STATUS","archstone_STATUS_OPT","RELEASE_STATUS_OPTION","BATCH_OPTIONS_COMPLETED_TEST","getCheckBox","RESULT_EMAILED_OPTION","ORDER_STATUS_DROPDOWN","OPTION_YES_NO","RESULT_SETTINGS_OPT","FormControl","createFilterMappingWithoutGroup","oneYearAgo","setFullYear","setHours","oneMonthAgo","setMonth","setDate","oneWeekAgo","timeFilter","start","end","MFPagination","currentPage","handleChangePage","totalSelected","showSelectedRecord","showDateFilter","span","offset","xl","SortIcon","sortName","sortBy","sortDescending","HeaderItem","ItemKey","flipSort","aligned","customHeadForm","draggable","innerDivWidth","handleDrop","handleDragStart","headerStyle","onDragStart","DropdownMenu","handleDropDownOptions","Dropdown","Toggle","dotIcons","Menu","link","ViewOnlyCheckBox","ClientsView","componentRef","mainWidth","setWidth","offsetWidth","handleResize","tdWidth","calculateTdWidth","clientTests","setClientTests","setClients","filteredClients","setFilteredClients","openDeleteConfirmation","setOpenDeleteConfirmation","setNewClient","clientToDelete","setClientToDelete","setOpenHipaa","selectedClient","setSelectedClient","setSortBy","setSortDescending","showFilter","setShowFilter","setCurrentPage","setTotalPages","filterDates","TimeFilter","resultTypeOptions","clientsToMap","ttlPages","PAGE_LIMIT","ceil","indexOfLastUser","indexOfFirstUser","parseSelectedOption","sortingFilters","sortingFilterInLC","loadClientSummary","refreshSummary","prevSortingState","changeSort","getSiteName","getLabName","getClientName","getClientTests","targetArray","filterKeys","every","parseBooleanValue","nestedFilter","summary","clientSummary","by","newList","x","totalTest","getTotalTest","to","crossIcon","getSelectedOption","isValidPhone","SearchBar","searchTerms","setSearchInput","setSearchTerm","searchTerm","searchInput","LabBarCode","importResult","totalBarCode","setTotalBarCode","getBarCode","barCode","chunkSize","assumeNoHeaders","restartable","delimiter","processChunk","startIndex","preview","columnFields","flat","BarCodeAlert","TextEditor","LabModal","setNewLab","setLogo","showEditor","setShowEditor","isValidToSave","newest","uploadLogo","resetLabs","isValidImageHeightWidth","img","Image","onload","DISCLAIMER_TYPE","DISCLAIMER","DISCLAIMER_KEYS","barcodelabs","isSuperAdmin","INVALIDNOTES","INDERMINATENOTES","ANTIGEN","MOLECULAR","ACCULA","LUCIRA","RAPIDFLU","CUSTOM","LabsView","mainRef","labTests","setLabTests","filteredLabs","setFilteredLabs","labToDelete","setLabToDelete","showCSVImporter","setShowCSVImporter","loadSummary","getLabTests","labsToMap","handleEditLab","origin","openLab","defaultLabRoles","defaultLab","getDefaultLabName","TEXT_FILED_OPTIONS","TextAreaEditor","textAreaRef","MESSAGE_SEND_TYPE","dropDownValue","startPos","selectionStart","endPos","selectionEnd","newPos","setSelectionRange","insertAtCursor","ContactInfo","moreInfo","TestTypeDurationModal","addHours","setAddHours","addTestType","setAddtestType","addGroup","setaddGroup","hours","groupdata","splice","findVal","findIndex","groupData","ChangeStatusModal","selectedStatus","setResult","statusValue","SITE_STATUS_OPTIONS","TDNameWithDetail","TDPreRegisteration","downloadQRCode","handleCopyPRLink","currentURL","showCopyText","setShowCopyText","navigator","clipboard","writeText","getPreRegistrationLink","handleCopyPRLink1","QrCodeIcon","TRData","getName","checkboxescehcked","handleCheckBoxChange","getMoreInfo","handleLaunchPortal","handleEdit","handleShowSettingsModal","siteStatus","FilterSelect","setTimeFilter","All","Today","Yesterday","chosenLabel","dateIcon","widthCol","handlePageChecked","checkedPage","col","TEST_HEADER_TYPE","pending","calculateColumns","completed","alltests","ExportToExcel","selectedItem","isUnprocessedTest","isPlainButton","buttonCSS","handleExportToExcel","gapFilteredVal","str","CUSTOM_INS","PRE_REGISTRATION_STATUS","colLength","Show","number_of_tests","avg_hours","avg_minutes","positive_tests","positivity_ratio","total_tests","validUntil","isQuarantined","resultDates","daysCount","providerName","insuranceGroupId","eligibilityStatus","vaccinationDate","orderStatus","employeeTypess","capcity","labComments","orderNo","sentToLabDate","chartID","sortedVal","wsrows","hpx","level","merge","r","dateRange","reportTitle","filterVal","sorted","orderDetails","totalOrders","totalAttendees","totalAttendeesQr","totalShipped","totalReceived","ws","XLSX","aoa_to_sheet","sheet_add_aoa","sheet_add_json","skipHeader","columnMaxWidths","combinedArray","cellValue","cellContentLength","columnWidths","headerWidth","finalWidth","wch","fromCharCode","alignment","horizontal","font","sz","underline","rgb","wrapText","wb","Sheets","SheetNames","excelBuffer","bookType","FileSaver","saveAs","AllTestPDF","table","infoTxt","head","wrap","TestPDFLayout","ReactPDF","pdf","toBlob","SequenceNo","showLogs","stopPropagation","PendingReleaseTestListView","setTests","setFilteredTests","setSites","setMoreInfo","showPdf","checkboxes","setCheckboxes","allSelected","setAllSelected","releaseModalShow","setReleaseModalShow","siteContactPhones","setSiteContactPhones","crewPhoneNumbers","setCrewPhoneNumbers","testsToRelease","setTestsToRelease","openConfirmation","setOpenConfirmation","createMoreInfo","infoObj","testsToMap","handleSaveFilter","retestCrew","releaseTests","inconclusiveTestList","phoneSite","self","testTypeText","lo","savedFilters","testFilter","pendingreleasetest","refreshTestList","parseResult","testSites","testTist","sortTestList","setTestFilter","handleFalsePositive","seqno","filteredList","handleCheckboxChange","formatUTCDate","Upgrade","MFUserModal","resetCall","handleConfirmUser","isCrewCall","setNewUser","handleEditRole","userData","userRoles","selectedRoleData","roleObj","newRoleOptions","hasRole","handleMultipleRoles","mainRoleArray","relatedId","isWhiteLabelLab","getNote","getRoleValue","mainRoleData","finalUser","roleSelectionCSS","newRoleOptionsWhiteLabel","LAB_ADMIN_ROLE","labAdmin","UserPasswordModal","newPassword","setNewPassword","isValidPasswordLength","UsersView","filteredUsers","setFilteredUsers","openPasswordModal","setOpenPasswordModal","EmptyUserObj","userToDelete","setUserToDelete","errorMessageText","setErrorMessageText","usersPerPage","sortUsers","sortParam","getUserLabName","labId","getUserClientName","getUserSiteName","userId","filterSite","handleAdditionalFields","oldRole","roleTitle","roleValue","isJson","onlyRoles","keyValue","formatRoleChangeParams","createUserInCognito","attributePayload","signUp","createUser","userSub","addRoleObj","newRolesDetails","newRoles","removeRoles","addRoles","baseurl","resetUsers","number","currentUsers","usersToMap","getPageNumbers","loadPrevSorting","formattedUsers","formatUsers","handleEditUser","ClientTests","fetchTests","labObj","siteObj","getCrewsName","empDemos","parsed","charAt","SetSortIcon","TestSubmitResponse","reduce","TestSubmitModal","parseSubmitMessage","successMessage","PopoverStick","showPopover","setShowPopover","setTimeoutConst","handleMouseLeave","rowItem","TEST_KEYS_PARSE","onMouseEnter","Overlay","placement","flip","Popover","TestLogsDetailView","onlyShowDateLabels","showDetailModal","setShowDetailModal","formatResult","ISO_8601","DocumentPreviewModal","isModalOpen","setIsModalOpen","isLoading","vhToPixels","TestLogsModal","setSuccessMessageText","setData","previewFileData","setPreviewFileData","showTestLogs","recordType","ordID","LABELS","AccessionNoChanged","getActionDetails","handleClickOnImage","getContentType","contentDisposition","renderMessageContent","hasOwnProperty","changeRecord","prevValue","Audit_Parse","eventType","formatLogDate","hostname","ChangeTestLabModal","selectedTest","setTestType","setSendToLab","confirmText","setConfirmText","useInitialRender","isFirstRender","ImportResultModal","handleImport","downloadDataAsCSV","addRemoveButton","skipEmptyLines","skipLinesWithEmptyValues","onRemoveFile","ResultModal","EditAccessionNoModal","isValidAccessionNo","MultipleFileInput","setFiles","setFileTypes","setSelectedFileNames","setFileSizes","selectedFileNames","acceptFiles","fileTypes","fileSizes","fileInputRef","addNewFiles","newFiles","updatedFiles","updatedFileTypes","updatedFileNames","updatedFileSizes","newFileName","isFileDuplicate","FILE_REPRESENT_TYPES_MAP","timesIcon","DEFAULT_ACCEPTED_FILE_TYPES","multiple","LoadOrdersModal","setOrderFiles","onSaveFile","selectedSite","setSelectedSite","setTestDate","isValidFiles","selectedTestDate","isAfter","objectsArray","floorID","orderFiles","uploadStatus","lifeCarePrimaryPharmacy","RedirectLink","redirectTo","setSelectedTestAsync","simpleTestList","detailTestList","panelTests","array","acc","generateRefInterval","possibleValues","targetArr","finalTargetObj","TYPE_OF_TEST","QUALITATIVE","processTests","testDetail","getPanelData","panelId","panelData","processedPanel","resultData","targetItem","TEST_PANEL_TYPES","PANEL","testsData","panelResponse","detailRes","customIsEmpty","patientAge","getAgeFromDateString","QUALITATIVE_WITH_PATHOGEN","QUANTITATIVE_WITH_PATHOGEN","BOTH","testObjWithPanel","QUALITATIVE_WITHOUT_PATHOGEN","QUANTITATIVE_WITHOUT_PATHOGEN","finalTestobj","panelFinalData","showSimpleModal","showPanalModal","listRemovedTest","testForResult","resultsTestSlice","resetStateResultState","setTestIdsToRemove","setSimpleResultModal","setTestForResult","setSelectedTestForResult","showResultTest","resultTest","Notes","empNotes","notesOnIcon","notesOffIcon","useResizeObserver","dimensions","setDimensions","observerRef","observer","ResizeObserver","entry","contentRect","observe","disconnect","RESULT_PDF_BUCKET","handleFileError","retryDelays","rejectWithValue","$metadata","httpStatusCode","errorName","delay","getFilePath","isResultPdf","basePath","combinedPath","isCombinedTest","inc","resultPDF","testDoneModalCall","fetchPdf","resultPdfTitle","resultFileUrl","resultFileType","isLoadingResultPdf","resultPdfError","showResultPdf","showResultReqForm","pdfData","resultPdfSlice","RESULT_PDF","hideResultPdf","handlePending","handleFulfilled","handleRejected","rejected","ResultCell","isSiteUser","resultColor","getResultColors","cancelReason","Status","questionIcon","getSize","TDStatus","setIsActive","MainTable","individualRowCssClass","handleSaveDragAndResize","personalisationKey","resizable","widthToSkip","tools","dropDownOptions","customDropDownOptsForRow","handleDropDownClick","selectedRows","handleCellClick","customColumnCellRenderer","parentKey","trDataWrapperHeader","isTestDoneModal","strippedTable","isDocList","columnToBeSwapped","setColumnToBeSwapped","reset","setReset","resizeableTable","tableWrapperRef","handleScreenWidthChange","p","handlePersonalization","column","detectChangeInPersonalization","personalisationInLC","whiteSpaceVisible","handleColumnResizerDelay","useCallback","debounce","handleColumnResizer","childNodes","headerCells","eachColumnAdditionalWidth","floor","personalizeToSave","colIndex","innerText","targetObj","handleColumnChange","targetDestinationObj","subjectIndex","targetIndex","temp","handleClickCall","headerAlign","tdFormat","rowIndex","eligMessage","eligibilityMessageColor","nameToTitleCase","getFileNameFromDocuments","rowItemData","TABLE_COLUMN_TYPES","currency","boolean","shortDate","longDate","dateTime","currencyformatter","formatNumber","upperCaseText","firstLetterCapital","formattedString","labelID","formatLabelID","isQuickToolIncluded","TABLE_QUICK_TOOLS","edit","tool","antibioticDivider","colSpan","Check","Input","EditIcon","customCellRenderer","fixedValue","json","tdEmail","tdPhone","colorObj","renderTd","columnWidth","PersonalizationItem","handleCheck","checkBoxId","defaultChecked","PersonalizationModal","personalize","setPersonalize","handleCheckBox","ek","stringData","isLabType","importClientDataTitle","importProcedureDataTitle","loadClient","selectOneClientError","clientTestAvailableUpdate","createLoginForClient","memberProfile","requestClientRemoval","selectAll","deselectAll","denialClaim","submitClaim","createClaim","claimCancel","claimAmount","createSalesPerson","activeToggle","procedureCode","procedureCodes","testDictionary","salesPerson","messageTemplate","createMessageTemplate","employeeClaim","diagnosisCode","diagnosisCodes","patientDocuments","documentDetails","alertSettings","createDiagnosis","updateDiagnosis","createCPT","updateCPT","providerCreatedSuccessfully","providerUpdatedSuccessfully","eligibilityDetails","loadClientData","loadProviderData","createMember","loadOrderData","importTracking","orderTest","orderConfirmationDescription","orderSuccessMsg","orderFailedMsg","multipleOrderSuccessMsg","multipleOrderFailedMsg","confirmAutoShipment","scheduleNotAssigned","clientCreatedSuccessfully","clientUpdatedSuccessfully","clientDeletedSuccessfully","clientHaveClaims","clientAlreadyExistOnRow","facilities","dashboard","reports","claims","billing","subagents","createSubAgents","createFacility","loadLocationData","locCsvSampleName","SACsvSampleName","eligibilityCsvSampleName","orderSampleCsv","eligibilityStatusFile","downloadCsvSample","loadSubAgentsData","_d","scheduleID","scheduleLinked","isSchedule","qaDone","autoShipment","testDone","formatTimeZone","insuranceCompany","secondaryInsurance","PARSE_FILTER_KEY_NAME","getState","subAgents","emps","formatEmployeesData","createEmployeeAsync","documents","newEmployee","newPatientCreateAPI","eEligibility","checkManualBulkEligibility","eligibilityID","updateLogs","newDocs","modifyDocs","fetchEmployeeRecord","getLoggedInUserEmployeeID","preferred_username","updateEmployeeAsync","onAlert","deleteEmployeeAsync","loginID","employeeSlice","filteredEmployees","proxyRelations","employeesFilter","employeeRecord","selectedEmployeeForTest","setFilteredEmployees","setProxyRelations","setEmployeesFilter","setSelectedEmployeeForTest","updateTestAvailableQty","updateEmps","Ids","testAvailable","testQty","filterUpdateEmps","updateNotes","noteAddedBy","existingemployeeIndex","existingFilteremployeeIndex","updateEmployeeFromClaim","updatedemployee","unshift","deletedemployeeId","patientDataInLocalStorage","PreviousNotes","newRecord","S","PendingOrderNoteModal","initialNotes","setNotes","prevNotes","handleNoteChange","NOTES_MAX_CHARACTER_LENGTH","UnprocessedTestsApi","importStatus","setImportStatus","showLabChangeModal","setShowLabChangeModal","modalShowResult","setModalShowResult","noteModal","setNotesModal","selectedTests","setSelectedTests","setSearchTerms","openPersonalizationModal","setOpenPersonalizationModal","uploadResultSummary","setUploadResultSummary","editAccessionNo","setEditAccessionNo","openLoadOrdersModal","setLoadOrderModal","initialRender","waitingResultCall","filterRef","defaultConfig","getClientSpecificString","checkLab","newTest","loadTestFromPG","waiting","pgList","ttlTests","submitTests","testsToSubmit","submission","newTestList","senttest","unprocessedtest","personalizeData","PERSONALISATION_KEY","PENDING_TEST","searchTermsData","testList","siteIds","tester","afterDeletedTest","newTestlist","removeRFromBarCode","handleEditNumber","isSimpleResultToProcess","csvData","firstRow","responseMessage","COLUMN_INDEX","test_name","isValidAccessioNo","arrayOfObjects","updateWhiteLabelTestResult","closeCSVDropDialog","getTestTypesList","apiData","handleCSVOnDrop","csvJsonData","parseResultDataToJsonForAlta","processAltaResultSamples","processed","responseMessageArray","responObjects","gridDataStartIndex","IR_COLUMN_INDEX","Fluor","Target","Sample","Call","actualData","patternData","fluor","sample","ttlRecord","clientResultTypes","getResultTypes","removeSpecialCharacters","fluorValue","finalResult","updateLabChange","selectedType","isSubmitToLab","updateSelectedTestResult","ttlTest","fromEntries","clearSelection","handleExportLabGen","handleExportBilling","downloadRequisitionFile","downloadRequisition","receiveTheTests","testsToReceive","RECEIVED_BYLAB","ex","downloadResultFile","testsToProcess","testTypeCache","fetchTestTypeByID","fetchPromises","test_acronym","tr","csv_name","defaultResult","handleReceiveTest","exportPersonalize","selectedItems","testDateIndex","handleCancelTest","testToPerformList","formattedTest","testLabel","isAllowToArchive","archiveTest","editTest","isShowResultFile","yetNotReceived","singleTest","printBarcode","printTestLabels","handleComment","personalizeArr","TEST_STATUS_COLOR","GET_CUST_COLOR","TabPills","tabs","handleTabClick","setActiveIndex","activeIndex","component","usersList","fetchCPTCodeAsync","total","fetchICTCodeAsync","updateCPTCodeAsync","description","charge","charges","referenceCharge","getFloatVal","effectiveDate","retiredDate","cashCharge","inNeworkCharge","outNetworkCharge","updateICTCodeAsync","createCPTCodeAsync","createICTCodeAsync","deleteCPTCodeAsync","defaultSetting","updateCliItem","cptCodeSlice","procedureList","openCreateCPTModal","selectedCPTItem","diagnosisList","openCreateICTModal","selectedICTItem","totalIctRecords","totalCptRecords","setProcedureList","setOpenCreateCPTModal","setSelectedCPTItem","setDiagnosisList","setOpenCreateICTModal","setSelectedICTItem","Number","updatedCPT","existingclientIndex","updatedICT","deletedId","AddDiagnosisCodeSettingsModal","CLI_ACTIONS","update","newItem","setNewItem","RemoveSpaceAndChar","cptCodeSelector","cptCode","openCreateCPTModalSelector","selectedCPTItemSelector","ICTCodeSelector","openCreateICTModalSelector","selectedICTItemSelector","totalIctRecordsSelector","totalCptRecordsSelector","PGPagination","totalRecord","currentRecord","selectedCompanySetting","companySetting","DiagnosisCodeSettings","totalIptRecords","quickTools","DIAGNOSIS_CODES","write","pageNo","setPageNo","filterDiagnosisList","setFilterDiagnosisList","fetchFromApi","orderBy","orderByDirection","concatResult","diagnosisCodesToMap","draggablePersonalizationLocalStorage","uniqueResponse","DIAGNOSIS_CODE_PERSONALIZE","numberWithCommas","direction","INSURANCE_PERSONALIZE","isSkipFilter","fetchInsurances","createInsurances","updateInsurances","fetchCompletePayerList","INSURANCES","INSURANCES_FETCH","INSURANCES_FETCH_ALL","INSURANCES_CREATE","INSURANCES_UPDATE","INSURANCES_DELETE","fetchInsurancesAsync","insuranceServices","fetchPayerAsync","createInsuranceAsync","Name","updateInsuranceAsync","insuranceSlice","filteredInsurances","openInsuranceModal","selectedInsurance","openInsruModal","setInsurnaceList","setFilteredInsurnaceList","setOpenInsuranceModal","setSelectedInsurance","setOpenInsruModal","updateItem","existingIndex","InputGrid","headerLabel","InsuranceModal","newInsurance","setNewInsurnace","firstNameRef","otherNPI","cliaNumber","npiName","checkValidation","shortName","eClaim","manualAmount","manualTerm","manualMail","eFax","ERA","eraMail","payerId","getValidDep","cliCode","EDI","claimAddress","claimCity","claimZip","claimState","claimPhone","claimFax","PAYER_NETWORK_OPTIONS","network","Insurances","totalInsurances","PAYER_MANAGEMENT_VALUE","unwrap","insurancesToMap","INSURANCE_EMPTY_OBJECT","userCompanyID","uniqueObject","networkStatus","isInNetwork","PAYER_DROPDOWN_OPTIONS","selectedSubAgent","ProcedureImportModal","handleDownloadSample","subAgent","proc_code","alias","proc_desc","active","CurrencyInput","inputValue","setInputValue","parsedValue","parseCurrency","formatCurrency","onBlur","AddProcedureCodeSettingsModal","gap","ProcedureCodeSettings","openImportModal","setOpenImportModal","filterProcedureList","setFilterProcedureList","PROCEDURE_CODES","procedureCodesToMap","procedureData","notNpiFound","ttlLength","alphanumericRegex","uniqueProcedureCodes","duplicateCounts","procedure","has","count","procedure_code","requestedBy","requestedByName","duplicateMessage","info","PROCEDURE_CODE_PERSONALIZE","UserPermissions","setPermission","isWrite","isDelete","permissionData","subObject","newPermission","dependentPermissionsList","checkedValue","handelSubToggleChange","CreateUserRolesOptions","editObj","DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS","PERMISSIONS_LIST","UserRoleSelect","isExist","WhiteLabelUserModal","rolesOptions","setRolesOptions","userAssignedPermissions","permissions","getRolesOptions","userRoleData","optValue","rolesInUserData","usedValues","matchedRoles","getSelectedRole","systemUserPermissions","setIs2FaEnabled","customPermissionList","setCustomPermissionList","singleRole","getSelectedRolePermission","userSelectedRole","foundRole","editUserCredentials","handleLabObj","singlePermission","hasDependentPermissionTrue","oldUserData","fieldsName","multipleRoles","updateDefaulPermissionOnSave","logChangeObj","createChangeObjForLogs","oldRecord","logsObj","selectedPermission","cloneSelectedPermission","perm","transformSubObjectToPermissionObject","userLab","createNewUserRole","selected","handelTwoFaChange","RenderTd","handleOrderDetail","handleMouseEnter","orderTracking","orderId","vaccinationDetails","vaccinationLocation","tdDate","phNumber","RolesViewModal","setRolesData","addRoleModal","setAddRoleModal","setEditObj","checkRoleAssigned","roleId","handelUpdateOption","SYSTEM_USER_ROLES_PERSONALIZATION","UsersViewWhiteLabel","isEditPermission","isDeletePermission","showRolesModal","setShowRolesModal","editUser","setEditUser","cloneRoles","setCloneRoles","labTech","Provider","Tester","providerData","roleHoverTitle","ROLE_LABEL","roleValueToShow","roleObject","endsWith","displayRole","existingLabUser","findExistingUser","resetView","valueMap","filterValue","targetValue","getUserBaseRole","concateUsermultipleRoleData","concateRoles","prevRoles","updateLabUserInfo","userMultipleRolesData","userRolesData","updateStatus","createUniqueRole","createNewUserInCognito","addLabIDWithTester","multipleRoleData","userExistsInDB","modifiedRoleData","isSingleRole","labPackage","DEFAULT_USER_PERSONALIZATION","newLogObj","isUpdated","SYSTEM_USERS_VALUE","editIcon","createNewUser","archiveUser","usersLoading","InputCPTCodeDropDown","selectedDiagnosis","searchtype","showLabelOnTop","showLabel","showInput","showCross","dataIds","tooltip","setInput","setDescription","setFilteredList","selectedOptionIndex","setSelectedOptionIndex","scrollableContainerRef","isDropdownOpen","setIsDropdownOpen","testResponse","setTestResponse","inputRef","handleTypeDelay","handleChangeInputText","handleKeyDown","prevIndex","scrollToOption","handleOutsideClick","closest","listItem","querySelector","containerRect","getBoundingClientRect","listItemRect","scrollTop","search","mergedTestArr","cpt","filteredPanelItem","filteredTestItem","overflowAnchor","withCache","changeObj","optionRow","DefaultClientSettingModal","setObj","settingList","setSettingList","fetchClientSetting","getClientTestSettingByCompanyID","handleTrashSetting","deleteClientTestSetting","sr","defaultCPT","defaultICT","diag_1","TEST_TYPE_OPT","parseStringIntoFloat","diag_1_internal","PROCEDURE_CODE_STATES","PLUS","COMPANY_SETTING_FETCH","fetchCompanySetting","updateCompanySetting","updateCompnayDefaultSetting","updateCompanySettingCLIList","companyUserSlice","setCliList","addMatcher","thunk","startsWith","PROVIDER_FETCH","UPDATE_PROVIDER","fetchAllProviders","createPortalUserAsync","associatedClient","userObject","isShowMessage","createProviderAsync","providerDefaultSetting","taxid","speciality","npiType","linkedClient","providerObject","isCheckedUser","updateProviderAsync","updateProviderClientAsync","uId","updateProviderNoteAsync","deleteProviderAsync","providerId","renderingProviderAsync","providerSlice","renderingProviders","NEW_PROVIDER_OBJECT","setFilteredProviders","setOpenCreatorProviderModal","setNewUserProvider","deletedproviderId","deletedUserSubId","providerIndex","filteredProviderIndex","updatedprovider","existingproviderIndex","existingFilteredProvidersIndex","fetchAllLocations","fetchUserLocation","createLocationAsync","createLocations","createLabClient","formattedSite","formatSite","updateLocationAsync","loc","locationId","updatedlocation","updateLocation","updateLabClient","updateLabClientNotes","deleteLocationAsync","deleteLocation","locationSlice","userLocation","updateLocationOnSubscription","existinglocationIndex","setLocationTestModal","setPrinterSettingsModal","setBarcodeSettingsModal","deletedlocationId","ClientProviderModal","setDefaultProvider","defaultProviderID","setDefaultProviderID","PROVIDER_OPTIONS","selectedOpt","PROVIDER_PERSONALIZE","addSelectedPcs","pcs","removeSelectedPcs","showHideClientPcsModal","showHideValue","resetClientPcsState","AWS_API_METHODS","method","createSalePerson","updateSalePerson","listSalePerson","deleteSalePerson","linkSalesPerson","unlinkSalesPerson","saleReportFilter","setSelectedSalePerson","selectedPerson","setSelectedClientId","selectedClientId","saleApi","salesPersonsRes","salesPersonsList","totalSalesPerson","fetchSalePersons","fetchSaleFilter","saleReportFilterRes","setShowSalesPersonModal","showSalesPersonModal","updateSalesPersonInList","updatedSalesPerson","deleteSalesPerson","deletedSalesPerson","setSalesPersonAssignDetails","salesPersonAssignDetails","unLinkSalesPerson","linkSalesPersonData","thunkApi","siteId","salePersonId","salePersonID","confirmed","totalSalesPersonSelector","salePerson","salesPersonAssigningSelector","assigningDetails","messageTemplateListSelector","messageTemplates","messageTemplateModalSelector","selectedMessageTemplateSelector","selectedMessageTemplate","listTemplate","createMessageTemplateGQL","msgTemplate","updateMessageTemplateGQL","updatedMessageTemplateData","deleteMessageTemplateGQL","fetchMessageTemplateLists","createNewMessageTemplate","newMessageTemplate","updateMessageTemplate","updatedTemplate","prevTemplateId","deleteMessageTemplate","template","TestTypeSelector","testTypeList","testPanelList","selectedPanel","optionsList","setOptionsList","fetchDetails","filteredMainTests","optionsPanelsTest","LCTestModal","handleTest","rowData","panelsList","setPanelsList","testTypesList","setTestTypesList","rowTestsData","setRowTestsData","testIds","allOptions","filteredOptions","previousItems","updatedList","maxHeight","overflowY","CREATE_TEST_PANEL_PERSONALIZE","TYPE_TO_SHOW","prevPanelsList","oldList","sortedOldList","sortedNewList","compareFn","numberOfPrintOptions","TabSettings","widthClass","callFor","labClient","setLabClient","selectedPrinter","setSelectedPrinter","selectedSize","setSelectedSize","setClientData","printQuantity","setPrintQuantity","handleQuantityChange","cloneClient","customCloneDeep","labelPrintingQty","reCallClient","fetchClientData","clientRes","labelPrintQty","handleAddRow","newRow","printer_name","printer_size","labelSize","printerSetting","close","PRINTER_SETTINGS_OPTIONS","PRINTER_LABEL_SIZE_OPTIONS","TAB_SETTINGS_COLUMN","handleTestRemove","PrinterSettingsModal","BarcodeSettingModal","barcodeRange","setBarcodeRange","clientRanges","barcodeRangeToShow","viewBarcodeRange","handleRangeChange","fieldName","numericValue","prevRange","handleAddBarcodeRange","startRange","endRange","isAlreadyAssigned","isBarcodeRangeAssigned","newRange","updatedClient","handleBarcodeRemove","updatedLabClient","BARCODE_SETTINGS_COLUMN","memo","LabClientModal","selectItem","getObject","newLocation","setNewLocation","setProvider","openAssociateProviderModal","setOpenAssociateProviderModal","openDefaultSetting","setOpenDefaultSetting","getMessageTemplateList","messageTemplatesList","MESSAGE_TEMPLATE_OPTIONS","handleChangeDefaultProvider","updatedObject","primaryPhysician","handleShowClientPcs","excludedCPT","excluded","cptData","pcsData","getValidReg","BILLING_TYPES_OPT","billType","float","associatedClients","autoComplete","apiResponse","prevRes","hippaRequired","specimen","testCompleted","physicianContact","laboratoryContact","ImportErrorModal","successData","errData","LocationImportModal","NotesModal","claim","setStatus","LabClient","setLocations","filteredLocations","setFilteredLocations","itemToDelete","setItemToDelete","openCreateModal","setOpenCreateModal","newLabClientObject","setSelectItem","openErrModal","setOpenErrModal","setTitle","errorData","setErrorData","setsuccessData","setNoteModal","providerModal","setProviderModal","CLIENT_MANAGEMENT","locationsToMap","locs","currentItems","getLabClients","sortLS","LAB_CLIENT","LAB_CLIENT_PERSONALIZE","company","formatFacility","LAB_CLIENT_DROPDOWN","hasDeletePermission","newDropdownOptions","LAB_CLIENT_DROPDOWN_OPTIONS","getAssociateClient","sortSettingsList","pervSortLS","handleConfirmDelete","deletedItemRow","isDeleted","prevLocations","resetSites","OnHandleLocation","checkValidity","parseFloat","handleClientImport","locData","arrdata","locList","locationKeysArr","LAB_CLIENT_CSV_COLUMNS","convertLabClientObject","sucessfullyProcessed","uuid","tdPreRegisteration","TEST_ORDER_LIMIT_CATEGORY_VALUE","testOrderCategory","tdLink","monthToDate","yearToDate","onHandleDownloadSample","OrderImportModal","noSelectDate","trackingImport","orderMonth","setOrderMonth","shipmentDate","setShipmentDate","claimStatus","downloadTemplateInfo","STATUS","VALUE","createProvider","updateProvider","deleteProvider","createPortalNewUser","ProviderModal","providerRoles","setProviderRoles","selectSearchData","CLIENT_OPTIONS","userLabName","findProvider","fetchUserRoles","basic","addresses","taxonomies","locationAddress","address_purpose","primaryTaxonomy","taxonomy","primary","formattedPhoneNumber","telephone_number","formattedFaxNumber","middle_name","address_1","postal_code","enumeration_type","desc","isFinder","searchProvider","getProviderForUser","createUserForPortal","searchIcon","handleUpdateAddress","associatedClientValues","linkedClientValue","visibility","prevUser","resultReportingProvider","resultReportingPatient","portalOnly","patientPreference","objToSave","provDefaultSetting","DEFAULT_PROVIDERS_ARR","ProviderSearchRecord","PROVIDER_MANAGEMENT","PROVIDER_DROPDOWN","PROVIDER_DROPDOWN_OPTIONS","createProviderInfo","USER_ROLE_TITLE","getAllProviders","PROVIDER","saveFileOnBucket","handleOpenCreateModal","handleResetPassword","AddResultDisclaimer","icon","TestTypeInput","searchType","handleShowCPT","rest","CPT_CODE_SEARCH_TYPE","CPT","ResultDisclaimerSwitch","inlineLabel","noBorder","panelSelector","testAssay","TestDetailsSelector","filterOption","testPanels","panelsOptions","ELEMENT_TYPE","antibioticResistanceType","TestElementViewModal","organismsRows","resistanceRows","associatedRows","additionalRows","customRenderTD","ctValue","renderPlatformCell","renderSourcesCell","PATHOGEN_TABLE_STYLE","CREATE_TEST_PERSONALIZE","TestElemensInput","setSelectedOption","showTestElementModal","setShowTestElementModal","handleSelectedOption","TestElementOptions","ANTIBIOTIC_RESISTANCE_TYPE","ADDITIONAL","CptList","showSelection","showCptSelectedCode","searchCodeKey","codeKey","updatedItem","isItemExists","TEST","deleteIcon","codeToRemove","prevItem","showSelectedCPTCodes","TestIctOrCptSelector","ProcedureCodeDetailView","handelDeleteCpt","cptCodeList","handelUpdateCpt","maxUnit","isPanelCpt","TestCptSelectorModal","saveCptData","cptList","setCptList","borderTopLeftRadius","borderTopRightRadius","cptObj","prevItems","newItems","prevCptList","ElementPositionDraggableView","elementData","onReorder","listStyleType","effectAllowed","handleDragOver","dropIndex","dragIndex","getData","isNaN","updatedItems","draggedItem","reorderedItems","TestElementPositionModal","testElementData","saveTestElementPosition","setElementData","itemsWithPosition","itemsWithoutPosition","shuffleArray","maxPosition","combinedItems","shuffled","j","random","TestTypeInputDate","datePickerRef","setOpen","placeholderText","RangeBacteriaSelector","TestDetailsRangeView","handelRemoveView","handleAddRange","onChangeGender","onChangeBacteria","rangesArr","range","Gender","AgeStart","AgeEnd","NormalLow","NormalHigh","HighLow","HighHigh","PanicLow","PanicHigh","RepeatLow","RepeatHigh","LowLow","LowHigh","TestRangeModal","InputBadge","handleRemoveOption","AddQuestionModal","question","setQuestion","setNewOption","handleAddOption","trimmedOption","PANEL_QUESTION_ANSWERS_OPTIONS","updatedQuestion","React","TestTypeModal","openDetailModal","mainTests","isDetailModalOpen","setTestPanelData","activeKey","setActiveKey","showDisclaimer","questionModalOpen","setQuestionModalOpen","userClientData","showRangesModal","setShowRangesModal","showCptModal","setShowCptModal","showElementPositionModal","setShowElementPositionModal","Bacteria","setRanges","setIctCodes","companySettings","prevNewItem","uniqueSources","getUniqueSources","getCliaNumber","validateInput","EXTERNAL","sendOut","referenceLab","referenceLabID","formatedTargetRanges","formatTargetRanges","refInt","generateRefIntervalByRanges","QUANTITATIVE","getTestPanelType","handleEditAssociatedPanels","accPanel","currentRanges","handelEffectiveDate","ORGANISM","RESISTANCE","ASSOCIATED","handleCloseQuestionModal","questionObj","updatedQuestions","prevQuestions","additionalQuestion","q","itemObj","updatedPanelObj","newItemUpdate","updatedTargetRanges","Accordion","defaultActiveKey","eventKey","ICT","effectiveFrom","effectiveTo","reagent","sanitizedValue","lastIndexOf","PANEL_QUESTIONS_PERSONALIZATION","filteredQuestions","arkstone","hs","copyRanges","filteredRanges","handelRemoveGrid","rangeValue","prevRanges","TestInputField","TestCollapsibleMenu","TestDetailsRangeViewNew","handelRemoveNode","handleAddNode","handelCollaspeNode","handleAddNewRow","handelRemoveRow","RangesAdded","collapse","FilterKey","RangeArr","getFilteredOptions","includedValues","excludeValues","exdValue","keyType","rangeDataOptions","hasAgeFilter","renderDropdowns","block","selectedValues","getSelectedValues","displayValue","updatedBlocks","handleSelectChange","blockIndex","TestSelector","showCreateButton","uniqueOptions","TestDetailsModal","handleSaveTestDetail","emptyRowObj","emptyNode","defaultRangeObj","keysToMoveToRangeArr","moveKeysToRangeArr","parentObj","newRangeArr","rangeData","refIntervalSelection","setRefIntervalSelection","setResultType","refType","setRefInterval","callFrom","TEST_TYPE_OPTIONS_ONLY","handleChangeRanges","emptyRangeObj","filterData","handelFilterData","filterIndex","filterKeyLength","duplicateFilter","filterKeySet","filteredFilterKey","serializedFilterKey","hasDuplicateFilterKeys","isDuplicateRange","keysOrder","ageRanges","ageStart","ageEnd","valid","previousValue","isAllKeysEmpty","currentValue","checkRanges","getTestAssociatePanel","testAssaySlice","TestTypeSetting","testSources","setTestSources","filterListData","setFilterList","testElements","setOpenDetailModal","testPanelData","getTestsPanesl","dataList","sortedList","aValue","bValue","groupA","groupB","getLabel","parseDate","dateStr","filtersData","filteredData","filterIsActive","filterIsArcstone","selectedSource","getTime","lastUsedTime","TEST_MANAGEMENT_PERSONALIZATION","setPersonalizeOnLoad","getSourceType","addCPTInTargetRanges","cptLookup","showLoading","TEST_ASSAY_LOGS_SLUG","TEST_CREATED","TEST_UPDATED","handleCloseTestTypeModal","testDetailsData","updatedPathegons","prevEditObj","handleSetTestPanelData","exists","copyObject","handleArchive","TEST_ARCHIVED","TESTS_MANAGEMENT","ictLabel","getIctLabelAndTitle","sourceTitle","getSources","testStatusColor","ImageTD","CreateLabelOption","toLocaleUpperCase","TestElementModal","isMounted","handleInputChange","ANTIBIOTIC_RESISTANCE_GENES_TYPE","getPanelElementType","cptItem","saveLogs","LoadTestPanels","CancelledReasonModal","CreateInstrumentModal","platformData","setPlatFormData","TestDictionary","openPanelImportModal","setOpenPanelImportModal","getLoginUserInfoFromLocal","TESTS_DICTIONARY","createTestDictionary","setCreateTestDictionary","selectedTDItems","setSelectedTDItems","setSettingType","filterValues","setFilterValues","DICTIONARY_COLUMNS","filterColumns","setFilterColumns","DICTIONARY_OPTIONS","handelUpdateSpecimen","filterRecords","records","searchParams","matchesSearchParams","searchValue","recordValue","Code","Source","Instrument","Platform","Type","searchRecords","sourceDictionaryKeys","TEST_PANEL_PERSONALIZE","SOURCE_DICTIONARY_COLUMNS","INSTRUMENT_PLATFORM_COLUMNS","CANCELLED_DICTIONARY_COLUMNS","RESULT_OPTIONS_COLUMNS","SPECIMEN_CONTAINER_COLUMNS","parseStringToObject","rawUnits","getMinMax","parts","extractFirstNumber","parsedData","Unit","refRanges","rng","maxValueF","minValueF","removedDuplicated","customKeyBy","dataAfterRemoveDuplicate","innerFilterValues","comparison","sortFilterValues","OPTIONS_PLACEHOLDER","renderCreateOptions","setSelectedMessageTemplate","setShowMessageTemplateModal","deletedTemplateId","MessageTemplateView","setMessageTemplates","filteredMessagesList","setFilteredMessagesList","salePersonsToMap","formatSalesPersonList","filteredClaims","MESSAGE_TEMPLATE_PERSONALIZE","genericModalSlice","showGenericModal","genericData","genericPathogenData","showGenericPathogenModal","setGenericModalData","setGenericPathogenModalData","ReferenceLabModal","ReferenceView","sortData","schs","totalTests","REFERENCE_PERSONALIZE","LabTestTypesSetting","tabsOptions","setTabOptions","usersListArr","tabPillsConstants","MESSAGE_TEMPLATE_VALUE","TAB_SETTINGS","ExportToExcelData","profileView","isCompletedTests","loadData","filterParam","exportData","releaseStatus","arkstoneStatus","columnsWidth","colLetter","colHeader","ChangeResultModal","callback","unResultTests","onChangeType","ChangeTestTypeModal","AppTestLogsModal","parseUser","parseUserPhone","parseUserRole","momentDate","nowIOS","ChangeTestConfigModal","setClient","CalRedieLogsModal","setDetail","retunStatusCard","setReturnStausCard","setRecords","onHandleConfirm","imageFileName","confirmation_code","patients","AdminTotalTestApi","setTotalRecord","showResultModal","setShowResultModal","showTestTtypeModal","setShowTestTypeModal","clientChangeModal","setClientChangeModal","testAppLogs","setTestAppLogs","showAppLog","setShowAppLog","openUploadLogsModal","setOpenUploadLogsModal","dateFilter","totaltests","testAfterFilter","filterTermName","positiveTests","negativeTests","handleExportCalrediePatient","resFilePathc","resut","exportToCalRedie","handleDeleteConfirm","deleteTests","addDeleteLogs","tmpList","updateInHR","pcrTests","addConfigChangeLogs","clientObj","updateClientConfig","preRegTest","prevFilteredTests","labStatusTest","newIds","newTests","toggleCheckboxes","selectedUser","emptyObjectKeys","newObjValue","objKey","demographicObj","handleOpenCreateTest","Message","DeleteTestApi","setShowErrorMessage","openRestoredConfirmation","setOpenRestoredConfirmation","fetchDeletedTests","getDeletedTestList","eTests","expiredtests","handleConfirmRestore","objData","ExternalTestCrew","setLab","showRevokeAlert","setShowRevokeAlert","showImages","y","newDob","diff_ms","age_dt","getUTCFullYear","smsMessage","finationrstName","phoneFormatter","formatZipCode","cols","showImg","ImageCropModal","setBlobFile","crop","setCrop","aspect","imageRef","closeModal","getCroppedImg","canvas","scaleX","naturalWidth","scaleY","naturalHeight","getContext","drawImage","onComplete","TestView","handleResultPDF","setErrorMessage","CrewProfile","newEmp","setNewEmp","Default_Profile","copyImage","showImageCroper","setShowImageCropper","loadingTestView","setLoadingTestView","handleViewTest","ImageUpload","RegExp","ProfileFileName","Emp","isEdit","vacc","CreateTestLabModal","deliveryObj","order_id","eventData","tracking_number","CreateTestDeliveryModal","deliveryCreate","setDeliveryCreate","DELIVERY_COMPANY","trackUrl","DeliveryTrackUrl","handleDelivery","isValidDigits","StatsView","numberStyle","RegisterStepOne","handleProcced","linkCrew","formateDateLL","formateDatellll","QRCodeView","downloadRef","qrRes","setQrRes","html2canvas","allowTaint","useCORS","logging","imgData","crossOrigin","includeMargin","ShowSelection","shows","handleShowSelection","selectedShow","setSelectedShow","RegisterCrew","isMatch","isId","newRegisterObj","setShowName","pageExpire","setPageExpire","setStep","showListing","setShowListing","orderKitClose","setOrderKitClose","openConfirmationModal","setOpenConfirmationModal","maxQty","setMaxQty","reorderdata","setReorderData","currentEnv","loadShowListing","showData","loadShowData","vaccinationTypes","noOfDose","isExternalTestAllow","isValidZipCode","imageFormatWithUtcTime","handleCompleteRegistration","vaccinationDose","handleAddedPreReg","setSpecificUI","isSameOrBefore","filUserDataFirstFormForReorderKit","fillUserData","formattedPhone","statusCode","handleConfirmationRes","getTestOrderQuantity","OrderDetailModal","setTracking","setLogs","fetchTrackingLink","logData","logResultx","shipbob_order_id","testerB","testerA","parseEventData","VaccinationDetailModal","vaccinationImg","setVaccinationImg","externalTestImg","setExternalTestImg","setIsLoading","getCardImage","externalCard","lg","vaccinationDate1","vaccinationLocation1","setIsDisabled","showPopup","setShowPopup","selectedRecord","setSelectedRecord","isPCRShow","ProfileImage","handlePopulate","PreRegistrationView","setMainWidth","openOrderDetail","setOpenOrderDetail","selectedOrder","setSelectedOrder","PRE_REG_PERSONALIZE","showPreRegistration","setShowPreRegistration","showDeliveryModal","setShowDeliveryModal","selectedDeliveryUserId","setSelectedDeliveryUserId","STATS_CLICK_TYPE","stats","setStats","setSelectedUser","openUserDetails","setOpenUserDetails","itemsToMap","PRE_REGISTRATION","isShowUpdated","prevShowList","getSiteTests","refreshList","siteList","selectShowSt","sitee","pre","handleStatsClick","ordered","shipped","handleShowDeliveryModal","handleCreateTest","seltectedUserData","preRegisterArr","valueOf","host","newObject","newEmployeeData","createNewEmployee","saveDelivery","delivery","deliveryOBj","selectedUserData","createDelivery","handleSelectShow","totalResult","RegisterCrewManual","GenericPreRegistration","prevSearch","setPrevSearch","filterObj","k","GEN_TYPE_VALUE","PRE_REG_QR_PERSONALIZE","contryCode","EmployeePDFLayout","ProfileHeader","ProfileTableHeader","align","ProfileTableItem","setUserNotToDelete","userNotToDelete","updateDatePoint","replaceData","testCount","EmployeeCrewProfileLogsModal","totalTestsCount","handleShowMergedProfileLogs","duplicateEmployee","deletedIds","handleUpdataPoint","EmployeeCrewProfileMergedLogsModal","handleCloseMergedProfileLogs","ProfilesView","removeDuplictaeModalShow","setRemoveDuplictaeModalShow","showLog","setShowLog","testLogs","setTestLogs","showMergedProfileLogs","setShowMergedProfileLogs","employeeTotalTestsCount","setEmployeeTotalTestsCounts","mergedProfilesTestsData","setMergedProfilesTestsData","loadEmployees","crewprofile","isRefresh","EmployeeLogsEntries","newDetails","handleImageCheck","imagePAth","oldDetails","olddetail","objectKeys","oldImage","setOldImage","imageExt","setImageExt","oldImageExt","setOldImageExt","notRequiredKeys","handleAPiImage","imageType","string","EmployeeLogs","filteredEmployeeLogs","setFilteredEmployeeLogs","employeeLogsToMap","newdetail","ProfileListItems","handleMakeRelation","relation","ele","initialSelectedOption","menu","RelationView","handleDeleteRelation","isNotDeletable","proxyRelationsSelector","selectedEmployeeForTestSelector","ProfileRelationModal","employeesId","patient","handleChangeRelations","relationOptions","setRelationOptions","selectedProxyRelations","setSelectedProxyRelations","getRelationsData","filterUsersAfterSave","relData","proxyRelArr","filtered","newRelationList","relationList","COMBINE_PROFILE","combineList","connectedTo","relationType","conntedTo","parseJSONObject","updatedEmployee","proxyProfiles","mergeArraysById","auditType","mergeEmployeeLogs","filterEmployees","connected","setConnected","expandReltionList","getConnectedToValue","employeeList","findRes","manageAs","actualProfilePath","ProfileEmployeeTest","testViews","setTestViews","employeeLogs","setEmployeeLogs","showProfileModal","setProfileModal","imageProfileNew","hasKeyOfSMS","hasKeyOfEmail","PROFILE_IMAGE_PATH","handleEmployeeLogs","_deleted","imageName","handelCancelButton","showResultPDF","CloseButton","btnClose","MultiInlineCheckBox","secondaryLabel","handleAdmitChange","isAdmitChecked","multiCheckBox","multiLabel","SitesView","defaultSafeAdmin","siteTests","setSiteTests","filteredSites","setFilteredSites","setNewSite","warningModal","setWarningModal","showToDelete","setShowToDelete","showModalTestType","setshowModalTestType","showPatternEditor","setShowPattrenEditor","showArchive","setShowArchive","openStatus","setOpenStatus","setSelectedStatus","setSafeCampAdmin","adminList","setAdminList","showSettings","setShowSettings","showWarningModal","exitModal","updateSettings","sitesToMap","loadSiteData","admins","refreshSites","whiteLableIds","medFlowSites","siteName","handleUpdateStatus","openSite","getWeekDaySelectedValue","WEEK_DAYS","adminData","getClientObj","handleChang","TestTypeOptions","isSearchable","weekDaysOptions","TEST_ORDER_QTY","PRE_REGISTRATION_TEST_TYPE","xs","sm","ReportDataModal","reportResult","setReportResult","reportData","setReportData","setColumns","updatedRows","inputObject","word","prevState","REPORT_OPTIONS","TestListAdminApi","reportModalOpen","setReportModalOpen","isPreviewModalOpen","setIsPreviewModalOpen","docName","labObject","COMPLETED_TEST","searchTermData","updateAcknowledgeBy","isReview","formatFilters","handleConfirmation","handleSendEmail","downloadFiles","handleReleaseTest","finalizeSendResult","isTestCreationFromEmployee","COMPLETED_RESULT_CUSTOM_COLUMN","isSendToExternalClient","dashboardRoutes","layout","redirect","settingIcon","TableListApi","testDownloadModel","setTestDownloadModel","importLength","setImportLength","isProcessingCall","formatTestAsPerLab","csv","updatedId","processing","isRelevantTest","New","Sent","Processing","filterTest","hideAlert","resetNewTests","handleCSVClick","updateStatusByLab","ProcessedTestListApi","processedtests","ttlEmails","fetchAllClients","getCompanies","fetchUserClients","getUserCompany","createClientAsync","updateClientAsync","updatedclient","deleteClientAsync","clientSlice","userCompany","deletedclientId","fetchAllEligibilityFiles","getEligibilityFiles","careateEligibilityFileAsync","eligibilityFile","careateEligibilityFile","updateEligibilityFileAsync","eligibilityFileId","updateEligibilityFile","deleteEligibilityFileAsync","deleteEligibilityFile","eligibilityFileSlice","eligibilityFiles","existingeligibilityFileIndex","deletedeligibilityFileId","fetchAllSubAgents","getSubAgents","createSubAgentAsync","newSubAgent","fetchUserSubAgent","getUserSubAgent","updateSubAgentAsync","subAgentId","updatedsubAgent","updateSubAgent","deleteSubAgentAsync","deleteSubAgent","subAgentSlice","userSubAgent","existingsubAgentIndex","deletedsubAgentId","getBRMUsers","createUserAsync","updateUserAsync","updatedUser","updateUser","deleteUserAsync","userSlice","ADMIN_USERS","existingUserIndex","deletedUserId","fetchUsers","AUTH_CURRENT_USER","AUTH_ERROR_EMAIL","customRoutes","routes","BRMRoutes","fetchAllCompanies","sigInUserAsync","getCurrentUserAsync","authenticationSlice","labRoutes","adminRoutes","siteRoutes","isSubAgent","subAgentRoutes","patientRoutes","companies","userRoutes","userSessionEnd","logOut","mergeUserPermissions","setGlobalUser","setGlobalLab","setCountryCode","ForgotpassUi","setShowForgotUi","handleResendCode","showConfirmPassword","setShowConfirmPassword","resetPassword","passwordData","setPasswordData","callPublicAPI","SendOTPUi","handleSendCode","disableOTPbtn","setDisableOTPBtn","Login","setUserId","setDisableBtn","multiRole","setMultiRole","isOTPUiOpen","setIsOTPUiOpen","twoFa","showForgotUi","setUserRoles","setUserData","getUSer","redirectToAdmin","uid","medFlowPortalTitle","roleInLocalStorage","clientRole","defaultPersonalization","GET_USER_ROLES","Admins","defaultRole","getUserRoles","rolesPersonalization","availableRoles","LabAdmin","AdminRole","rolesGet","roleArrFormat","handleForgotPassword","resend","send","timeout","IdleModal","showIdleModal","handleLogOut","handleCloseModal","PlanItem","benefitLabel","handleCollapse","compareStrings","planStartDate","planEndDate","insurance_plan","insurance_type_description","plan_number","deductible","deductibleInYear","benefit_amount","deductibleRemaning","coInsurance","benefit_percent","coPayment","benefit","benefit_description","benefit_notes","PayerInformation","handleAddToProfile","additionalPayerId","EligibitlityDetailsCollapsableTable","globalSearch","CollapsableRow","insurance_type_code","convertYYYYMMDDToDate","plan_date","mco_number","entity_name","entity_addr_1","entity_city","entity_state","entity_zip","entity_phone","entity_website","benefit_coverage_description","getElgibilityLineItem","cond","partB","BCC_VALUE","OUT_OF_POCKET","planDates","HealthBenefitTabularForm","collapaseRow","benefitValue","inNetwork","DEDUCTIBLE","benefitObj","getDeductible","EligibilityDetailsModal","selectedEligibility","setGlobalSearch","jumpToSection","setJumpToSection","collapsable","setCollapsable","openTable","setOpentTable","isShow","ELIG_BASE_CONDITION","benefit_code","benefit_coverage_code","MEDICARE_ELIG_CONDITION","findBenefitCode","benefits","itemToSearch","entity_description","primary_care_provider","coordination_of_benefits","payerName","additionalPayerElgibility","isSimilarPayer","dates","parseEligibiltyData","objParams","eligData","additionalPayerName","ipa","sortedBenefits","healthBenefitPlans","ipaRes","plan_begin_date","deductibleObj","OTHER_BASE_CONDITION","MEDICARE_ID","inplan_network","DEDUCTIBLE_CONDITION","benefit_period_description","coPaymentSpecialist","validateFieldsAreSimilar","findIns","parseInsDetails","ins_sex","ins_name_f","ins_name_l","ins_dob","ins_number","isAddInProfile","benefitData","dataResponse","isEligibileWithAdditionalPayer","exception","insData","ins","medicareNo","updateEmployeeInsurance","insNo","defaultPayerId","defaultPayerName","getInsuranceNumberWithPrefix","locationID","generalFacility","subAgentID","generalSubAgent","ins_name_m","subAgentName","locationName","insuranceProvider","ins_addr_1","ins_city","ins_state","ins_zip","payerids","payerNames","checkBRMEligibility","handleSingleFieldUpdate","updateEmpSingleField","empKey","insDetails","CONFIRMATION_TYPE","UPDATE_PATIENT","plan","EligibilitySearchRecord","ImportFileStatusModal","handleCancelRequests","fileID","NOTIFICATION_STATUS","PatientImportErrorModal","onCompleteLoad","dropdown","setDropdown","parseDOB","parsedDate","padStart","year","listData","test_date","parseTestDates","p_insurance","p_insurance_id","p_code","room_number","floorNo","s_code","s_insurance","s_insurance_id","ORDERS","COMPLETED","REMAINING","REJECTED","fail","profileMatched","pass","FAILPATIENT","FAILORDER","FAILELIGIBILITY","ATTENDEES","handleComplete","selectOptions","tdFormatTitle","orderMessage","patientMessage","showPatient","showOrderModal","handleEditOrder","showEligibilityDetails","checkEligibilityDetails","ORDER_STATUS","isEmployeeCall","ORDER_IMPORT_MODAL_PERSONALIZE","isEmployee","FileInput","setFile","setFileType","setSelectedFileName","selectedFileName","setFileSize","acceptableFiles","formatFileSize","customFileIcon","EditableDropdown","selectedOptionValue","selectedOptionLabel","onOptionChange","getLabelOrValue","addNewItem","setSelectedValue","changeValue","prevInputValue","DocumentForm","setDocuments","newDocument","setNewDocument","DOCUMENT_TYPES_OPT","documentTypes","setDocumentTypes","slicedString","validateDocumentForm","createDocumentAsync","logObject","paramsObj","updateDocumentAsync","prevlist","handleUploadDocument","DocumentList","setFileUrl","handleDownloadDoc","handleMultiDownload","checkboxId","JSZip","generateAsync","zipBlob","useImperativeHandle","handleDocDeleted","handleViewDoc","PATIENT_DOCUMENT_COLUMNS","InsuranceDetailsModal","handleUpdateIns","insuranceList","insuranceData","setInsuranceData","showError","setShowError","isEligibiltyChecked","setIsEligibiltyChecked","sortedPayerList","payerlistData","nameA","nameB","alreadyExistIns","isSameCompanyAndMedicalNo","isDifferentId","handleInsValidation","IGNORE_INS","isValidIDNumber","isMedicare","copyInsuranceObject","eligibiltyResponse","copay","formatEligibilityResponseData","eligbRes","getStartAndEndDateFromEligibility","coinsurnace","out_coinsurnace","out_copay","out_copay_specialist","copay_specialist","effectiveStartDate","effectiveEndDate","additionalPayer","modifiedEmp","insuranceCopy","payer_type","MEDICATRE_IDS","CUSTOM_INS_ADV_PLAN","isPrimary","InsuranceViewCard","insurance","handleRemove","insObj","setInsObj","handleShowEligibility","isNotCustomInsurance","insMessage","titleMessage","isPrimaryInsurance","class","Eligibile","showEligibilityStatus","TrashIcon","marginInline","formatPercentage","coinsurance","PatientProfileModal","documentListRef","openDocumentModal","setOpenDocumentModal","selectedDocument","setSelectedDocument","insuranceModal","setInsuranceModal","newProviderInfo","setRelations","getProviderOption","getConfigClients","clientIdsToFilter","clientOptions","loadDocument","getPatient","empObject","formattedRelationalData","data1","getProviders","handleCheckEligibility","updateContactPreferences","validationOfPatientRecord","validationRules","fromReset","requiredKeys","errorMsg","validatePatientRecordFromClient","requiredKeysObj","getSiteOption","createPatientLogin","createOrderAPI","showSuccessBottomMessage","createdPatientUser","handlePatientResetPassword","modifiedRelation","hospiceModifer","EMPLOYEE","outstanding_balance","getValidSpaces","EMP_INS_OBJECT","getUUID","stateUser","stateInsDetails","AddIcon","newInsurances","editPatientRecord","CustomProgressBar","progress","round","ProgressBar","animated","userSiteName","emailSending","userType","notificationList","isProcessing","setNotificationList","downloadIndicator","progressStatus","notify","titleLabel","UPLOAD_CSV_FILE","totalRecords","processCount","request","Navbar","bg","expand","documentElement","classList","toggle","node","onclick","parentElement","Brand","currentLocation","roleSwitch","Collapse","Nav","navbar","TestNoteModal","objectType","handleUpdateNoteReocrd","loadingSelector","general","messageSelector","confirmationModalSelector","testToPrintView","selectedDeviceSelector","archivedListSelector","showQuestionaireTableSelector","answerAdditionalQuestionSelector","MainTableInputBox","handleBlur","onFocus","select","TestConfirmationModal","selectedRow","handleRejectReason","handleUploadFile","isDisableControls","rejectedReason","testStatus","collectedDate","TestDoneModal","showResult","uiType","sendOutOptions","setSendOutOptions","setSelectedRow","confirmationTests","setConfirmationTests","labelArray","loadTestData","orderStatusAcknowledged","TEST_COLUMNS_FOR_PROVIDER","TEST_HISTORY_MODAL_COLUMN","TEST_DONE_MODAL_COLUMN_DETAILS","getStatus","isProviderLogin","testsToDo","testsDone","testWithDate","testDoneObj","dateOfBirth","reqFormTemplate","REQ_TEMPLATES","ALTA_TOX","baseTestStatus","isResultEmailed","prevTestID","pendingtestsIds","testDoneDate","isCancelStatus","providerStatus","isProviderCancelled","cancelledBy","ackData","isAcknowledged","openNoteModal","showReqForm","processRejectedTest","handlePrintClick","getConfirmation","unProcessedtests","isPrintDisabled","handleAllPrintTests","testToReceive","singleTestPrint","bracodeList","qty","testsToPerform","itemSelectedSources","isModalClose","getTestDates","testCreatedAt","isCreatedByLab","relatedsymptoms","docUploaded","venipuncture","distance","createdByPhone","updatedTests","processedTest","testForPrinting","formatTestStatus","Rejected","Cancel","Cancelled","sourceOptions","formattedDate","updateTestsOnConfirm","isRowChanges","isChangeOccur","labComment","testBarcode","nameParts","part","TEST_DETAILS_DONE","isTestDone","chart_Icon","orderTestStatus","rowTitle","TESTS_DONE_STATUS","handleInputComment","filterSourcesBySwabType","getTestSource","isAccepted","isSendOut","isRejected","isNoSendOut","isNoReason","handleDifferentStatus","infoIcon","formattedRow","handleSendOut","handleInputRejectReason","ResultViewModal","appContextView","detailEmpId","loadPDFData","Sidebar","invalidTests","handleNavClick","backgroundImage","prop","upgrade","routeName","activeClassName","TestScheduleModal","TEST_TYPES","processPhoneNumber","country_code","handleOnDrop","isSeroClinix","SEROCLINIX_ID","SEROCLINIX_TEST","Sero_CSVValidationRules","CSVValidationRules","convertArraytoObject","connectedProvider","referringProviderNpi","p_payer","p_member_id","s_payer","s_member_id","localID","ref_id","isValidInput","manualtest","requestRes","empIds","address2","p_group_id","s_group_id","DateItem","handleChangeDate","EventBar","handleUpdateSchedule","scheduled","onChangeSelection","handleMoreAction","GlobalSearch","handleFilterClick","globalSearchText","eosModal","setSearch","debounceFire","SideListBar","selectedDate","updateDateList","empsToShow","setEmpsToShow","eosEmps","nonEosEmps","filteredPatient","setFilteredPatients","setPatients","setSellectAll","setScheduled","scheduledPatient","setScheduledPatient","loadAllEmployees","globalFilter","short","fullName","nonScheduledPatients","scheduledPat","updateScheduledList","typeOfAction","prevCheckboxes","filteredItem","pervList","prevItemIndex","newPervList","handleChangeSelection","addSchedule","removeSchdeule","paddingInline","handleSelectAll","itemMinSize","UpComingScheduleModal","scheduleList","setScheduleList","setSelectedDate","loadScheduleList","onUpdateTest","AutoFocusInput","OrderAdditionalQuestionView","setAdditionalQuestions","setSortedList","handleSetAdditionalQuestions","valueA","valueB","sortList","ORDER_ADDITIONAL_QUESTION_PERSONALIZATION","TestDetails","setAdditionalQuestion","testNames","setTestNames","defaultTestData","setDefaultTestData","openHSForm","setOpenHSForm","barcodeRef","labOptions","collectorList","resultToShow","testCreate","labelColor","getResultToShow","setImageIfPathExists","setImageFunction","orderAdditionalQuestionData","flatMap","empAutoRelease","demoWithFormattedDOB","formatedObj","loadReqFormTest","isOrderIDNull","isTestIDNull","isOrderIDMatch","isTestIDMatch","testPrevObject","receivedBy","finalEmpolyeeData","comapredData","compareTestdReturnNewValues","convertTestToOrderObj","prevTestTypeKey","custodyButtonStatus","isUserAuthroized","EDIT_PERMISSION_ROLE","whiteLabelLogo","getRecviedDateFromSrNo","ALTA_NEW_ID","getTesterDetails","getVerifiedDetails","isRestated","restatedNote","questionList","WORKER_OPT","POSSIBLE_EXPOSURE_OPT","CONFIRMED_EXPOSURE_OPT","SYMPTOMS_OPT","tabelForm","EmployeeModal","setNewEmployee","isTest","ARCHIVE_PERSONALIZATION","PatientView","setEmployees","selectedEmployee","openEmployeeModal","setOpenEmployeeModal","showConfirmation","setShowConfirmation","addPatientNote","tempOrderRef","patientObject","updatedEmployees","matchesSiteOrProvider","noShowLoader","employeePersonalization","LAB_MEMBER_PERSONALIZE","serarchTermData","handleEligibilityCheck","empEligibilityToCheck","eligibilityError","formatEmployees","empsToMap","sortByDirection","ttlEmps","parseArchiveResponse","statusList","successfulIDs","patientObj","getClientTitle","archivePatient","createPatient","siteObject","handleOpenCreatePatient","showTestScheduleModal","ORDER","addOrders","selectedPatient","newOrder","ORDER_EMPTY_OBJECT","accNo","shift","getDropDownOptions","openPatientTestViewModal","archiveRecordMessage","isEditing","newProvider","setNewProvider","handleFindProvider","PatientProfile","setProviders","patientId","fetchProvidersAPI","middle","hanndleAddIns","arePropsEqual","prevProps","nextProps","OrdersView","orderTests","setOrders","filteredOrders","setFilteredOrders","editOrders","isArchivedOrderUrl","loadOrders","eventOrder","formatOrders","prevLength","newOrderList","isSiteMatched","activeOrders","updateOrderStatus","prevTests","ordersToMap","getOrderStatusTitle","cancelledReason","getPathname","testProcessed","ORDER_PERSONALIZE","addDateFilter","dateParams","isArchived","ttlOrders","handleCancelConfirm","orderToCancel","formattedOrder","orderToArchive","newOrders","newTotal","handleExportOrder","selectedColumn","getSelectedColumn","formatPersonalization","processTestFromOrder","orderList","formattedOrders","ordersList","formattedList","archiveOrders","showLoadOrderModal","isDisableCreateTest","fetchAllEligibilitiesAsync","isNewCall","createeligibilityAsync","geteligibilities","updateeligibilityAsync","eligibilityId","updatedeligibility","updateeligibility","deleteeligibilityAsync","deleteeligibility","openEligibilityDetailModalAsync","eligibilityBucket","eligibile","apidata","elig","eligibilitieslice","eligibilities","filteredEligibilities","openCheckEligibilityModal","eligibilityDetailsData","hospiceDetailsData","setFilteredEligibilities","createEligibility","setOpenCheckEligibilityModal","setEligibilityDetailsData","setHospiceDetailsData","existingInvoiceIndex","inv","existingFilterInvoiceIndex","eligibilityLists","view","existingeligibilityIndex","deletedeligibilityId","selectedHospiceDetailsSelector","ChartJS","CategoryScale","LinearScale","PointElement","LineElement","BarElement","ArcElement","Tooltip","Legend","DashboardLineChart","statsType","statsTitle","orderedClientNamesData","dateTimeType","orderedLabNamesData","orderedSiteNamesData","summaryDataFromLocalStorage","summaryResultData","setSummaryResultData","isWeeklyData","setIsWeeklyData","dateType","setDateType","labels","setGraphLabel","GRAPH_COLOR_VALUES","colors","legendcolor","setLegend","loadGraphStats","statsSummary","formatedDates","graphlabels","GRAPH_WEEKDAYS_LABELS","day","summaryStatsData","nameArray","seriesDataArr","nameElement","tempSeriesArray","dateElement","datalabel","colorsArr","responsive","maintainAspectRatio","plugins","legend","SUMMARY_STATS_TYPE","usePointStyle","boxWidth","datasets","alignContent","DashboardPieChart","chartDataSet","setChartDataSet","chartDataLabels","setChartDatalabel","chartData","formatTestLabels","dataArray","labelsArray","formattedLabel","loadChartData","fontColor","DashboardBarChart","marginBlock","DashboardChartTotalTestsDataCard","totalTestCounts","clientDashboard","totalTestsImg","positiveTestsImg","negativeTestsImg","inconclusiveTests","DashboardChartsTableData","totalCounts","orderedClientNamesArray","orderedLabNamesArray","orderedSiteNamesArray","testsSummaryData","setTestsSummaryData","positiveTest","setPositiveTest","sortedSummaryData","setSortedsummaryData","tableSummaryData","summaryData","loadTotalTestCounts","fiteredshowOnSummaryScreen","loadDashboardData","ptData","sum","parseIntVal","positiveCount","negativeCount","sortByOtherArray","orderArr","aIndex","bIndex","loadColorValues","orderedNamesArr","sortedsummary","colorValue","SUMMARY_TABLES_STATS_TYPE","positiveData","SUMMARY_TABLES_KEY_LABELS","lastPositiveTest","xmlnsXlink","points","formateDateDDMMMYYYY","AdminDashboard","setTotalCounts","setOrderedClientNames","setOrderedLabNames","setOrderedSiteNames","testCountsObj","DashboardChartTotalTestsData","orderedNames","ClientsDashboard","connectedIDFromRoute","routingPathBasedMedFlow","postiveTestsCount","negativeTestsCount","pendingTestsCount","inconclusiveTestsCount","totalTestOfShow","showStartDate","lastPositiveTestDate","dayLastPositive","LabDashboard","loadSummaryData","DiagnosisAccordionButton","DiagnosisAccordionView","handelSaveDiagnosisPanel","ictList","localIctList","setLocalIctList","ictItem","newCode","currentCodes","copyCptList","isExtensible","handleCptList","diagIndex","handelDeleteDiagnosis","innerIndex","mainIndex","procCodeIndex","newData","idx","removeDiagCode","CreateTestItem","onItemChange","testDoneList","onItemRemove","handleEditTest","onPrintClick","testInTestDoneList","handleItemSelection","CreateTestHeader","handelSelectDeselect","isAllSelected","CreateOrderTest","setOrder","setTestDone","setIsAllSelected","setIctList","editIndexIct","setEditIndexIct","setTestDoneList","setOrderList","selectValue","orderItem","getOrdersTests","resData","handleItemChange","cloneOrder","formatSelectedSource","sendOrderForTestCreation","orderValue","isPrint","printTestArray","printData","getTestListToCreate","printItem","copyOrder","objToProcess","SignaturePad","setDisabled","disableSaveButton","setDisableSaveButton","signCanvas","consent","deleteSignature","getValidSignature","renderTrimmedSignature","getCanvas","ctx","clearRect","xOffset","yOffset","marginBotton","GreenTick","penColor","canvasProps","isEmpty","onSaveSignature","OrderTestSelector","labClientTest","formatOptions","getTestOptions","mergedOption","OrderDiagnosisView","orderIcdData","setOrderIcdData","showSourceSiteModal","newEmptyTestData","refCharge","ict","orderData","getDiagOptions","handleDiagCode","ictAlreadyExist","isBillable","cloneOrderIcd","getFromatedCurrency","chargeValue","handleGetTests","tableId","sourcesList","makeUniqueSources","isAnySrcExist","isAnySourceExist","orderArray","sourcesArray","isTestCreated","hasCptCodes","_lastChangedAt","hrCounter","formatTestObjectForOrder","srcList","testIdSet","uniqueQuestions","handleSetCpt","handleSetUnit","unitValue","handleSetRefCharge","formatedValue","handelSetSource","tableIndex","handelSetspecimen","handelSetDiagnosis","removeTest","prItem","cellIndex","ORDER_DIAG_PERSONALIZATION","SourceSiteModal","handleAddSourceSite","getFormattedEmployeeObject","cCode","patientClient","CA","US","OrderTestModal","setShowModal","activeTabIndex","setActiveTabIndex","showSourceSite","setShowSourceSite","sourceSiteIndex","setSourceSiteIndex","orderEmployee","setOrderEmployee","getSiteDefaultProvider","parseOrder","clientInsurances","setClientInsurances","setOrderData","siteData","getOrderPatient","dbEmployee","formatedTest","formatTestForOrder","updateOrderData","updatedArray","hasUpdated","loadDefaultInsurances","getConfigSites","buildAllowSites","includeAll","allAssociatedClients","selectedEmployeeClients","baseAllowSites","clientMatchesAllowSites","extendedAllowSites","getLinkedClientsOption","linkedClientsArray","uniqueClientsArray","siteobj","Lucira","PCR","Molecular","Rapid_PCR","Rapid_Antigen","Rapid_Flu","orderComparison","ord","matchingRecord","currentTests","existingTestsToDo","existingTestIds","uniqueData","getProviderDetails","ref_provider","ref_firstName","ref_lastName","prevTestCreate","patientConsent","physicianConsent","getTrimmedCanvas","setMatchedConsent","diagData","getDiagListFromOrderTest","getTestListFromOrderTest","missingRequiredAnswers","answerItem","provObject","collectionDate","labReceiveDate","hasAtLeastOneDiagnosis","compareObjValues","compareAndReturnNewValues","newOrderObj","getUpdatedFields","EligRes","otherOrders","collectedBy","collectedByName","parsedTestsToDo","formatOrder","updateOrderAPI","tabOptions","createTestNow","handleNonBillableConfirmation","paramObject","isComingFromOrderCreation","copyTestCreate","sourceSite","isShowRoom","roomno","isShowFloor","allowedSites","singleSite","handelChangeReferringProvider","call","clincialComments","TestSelectionModal","employeeForTests","clientObject","setTestList","getTestList","createTests","tmp","baseSource","prov_id","prov_name","prov_npi","testOrderDate","ShowAlertMessage","showConfirm","hideOverlay","customClass","TestResultInput","onUpdateTestResult","RESULT_SETTINGS_OPT_QUALITATIVE","ResultMarkInput","onUpdateResultMark","AssignResultsTestModal","testTypeResult","resultsData","setResultsData","SHOW_TEST_PERSONALIZE","setPersonalization","updatedPersonalizationWithCtScore","updatePersonalization","compareTestResults","array1","array2","resultRows","formatSelectedTestResultDetails","handleUpdateTestResult","currentResultsData","customIsObject","handleUpdateResultMark","updatedObj","listField","BioLabBiologicalPDF","testReceivedDate","testCode","setTestCode","hasImage","setHasImage","getTestCode","getDiagonosisCode","defaultDiagnosis","orderTestObj","catch","getTestName","borderBottomLeftRadius","borderBottomRightRadius","prIndex","isTestCodeMatch","irIndex","micIndex","cytIndex","biIndex","PEIndex","RequisitionFormViewModal","requisitionView","requisitionData","setRequisitionData","barcodeImage","setBarcodeImage","barcodeBase64","fetchData","renderProps","FormComponent","showRequisitionForm","printPdfDocuments","pdfUrls","previousPromise","responseUrl","printPdf","iframe","contentWindow","print","ShowPrintOptions","urls","TEXT_FIELD_OPTIONS","DEFAULT_MESSAGE_TEMPLATE","MessageTemplateModal","fromDisclaimerModal","fromDisclaimer","itemWithDefaultValues","MESSAGE_TEMPLATE_CATGORY","opts","GlobalActionsComponent","selectedHospiceDetails","messageTemplateModal","HospiceDetailsModal","confirm","TestAssociatedViewModal","associatedPanels","setUniqueSources","allSources","ASSOCIATED_PANEL_PERSONALIZE","GenericPanelTestView","mainTest","subTest","context","showGenericPanelModal","showPathogen","objToDispatch","genericModalViewSelector","genericModal","GenericPathogenView","CREATE_TEST_GENERIC_PERSONALIZE","isQualitative","isAdditionalResistance","resultInputRef","PanelResultModal","setRestatedNote","addDefaultdResult","parsedJson","formatedData","selectedRange","getRangeByAgeOrGender","age","reactiveTest","organismsTest","testTypeId","tItem","mainTestTypeId","generateSimpleRefIntervalFromRanges","subItem","reactiveTestSub","organismsTestSub","isubItemtem","formatPanelTest","formatTestWithoutPanel","associatedTest","additionalTest","formatMainTestWithPanel","getRowResultColor","dataRow","getResultValue","handleSaveResult","getOverallTestResultColor","companyClient","clientAutoRelease","showAutoRelease","getSpecificResultPersonalize","resultPdfSelector","resultPdf","ResultUploadModal","setExternalID","resultObject","dymoSmallLabel","swabtypeStr","codeToRender","dymoMediumLabel","dymo30336Label","getPatientName","getDemographics","employeeDemographics","orderEmployeeDemographics","parseOrderLableXmls","swabTypeArray","dymoXmlObj","DymoSmall","DymoMedium","Dymo30336","generateAndSendZpl","nameString","collectionSourceString","isSeroclinix","zplLabel","ZebraMedium","ZebraLarge","zplSeroClinix","zplCode","ArchiveModal","sortArchiveStatusList","overflowX","QuestionnaireTable","updatedAnswersOptions","setSelectedOptions","formatSelectedOptions","SupportView","AdminNew","setShowIdleModal","setTimedOut","successMessageText","successBottomMessageText","setSuccessBottomMessageText","setRole","scanBarcode","setScanBarcode","uploadPatientResult","setUploadPatientResult","eligibilityDetail","setEligibilityDetail","notifySubs","setNotifySubs","setUploadFileStatus","setShowOrderModal","showOrderTestModal","setShowOrderTestModal","setIsProcessing","userRef","noteObject","setNoteObject","messageObj","selectedTestForPrint","isGlobalLoader","dymoSDKLoaded","setDymoSDKLoaded","printers","setPrinters","handlePause","onIdle","timerRef","updateLastActive","resetTimer","storedTimestamp","lastActiveTime","activityEvents","handleActivity","useIdleTimerHook","useLayoutEffect","roleSelected","childItemsProcessed","parentIndex","main","updatedPrev","itemIndex","patientInsurance","localApi","getDevices","BrowserPrint","readyState","getLocalDevices","device_list","warn","dymo","framework","init","printersList","getPrinters","printerNames","printer","isConnected","printerLocalStorage","printDymoLabel","contextSwitch","labelXml","openLabelXml","printerName","printZabraLabel","serial","seroclinix_test","pause","useIdleTimer","onActive","onAction","crossTab","emitOnAllTabs","getRemainingTime","getLastActiveTime","getElapsedTime","getTotalIdleTime","getLastIdleTime","isIdle","resume","isLeader","stop","sidebarImage","setUserRoutes","setUsersLoading","setAdmins","setPendingTests","completedTests","unprocessedTests","unSubmittedTests","setExternalTest","setNewTests","setTotalTests","adminTotalTests","setAdminTotalTests","setUserLab","setUserLabName","setUserSiteName","setEventObject","setEventOrder","setPatientObject","setTestObject","showTestLogModal","setShowTestLogModal","showPatientModal","setShowPatientModal","testScheduleModal","setTestScheduleModal","openTestScheduleModal","setOpenTestScheduleModal","patientTestViewModal","setPatientTestViewModal","resultView","setResultView","setRequisitionView","openUpComingSchedule","setOpenUpComingSchedule","setDownloadIndicator","locationObject","setEmpId","mainPanel","useScanDetection","isValidBarcodeNumber","scanBarcodeFunction","debouncedWriteFromAPI","showUploadFile","uploadedFileNames","updateOldScanning","findTest","updateNewScanning","redirectPath","BIO_LAB_ID","fetchUserFromLocalDB","formatUserObject","Attributes","attr","Value","Username","UserStatus","realTimeStatus","fetchAdmins","fetchClients","isDownloadAll","reqForm","selectedItemsData","paramObj","processChunks","totalFiles","completedFiles","downloadFileName","chunkArray","chunks","dataToProcess","chunk","successfulResults","promiseResult","fulfilledResult","fetchSites","fetchSitesByUser","fetchSitesByClient","findTotalTestsBySites","passFailClients","fetchExternalTests","formatExternalTest","loadEmp","fetchLabs","fetchPendingTests","fetchAllAdminTests","fetchNewTests","refreshDataOnSubscribe","setUser","setOrderObject","formatedOrderForUpdate","RESULT_CHECK","onSubscriptionUpdateTestData","ROUTES","onSubscriptionUpdateEmployeeData","modelObj","formatPatientIntoPgData","providerMatch","onSubscriptionUpdateSites","setRoutesWithSupport","baseRoutes","setFunction","support","LIFE_CARE_ID","updatedRoutes","apiSubscription","showSubscription","showCreateSubscription","uploadRequestGQLSubscription","uploadRequestMainGQLSubscription","orderUpdateGQLSubscription","orderCreateGQLSubscription","createRequestGQLSubscription","patientSubscriptionUpdate","patientSubscriptionCreate","patientSubscriptionDelete","testUpdateSubscription","clientSubscription","labAdminRoutes","setLabRoutes","isRoleIdExist","selectedRoles","userPermissionsData","currentUser","labRoles","labRole","syncExpressionsByUserType","syncExpression","EmployeeBarCodes","connectedIDValue","configure","maxRecordsToSync","syncPageSize","syncExpressions","graphqlOperation","subscribe","next","onUpdateSite","onCreateSite","onUpdateUploadRequestMain","isValidClient","isValidSite","CRUD_TYPE","UPDATE","onUpdateUploadRequest","onUpdateOrder","onCreateOrder","onCreateUploadRequest","INSERT","onUpdateClient","fileStatus","onCreateTest","subscriptions","onUpdateEmployee","onCreateEmployee","onDeleteEmployee","unsubscribe","scrollingElement","innerWidth","parentNode","generalObj","sendResultOnEmail","isUploadCall","form","showUpComingSchedule","AMAZON_CLIENT_RESULT","createTestFromOrder","adminCommon","fetchUnprocessedTests","resetUnSubmittedTests","fetchUnSubmittedTests","resetAllTests","resetTotalTest","resetExternalTest","resetHSTests","fetchSiteTotalTest","fetchClientTotalTest","filterRoutes","whiteLabelLabRoutes","WHITE_LABEL_ROTUES","pendingResults","testRoute","addRouteIfNotExists","routeList","LabTechRoutes","hubListener","Hub","listen","hubData","adminListener","labListener","siteListener","clientListener","updateOrderFilesStatus","respFile","updatedStatus","pushFileOnServer","handleOnSaveFiles","filesData","handleCancelUploadRequest","getDefaultView","archivedOrders","currentPath","permissionKey","checkPermissionAndRedirect","AdminNavbar","onCancelRequest","OrderView","detailTest","testResultTypeData","handleCancelAll","isError","PreRegister","registrationDone","setRegistrationDone","setBarcode","messageError","setMessageError","newUSer","QRLinkView","setTestId","respose","TableListApiNew","testItem","onContextMenu","ProcessedTestListApiNew","labRoutesNew","LabSidebarNew","LabNew","getConnectedID","connectedId","setIsShowUpdated","fetchUserGroups","testers","employers","onSubscriptionTrigger","subscription","CrewQRCode","setCrew","ImportTestDoneModal","TotalTestsApiNew","showImportModal","setShowImportModal","handleImportData","TOTAL_TEST_HEADER","isValidDate","totaltest","dobTerm","dobTermName","showTerm","showTermName","DobFilter","PositiveTestsApiNew","positivetest","QuarantineDetailsModal","EXPECTED_QUARANTINE_DAYS","getQuarantineDays","QuarantineNew","filteredCrew","setFilteredCrew","openConfirmModal","setOpenConfirmModal","openDetailsQuarantine","setOpenDetailsQuarantine","selectedQuarantine","setSelectedQuarantine","exportTests","formatQuarantine","expectedEndDate","quarantine","crewToMap","handleEndQuarantine","ImportCrewPhoneModal","crewData","ttlInvitations","emailMsg","ExportCrewToExcel","EmployeeDemoChange","handleOnClick","overflowWrap","HSCrewNew","selectedCrew","setSelectedCrew","preLoadCrew","setPreLoadCrew","showDemo","setShowDemo","AsYouType","prevCrew","getCrewMembers","dupes","dupeCount","lastTest","crewhs","lists","handleEditCrew","jobTitle","region","callTime","zone","HSRoutesNew","SiteSidebarNew","HSDashboard","setSummaryData","positiveTestsData","realPositive","showRunningDays","getShowRunningDays","lastPositive","SiteNew","userSite","setUserSite","getSiteByID","HipaaRegisterStepOne","HIPPA_QUESTIONS","QuestionAndAnswerForm","handleSaveAns","expectedAns","isNotValid","handleOptionChange","Certificate","downloadCerificate","VideoPlayer","videoId","embedUrl","frameBorder","allowFullScreen","HipaaTest","setTesKey","recordQuesAnswer","setRecordQuesAnswers","ansFind","saveHipaaData","savechangeAns","ansObj","cloneData","findDataIndex","reviewAns","formatFetchData","isCompleted","questionIndex","STATS","STATS_REDUCER","FILTER_PAID_CLAIMS","FILTER_MONTHLY_CLAIMS","LATEST_UNAPPROVED_CLAIMS","filterPaidClaimsAsync","CONSTANT","objToSend","pid","PAID_CLAIM_SPANS_FORMAT","selectedSpan","filterPaidClaims","filterMonthlyClaimsAsync","getLastestDeniedRejectedClaimsAsync","filterParams","ORDER_BY_DIRECTION","DESCEDNING","getClaimList","deniedClaimsRes","paidClaims","CLAIMS_STATS_DETAILS","monthlyClaims","latestUnapprovedClaims","meta","arg","EMPLOYEE_CLAIM_FETCH","EMPLOYEE_CLAIM_UPDATE","GET_CLAIM_STATS","fetchAllEmployeeClaimsAsync","submissionDate","submissionStartDate","submissionEndDate","Blank","blanks","EMP_CLAIM_BLANK_OPTS","assignTo","assignToMe","employeeClaims","prevAssignToMe","newAssignToMe","prevFetchedList","newFilteredList","claimsFilter","employeeClaimSlice","setFilteredEmployeeClaims","setStatsObj","updateStatsLocally","objFilter","setClaimsFilter","setAPIParams","resultSummary","draft","draftAmount","submitted","submittedAmount","rejectedAmount","approved","approvedAmount","denied","deniedAmount","paid","paidAmount","partial","partialAmount","cancelledAmount","total_charge","from_date_1","EMP_CLAIM_PERSONALIZE","assign_details","CLAIM_EDIT_STATUS","parseDiagonosisCode","DIAGNOSIS_ITEMS","PARSE_ALPHA_INTO_NUM","getStatsSummaryClaimAsync","claimFilter","summaryOnly","rejectted","rejecttedAmount","partialProcessed","partialProcessedAmount","claimSubmitToClaimMD","claimSubmission","claimtype","removeKeysFromObject","CLAIMS_KEYS","payerid","prov_name_f","prov_name_l","prov_name_m","prov_taxid","ord_prov_id","createEmployeeClaimAsync","seqNumber","pcn","graphqlApi","createClaimGQL","CLAIM_SUBMIT_STATUS","updateEmployeeClaimAsync","oldClaim","statsObj","updateEmployeeClaimsGQL","newImage","updateStats","fetchInsuranceWithPayerID","updateSubmittedClaimsGQL","formattedIds","insServices","payerMap","payer","settingObj","payerRecord","objToSet","bill_npi","DEFAULT_NPI","updateBulkSubmitEmployeeClaimAsync","claimSubmissions","claimSubmitted","notSubmitClaim","uniqueIds","subClaim","isBioLab","proc_array","removeSpaceIns","ON_HOLD_CPT","formatedClaim","formatEmployeeClaim","newClaim","acknowledgeClaimAsync","acknowledgeClaimGQL","updateStatusEmployeeClaimAsync","claimsList","newDate","newStatus","updatedClaims","claimToBeUpdated","updateEmployeeClaimStatusWithLogsGQL","deleteEmployeeClaimAsync","claimsArr","removeAssignTo","assignUserNumber","empsFilter","deletedClaimIDs","deleteEmployeeClaimGQL","eventName","companyStats","STATUS_KEY","amountKey","getIntVal","oldKey","oldAmountKey","oldAmount","oldClaimAmount","newClaimAmount","claimParams","downloadFileFromS3","filteredEmployeeClaims","claimTimeFilter","STATS_OBJECT","claimReSubmissionModal","setClaimTimeFilter","setClaimReSubmissionModal","updateClaimSubs","formatClaims","createClaimSubs","deleteClaimSubs","deletedClaim","deletedClaims","deletedemployeeClaimIds","updatedemployeeClaim","existingemployeeClaimIndex","existingfilteredEmployeeClaimIndex","errorMiddleware","store","API_ACTIONS","DOC_FETCH_TYPE","loaderMiddleware","nosShowLoader","notToCheck","fetchApiDataAsync","getEmployeeLogs","employeeLogsSlice","fetchDocuemntAsync","fetchDocuemntTypesAsync","fetchDocumentTypesAPI","createDocuemntTypesAsync","creteDocumentTypesAPI","loginUSer","deleteDcoumentAsync","documentSlice","deleteDoc","updateDoc","CLAIM_INVOICE_PERSONALIZE","fetchAllClaimInvoiceAsync","getInvoice","claimInvoiceSlice","getClaimInvoiceByIdGQl","dbInvoice","correctedDate","dueDate","toData","invoiceAmount","details","minAmount","updateClaimInvoiceGQL","invoices","cancelInvoices","claimInvoice","filteredClaimInvoice","invoicesFilter","setFilteredClaimInvoice","setInvoicesFilter","updateInvoiceSubs","formatInvoice","invoice","existingFilterIndex","createInvoiceSubs","updateInvoiceDocsAsync","saveInvoiceDocFile","createInvoiceDocsAsync","invoiceDocumentSlice","invoiceDocs","setInvoiceDocs","deleteInvoiceDocs","addSelectedClaim","removeClaimItem","resetClaimList","updateClaimMessage","minimumAmount","faxSubject","setErrorForSelectedClaims","idsArray","bulkInvoicesSlice","selectedClaims","claimIndex","claimID","updatedClaimsMap","local_id","updateObj","processPaymentSlice","alreadyPostedClaim","openPaymentProcess","claimsIDs","setAlreadyPostedClaim","setOpenPaymentProcess","setClaimsIDs","addSelectedInvoice","resetInvoice","invoicePreviewSlice","selectedInvoice","isBulk","viewOnly","clientPcsList","showClientPcsModal","clientPcsSlice","payloadArray","combinedList","uniqueByKey","pcsId","salePersonSlice","selectedSalePerson","showAssignModal","salesPersonListToAssign","salePersons","salesPersonArr","indexToUpd","prevList","indexToRemove","rootReducer","combineReducers","companySettingReducer","employeeLogsReducer","employeesReducer","clientsReducer","subAgentsReducer","locationsReducer","eligibilityFileReducer","providersReducer","employeeClaimSliceReducer","authReducer","checkEligibilityReducer","dashboardReducer","generalReducer","usersReducer","cptCodeReducer","insuranceReducer","documentReducer","invoiceDocuments","invoiceDocumentReducer","claimInvoiceReducer","bulkInvoice","bulkInvoicesReducer","invoicePreview","processPayment","processPaymentReducer","clientPcs","messageTemplateSlice","reslutPdfSlice","configureStore","reducer","middleware","getDefaultMiddleware","serializableCheck","PreRegisterWhitelabel","App","REACT_APP_VERSION","script","rel","sessionStorage","awsconfig","Amplify","ReactDOM","initSchema","EmployeeTestCounter","EmployeeLogin","TestSession","MessageTemplate","genderOBJ","M","F","getMatchScore","score","userValue","isWithinAgeRange","ageNumber","findMatchingRange","group","userAge","rangeItem","findBestMatchingRange","matchingGroups","doesGroupMatchAllFilters","matchingRanges","matchingRange","isNonEmpty","ageRange","getAgeRange","getEmployee","listEmployees","listTests","getOrder","loginUserInfo","deletedArray","employeeObj","parseBooleanVal","isPreRegistered","defaults","common","Intl","DateTimeFormat","resolvedOptions","dbOrder","diagnosis","getDiagnosisCode","getOrderByIdGQl","createOrderChangeObjForLogs","updateOrderGQL","updateRejcetedOrder","selectedTestIds","updatedTestsData","resetDefaultAntigenLab","resetDefaultMolecularLab","resetDefaultOtherLab","updatedTodo","getOrderAutoNumber","params1","isSimpleResult","isAvailable","claimSubmitStatusColorOpts","sent","sortedIndex","PENDING_RESULT_PERSONALIZE","COMPLETED_RESULT_PERSONALIZE","TEST_DONE_SPECIFIC_COLUMNS","TEST_HISTORY_SPECIFIC_COLUMNS","ELIGIBILITY_PERSONALIZE","LAB_ELIGIBILITY_PERSONALIZE","TEST_PANELS_PERSONALIZE","PANEL_RESULT_TEST_PERSONALIZE","awsmobile","keyBy","uniqBy","variable","isObject","isString","customPick","pickedItemArr","pick","customGroupBy","collection","iteratee","groupBy","customFlatMap","customFind","predicate","co_lab_image","REACT_APP_COMPANY_TYPE","labstats","sitestats","clientstats","clientsitestats","practiceId","contactFax","Antigen","Other","RapidFlu","Pending","rejectedanddenied","unpaid","Email","Address","City","State","Insurance","DOS","ASCEDNING","weekly","monthly","yearly","newPatients","refundAmount","USER_TYPE_USER","USER_TYPE_ADMIN","SubAgents","Admin","Positive","Negative","Expired","positive","negative","Pass","Fail","inconclusive","Inconclusive","indeterminate","Indeterminate","invalid","Invalid","Detected","detected","NotDetected","notdetected","SafeCamp","SUPER_ADMIN_ID","TEST_CATEGORY_OPTIONS","TESTS_UNITS_SET","TEST_SOURCE_OPTIONS","OrderPlaced","OrderShipped","OrderReturned","OrderOrderReturn","OrderDelivered","Eligibility","MemberUpdated","MemberCreated","SubmitForBill","RESubmitForBill","ERAUpdate","ClaimDenied","OrderLimitReset","insuranceStatus","claimStatusRejected","claimRejected","ClaimCancelled","ClaimRestored","ClaimRejected","claimApproved","SendToInsurance","SubmissionFailed","baseLocation","X","N","TAB_NAMES","pendingResult","completedResult","LAB_ORDER_STATUS","Created","preregistration","getPersonalizationIds","EMPS_DROPDOWN_OPTIONS","TEST_HISTORY","code3","NOT_INC_KEYS","Well","Content","Cq","EXPORT_TO_CALREDIE","patient_id","patient_last_name","patient_first_name","patient_middle_name","patient_street","patient_street2","patient_city","patient_state","patient_zip_code","patient_county","patient_phone_number","patient_race","patient_ethnicity","patient_preferred_language","equipment_model_name","test_performed_code","test_ordered_code","test_result","order_test_date","specimen_collection_date","testing_lab_specimen_received_date","test_result_date","date_result_released","ordering_provider_id","ordering_provider_last_name","ordering_provider_first_name","ordering_provider_middle_name","ordering_provider_street","ordering_provider_street2","ordering_provider_city","ordering_provider_state","ordering_provider_zip_code","ordering_provider_phone_number","testing_lab_clia","testing_lab_name","testing_lab_street","testing_lab_street2","testing_lab_city","testing_lab_state","testing_lab_zip_code","testing_lab_phone_number","pregnant","employed_in_healthcare","symptomatic_for_disease","illness_onset_date","resident_congregate_setting","residence_type","hospitalized","icu","ordering_facility_name","ordering_facility_street","ordering_facility_street2","ordering_facility_city","ordering_facility_state","ordering_facility_zip_code","ordering_facility_phone_number","test_result_status","EXPORT_TO_CALREDIE_RESULT","ELIGIBILITY_STATUS_COLOR","NumberFormat","cancel","A","B","C","D","E","G","H","DELETE","PROGRAM_START","ASSIGN_PROGRAM","UPDATE_TIME","AUTO_SHIPMENT","PUBLIC_ORDER","SUBMIT_CLAIM","RESUBMIT_CLAIM","CREATE_PATIENT","ADD","NEW_DISCOVERY_ID","ALTA_ID","CALIBER_ID","FUTURE_GENERATION_ID","mobile","future_generation","demo_lab","Parsed","Accepted","StatusLabel","STATUS_OPTIONS","Yes","No","inactive","ineligibile","generateStatusOptions","statusKeys","UNIT","CANCEL_REASON","providerManagement","clientManagement","payerManagement","archivedTests","testsManagement","testsDictionary","CHECKELIGIBILITY","ELIGIBILITY_HEADERS","completedtest","orderpersonalize","pendingtest","qualitativeWithPathogen","qualitativeWithOutPathogen","quantitativeWithOutPathogen","quantitativeWithPathogen","Department","zebra","phone_number_email","v4","phone_number_value","viewAbel","formatNational","isValidNumber","validate","postalCodes","zipCode","trimmedVal","isJSONString","transitionStatus","clinicalComments","parseStringToJSON","viewedResult","stampByName","releasedTest","calculateStringSimilarity","str1","str2","matrix","cost","maxLen","payer_alt_names","altName","alt_payer_name","minimumFractionDigits","maximumFractionDigits","testTypeValid","TestTypeDuaration","findval","eligStatus","month","sortByKey","dobA","dobB","getExt","reverse","ServicePort","ServiceHost","removeItem","crews","dataInLc","selectedSetting","persolizeToMap","dataInLC","getPersonalizationData","arrData","arrDataMap","dobDate","numberOfCol","lastDotIndex","trackingNo","isValidUrl","urlparams","parentEmployeeRelation","newReord","testNewRecord","testOldRecord","prevRecord","keysToPick","changesArr","findChanges","oldObj","allKeys","fullKey","oldVal","newVal","inputString","onlyDate","formatPhoneForCalRedie","formatDateTimeTZ","testFormatedDateTimeToLocalStr","labRecord","siteProvider","labAddress","matches","parseLabAddress","true","pow","toFixed","insuranceDemographics","EMPTY_OBJECT","mileageOptions","hideElementsByClassName","elements","getElementsByClassName","NEW_PERSONALIZE","lcObj","objToReturn","lsData","nonCheckedData","emailMsgToCreatedMember","isSecondary","era","primaryIns","findMaxValueObject","procArray","totalCharge","proc","eraCPT","diag_ref_1","diag_ref_2","diag_ref_3","diag_ref_4","ttlCharge","getTotalCharge","from_date","place_of_service","remote_claimid","mod1","mod2","mod3","mod4","checkDate","adjustment","childIndex","remote_chgid","bill_phone","accept_assign","pat_country","pat_rel","payer_icn","claimNo","assigned_comment","other_ins_name_l","pat_name_l","other_ins_name_f","pat_name_f","other_ins_name_m","pat_name_m","other_ins_dob","pat_dob","other_ins_sex","pat_sex","other_ins_payment_date","other_payerid","payer_order","primary_allowed_amount","total_allowed","other_payer_name","payer_name","other_ins_number","status_code","addCompanyInusranceNPI","refProvider","ordProvider","secondaryInsNumber","providerFirstName","providerLastName","providerMidName","providerNpi","providerTaxId","taxId","refProviderID","refProviderFirstName","refProviderName","refProviderLastName","refProviderMiddleName","refProviderNpi","ordProviderID","ordProviderFirstName","ordProviderName","ordProviderLastName","ordProviderMiddleName","ordProviderNpi","keysToRemove","Tz","parseObject","subBy","invoiceID","invoiceNo","reSubmissionDate","paid_ins_processed","paid_insurance","orderObj","employeeClaimID","claimSubmitDate","employeeStatus","client_phone","client_fax","client_main_contact_fax","client_payer_id","client_name","client_address","client_address_2","client_city","client_state","client_zip","client_email","client_main_contact_first_name","client_main_contact_last_name","client_main_contact_email","percent_claims_commission","percent_discount_list_price","primaryBillType","primary_invoice_method","secondary_invoice_method","secondaryBillType","emailMsgToCreatedFacility","appURL","reg","itemID","Link","filterName","getFileType","getFileName","getSplitValue","suffix","userDataKey","getUserDataFromLocalStorage","UserAttributes","attrMap","processUserData","sourceTest","testToMatch","DEFAULT_CONFIG","isShowSendToLab","isShowCancelReason","ictSet","ictCode","diagCode","getDefaultTestSource","expectedOrder","LABEL_COLOR","Low","Normal","High","Panic","Repeat","NORMAL_RANGES_KEY_NEW","getMinMaxFromRangesNew","minimumValue","maximumValue","getRangeName","lowValue","highValue","orderedRanges","getOrderedRanges","rangeKeys","lowKey","highKey","rangeStr","actualMinValue","actualMaxValue","hasMin","hasMax","normalRanges","rangeToShow","rangeObject","low","high","repeatHigh","getRange","testRange","panelRanges","defaultPanelValues","DefaultLow","DefaultHigh","labelValue","parsedJSONString","isQualtitave","intervalString","intervals","isResultInRange","arrayToMap","arrayToSearch","matchingObject","customPermissions","updatedPermissions","oldPersonalize","newPersonalize","obj1","obj2","dateString","startDateString","endDateString","isTestDataComplete","skipKeys","dataItem","orderTestData","findItemAndIndexTest","findItemAndIndexIct","testArr","diagnosisData","orderLevelTestItem","selectedContainer","exist","cptArr","filteredIcdData","cloneItem","isIctExist","cptCodeArr","ictObj","formatIctForOrder","diagIct","orderIcd","orderIcdKeyBy","uniqueIctItemsMap","ictIndex","fullFileName","splitArrayIntoChunks","chunkSizes","currentIndex","currentIndexTests","missingCount","defaultTest","allLabTests","microbiologyTests","otherTests","formattedMicrobiologyTests","formattedOtherTest","individualRequestedChunkSizes","splitFormattedOtherTest","finalIndividualRequested","uniqueSourcesMap","numValue","splitId","currentGroup","typeA","typeB","vh","innerHeight","srcItem","swabType","swabTypesArray","orderProviderID","orderProviderName","parsedProvider","valueChanges","__typename","formattedObj","finalObj","prevTestTypeID","finalObject","updatedFields","validationObj","isFilterAndRangeKey","isFilterKeyOnly","scoredItems","maxScore","bestMatches","firstPriority","rangeArr","route","routesArray","existingRoute","firstRange","sourceItem","secondItem","diagnostics","newStart","newEnd","existingRange","existingStart","existingEnd","barcodeObj","headerKeys","headerIndex","rowsStartIndex","ms","barcodesSet","incrementCount","invalidData","groupedSamples","groupedSamplesInvalid","sampleGroup","sampleName","selectedTestType","selectedTargetRanges","formattedGroup","rpTest","rpCTNumber","CT","isInvalidGroup","selectedElement","ctNumberToCheck","ctNumber","groupedItems","Infinity","Demographic","valB","valA","dateA","dateB","rolesArray","nextToken","queries","graphqlData","eq","getTestBySequenceNoGQL","deleteTestGQL","createOrderGQL","createOrder","updateOrder","deleteTest"],"mappings":";kHAAA,OAAe,0nC,mCCAf,8OAAO,IAAMA,EAAoB,CAC/B,CACE,CACEC,aAAc,MACdC,MAAO,wBACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,wBACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,qBACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,gCACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,0BACPC,KAAM,OAGV,CACE,CACEF,aAAc,OACdC,MAAO,kCACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,yBACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,sBACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,iBACPC,KAAM,UAER,CACEF,aAAc,MACdC,MAAO,cACPC,KAAM,QAGV,CACE,CACEF,aAAc,MACdC,MAAO,kBACPC,KAAM,QAER,CACEF,aAAc,MACdC,MAAO,uBACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,qBACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,4BACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,yBACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,YACPC,KAAM,QAKCC,EAAuB,CAClC,CACE,CACEH,aAAc,OACdC,MAAO,WACPC,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,qBACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,UACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,UACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,WAGX,CACED,aAAc,OACdC,MAAO,aACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,aACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,0BACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,oBACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,MACPC,KAAM,KACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,cAGX,CACED,aAAc,MACdC,MAAO,SACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,UACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,YAGX,CACED,aAAc,OACdC,MAAO,aACPC,KAAM,KACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,gBAGX,CACED,aAAc,MACdC,MAAO,2BACPC,KAAM,KAER,CACEF,aAAc,MACdC,MAAO,mBACPC,KAAM,KACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,YAGX,CACED,aAAc,MACdC,MAAO,eACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,MACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,cACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,mBACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,QAIX,CACED,aAAc,OACdC,MAAO,QACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,WACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,gBACPC,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,SACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,WAGX,CACED,aAAc,OACdC,MAAO,UACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,UACPC,KAAM,IACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,aAGX,CACED,aAAc,MACdC,MAAO,MACPC,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,YACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,WACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,uBACPC,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,6BACPC,KAAM,OAGV,CACE,CACEF,aAAc,MACdC,MAAO,SACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,kBACPC,KAAM,KACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,WAGX,CACED,aAAc,OACdC,MAAO,qBACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,2BACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,MACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,YACPC,KAAM,KACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,cAGX,CACED,aAAc,MACdC,MAAO,gBACPC,KAAM,KACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,WAGX,CACED,aAAc,MACdC,MAAO,oBACPC,KAAM,KACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,aAGX,CACED,aAAc,OACdC,MAAO,2BACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,uBACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,yBACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,sBACPC,KAAM,SAER,CACEF,aAAc,OACdC,MAAO,aACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,gBAGX,CACED,aAAc,MACdC,MAAO,+BACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,kBACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,eACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,OACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,QAETI,KAAM,CACJL,aAAc,OACdC,MAAO,SAGX,CACED,aAAc,OACdC,MAAO,SACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,OACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,KACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,QAGX,CACED,aAAc,OACdC,MAAO,UACPC,KAAM,SAER,CACEF,aAAc,MACdC,MAAO,YACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,6BACPC,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,MACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,aACPC,KAAM,SAER,CACEF,aAAc,MACdC,MAAO,KACPC,KAAM,KACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,QAGX,CACED,aAAc,OACdC,MAAO,gBACPC,KAAM,KAER,CACEF,aAAc,OACdC,MAAO,aACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,oBACPC,KAAM,QAGV,CACE,CACEF,aAAc,MACdC,MAAO,qBACPC,KAAM,SACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,QAGX,CACED,aAAc,MACdC,MAAO,eACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,YACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,YACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,aAGX,CACED,aAAc,MACdC,MAAO,YACPC,KAAM,OAER,CACEF,aAAc,KACdC,MAAO,aACPC,KAAM,OAER,CACEF,aAAc,QACdC,MAAO,sBACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,+BACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,oBACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,MACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,eACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,iBACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,WACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,cAGX,CACED,aAAc,MACdC,MAAO,YACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,WACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,MACdC,MAAO,cAGX,CACED,aAAc,OACdC,MAAO,oBACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,oBACPC,KAAM,MACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,SAGX,CACED,aAAc,OACdC,MAAO,aACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,uBACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,YACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,mBACPC,KAAM,KACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,WAGX,CACED,aAAc,OACdC,MAAO,kBACPC,KAAM,KACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,UAGX,CACED,aAAc,OACdC,MAAO,kBACPC,KAAM,IACNE,IAAK,CACHJ,aAAc,OACdC,MAAO,WAGX,CACED,aAAc,OACdC,MAAO,qBACPC,KAAM,KAER,CACEF,aAAc,MACdC,MAAO,0BACPC,KAAM,KAER,CACEF,aAAc,OACdC,MAAO,oBACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,eACPC,KAAM,OAER,CACEF,aAAc,OACdC,MAAO,uBACPC,KAAM,SAKCI,EAAe,CAC1B,CACEN,aAAc,MACdC,MAAO,aACPC,KAAM,QAER,CACEF,aAAc,MACdC,MAAO,gBACPC,KAAM,QAER,CACEF,aAAc,OACdC,MAAO,wBACPC,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,eACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,kBACPC,KAAM,QAER,CACEF,aAAc,MACdC,MAAO,gBACPM,IAAK,CAAC,IAAK,IAAK,KAChBL,KAAM,SAER,CACEF,aAAc,OACdC,MAAO,wBACPC,KAAM,SAER,CACEF,aAAc,OACdC,MAAO,iBACPC,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,YACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,SACPM,IAAK,CAAC,IAAK,IAAK,KAChBL,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,SACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,uBACPC,KAAM,WAER,CACEF,aAAc,OACdC,MAAO,kBACPC,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,aACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,gBACPC,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,gBACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,iBACPC,KAAM,KAER,CACEF,aAAc,MACdC,MAAO,iBACPC,KAAM,QAER,CACEF,aAAc,OACdC,MAAO,wBACPC,KAAM,aAER,CACEF,aAAc,MACdC,MAAO,gBACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,kBACPC,KAAM,QAER,CACEF,aAAc,MACdC,MAAO,YACPC,KAAM,UAER,CACEF,aAAc,MACdC,MAAO,gBACPC,KAAM,OAGGM,EAA0B,CACrC,CACER,aAAc,MACdC,MAAO,uCACPC,KAAM,QAER,CACEF,aAAc,QACdC,MAAO,qBACPC,KAAM,SAIGO,EAAW,CACtB,CACE,CACET,aAAc,MACdC,MAAO,aAET,CACED,aAAc,OACdC,MAAO,OAET,CACED,aAAc,OACdC,MAAO,uBAET,CACED,aAAc,OACdC,MAAO,kBAET,CACED,aAAc,OACdC,MAAO,YAET,CACED,aAAc,OACdC,MAAO,eAET,CACED,aAAc,GACdC,MAAO,SAET,CACEA,MAAO,0BACPM,IAAK,CAAC,IAAK,IAAK,KAChBL,KAAM,OAER,CACED,MAAO,YAET,CACEA,MAAO,cAIX,CACE,CACED,aAAc,GACdC,MAAO,YAET,CACED,aAAc,GACdC,MAAO,eAET,CACED,aAAc,GACdC,MAAO,iBAGX,CACE,CACED,aAAc,GACdC,MAAO,kBAET,CACED,aAAc,GACdC,MAAO,mBAET,CACED,aAAc,GACdC,MAAO,aAGX,CACE,CACED,aAAc,GACdC,MAAO,OAGT,CACED,aAAc,GACdC,MAAO,OAGT,CACED,aAAc,GACdC,MAAO,WAKAS,EAAS,CACpB,CACET,MAAO,mBAET,CACEA,MAAO,MAET,CACEA,MAAO,MAET,CACEA,MAAO,qBAET,CACEA,MAAO,eAIEU,EAA0B,CACrC,CACEX,aAAc,MACdC,MAAO,iBACPC,KAAM,aAER,CACEF,aAAc,MACdC,MAAO,UACPC,KAAM,aAER,CACEF,aAAc,OACdC,MAAO,qBACPC,KAAM,MAER,CACEF,aAAc,OACdC,MAAO,8BACPC,KAAM,MAER,CACEF,aAAc,MACdC,MAAO,+BACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,cACPC,KAAM,eAER,CACEF,aAAc,MACdC,MAAO,sBACPC,KAAM,UAER,CACEF,aAAc,MACdC,MAAO,uBACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,MACPC,KAAM,OAER,CACEF,aAAc,MACdC,MAAO,2BACPC,KAAM,M,idCn5BJU,EAAOC,EAAQ,KAkDfC,EAAmB,CACvBC,KAAM,sEACNC,IAAK,uEAEDC,EAAU,eACVC,EAAgB,WAEhBC,EAAW,iDAAG,WAAOC,EAAMC,GAAb,kHAKaC,IAAKC,iBALlB,0BAKoCC,iBAAiBC,cALrD,uCAIZ,eAAgB,mBAChBC,cALY,sCAOHL,GAPG,IAOMM,SAAUC,IAAOD,WALjCE,EAFU,CAGdC,QAHc,KAOdC,KAPc,gBAUHC,IAAIC,KA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mBAE6B,CAAEO,OAHrB,cAGjB20B,EAHiB,yBAKhBA,GALgB,2CAAH,sDAQhBuT,GAAqB,iDAAG,WAAO5pC,GAAP,uFACf,wBADe,SAGPmB,YAFR,wBAE6BnB,GAHd,cAGtBq2B,EAHsB,yBAKrBA,GALqB,2CAAH,sDAQrBwT,GAAiB,iDAAG,WAAO7pC,GAAP,uFACX,uBADW,SAGHmB,YAFR,uBAE6BnB,GAHlB,cAGlBq2B,EAHkB,yBAKjBA,GALiB,2CAAH,sDAQjByT,GAAW,iDAAG,WAAOC,GAAP,uFACL,iBADK,SAGG5oC,YAFR,iBAE6B4oC,GAHxB,cAGZ1T,EAHY,yBAKXA,GALW,2CAAH,sDAQX2T,GAAY,iDAAG,WAAO1jC,GAAP,uFACN,gBADM,SAGEnF,YAFR,gBAE6BmF,GAHvB,cAGb+vB,EAHa,yBAKZA,GALY,2CAAH,sDAQH,KACb2T,gBACAF,eACAD,qBACAD,yBACAD,oBACA5iB,qBACA+hB,mBACAE,wBACAD,gBACA/D,mBACA6D,mBACAN,wBACAd,mBACArC,gBACAc,qBACAO,qBACAxB,qBACAF,qBACAD,sBACAD,oBACAF,mBACAD,wBACAH,sBACAV,oBACAQ,mBACAD,eACAN,cACAC,sBACAC,uBACAC,2BACAL,kBACAD,uBACAD,eACAH,oBACAniB,sBACA2hB,gBACAC,2BACAF,aACAlB,oBACAxN,oBACAuN,kBACAN,uBACAF,kBACAroB,gBACAM,wBACAH,oBACAK,qBACAM,qBACAkC,oBACAG,kBACAE,oBACA+jB,sBACAC,gBACAL,qBACAJ,oBACAT,sBACAH,0BACAC,+BACAV,oBACAC,eACAE,uBACAC,oBACAN,2BACAD,mBACAD,qBACAN,qBACAC,2BACAJ,kBACAF,iBACAD,8BACAJ,0BACAD,0BACAD,yBACApB,gBACA35B,qBACAK,oBACA62B,iBACA74B,aACAiB,mBACA6M,oBACAtI,UACAE,mBACA4J,kBACAkC,kBACA5B,uBACAQ,yBACAE,0BACAiC,0BACAsjB,yBACArjB,uBACAvD,wBACAE,uBACAsD,cACAsE,YACAO,mBACAsO,aACAliB,iBACAuB,cACAI,SACA4f,0BACAG,6BACAC,mCACA/jB,iBACAuyB,iBACAgD,mBACAzN,iCACA1D,0BACAG,gBACAC,qBACAmD,qBACAC,eACAC,wBACAkB,qBACAd,wBACAe,iBACAC,kBACAK,kBACAC,qBACAC,kBACAI,oBACAiB,oBACAC,wBACAO,cACAL,sBACAC,yBACAK,uBACA/V,kBACA9B,aACA4B,aACAmW,sBACAI,mBACAG,gBACAC,wBACAM,cACAG,qBACAU,aACAC,qBACAK,kBACAC,iBACAC,sBACAE,mBACA/tB,gBACAqF,aACA2G,YACAM,qBACAG,YACA6G,gBACAgC,gBACAE,cACA7I,kBACAC,mBACAI,gBACA8f,iBACAE,oBACAE,gBACAC,mBACA/W,uBACAD,sBACA0S,gBACA3jB,aACAywB,uBACArf,0BACAmF,4BACAwJ,gBACAM,uBACAW,yBACAC,sBACAC,oBACAC,gBACAc,mBACAO,mBACAwP,kBACAvP,sBACAyG,oBACAvY,qBACAI,sBACAqY,mBACAwF,mBACAE,uBACAtF,kBACA2B,0BACAvB,4BACAsH,qBACAC,oBACAiB,kBACAH,wBACAlD,qBACAS,sBACA2E,wBACAtD,kBACAzB,sBACA1P,wBACA7O,mBACAgT,uBACAC,qBACAuO,oBACAC,uBACA3qB,gBACApM,yBACAgN,mBACA1M,wBACAsV,mBACA4gB,2BACAnC,eACAC,gBACAC,WACAC,kBACA1B,eACAuD,iBACAE,uBACA9B,kBACAW,kBACAD,WACAmB,eACAF,qBACA1B,oBACAO,0BACA9N,2BACAhR,eACAijB,0BACAlL,sBACA4N,eACA1N,4BACAgJ,8BACAlB,qBACAoB,aACAE,sBACA9gB,qBACA+gB,gBACAC,mBACAhC,0BACAH,2BACAF,oBACAlJ,oBACA7oB,aACA2uB,kBACAkB,oBACA/G,uBACAkM,aACAC,qBACAM,yBACAQ,oBACAC,oBACAC,uBACAG,eACAO,uBACAoB,kBACA1D,2BACAQ,0BACAoD,wBACAC,gBACAtrB,gCACA6lB,oBACA5E,yBACAiH,yBACAoE,sBACAtC,eACAU,uBACA0C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eACL,IAAK,UACH,MAAO,UACT,IAAK,cACL,IAAK,SACH,MAAO,SACT,IAAK,sBACH,MAAO,aACT,IAAK,SACH,MAAO,SAGT,IAAK,OACH,MAAO,WACT,IAAK,eACL,IAAK,kBACH,MAAO,eACT,IAAK,gBACH,MAAO,gBACT,IAAK,gBACH,MAAO,gBACT,IAAK,YACH,MAAO,YACT,IAAK,aACH,MAAO,aACT,IAAK,SACH,MAAO,cACT,IAAK,UACH,MAAO,aACT,IAAK,cACH,MAAO,gBACT,IAAI,GAAJ,OAAQ/qB,KAAe1xC,YACrB,MAAO,aACT,IAAK,cACH,MAAO,cACT,IAAK,cACH,MAAO,YACT,IAAK,SACH,MAAO,SACT,IAAK,iBACH,MAAO,qBACT,IAAK,iBACH,MAAO,oBACT,IAAK,mBACH,MAAO,kBACT,IAAK,oBACH,MAAO,QACT,IAAK,gBACH,MAAO,eACT,IAAK,sBACH,MAAO,oBACT,IAAK,kBACH,MAAO,iBACT,IAAK,mBACH,MAAO,kBACT,IAAK,kBACH,MAAO,SACT,IAAK,sBACH,MAAO,UACT,IAAK,eACH,MAAO,iBACT,IAAK,UACH,MAAO,kBACT,IAAK,YACH,MAAO,oBACT,IAAK,SACH,MAAO,gBACT,IAAK,iBACH,MAAO,gBACT,IAAK,WACH,MAAO,kBACT,IAAK,cACH,MAAO,aACT,IAAK,cACH,MAAO,aACT,IAAK,SACH,MAAO,MACT,IAAK,YACH,MAAO,YACT,IAAK,OACH,MAAO,OACT,IAAK,aACH,MAAO,eACT,IAAK,iBACH,MAAO,kBACT,IAAK,eACH,MAAO,cACT,IAAK,WACH,MAAO,iBACT,IAAK,SACH,MAAO,SACT,IAAK,gBACH,MAAO,cACT,IAAK,mBACH,MAAO,kBACT,IAAK,cACH,MAAO,OACT,IAAK,gBACH,MAAO,MACT,IAAK,eACH,MAAO,cACT,IAAK,qBACH,MAAO,oBACT,IAAK,UACH,MAAO,UACT,IAAK,mBACH,MAAO,kBACT,IAAK,cACL,IAAK,aACH,MAAO,SACT,IAAK,eACH,MAAO,aACT,IAAK,cACH,MAAO,aACT,IAAK,UACH,MAAO,UACT,IA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,EAAQ9jB,OAAQ,IALE,2CAAH,qDAOlBgtI,GAAa,iDAAG,WAAOj5I,GAAP,2FACdkS,IAAQC,IAAR,UAAe5V,MAASC,OAAO,2BAA/B,qBAAsE/C,IAAO8Y,QAA7E,QAA4FuH,YAAU9Z,GAAQ,CAClHiS,OAAQ,kBAFU,2CAAH,sDAMJ,KACbvW,qBACAK,oBACA62B,iBACA74B,aACAiB,mBACA6M,mBACAtI,UACAE,mBACA4J,kBACAkC,kBACA5B,uBACAQ,yBACAE,0BACAiC,0BACAsjB,yBACArjB,uBACAvD,wBACAE,uBACAsD,cACAsE,YACAO,mBACAsO,aACAliB,iBACAuB,cACAI,SACA4f,0BACAG,6BACAC,mCACA/jB,iBACAokB,0BACAG,gBACAC,qBACAmD,qBACAC,eACAw1C,6BACAwgF,iBACA70H,qBACAd,wBACAe,iBACAC,kBACAK,kBACAC,qBACAC,kBACAsB,wBACAO,cACAL,sBACAM,uBACA/V,kBACA9B,aACA4B,aACAmW,sBACAO,gBACAO,cACAG,qBACAU,aACAC,qBACAK,kBACAC,iBACAC,sBACAk7M,0BACAC,4BACAC,wBACAjpO,gBACAqF,aACA2G,WACAM,oBACAwwD,kBACArwD,WACA6G,gBACAgC,gBACAE,cACA7I,iBACAC,kBACAI,gBACA8f,iBACAE,oBACAE,gBACAC,mBACA/W,uBACAD,sBACAjR,aACAoR,0BACAmF,4BACAwJ,gBACAkC,mBACA+P,kBACA9I,oBACAvY,qBACAI,sBACAqY,mBACAwF,mBACAE,uBACAtF,kBACA2B,0BACA+F,qBACAC,oBACAiB,kBACAH,wBACAlD,qBACAk1M,sBACA7lL,wBACA5uB,sBACAqB,kBACAzB,sBACA1P,wBACA7O,mBACAgT,uBACAC,qBACAuO,oBACAC,uBACA3qB,gBACApM,yBACAgN,mBACA1M,wBACAsV,mBACAye,eACAvB,eACAuD,iBACAE,uBACA9B,kBACAW,kBACAkB,eACA5B,oBACAO,0BACA9N,2BACAg5H,iBACAhqI,eACAihB,8BACAE,aACA5gB,qBACAgf,0BACAH,2BACAF,oBACAiD,aACAC,qBACAc,oBACAC,oBACAC,uBACAikI,qBACA5b,sBACAl/F,4BACAyrG,qBACAK,kBACA/gD,8BACAv2C,uBACAiiH,kBACAyxB,kBACAu9B,uBACA12C,qB,mCC/xGF,OAAe,86F,mCCAf,OAAe,8kH,mCCAf,OAAe,cAA0B,wC,sBCCzC3oJ,EAAOC,QAAU,CAAC,WAAa,+BAA+B,aAAe,iC,mCCD7E,kCAAO,IAAM/d,EAAe,4D,mCCA5B,OAAe,cAA0B,gE,mCCAzC,OAAe,cAA0B,0C,mCCAzC,OAAe,s2D,mCCAf,OAAe,cAA0B,6C,mCCAzC,OAAe,cAA0B,qC,mCCAzC,OAAe,spR,0vCCAFg0E,EAAqB,CAChCG,UAAW,YACXvlE,KAAM,OACNylE,SAAU,WACVG,cAAe,gBACfC,mBAAoB,qBACpB3+F,MAAO,QACPyE,MAAO,QACP6nF,OAAQ,SACR6R,SAAU,WACVtlF,MAAO,QACPmzJ,kBAAmB,oBACnBz3J,OAAQ,SACRkrF,WAAY,aACZC,KAAM,OACNb,QAAS,WAGLmpI,GAA0B,GAC9B5T,MAAO,OACPE,UAAW,UACXS,QAAS,QACTj7H,SAAU,MACV26H,SAAU,QACVwT,KAAM,QACNpT,KAAM,QACNF,OAAQ,UACR/xL,UAAW,WATmB,qBAUxB,WAVwB,wBAWrB,UAXqB,GAqJnBuqJ,GA9HHjvF,EAAmBplE,KASnBolE,EAAmBS,mBAWnBT,EAAmBplE,KAUnBolE,EAAmBl+F,MAUnBk+F,EAAmBz5F,MAUnBy5F,EAAmBplE,KAUnBolE,EAAmBplE,KAUnBolE,EAAmBplE,KAUnBolE,EAAmBplE,KAWnBolE,EAAmBplE,KAUnBolE,EAAmBplE,KAWnBolE,EAAmBG,UAUnBH,EAAmB5R,OAIS,CACpC,CACEze,QAAS,YACTzyE,MAAO,aACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBS,mBAEzBh7E,SAAU,cACVukN,YAAa,GAGf,CACEr6J,QAAS,WACTzyE,MAAO,YACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBS,mBAEzBh7E,SAAU,cACVukN,YAAa,GAEf,CACEr6J,QAAS,QACTzyE,MAAO,QACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBl+F,MACzB2jB,SAAU,cACVukN,YAAa,GAEf,CACEr6J,QAAS,cACTzyE,MAAO,eACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBz5F,MACzBkf,SAAU,cACVukN,YAAa,GAEf,CACEr6J,QAAS,SACTzyE,MAAO,UACPowC,UAAW,OACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,EACJrD,KAAM6iG,EAAmBS,mBACzBh7E,SAAU,cACVukN,YAAa,GAEf,CACEr6J,QAAS,UACTzyE,MAAO,YACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,EACJrD,KAAM6iG,EAAmBS,mBACzBh7E,SAAU,cACVukN,YAAa,IAEf,CACEr6J,QAAS,OACTzyE,MAAO,OACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,EACJrD,KAAM6iG,EAAmBS,mBACzBh7E,SAAU,cACVukN,YAAa,GAEf,CACEr6J,QAAS,QACTzyE,MAAO,QACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,EACJrD,KAAM6iG,EAAmBS,mBACzBh7E,SAAU,cACVukN,YAAa,GAEf,CACEr6J,QAAS,MACTzyE,MAAO,WACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBnV,SAAU,cACVukN,YAAa,IAEf,CACEr6J,QAAS,MACTzyE,MAAO,gBACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,GACJrD,KAAM6iG,EAAmBG,UACzB16E,SAAU,cACVukN,YAAa,GAEf,CACEr6J,QAAS,MACTzyE,MAAO,SACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,GACJrD,KAAM6iG,EAAmBplE,KACzBnV,SAAU,cACV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G,EAAmBplE,KACzB0mE,oBAAoB,GAEtB,CACE3xB,QAAS,SACTzyE,MAAO,UACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,OAGhBs8L,EAAwB,CACnC,CACEvnJ,QAAS,YACTzyE,MAAO,aACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBG,WAE3B,CACExwB,QAAS,aACTzyE,MAAO,aACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,aACTzyE,MAAO,YACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,YACTzyE,MAAO,QACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBl+F,OAE3B,CACE6tE,QAAS,YACTzyE,MAAO,eACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBz5F,OAE3B,CACEopE,QAAS,aACTzyE,MAAO,UACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAG3B,CACE+0C,QAAS,aACTzyE,MAAO,YACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,WACTzyE,MAAO,OACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,YACTzyE,MAAO,QACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBQ,eAE3B,CACE7wB,QAAS,UACTzyE,MAAO,WACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,UACTzyE,MAAO,MACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBG,WAE3B,CACExwB,QAAS,UACTzyE,MAAO,SACPowC,UAAW,SACXmM,aAAc,UACdra,SAAS,EACT5+B,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,aACTzyE,MAAO,QACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,aACTzyE,MAAO,YACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBQ,eAE3B,CACE7wB,QAAS,UACTzyE,MAAO,WACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,eACTzyE,MAAO,eACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBC,UAE3B,CACEtwB,QAAS,iBACTzyE,MAAO,kBACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBC,UAE3B,CACEtwB,QAAS,aACTzyE,MAAO,cACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBC,UAE3B,CACEtwB,QAAS,SACTzyE,MAAO,MACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBrlF,OAE3B,CACEg1D,QAAS,cACTzyE,MAAO,MACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBG,WAE3B,CACExwB,QAAS,qBACTzyE,MAAO,UACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,SACTzyE,MAAO,SACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,KACzB+mE,SAAUmoI,EACVxoI,oBAAoB,GAEtB,CACE3xB,QAAS,iBACTzyE,MAAO,OACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBW,SAE3B,CACEhxB,QAAS,kBACTzyE,MAAO,eACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,YACTzyE,MAAO,YACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBG,WAE3B,CACExwB,QAAS,iBACTzyE,MAAO,cACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,QACTzyE,MAAO,UACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,YACTzyE,MAAO,aACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,aACTzyE,MAAO,UACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,OAoEhBy0F,GAzDHrvB,EAAmBG,UASnBH,EAAmBplE,KASnBolE,EAAmBplE,KASnBolE,EAAmBplE,KASnBolE,EAAmBplE,KASnBolE,EAAmBplE,KASnBolE,EAAmBplE,KAGO,CAClC,CACE+0C,QAAS,OACTzyE,MAAO,OACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBS,mBACzBupI,YAAa,EACbvkN,SAAU,WAEZ,CACEkqD,QAAS,SACTzyE,MAAO,UACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzB29E,cAAc,EACdyxH,YAAa,EACbvkN,SAAU,WAEZ,CACEkqD,QAAS,OACTzyE,MAAO,OACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBovM,YAAa,EACbvkN,SAAU,WAEZ,CACEkqD,QAAS,QACTzyE,MAAO,QACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBovM,YAAa,EACbvkN,SAAU,WAEZ,CACEkqD,QAAS,MACTzyE,MAAO,MACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBovM,YAAa,EACbvkN,SAAU,WAEZ,CACEkqD,QAAS,cACTzyE,MAAO,eACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBz5F,MACzB+6F,oBAAoB,EACpB0oI,YAAa,EACbvkN,SAAU,WAEZ,CACEkqD,QAAS,OACTzyE,MAAO,0BACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBovM,YAAa,GAEf,CACEr6J,QAAS,MACTzyE,MAAO,MACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBz5F,MACzByjO,YAAa,EACbvkN,SAAU,WAEZ,CACEkqD,QAAS,MACTzyE,MAAO,MACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBovM,YAAa,GAEf,CACEr6J,QAAS,UACTzyE,MAAO,WACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBplE,KACzBovM,YAAa,IAEf,CACEr6J,QAAS,aACTzyE,MAAO,aACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBS,mBACzBupI,YAAa,IAEf,CACEr6J,QAAS,QACTzyE,MAAO,WACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBplE,KACzBovM,YAAa,IAEf,CACEr6J,QAAS,SACTzyE,MAAO,eACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,OACzB47I,YAAa,IAEf,CACEr6J,QAAS,cACTzyE,MAAO,eACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBC,SACzB+pI,YAAa,IAEf,CACEr6J,QAAS,aACTzyE,MAAO,cACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBC,SACzB+pI,YAAa,IAEf,CACEr6J,QAAS,OACTzyE,MAAO,aACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBC,SACzB+pI,YAAa,IAEf,CACEr6J,QAAS,YACTzyE,MAAO,aACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBG,UACzB6pI,YAAa,MAGJjtG,EAAyB,CACpC,CACEptD,QAAS,aACTzyE,MAAO,KACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBovM,YAAa,EACbvkN,SAAU,WAEZ,CACEkqD,QAAS,OACTzyE,MAAO,gBACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBS,mBACzBh7E,SAAU,WAEZ,CACEkqD,QAAS,SACTzyE,MAAO,UACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBnV,SAAU,WAEZ,CACEkqD,QAAS,eACTzyE,MAAO,QACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBz5F,MACzBkf,SAAU,WAEZ,CACEkqD,QAAS,MACTzyE,MAAO,MACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBz5F,MACzBkf,SAAU,WAEZ,CACEkqD,QAAS,QACTzyE,MAAO,QACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBnV,SAAU,WAEZ,CACEkqD,QAAS,eACTzyE,MAAO,eACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBnV,SAAU,WAEZ,CACEkqD,QAAS,cACTzyE,MAAO,gBACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBz5F,MACzBkf,SAAU,WAEZ,CACEkqD,QAAS,aACTzyE,MAAO,cACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBz5F,MACzBkf,SAAU,WAEZ,CACEkqD,QAAS,gBACTzyE,MAAO,gBACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBplE,KACzBnV,SAAU,WAEZ,CACEkqD,QAAS,WACTzyE,MAAO,aACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,aACTzyE,MAAO,eACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,cACTzyE,MAAO,eACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,QAE3B,CACEze,QAAS,cACTzyE,MAAO,eACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBC,UAE3B,CACEtwB,QAAS,aACTzyE,MAAO,cACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBC,UAE3B,CACEtwB,QAAS,OACTzyE,MAAO,OACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,QAE3B,CACEze,QAAS,oBACTzyE,MAAO,uBACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,OACzB3hD,MAAO,CACL8G,MAAO,OACPzG,OAAQ,aAKRq9L,EAA6B,CACjC,CACEx6J,QAAS,OACTzyE,MAAO,YACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBplE,KACzBwE,SAAS,EACTkiE,oBAAoB,EACpB9gG,GAAI,GAYN,CACEmvE,QAAS,aACTzyE,MAAO,SACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBG,UACzBmB,oBAAoB,EACpBliE,SAAS,EACT5+B,GAAI,GAEN,CACEmvE,QAAS,aACTzyE,MAAO,cACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBplE,KACzBwE,SAAS,EACTkiE,oBAAoB,EACpB9gG,GAAI,GAEN,CACEmvE,QAAS,SACTzyE,MAAO,SACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmB3pF,OACzB+oB,SAAS,EACT5+B,GAAI,GAEN,CACEmvE,QAAS,WACTzyE,MAAO,MACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBplE,KACzBwE,SAAS,EACTkiE,oBAAoB,EACpB9gG,GAAI,GAEN,CACEmvE,QAAS,QACTzyE,MAAO,QACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBG,UACzBmB,oBAAoB,EACpBliE,SAAS,EACT5+B,GAAI,IAIF4pO,EAAgC,CACpC,CACEz6J,QAAS,WACTzyE,MAAO,YACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBG,UACzB/gE,SAAS,EACT5+B,GAAI,GAEN,CACEmvE,QAAS,OACTzyE,MAAO,YACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBplE,KACzBwE,SAAS,EACTkiE,oBAAoB,EACpB9gG,GAAI,GAEN,CACEmvE,QAAS,aACTzyE,MAAO,cACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBQ,cACzBc,oBAAoB,EACpBliE,SAAS,EACT5+B,GAAI,GAGN,CACEmvE,QAAS,YACTzyE,MAAO,iBACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBQ,cACzBphE,SAAS,EACTkiE,oBAAoB,EACpB9gG,GAAI,GAEN,CACEmvE,QAAS,SACTzyE,MAAO,SACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmB3pF,OACzB+oB,SAAS,EACT5+B,GAAI,GAEN,CACEmvE,QAAS,WACTzyE,MAAO,MACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBplE,KACzBwE,SAAS,EACTkiE,oBAAoB,EACpB9gG,GAAI,IAIKg/K,EAA4B,CACvC,CACE7vG,QAAS,OACTzyE,MAAO,YACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBplE,KACzBwE,SAAS,EACTkiE,oBAAoB,EACpB9gG,GAAI,GAEN,CACEmvE,QAAS,UACTzyE,MAAO,sBACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBplE,KACzBwE,SAAS,EACTkiE,oBAAoB,EACpB9gG,GAAI,GAEN,CACEmvE,QAAS,aACTzyE,MAAO,cACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBQ,cACzBc,oBAAoB,EACpBliE,SAAS,EACT5+B,GAAI,GAEN,CACEmvE,QAAS,SACTzyE,MAAO,SACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmB3pF,OACzB+oB,SAAS,EACT5+B,GAAI,GAEN,CACEmvE,QAAS,WACTzyE,MAAO,MACPowC,UAAW,SACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBplE,KACzBwE,SAAS,EACTkiE,oBAAoB,EACpB9gG,GAAI,IAKKk/K,EAA8B,UAAOyqD,GACrC1qD,EAAyB,UAAO2qD,GAEhCC,EAA0B,CACrC,CACE16J,QAAS,YACTzyE,MAAO,iBACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBG,WAE3B,CACExwB,QAAS,YACTzyE,MAAO,aACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,WACTzyE,MAAO,YACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,MAG3B,CACE+0C,QAAS,UACTzyE,MAAO,QACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJrD,KAAM6iG,EAAmB8tE,mBAE3B,CACEn+F,QAAS,YACTzyE,MAAO,cACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBQ,eAG3B,CACE7wB,QAAS,UACTzyE,MAAO,aACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBQ,cACzBc,oBAAoB,GAGtB,CACE3xB,QAAS,UACTzyE,MAAO,SACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJ8gG,oBAAoB,GAEtB,CACE3xB,QAAS,WACTzyE,MAAO,OACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,QACTzyE,MAAO,aACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,QAE3B,CACEze,QAAS,aACTzyE,MAAO,aACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,QAE3B,CACEze,QAAS,MACTzyE,MAAO,MACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,QAE3B,CACEze,QAAS,cACTzyE,MAAO,cACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,QAE3B,CACEze,QAAS,aACTzyE,MAAO,cACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,SAIhBk8I,EAA8B,CACzC,CACE36J,QAAS,YACTzyE,MAAO,iBACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBG,WAE3B,CACExwB,QAAS,YACTzyE,MAAO,aACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,WACTzyE,MAAO,YACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,UACTzyE,MAAO,QACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJrD,KAAM6iG,EAAmB8tE,mBAE3B,CACEn+F,QAAS,YACTzyE,MAAO,aACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBQ,eAG3B,CACE7wB,QAAS,UACTzyE,MAAO,SACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJ8gG,oBAAoB,GAEtB,CACE3xB,QAAS,WACTzyE,MAAO,OACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,OACTzyE,MAAO,UACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBrlF,OAE3B,CACEg1D,QAAS,QACTzyE,MAAO,aACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJrD,KAAM6iG,EAAmB5R,QAE3B,CACEze,QAAS,aACTzyE,MAAO,aACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,QAE3B,CACEze,QAAS,MACTzyE,MAAO,MACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,QAE3B,CACEze,QAAS,cACTzyE,MAAO,cACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,QAE3B,CACEze,QAAS,aACTzyE,MAAO,cACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,GACJrD,KAAM6iG,EAAmB5R,SAIhBm4G,EAA6B,CACxC,CACE52H,QAAS,OACTzyE,MAAO,OACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EAEJqhG,YAAa,MACbP,oBAAoB,GActB,CACE3xB,QAAS,SACTzyE,MAAO,SACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EAEJqhG,YAAa,MACbP,oBAAoB,GAEtB,CACE3xB,QAAS,kBACTzyE,MAAO,mBACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EAEJqhG,YAAa,MACbP,oBAAoB,GAEtB,CACE3xB,QAAS,MACTzyE,MAAO,YACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EAEJqhG,YAAa,MACbP,oBAAoB,GAEtB,CACE3xB,QAAS,OACTzyE,MAAO,QACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EAEJqhG,YAAa,SACbP,oBAAoB,IAyEX66C,GAlDHn8C,EAAmBplE,KAWnBolE,EAAmBplE,KAWnBolE,EAAmBplE,KAWnBolE,EAAmBC,SAWnBD,EAAmBC,SAMe,CAC1C,CACEtwB,QAAS,OACTzyE,MAAO,OACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,WACTzyE,MAAO,WACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,UACTzyE,MAAO,UACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,UACTzyE,MAAO,UACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,QAIhBoiH,EAAwB,CACnC,CACErtE,QAAS,OACTzyE,MAAO,WACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACPO,UAAW,OACXnwC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,eACTzyE,MAAO,oBACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACPO,UAAW,OACXnwC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,eACTzyE,MAAO,QACPkiC,SAAS,EACTqa,aAAc,UACdnM,UAAW,OACX9sC,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBz5F,OAE3B,CACEopE,QAAS,QACTzyE,MAAO,QACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBl+F,QAwEhB4yK,GA5DH10E,EAAmBplE,KASnBolE,EAAmBplE,KAjBW,aAoBpC+0C,QAAS,QACTzyE,MAAO,QACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBC,UA1BW,eA2BtB,QASRD,EAAmBC,SAUnBD,EAAmB38E,KASnB28E,EAAmB38E,KASnB28E,EAAmBplE,KAIW,CACtC,CACE+0C,QAAS,YACTzyE,MAAO,WACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmB38E,MAE3B,CACEssD,QAAS,UACTzyE,MAAO,OACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,WACTzyE,MAAO,QACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,QAahBm6F,EAAgC,CAC3C,CACEplD,QAAS,OACTzyE,MAAO,OACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzB0mE,oBAAoB,GAEtB,CACE3xB,QAAS,OACTzyE,MAAO,OACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJ8gG,oBAAoB,IAIXipI,EAA0B,CACrC,CACE56J,QAAS,OACTzyE,MAAO,OACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzB0mE,oBAAoB,GAEtB,CACE3xB,QAAS,WACTzyE,MAAO,iBACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJ8gG,oBAAoB,GAEtB,CACE3xB,QAAS,WACTzyE,MAAO,YACPowC,UAAW,OACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBK,UAE3B,CACE1wB,QAAS,OACTzyE,MAAO,sBACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,OAShB4vM,EAAgC,CAC3C,CACE76J,QAAS,YACTzyE,MAAO,aACPowC,UAAW,GACXlO,SAAS,EACT5+B,GAAI,EACJqhG,YAAa,OACbP,oBAAoB,GAEtB,CACE3xB,QAAS,aACTzyE,MAAO,SACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBinE,YAAa,OACbP,oBAAoB,GAEtB,CACE3xB,QAAS,kBACTzyE,MAAO,WACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBinE,YAAa,OACbP,oBAAoB,GAGtB,CACE3xB,QAAS,OACTzyE,MAAO,QACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBinE,YAAa,OACbP,oBAAoB,GA1CqB,aA6CzC3xB,QAAS,cACTzyE,MAAO,eACPowC,UAAW,GACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,EACJrD,KAAM6iG,EAAmBplE,KACzBinE,YAAa,OACbP,oBAAoB,GArDqB,YAsD9B,WAGF81B,EAAsB,CACjC,CACEznD,QAAS,eACTzyE,MAAO,eACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACPO,UAAW,OACXnwC,KAAM6iG,EAAmBplE,MAG3B,CACE+0C,QAAS,eACTzyE,MAAO,eACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACPO,UAAW,OACXnwC,KAAM6iG,EAAmBplE,MAI3B,CACE+0C,QAAS,SACTzyE,MAAO,SACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACPO,UAAW,QACXnwC,KAAM6iG,EAAmBplE,KACzB0mE,oBAAoB,IAIXo3B,EAA0B,CACrC,CACE/oD,QAAS,OACTzyE,MAAO,cACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,QACPO,UAAW,OACXnwC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,qBACTzyE,MAAO,mBACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,QACPO,UAAW,OACXnwC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,SACTzyE,MAAO,SACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,QACPO,UAAW,QACXnwC,KAAM6iG,EAAmBplE,KACzB0mE,oBAAoB,IAIXuiB,EAAoC,CAC/C,CACEl0C,QAAS,QACTzyE,MAAO,OACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACPO,UAAW,OACXnwC,KAAM6iG,EAAmBplE,OAGhBu0G,EAAkC,CAC7C,CACEx/D,QAAS,QACTzyE,MAAO,WACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,IACPO,UAAW,OACXu0D,YAAa,QACb1kG,KAAM6iG,EAAmBS,qBAIhBmqF,EAA4C,CACvD,CACEj7G,QAAS,QACTzyE,MAAO,WACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,IACPO,UAAW,OACXu0D,YAAa,QACbP,oBAAoB,GAGtB,CACE3xB,QAAS,OACTzyE,MAAO,SACPowC,UAAW,SACXlO,SAAS,EACTqa,aAAc,OACd6nD,oBAAoB,EACpBO,YAAa,QACb1kG,KAAM6iG,EAAmBplE,M,6EClwH7B,OAAe,8wH,mCCAf,OAAe,sgF,mCCAf,OAAe,k+E,mCCAf,OAAe,cAA0B,wC,mCCiD1B6vM,IA9CG,CACd,mBAAsB,YACtB,uBAA0B,CACtB,CACI,KAAQ,eACR,SAAY,6DACZ,OAAU,aAEd,CACI,KAAQ,WACR,SAAY,6DACZ,OAAU,cAGlB,4BAA+B,iFAC/B,mBAAsB,YACtB,+BAAkC,4BAClC,mBAAsB,iCACtB,6BAAgC,iDAChC,mBAAsB,YACtB,kBAAqB,sBACrB,6BAAgC,6BAChC,MAAS,CAAC,EACV,gCAAmC,CAC/B,gBAEJ,6BAAgC,GAChC,8BAAiC,CAC7B,SAEJ,8BAAiC,MACjC,sBAAyB,CACrB,OAEJ,yCAA4C,CACxC,wBAA2B,EAC3B,yBAA4B,IAEhC,oCAAuC,CACnC,SAEJ,yBAA4B,iDAC5B,gCAAmC,Y,kCC7CvC,0WAEajzI,EAAgB,SAAChxE,GAC5B,OAAO8pB,IAAE+yJ,QAAQ78K,EAClB,EAEY00H,EAAc,SAAC/kD,EAAO34F,GACjC,OAAO8yC,IAAEo6L,MAAMv0I,EAAO34F,EACvB,EACY8yE,EAAe,SAAC6lB,EAAO34F,GAClC,OAAO8yC,IAAEq6L,OAAOx0I,EAAO34F,EACxB,EAEY64H,EAAkB,SAACr+G,GAC9B,OAAOs4B,IAAEyS,UAAU/qC,EACpB,EAYYg3L,EAAiB,SAAC47B,GAC7B,OAAOt6L,IAAEu6L,SAASD,KAAct6L,IAAEyI,QAAQ6xL,IAA0B,OAAbA,CACxD,EAEYn5K,EAAqB,SAACuwB,GACjC,IAAK1xC,IAAEw6L,SAAS9oJ,GACd,OAAO,EAET,IACE,IAAMkN,EAAS5mF,KAAK8V,MAAM4jE,GAC1B,MAAyB,kBAAXkN,GAAkC,OAAXA,CAGtC,CAFC,MAAOj5E,GACP,OAAO,CACR,CACF,EAEY80N,EAAa,SAAC/yN,EAAKgzN,GAC9B,OAAO16L,IAAE26L,KAAKjzN,EAAKgzN,EACpB,EAEYE,EAAgB,SAACC,EAAYC,GACxC,OAAO96L,IAAE+6L,QAAQF,EAAYC,EAC9B,EAEYE,EAAgB,SAACH,EAAYC,GACxC,OAAO96L,IAAEy7I,QAAQo/C,EAAYC,EAC9B,EAEYG,EAAa,SAACJ,EAAYK,GACrC,OAAOl7L,IAAEmR,KAAK0pL,EAAYK,EAC3B,C,mCCzDD,OAAe,kkE,mCCAf,OAAe,8lV,mCCAf,OAAe,cAA0B,6C,mCCAzC,OAAe,cAA0B,6C,mCCAzC,OAAe,cAA0B,+D,mCCAzC,OAAe,cAA0B,iD,mCCAzC,OAAe,cAA0B,qD,mCCAzC,OAAe,k5C,mCCAf,OAAe,shC,mCCAf,OAAe,cAA0B,iC,mCCAzC,OAAe,cAA0B,iC,mCCAzC,OAAe,klB,mCCAf,OAAe,spB,mCCAf,OAAe,cAA0B,qC,mCCAzC,OAAe,cAA0B,0C,mCCAzC,OAAe,cAA0B,0C,mCCAzC,OAAe,cAA0B,8C,mCCAzC,OAAe,cAA0B,2C,sBCCzC1hM,EAAOC,QAAU,CAAC,YAAc,iCAAiC,SAAW,8B,mCCD5E,OAAe,cAA0B,kC,mCCAzC,OAAe,cAA0B,qC,ksPCG5BitC,EAAa,GAGbg0B,EAA6B,KAC7BlwF,EAAyB,0BAEzBiqC,EAAqBnjB,EAWrBo+D,EAAqB,CAChCG,UAAW,YACXE,SAAU,WACVzlE,KAAM,OACN4lE,cAAe,gBACfC,mBAAoB,qBACpBrS,OAAQ,SACRtsF,MAAO,QACPyE,MAAO,QACP05F,SAAU,WACVtlF,MAAO,QACPmzJ,kBAAmB,oBACnBz3J,OAAQ,SACRkrF,WAAY,aACZC,KAAM,QAGFxmB,EAAM,WACV,MAAI77B,sBAA2BxyC,SAAS,UAC/B8+N,SAUV,EACY/0L,EAAYskC,IAEZs6E,EAAkB,kBAMlBz2J,EAAS,CACpB63C,UAAWskC,IACXp6C,SAAU,MACV/nB,IAAKsmC,wBACL+uC,QAAS/uC,qCACTr0B,cAAcq0B,EACdnwC,IAAKmwC,OACLnkC,QAAQmkC,EACRp0B,aAAco0B,uCACdvgD,SAAUugD,uCACV/9C,OAAQ,GACRqL,WAAY,GACZ2C,WAAY+vC,cACZxnC,QAAgD,OAChDu9K,kBAAmB/1I,oDACnBqjD,UAAkD,QAAvCrjD,g4BAAYusL,uBACvB91I,yBAAyB,UAAAz2C,gBAAA,IAAwCxyC,SAAS,aAAjD,UAA8DwyC,gBAA9D,EAA8D,EAAwCxyC,SAAS,aA2C7H6sL,EAAqB,CAChCmyC,SAAU,YACVC,UAAW,aACXC,YAAa,eACbC,gBAAiB,gBAIN7uC,EAA4B,CACvC0uC,SAAU,QACVC,UAAW,SACXC,YAAa,WACbC,gBAAiB,YAENzhH,EAAgB,CAAC,CAAE7jG,MAAO,MAAOD,MAAO,QAExCo4G,EAAkC,CAC7C,EAAG,WACH,EAAG,YACH,EAAG,YAEQ9C,EAAqB,CAChCl8H,KAAM,GACNosO,WAAY,GACZp5L,QAAS,GACT3wC,aAAc,GACdsH,IAAK,GACLxH,MAAO,GACPuE,aAAc,GACdD,YAAa,GACb4lO,WAAY,GACZxlO,cAAe,GACfoB,UAAU,EACVD,WAAW,EACXqB,WAAW,EACXW,SAAU,GACVC,WAAY,GACZy2C,OAAO,EACPj3C,QAAS,CACPqxH,eAAe,IAYNsiE,EAA4B,CACvC4uC,SAAU,MACVC,UAAW,OACXC,YAAa,SACbC,gBAAiB,UAGN16J,EAAqB,CAChC,CAAE5qD,MAAO,IAAKD,MAAO,MACrB,CAAEC,MAAO,IAAKD,MAAO,QAGVqqD,EAAgB,CAC3B,CACEpqD,MAAO,MACPD,MACE,qBAAKilB,UAAU,oBAAf,SACE,cAAC,IAAD,CAAQruC,KAAK,SAAS8kC,KAAK,KAAKsR,MAAM,QAAQ8S,UAAQ,OAI5D,CACE7/B,MAAO,KACPD,MACE,qBAAKilB,UAAU,oBAAf,SACE,cAAC,IAAD,CAAQruC,KAAK,SAAS8kC,KAAK,KAAKsR,MAAM,SAASqlC,WAAS,QAMnDvH,EAAmB,CAC9B,CAAE7qD,MAAO,QAASD,MAAO,SACzB,CAAEC,MAAO,QAASD,MAAO,UAId0zC,EAAoB,CAC/BC,eAAgB,mBAChB3jD,aAAc,gBACdk2I,aAAc,iBAGH2K,EAAqB,oEAGrBl4E,EAAsB,CAEjC,CAAE14D,MAAO,EAAGD,MAAO,YACnB,CAAEC,MAAO,EAAGD,MAAO,SAGR62C,GAAe,GAC1B+rI,OAAQ,SACRC,IAAK,MACL6iC,QAAS,UACTC,MAAO,YACP7iC,UAAW,MACX8iC,SAAU,YACV7iC,UAAW,SAPe,wBAQjB,WARiB,0BASf,YATe,GAwBfloH,EAAmB,CAC9B9jB,YAAa,cACbikB,UAAW,YACXC,SAAU,WACVH,QAAS,UACTxuE,QAAS,WAGE8R,EAAc,CACzBs5I,IAAK,MACLC,KAAM,OACNC,WAAY,aACZiuE,QAAS,UACTxnN,UAAW,aAEA05G,EAAyB,CACpC,kBACA,cACA,iBACA,cACA,eACA,aACA,gBAEW3zC,EAAiB,CAC5B,CAAEnkE,MAAO,QAASD,MAAO,SACzB,CAAEC,MAAO,MAAOD,MAAO,OACvB,CAAEC,MAAO,SAAUD,MAAO,SAAUykE,gBAAiB,MACrD,CAAExkE,MAAO,WAAYD,MAAO,QAC5B,CAAEC,MAAO,kBAAmBD,MAAO,mBACnC,CAAEC,MAAO,SAAUD,MAAO,WAGf82G,EAA8B,CAEzC,CAAE72G,MAAO,OAAQtpB,MAAO,gBAEb0lI,EAA4B,CAAC,CAAEp8G,MAAO,OAAQtpB,MAAO,gBAErD0/G,EAAyB,CAAC,CAAEp2F,MAAO,OAAQtpB,MAAO,gBAOlDq/G,GAAsB,GACjC39G,SAAU,GACV08G,QAAS,GACThC,KAAM,GACN3mE,QAAS,GACTvwC,KAAM,GACNC,MAAO,GACPkE,MAAO,GACP+C,IAAK,GACLyxG,QAAQ,EACRI,KAAM,GACNF,WAAY,IAXqB,2BAYrB,IAZqB,6BAanB,GAbmB,2BAcrB,IAdqB,8BAenB,GAfmB,qBAgB5B,GAhB4B,qBAiB5B,GAjB4B,yBAkBxB,GAlBwB,6BAmBnB,IAnBmB,0BAoBtB,IApBsB,2BAqBrB,IArBqB,2BAsBrB,IAtBqB,yBAuBvB,IAvBuB,uBAwB1B,GAxB0B,0BAyBvB,GAzBuB,GA+BtBjF,EAAc,CACzB3iF,IAAK,MACL3oB,OAAQ,SACRurG,OAAQ,UAEGzpC,EAAgB,CAC3B0yC,KAAM,OACN/+G,MAAO,QACP88C,QAAS,WAEE2kH,EAAc,CAAC,eAAgB,gBAC/Bu2D,EAAc,CACzB,WACA,aACA,aACA,aACA,aACA,eACA,eACA,UACA,YACA,eACA,SACA,gBACA,iBACA,YACA,UACA,iBACA,aACA,iBACA,iBACA,iBACA,mBACA,uBACA,SACA,YACA,aACA,oBACA,eACA,sBACA,cACA,cACA,cACA,kBACA,YACA,gBACA,YACA,aACA,WACA,MACA,SACA,YACA,gBACA,iBACA,iBACA,SACA,YACA,WACA,WACA,iBACA,iBA0BWhE,EAAuB,CAClCV,aAJQ,SAKRpwM,KAAM1hB,MAASC,OAZC,QAahB05G,QAAS,GACTjqG,KAAM,GACNmiG,MAAO,GAQI4jH,GAAoB,CAC/BlB,MAAO,QACPE,UAAW,YACXx6H,SAAU,WACV26H,SAAU,WACVI,KAAM,OACNF,OAAQ,SACR/xL,UAAW,YACXmyL,QAAS,UACTwV,kBAAmB,oBACnBC,OAAQ,SACRvC,KAAM,aAWK9U,GAAuB,CAClC,aAAc,aACd,YAAa,aACbsX,MAAO,YACP,eAAgB,YAChBC,QAAS,aACT,YAAa,aACbC,KAAM,WACNC,MAAO,YACP,WAAY,UACZ,gBAAiB,UACjB9iG,OAAQ,UACR+iG,UAAW,aACX,cAAe,aACf,WAAY,UACZ,eAAgB,eAChB,kBAAmB,iBACnB,cAAe,aACfC,IAAK,cACL1wI,OAAQ,SACR,UAAW,MACX,OAAQ,iBACR,eAAgB,kBAWL43H,GAAqB,CAChC+Y,UAAW,MACX9Y,WAAY,QAEDloD,GAAc,CAAC,QAAS,QAAS,SAEjC2nD,GAA0B,CACrCsZ,OAAQ,WACRC,QAAS,SACTC,OAAQ,QAEGpQ,GAAe,CAC1BrG,SAAU,EACVC,eAAgB,EAChBC,OAAQ,EACRC,aAAc,EACdR,MAAO,EACPC,YAAa,EACb8W,YAAa,EACbtW,KAAM,EACNC,WAAY,EACZiB,iBAAkB,EAClBC,uBAAwB,EACxBoV,aAAc,EACdvV,UAAW,EACXC,gBAAiB,EACjBxB,UAAW,EACXC,gBAAiB,GAGN2F,GAAa,CACxB9F,MAAO,QACPE,UAAW,YACXx6H,SAAU,YACV26H,SAAU,WACVE,OAAQ,SACRE,KAAM,OACNE,QAAS,mBACTnyL,UAAW,aAEAk5L,GAAc,CACzB1xJ,UAAW,YACX0vB,SAAU,WACVva,QAAS,WAGE8rJ,GAAiB,OACjBC,GAAkB,QAIlBtqG,GAAkB,CAC7ByiC,OAAQ,gBACRt3H,UAAW,uBACXC,QAAS,eACTm/L,UAAW,mBAiBA7qG,GAAwB,CACnC,oBACA,oBACA,mBACA,qBACA,wBAYWtI,GAAoB,CAC/B,CAAE1zG,MAAO,OAAQD,MAAO,QACxB,CAAEC,MAAO,QAASD,MAAO,SACzB,CAAEC,MAAO,MAAOD,MAAO,QAUZ+kE,GAA2B,CACtC,CAAE9kE,MAAO,MAAOD,MAAO,QAASykE,gBAAiB,OACjD,CAAExkE,MAAO,SAAUD,MAAO,SAAUykE,gBAAiB,OACrD,CAAExkE,MAAO,UAAWD,MAAO,WAAYykE,gBAAiB,OAExD,CAAExkE,MAAO,WAAYD,MAAO,WAAYykE,gBAAiB,QAc9CrgE,GAAiB,CAC5B2iN,MAAO,QACP1oO,IAAK,MACLgmB,QAAS,UACT65F,OAAQ,SACRpgH,SAAU,WACV2pC,SAAU,WACV1uC,OAAQ,SACRklH,SAAU,YAcC3vB,GAA8B,6CAE9BF,GAA2B,IAAI9pB,IAAI,CAC9C,CAAC,kBAAmB,OACpB,CAAC,WAAY,SAGFpgD,GAAoB,kBAEpBimD,GAAsB,CACjC,CACElqD,MAAO,IACPD,MACE,qBAAKilB,UAAU,oBAAf,SACE,cAAC,IAAD,CAAQruC,KAAK,SAAS8kC,KAAK,KAAKsR,MAAM,QAAQ8S,UAAQ,OAI5D,CACE7/B,MAAO,IACPD,MACE,qBAAKilB,UAAU,oBAAf,SACE,cAAC,IAAD,CAAQruC,KAAK,SAAS8kC,KAAK,KAAKsR,MAAM,SAASqlC,WAAS,QAMnDjI,GAAc,CACzB,CAAEnqD,MAAO,GAAID,MAAO,OACpB,CACEC,MAAO,WACPD,MAAO,YAET,CAAEC,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,qBAAsBD,MAAO,uBAG3BwsF,GAAc,aACzB,cAAe,SACf,qBAAsB,SACtB,YAAa,SACb,WAAY,SACZ,kBAAmB,QACnB,kBAAmB,QACnB,eAAgB,SAPS,YAQZ,SAEF7mB,GAAe,CAC1BlmF,UAAW,GACXC,SAAU,GACVnE,MAAO,GACP4C,SAAU,GACVzB,KAAM,WACNo9C,OAAO,EACP16C,IAAK,KACLwkB,KAAM,KACN9pB,OAAQ,MAGG0nN,GAAoB,aAC/BwlB,SAAU,OACVC,SAAU,OACVC,QAAS,UACTC,SAAU,OACVC,SAAU,OACV96N,QAAS,UACT+6N,KAAM,OACNC,KAAM,OACNl9D,KAAM,OACNF,KAAM,OACNq9D,aAAc,eACdC,aAAc,eACdC,cAAe,gBACfC,cAAe,gBACfC,QAAS,UACTC,QAAS,UACTC,SAAU,YAjBqB,UAkBtB,WAGEphL,GAAe,CAC1B0gL,SAAU,UACVC,SAAU,QACV96N,QAAS,SACTi7N,aAAc,OACdC,aAAc,OACdG,QAAS,OACTC,QAAS,OACTH,cAAe,OACfC,cAAe,OACft9D,KAAM,QACNiS,OAAQ,MACRnS,KAAM,MACN1vI,OAAQ,QACRy+L,QAAS,QACT4O,SAAU,MACVC,SAAU,MACVC,YAAa,QACb,eAAgB,SAsBLx7H,GAAoB,CAC/Bs5H,QAAS,SACTxpD,OAAQ,UAGG/rJ,GAAe,CAC1B02M,SAAU,WACVC,SAAU,WACVE,SAAU,WACVC,SAAU,WACVI,aAAc,eACdD,aAAc,eACdE,cAAe,gBACfC,cAAe,gBACfC,QAAS,UACTC,QAAS,UACTP,KAAM,OACNj9D,KAAM,OACNk9D,KAAM,OACNO,SAAU,WACVC,SAAU,WACVC,YAAa,eACbC,YAAa,eACb99D,KAAM,QAGKjtH,GAAiB,CAC5B1xC,WAAYjT,EAAOisB,aAAe,eAAiB,kBACnD/gB,KAAMlL,EAAOisB,aAAe,SAAW,OACvCzf,MAAOxM,EAAOisB,aAAe,YAAc,QAC3CX,KAAMtrB,EAAOisB,aAAe,SAAW,OACvC0jN,SAAU3vO,EAAOisB,aAAe,OAAS,WACzCzK,aAAcxhB,EAAOisB,aAAe,eAAiB,aACrDzY,QAASxT,EAAOisB,aAAe,eAAiB,YAGrCywE,GAAa,CACxBmyI,SAAU,WACVW,SAAU,WACVV,SAAU,eACVO,QAAS,UACTJ,aAAc,eACdE,cAAe,iBAGJlzE,GAAkB,CAC7B,CAAEt0I,MAAO,IAAKD,MAAO,UACrB,CAAEC,MAAO,IAAKD,MAAO,UACrB,CAAEC,MAAO,IAAKD,MAAO,WACrB,CAAEC,MAAO,IAAKD,MAAO,aACrB,CAAEC,MAAO,IAAKD,MAAO,YACrB,CAAEC,MAAO,IAAKD,MAAO,UACrB,CAAEC,MAAO,IAAKD,MAAO,aAGVq0I,GAAkB,CAC7B,CAAEp0I,MAAO,UAAWD,MAAO,WAC3B,CAAEC,MAAO,YAAaD,MAAO,cAQlBi0I,GAAY,CACvB,EAAG,SACH,EAAG,SACH,EAAG,UACH,EAAG,YACH,EAAG,WACH,EAAG,SACH,EAAG,YAGQvK,GAAiB,CAC5BjqJ,UAAW,QACXC,SAAU,OACVjE,aAAc,QACdF,MAAO,QACPD,UAAW,WAEA4sO,GAAiB,CAAC,uCAAwC,wCAE1DhhB,GAA2B,GAE3B9kE,GAAiB,CAC5BnnJ,MAAO,GACPC,KAAM,GACNC,IAAK,KACLG,UAAW,GACXK,OAAQ,GACRE,KAAM,GACNC,MAAO,GACPL,aAAc,GACdD,IAAK,GACLD,MAAO,GACPqN,aAAc,KACdgB,UAAW,KACXP,QAAS,gBACTiB,UAAU,EACVC,YAAa,EACbtB,OAAQ,KACRuB,SAAU,QACVR,eAAgB,GAChBqvC,QAAS,MAGE8uL,GAAwB,CACnC,CAAEnoN,MAAO,iBAAkBC,MAAO,kBAClC,CAAED,MAAO,aAAcC,MAAO,cAC9B,CAAED,MAAO,UAAWC,MAAO,WAC3B,CAAED,MAAO,qBAAsBC,MAAO,sBACtC,CAAED,MAAO,qBAAsBC,MAAO,sBACtC,CAAED,MAAO,cAAeC,MAAO,eAC/B,CAAED,MAAO,WAAYC,MAAO,YAC5B,CAAED,MAAO,qBAAsBC,MAAO,sBACtC,CAAED,MAAO,eAAgBC,MAAO,gBAChC,CAAED,MAAO,oBAAqBC,MAAO,qBACrC,CAAED,MAAO,eAAgBC,MAAO,gBAChC,CAAED,MAAO,cAAeC,MAAO,eAC/B,CAAED,MAAO,cAAeC,MAAO,eAC/B,CAAED,MAAO,MAAOC,MAAO,OACvB,CAAED,MAAO,oBAAqBC,MAAO,qBACrC,CAAED,MAAO,eAAgBC,MAAO,gBAChC,CAAED,MAAO,WAAYC,MAAO,YAC5B,CAAED,MAAO,aAAcC,MAAO,cAC9B,CAAED,MAAO,aAAcC,MAAO,cAC9B,CAAED,MAAO,eAAgBC,MAAO,gBAChC,CAAED,MAAO,qBAAsBC,MAAO,sBACtC,CAAED,MAAO,eAAgBC,MAAO,gBAChC,CAAED,MAAO,cAAeC,MAAO,eAC/B,CAAED,MAAO,wBAAyBC,MAAO,yBACzC,CAAED,MAAO,UAAWC,MAAO,WAC3B,CAAED,MAAO,aAAcC,MAAO,cAC9B,CAAED,MAAO,0BAA2BC,MAAO,4BAEhCmoN,GAAkB,CAC7B,CAAEnoN,MAAO,QAASD,MAAO,SACzB,CAAEC,MAAO,OAAQD,MAAO,QACxB,CAAEC,MAAO,OAAQD,MAAO,QACxB,CAAEC,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,IAAKD,MAAO,KACrB,CAAEC,MAAO,KAAMD,MAAO,MACtB,CAAEC,MAAO,KAAMD,MAAO,MACtB,CAAEC,MAAO,cAAeD,MAAO,eAC/B,CAAEC,MAAO,SAAUD,MAAO,WAGf4qD,GAAoB,CAC/B,CAAE3qD,MAAO,cAAeD,MAAO,eAC/B,CAAEC,MAAO,eAAgBD,MAAO,gBAChC,CAAEC,MAAO,OAAQD,MAAO,QACxB,CAAEC,MAAO,kBAAmBD,MAAO,oBAGxBmsH,GAAyB,CACpC,CAAElsH,MAAO,cAAeD,MAAO,eAC/B,CAAEC,MAAO,eAAgBD,MAAO,iBAGrBqoN,GAAsB,CACjC,CAAEroN,MAAO,iBAAkBC,MAAO,kBAClC,CAAED,MAAO,QAASC,MAAO,SACzB,CAAED,MAAO,cAAeC,MAAO,eAC/B,CAAED,MAAO,MAAOC,MAAO,OACvB,CAAED,MAAO,cAAeC,MAAO,eAC/B,CAAED,MAAO,OAAQC,MAAO,QACxB,CAAED,MAAO,qBAAsBC,MAAO,sBACtC,CAAED,MAAO,OAAQC,MAAO,QACxB,CAAED,MAAO,QAASC,MAAO,SACzB,CAAED,MAAO,sBAAuBC,MAAO,uBACvC,CAAED,MAAO,OAAQC,MAAO,QACxB,CAAED,MAAO,eAAgBC,MAAO,gBAChC,CAAED,MAAO,SAAUC,MAAO,UAC1B,CAAED,MAAO,QAASC,MAAO,SACzB,CAAED,MAAO,QAASC,MAAO,SACzB,CAAED,MAAO,oBAAqBC,MAAO,qBACrC,CAAED,MAAO,QAASC,MAAO,SACzB,CAAED,MAAO,QAASC,MAAO,SACzB,CAAED,MAAO,KAAMC,MAAO,MACtB,CAAED,MAAO,OAAQC,MAAO,QACxB,CAAED,MAAO,SAAUC,MAAO,UAC1B,CAAED,MAAO,SAAUC,MAAO,UAC1B,CAAED,MAAO,QAASC,MAAO,SACzB,CAAED,MAAO,UAAWC,MAAO,WAC3B,CAAED,MAAO,eAAgBC,MAAO,gBAChC,CAAED,MAAO,QAASC,MAAO,SACzB,CAAED,MAAO,aAAcC,MAAO,eAGnB82D,GAAoB,CAC/B,CAAE92D,MAAO,IAAKD,MAAO,SACrB,CAAEC,MAAO,IAAKD,MAAO,iBAGVs0B,GAAwB,CACnC,CACEr0B,MAAO,iBACPD,MAAO,iBACPrpB,MAAO,iEAET,CACEspB,MAAO,uBACPD,MAAO,uBACPrpB,MAAO,8FAET,CACEspB,MAAO,iBACPD,MAAO,iBACPrpB,MAAO,gFAET,CACEspB,MAAO,mBACPD,MAAO,mBACPrpB,MAAO,8EAET,CACEspB,MAAO,gCACPD,MAAO,gCACPrpB,MAAO,gFAET,CACEspB,MAAO,qBACPD,MAAO,qBACPrpB,MAAO,iEAET,CACEspB,MAAO,QACPD,MAAO,QACPrpB,MAAO,SAET,CACEspB,MAAO,qBACPD,MAAO,qBACPrpB,MAAO,gEAET,CACEspB,MAAO,oBACPD,MAAO,oBACPrpB,MAAO,8GAET,CACEspB,MAAO,oBACPD,MAAO,oBACPrpB,MACE,qHAEJ,CACEspB,MAAO,uBACPD,MAAO,uBACPrpB,MAAO,kGAET,CACEspB,MAAO,yBACPD,MAAO,yBACPrpB,MAAO,gGAET,CACEspB,MAAO,qBACPD,MAAO,qBACPrpB,MAAO,qEAET,CACEspB,MAAO,wBACPD,MAAO,wBACPrpB,MACE,+GAEJ,CACEspB,MAAO,8BACPD,MAAO,8BACPrpB,MACE,kHAIO4/D,GAAuBj+D,EAAOisB,aACvC,CACE,CAAEtE,MAAO,IAAKD,MAAO,OACrB,CAAEC,MAAO,IAAKD,MAAO,iBACrB,CAAEC,MAAO,IAAKD,MAAO,cACrB,CAAEC,MAAO,IAAKD,MAAO,0BACrB,CAAEC,MAAO,IAAKD,MAAO,sCACrB,CAAEC,MAAO,IAAKD,MAAO,mBACrB,CAAEC,MAAO,IAAKD,MAAO,gCACrB,CAAEC,MAAO,IAAKD,MAAO,oBACrB,CAAEC,MAAO,IAAKD,MAAO,iBACrB,CAAEC,MAAO,KAAMD,MAAO,eACtB,CAAEC,MAAO,KAAMD,MAAO,gBAExB,CACE,CAAEC,MAAO,YAAaD,MAAO,OAC7B,CAAEC,MAAO,MAAOD,MAAO,OACvB,CAAEC,MAAO,UAAWD,MAAO,WAC3B,CAAEC,MAAO,QAASD,MAAO,aACzB,CAAEC,MAAO,SAAUD,MAAO,UAC1B,CAAEC,MAAO,WAAYD,MAAO,cAGrBg/J,GAAa1mL,EAAOisB,aAC7B,CAAC,CAAEtE,MAAO,MAAOD,MAAO,QACxB,CACE,CAAEC,MAAO,YAAaD,MAAO,aAC7B,CAAEC,MAAO,MAAOD,MAAO,OACvB,CAAEC,MAAO,UAAWD,MAAO,WAC3B,CAAEC,MAAO,YAAaD,MAAO,aAC7B,CAAEC,MAAO,SAAUD,MAAO,UAC1B,CAAEC,MAAO,YAAaD,MAAO,cAGtBy0I,GAA6B,CACxC,CAAEx0I,MAAO,SAAUD,MAAO,UAC1B,CAAEC,MAAO,MAAOD,MAAO,OACvB,CAAEC,MAAO,UAAWD,MAAO,YAGhB6sJ,GAAqB,CAChC,CAAE5sJ,MAAO,yBAA0BD,MAAO,iBAC1C,CAAEC,MAAO,gCAAiCD,MAAO,wBACjD,CAAEC,MAAO,0BAA2BD,MAAO,kBAC3C,CAAEC,MAAO,qBAAsBD,MAAO,aACtC,CAAEC,MAAO,wBAAyBD,MAAO,gBACzC,CAAEC,MAAO,kBAAmBD,MAAO,oBAGxB4rE,IAAW,GACtB08I,YAAa,eACbC,aAAc,gBACdC,cAAe,iBACfC,iBAAkB,iBAClBC,eAAgB,kBAChBC,YAAa,sBACbC,cAAe,gBACfC,cAAe,cACfC,cAAe,kBACfC,gBAAiB,qBACjBC,UAAW,aACXC,YAAa,eACbC,gBAAiB,oBACjBC,gBAAiB,mBACjBlwG,YAAa,eACbmwG,oBAAqB,iBACrBC,cAAe,iBACfC,eAAgB,kBAChBC,cAAe,iBACfC,cAAe,iBACfC,cAAe,iBACfC,gBAAiB,oBACjBC,iBAAkB,qBAvBI,4BAwBT,gBAxBS,8BAyBP,aAzBO,6BA0BR,qBA1BQ,4BA2BT,gBA3BS,8BA4BP,qBA5BO,wCA6BG,6BA7BH,oCA8BD,cA9BC,oCA+BD,kBA/BC,6BAgCR,iBAhCQ,6BAiCR,iBAjCQ,gCAkCL,oBAlCK,+BAmCN,oBAnCM,gCAoCL,oBApCK,4BAqCT,gBArCS,qBAsChB,QAtCgB,8BAuCP,eAvCO,6BAwCR,UAxCQ,2BAyCV,YAzCU,8BA0CP,kBA1CO,8BA2CP,kBA3CO,6BA4CR,iBA5CQ,6BA6CR,iBA7CQ,gCA8CL,oBA9CK,gCA+CL,oBA/CK,GAkDXpjB,GAAoB,CAAC,YAAa,YAAa,WAAY,cAAe,QAAS,UAEnFjtI,GAAyB,SAACr/E,EAAI+mB,GACzC,IAAI4oN,EAAe,SAQnB,OAPI5oN,IACEA,EAAS5a,SAAS,WACpBwjO,EAAe,UACN5oN,EAAS5a,SAAS,UAC3BwjO,EAAe,SAGb,WAAN,OAAkBA,EAAlB,oCAA0D3vO,EAC3D,EAEY0hF,GAA0B,CACrC,EAAG,eACH,EAAG,kBAGQ64E,GAAiB,CAC5B,CAAEv0I,MAAO,EAAGD,MAAO,GACnB,CAAEC,MAAO,EAAGD,MAAO,GACnB,CAAEC,MAAO,EAAGD,MAAO,GACnB,CAAEC,MAAO,EAAGD,MAAO,GACnB,CAAEC,MAAO,EAAGD,MAAO,GACnB,CAAEC,MAAO,EAAGD,MAAO,GACnB,CAAEC,MAAO,EAAGD,MAAO,GACnB,CAAEC,MAAO,EAAGD,MAAO,GACnB,CAAEC,MAAO,EAAGD,MAAO,GACnB,CAAEC,MAAO,GAAID,MAAO,KAGTkmC,GAAc,CACzBm6K,EAAG,OACHC,EAAG,SACHuJ,EAAG,gBACHC,EAAG,cAEQx/J,GAAiB,CAC5B,CAAErqD,MAAO,IAAKD,MAAO,QACrB,CAAEC,MAAO,IAAKD,MAAO,UACrB,CAAEC,MAAO,IAAKD,MAAO,iBACrB,CAAEC,MAAO,IAAKD,MAAO,eAGV0qD,GAAqB,CAChC,CAAEzqD,MAAO,IAAKD,MAAO,UACrB,CAAEC,MAAO,IAAKD,MAAO,WACrB,CAAEC,MAAO,IAAKD,MAAO,SAGV2qD,GAAqB,CAChC,CAAE1qD,MAAO,SAAUD,MAAO,UAC1B,CAAEC,MAAO,UAAWD,MAAO,WAC3B,CAAEC,MAAO,OAAQD,MAAO,SAGb+pN,GAAY,CACvBC,cAAe,OACfC,gBAAiB,OACjB3nM,OAAQ,QACR4rH,QAAS,WAGEljF,GAA8B,CACzC,CAAE/qD,MAAO,iBAAkBD,MAAO,kBAClC,CAAEC,MAAO,aAAcD,MAAO,cAC9B,CAAEC,MAAO,UAAWD,MAAO,WAC3B,CAAEC,MAAO,kBAAmBD,MAAO,oBAGxBkqN,GAAmB,CAC9BC,QAAS,IACTv3N,MAAO,KAGI2/H,GAAqB,CAChC,CACEnpE,QAAS,QACTzyE,MAAO,QACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,KACzB0mE,oBAAoB,GAEtB,CACE3xB,QAAS,QACTzyE,MAAO,OACPkiC,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,OAIhBq/G,GAA4B,CACvC,CACEtqE,QAAS,QACTzyE,MAAO,SACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,OACTzyE,MAAO,aACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,OAIhBs/G,GAA8B,CACzC,CACEvqE,QAAS,QACTzyE,MAAO,aACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,QACTzyE,MAAO,WACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,OAGhBy/G,GAA6B,CACxC,CACE1qE,QAAS,QACTzyE,MAAO,OACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,OACTzyE,MAAO,OACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,OAIhBu/G,GAA+B,CAC1C,CACExqE,QAAS,QACTzyE,MAAO,QACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,QACTzyE,MAAO,QACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,OAGhBw/G,GAAyB,CACpC,CAGEzqE,QAAS,QACTzyE,MAAO,OACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,MAE3B,CACE+0C,QAAS,OACTzyE,MAAO,OACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,UACdj5C,GAAI,EACJusC,MAAO,OACP5vC,KAAM6iG,EAAmBplE,OAIhBqyH,GAAsB,CACjC,CACEt9E,QAAS,YACTzyE,MAAO,gBACPowC,UAAW,QACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GAEN,CACEmvE,QAAS,QACTzyE,MAAO,aACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdt8C,KAAM6iG,EAAmBS,mBACzBjgG,GAAI,GAEN,CACEmvE,QAAS,OACTzyE,MAAO,YACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdt8C,KAAM6iG,EAAmBS,mBACzBjgG,GAAI,GAEN,CACEmvE,QAAS,QACTzyE,MAAO,QACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GAEN,CACEmvE,QAAS,eACTzyE,MAAO,eACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GAEN,CACEmvE,QAAS,MACTzyE,MAAO,SACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GAEN,CACEmvE,QAAS,YACTzyE,MAAO,YACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GAEN,CACEmvE,QAAS,MACTzyE,MAAO,gBACPowC,UAAW,WACXmM,aAAc,OACdra,SAAS,EACT5+B,GAAI,GAEN,CACEmvE,QAAS,SACTzyE,MAAO,SACPowC,UAAW,WACXmM,aAAc,OACdra,SAAS,EACTjiC,KAAM6iG,EAAmBS,mBACzBjgG,GAAI,GAEN,CACEmvE,QAAS,OACTzyE,MAAO,OACPowC,UAAW,WACXmM,aAAc,OACdra,SAAS,EACTjiC,KAAM6iG,EAAmBS,mBACzBjgG,GAAI,IAEN,CACEmvE,QAAS,eACTzyE,MAAO,aACPowC,UAAW,WACXmM,aAAc,OACdra,SAAS,EACT5+B,GAAI,IAEN,CACEmvE,QAAS,kBACTzyE,MAAO,mBACPowC,UAAW,WACXmM,aAAc,OACdra,SAAS,EACT5+B,GAAI,IAEN,CACEmvE,QAAS,kBACTzyE,MAAO,mBACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,IAEN,CACEmvE,QAAS,sBACTzyE,MAAO,uBACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,IAEN,CACEmvE,QAAS,WACTzyE,MAAO,YACPowC,UAAW,WACXmM,aAAc,OACdra,SAAS,EACT5+B,GAAI,IAEN,CACEmvE,QAAS,cACTzyE,MAAO,iBACPowC,UAAW,WACXmM,aAAc,OACdra,SAAS,EACT5+B,GAAI,IAEN,CACEmvE,QAAS,OACTzyE,MAAO,SACPowC,UAAW,WACXmM,aAAc,OACdra,SAAS,EACT5+B,GAAI,IAEN,CACEmvE,QAAS,UACTzyE,MAAO,cACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,IAEN,CACEmvE,QAAS,cACTzyE,MAAO,kBACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,IAEN,CACEmvE,QAAS,iBACTzyE,MAAO,gBACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,IAEN,CACEmvE,QAAS,mBACTzyE,MAAO,qBACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,IAEN,CACEmvE,QAAS,mBACTzyE,MAAO,qBACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,IAEN,CACEmvE,QAAS,qBACTzyE,MAAO,uBACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,IAEN,CACEmvE,QAAS,WACTzyE,MAAO,WACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,IAEN,CACEmvE,QAAS,cACTzyE,MAAO,OACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdt8C,KAAM6iG,EAAmBS,mBACzBjgG,GAAI,IAEN,CACEmvE,QAAS,eACTzyE,MAAO,YACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,IAEN,CACEmvE,QAAS,SACTzyE,MAAO,UACPkiC,SAAS,EACTkO,UAAW,WACXmM,aAAc,OACdj5C,GAAI,KAIK6kK,GAAyB,WACpC,MAAO,CAAEsrE,gBAAiBC,aAAsB,mBAAoB1vO,SAAU0vO,aAAsB,YACrG,EAEYC,GAAwB,CACnC,CAAErqN,MAAO,OAAQtpB,MAAO,QACxB,CAAEspB,MAAO,SAAUtpB,MAAO,WAGfqmN,GAAS,CAAC,kBAAmB,QAAS,UAAW,QAAS,aAE1Dh2G,GAAsB,CACjCwgD,iBAAkB,kBAClB0sB,SAAU,WACV39C,WAAY,YACZx2E,UAAW,YACX08E,SAAU,WACVx1B,aAAc,cACd6uD,eAAgB,gBAChB22B,kBAAmB,mBACnBzP,kBAAmB,kBACnButD,aAAc,cACd15I,MAAO,SAIIisH,GAAe,CAC1ByqB,aAAc,eACdI,QAAS,UACTR,SAAU,YAGCx9E,GAAyB,CACpC,CACEvgF,QAAS,YACTzyE,MAAO,gBACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GAEN,CACEmvE,QAAS,QACTzyE,MAAO,aACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdt8C,KAAM6iG,EAAmBQ,cACzBhgG,GAAI,GAEN,CACEmvE,QAAS,OACTzyE,MAAO,YACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdt8C,KAAM6iG,EAAmBQ,cACzBhgG,GAAI,GAEN,CACEmvE,QAAS,QACTzyE,MAAO,QACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GAEN,CACEmvE,QAAS,eACTzyE,MAAO,eACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,GAEN,CACEmvE,QAAS,MACTzyE,MAAO,gBACPowC,UAAW,WACXmM,aAAc,OACdra,SAAS,EACT5+B,GAAI,GAEN,CACEmvE,QAAS,YACTzyE,MAAO,YACPowC,UAAW,WACXlO,SAAS,EACTqa,aAAc,OACdj5C,GAAI,IAIKomJ,GAAmB,CAC9B,CAAEpgI,MAAO,QAASD,MAAO,SAEzB,CAAEC,MAAO,MAAOD,MAAO,OAEvB,CAAEC,MAAO,MAAOD,MAAO,QAMZ40D,GAAkB,CAC7BC,WAAY,aACZM,QAAS,UACTC,UAAW,YACXC,OAAQ,SACRC,OAAQ,SACRC,SAAU,WACVC,OAAQ,SACRP,aAAc,eACdC,iBAAkB,oBAGPJ,GAAkB,CAC7BD,WAAY,gBACZM,QAAS,gBACTC,UAAW,kBACXC,OAAQ,cACRC,OAAQ,eACRC,SAAU,iBACVC,OAAQ,eACRN,iBAAkB,sBAClBD,aAAc,iBAGHvkC,GAA2B,CACtCkyJ,OAAQ,eACRC,IAAK,gBACLG,cAAe,gBACfD,UAAW,cACXD,UAAW,mBASA3mJ,GAAwB,CACnC,CAAEz8B,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,iBAAkByuF,OAAQ,OAC5D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,sBAAuByuF,OAAQ,OACjE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,mCAAoCyuF,OAAQ,OAC9E,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,yBAA0ByuF,OAAQ,OACpE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,gBAAiByuF,OAAQ,OAC3D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,iCAAkCyuF,OAAQ,OAC5E,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,oBAAqByuF,OAAQ,OAC/D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,eAAgByuF,OAAQ,OAC1D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,iBAAkByuF,OAAQ,OAC5D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,2BAA4ByuF,OAAQ,OACtE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,OAAQyuF,OAAQ,OAClD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,mBAAoByuF,OAAQ,OAC9D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,0BAA2ByuF,OAAQ,OACrE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,wCAAyCyuF,OAAQ,OACnF,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,eAAgByuF,OAAQ,OAC1D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,OAAQyuF,OAAQ,OAClD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,mBAAiByuF,OAAQ,OAC3D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,qBAAsByuF,OAAQ,OAChE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,oBAAqByuF,OAAQ,OAC/D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,8BAA+ByuF,OAAQ,OACzE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,gBAAiByuF,OAAQ,OAC3D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,OAAQyuF,OAAQ,OAClD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,gBAAiByuF,OAAQ,OAC3D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,mBAAoByuF,OAAQ,OAC9D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,8BAA+ByuF,OAAQ,OACzE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,OAAQyuF,OAAQ,OAClD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,gBAAiByuF,OAAQ,OAC3D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,oCAAqCyuF,OAAQ,OAC/E,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,gCAAiCyuF,OAAQ,OAC3E,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,4BAA6ByuF,OAAQ,OACvE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,OAAQyuF,OAAQ,OAClD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,yCAA0CyuF,OAAQ,OACpF,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,qBAAsByuF,OAAQ,OAChE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,mCAAoCyuF,OAAQ,OAC9E,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,gBAAiByuF,OAAQ,OAC3D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,OAAQyuF,OAAQ,OAClD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,mBAAoByuF,OAAQ,OAC9D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,kCAAmCyuF,OAAQ,OAC7E,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,uBAAwByuF,OAAQ,OAClE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,gBAAiByuF,OAAQ,OAC3D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,OAAQyuF,OAAQ,OAClD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,iBAAkByuF,OAAQ,OAC5D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,2BAA4ByuF,OAAQ,OACtE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,OAAQyuF,OAAQ,OAClD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,kCAAmCyuF,OAAQ,OAC7E,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,mBAAoByuF,OAAQ,OAC9D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,OAAQyuF,OAAQ,OAClD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,6CAA8CyuF,OAAQ,OACxF,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,qBAAsByuF,OAAQ,OAChE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,sBAAoByuF,OAAQ,OAC9D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,eAAgByuF,OAAQ,OAC1D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,wBAAyByuF,OAAQ,OACnE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,6BAA8ByuF,OAAQ,OACxE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,4BAA6ByuF,OAAQ,OACvE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,mCAAoCyuF,OAAQ,OAC9E,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,wBAAyByuF,OAAQ,OACnE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,eAAgByuF,OAAQ,OAC1D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,eAAgByuF,OAAQ,OAC1D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,4BAA6ByuF,OAAQ,OACvE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,kBAAmByuF,OAAQ,OAC7D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,eAAgByuF,OAAQ,OAC1D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,+CAAgDyuF,OAAQ,OAC1F,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,yBAA0ByuF,OAAQ,OACpE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,uBAAwByuF,OAAQ,OAClE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,+BAAgCyuF,OAAQ,OAC1E,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,cAAeyuF,OAAQ,OACzD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,OAAQyuF,OAAQ,OAClD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,sBAAuByuF,OAAQ,OACjE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,eAAgByuF,OAAQ,OAC1D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,2BAA4ByuF,OAAQ,OACtE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,uBAAwByuF,OAAQ,OAClE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,iBAAkByuF,OAAQ,OAC5D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,uCAAwCyuF,OAAQ,OAClF,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,gBAAiByuF,OAAQ,OAC3D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,aAAcyuF,OAAQ,OACxD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,YAAayuF,OAAQ,OACvD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,UAAWyuF,OAAQ,OACrD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,0BAA2ByuF,OAAQ,OACrE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,uBAAwByuF,OAAQ,OAClE,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,oBAAqByuF,OAAQ,OAC/D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,iBAAkByuF,OAAQ,OAC5D,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,QAASyuF,OAAQ,OACnD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,SAAUyuF,OAAQ,OACpD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,WAAYyuF,OAAQ,OACtD,CAAEnoE,KAAM,KAAM8qN,MAAO,MAAOpxO,KAAM,mBAAiByuF,OAAQ,QAGhDh3B,IAAiB,GAC5BxkD,sBAAuB,CACrB9Q,MAAO,GACPkE,UAAW,GACXC,SAAU,GACVvE,IAAK,GACLiN,YAAa,KACbgkC,QAAS,GACT5gB,aAAc,QACd5iB,cAAc,EACdiD,YAAY,EACZwtC,QAAS,KACTx9C,KAAM,GACNwN,QAAS,GACTvN,MAAO,GACPH,OAAQ,GACRC,QAAS,GACTG,IAAK,GACL0Q,UAAU,EACVjR,IAAK,GACL6gD,UAAW,GACX9zC,SAAU,IAEZ1D,UAAW,GACXiL,OAAQ,KACRvE,WAAY,GACZlT,SAAU,GACV4T,WAAY,GACZpR,OAAQ,GACRoN,UAAW,GACX9I,MAAO,GACPuN,QAAS,GACTQ,UAAW,MACXT,UAAU,EACVL,WAAW,EACXI,iBAAiB,EACjBpE,YAAa,GACb7M,MAAO,GACPmM,WAAY,GACZhF,OAAQ,WAvCoB,uBAwCpB,aAxCoB,4BAyCf,IAzCe,4BA0Cf,IA1Ce,4BA2Cf,IA3Ce,GA8CjBunL,GAAqB,CAChC59K,sBAAuB,CACrB9Q,MAAO,GACPkE,UAAW,GACXC,SAAU,GACVvE,IAAK,GACLiN,YAAa,KACbgkC,QAAS,GACTiN,QAAS,KACTx9C,KAAM,GACNwN,QAAS,GACTvN,MAAO,GACPH,OAAQ,GACRC,QAAS,GACTG,IAAK,GACLP,IAAK,GACL+M,SAAU,IAEZ1D,UAAW,GACXiL,OAAQ,KACRvE,WAAY,GACZlT,SAAU,GACV4T,WAAY,GACZpR,OAAQ,GACRoN,UAAW,GACXiF,UAAW,MACX4sC,OAAO,EACP1xC,YAAa,GACb7M,MAAO,GACPmM,WAAY,GACZhF,OAAQ,UACRyK,YAAa,GACbC,YAAa,IAGF29D,GAAwB,CACnC,CAAE9qD,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,aAAcD,MAAO,cAC9B,CAAEC,MAAO,UAAWD,MAAO,YAGhB2xK,GAAqB,CAChC,oBACA,mBACA,oBACA,oBACA,oBACA,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,mBACA,qBACA,oBACA,0BACA,0BACA,0BACA,yBACA,0BACA,0BACA,mBACA,oBACA,qBACA,oBACA,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,qBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,qBACA,qBACA,qBACA,qBACA,sBAGWQ,GAAwB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAcnEntG,GAAiB,CAAC,QAAS,SAAU,OAErC7tD,GAAa,CAAC,eAAgB,eAAgB,gBAE9CuvJ,GAAuB,CAAC,SAAU,OAAQ,WAAY,UAAW,OAEjE96G,GAAsB,CACjC,CAAE3rD,MAAO,eAAgBD,MAAO,gBAChC,CAAEC,MAAO,UAAWD,MAAO,WAC3B,CAAEC,MAAO,gBAAiBD,MAAO,iBACjC,CAAEC,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,eAAgBD,MAAO,iBAErBunL,GAAkC,CAC7C,CAAEtnL,MAAO,UAAWD,MAAO,WAC3B,CAAEC,MAAO,gBAAiBD,MAAO,iBACjC,CAAEC,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,eAAgBD,MAAO,iBAErB2kH,GAAiC,CAC5C,CAAE1kH,MAAO,QAASD,MAAO,YACzB,CAAEC,MAAO,WAAYD,MAAO,oBAC5B,CAAEC,MAAO,QAASD,MAAO,eAGdyqN,GAAe,CAC1B,YACA,gBACA,WACA,wBACA,YACA,WACA,SACA,QACA,YACA,UACA,SACA,cACA,kBACA,UACA,cACA,YACA,aACA,aACA,iBACA,eACA,mBACA,iBACA,mBACA,kBACA,qBAGWhhJ,GAAkB,CAC7BxvF,GAAI,KACJgB,MAAO,aACPC,KAAM,YACNuE,UAAW,aACXC,SAAU,YACVnE,MAAO,QACPJ,IAAK,cACLiN,YAAa,QACb/P,SAAU,SACVwC,OAAQ,OACRoN,UAAW,OACX9I,MAAO,MACPuD,OAAQ,SACRoN,OAAQ,SACR5C,UAAW,YACX4nC,OAAQ,SACRvpC,WAAY,WACZ6B,YAAa,SACbhB,UAAW,cACXmS,UAAW,iBACX1Z,UAAW,iBACX+kB,WAAY,iBACZ7d,MAAO,cACPqwE,WAAY,cACZC,cAAe,cACfz4D,KAAM,OACN04D,YAAa,0BACblrD,iBAAkB,oBAClBmrD,UAAW,aACX1tB,aAAc,gBACdjiD,YAAa,cACbkN,aAAc,eACdre,aAAc,QACdD,IAAK,SACLF,UAAW,YACXK,OAAQ,SACRE,KAAM,OACNi+B,SAAU,YACVvvB,YAAa,gBACb3B,aAAc,aACdU,gBAAiB,mBACjBqzE,gBAAiB,mBACjBnwE,gBAAiB,kBACjBxC,eAAgB,gBAChBvI,iBAAkB,qBAClBwI,iBAAkB,qBAClBC,mBAAoB,sBACpBd,KAAM,SACNwzE,YAAa,eACb9wE,QAAS,UACT0f,aAAc,gBACdsxD,QAAS,WACTryE,YAAa,cACboB,WAAY,cACZwd,kBAAmB,gBAGVy/E,GAAkB,CAC3B4hI,KAAM,EACN3hI,MAAO,EACPC,OAAQ,EACR2hI,QAAS,EACT1hI,OAAQ,EACR2hI,GAAI,EACJ1hI,KAAM,GAGKrkD,GAAgB,CAC3BsiL,SAAU,MACVC,SAAU,QACVO,QAAS,MACTJ,aAAc,MACdE,cAAe,MACfK,SAAU,OAGCtnL,GAAW,CACtBC,MAAO,QACPC,KAAM,OACNG,IAAK,MACLC,GAAI,KACJI,MAAO,iBACPC,MAAO,QACPC,SAAU,WACVC,QAAS,UACTC,WAAY,cACZC,SAAU,WACVE,kBAAmB,sBACnBC,gBAAiB,sBACjBC,YAAa,4BACbC,WAAY,0BACZC,OAAQ,oBACRC,WAAY,6BACZN,MAAO,SAGIqpL,GAAqB,CAChCC,WAAY,GACZC,kBAAmB,GACnBC,mBAAoB,GACpBC,oBAAqB,GACrBC,eAAgB,GAChBC,gBAAiB,GACjBC,aAAc,GACdC,cAAe,GACfC,iBAAkB,GAClBC,eAAgB,GAChBC,qBAAsB,GACtBvuN,YAAa,GACbC,eAAgB,GAChBuuN,aAAc,MACdC,kBAAmB,MACnBC,2BAA4B,GAC5BvuN,cAAe,GACfR,iBAAkB,GAClBgvN,qBAAsB,sDACtBC,oBAAqB,UACrBC,kBAAmB,UACnBC,YAAa,GACbC,gBAAiB,GACjBC,yBAA0B,GAC1BC,mCAAoC,GACpCC,iBAAkB,GAClBC,qBAAsB,GACtBzuN,cAAe,YACf0uN,qBAAsB,aACtBC,4BAA6B,WAC7BC,6BAA8B,QAC9BC,8BAA+B,GAC/BC,yBAA0B,oBAC1BC,0BAA2B,GAC3BC,uBAAwB,YACxBC,wBAAyB,KACzBC,2BAA4B,QAC5BC,+BAAgC,eAChCC,iBAAkB,aAClBC,iBAAkB,gBAClBC,mBAAoB,uBACpBC,oBAAqB,GACrBC,iBAAkB,cAClBC,kBAAmB,KACnBC,qBAAsB,QACtBC,yBAA0B,eAC1BC,SAAU,GACVC,uBAAwB,GACxBC,wBAAyB,GACzBC,mBAAoB,GACpBC,4BAA6B,GAC7BC,eAAgB,GAChBC,aAAc,GACdC,IAAK,GACLC,uBAAwB,GACxBC,yBAA0B,GAC1BC,0BAA2B,GAC3BC,uBAAwB,GACxBC,wBAAyB,GACzBC,2BAA4B,GAC5BC,+BAAgC,GAChC3pL,QAAS,GACT4pL,mBAAoB,IAGTC,GAA4B,CACvCpH,SAAU,WACVC,SAAU,WACVK,cAAe,iBACfE,QAAS,kBAOExgD,GAAa,CACxB,CAAEnnK,MAAO,MAAOC,MAAO,MAAO7mB,KAAM,SAAUa,GAAI,aAClD,CAAE+lB,MAAO,KAAMC,MAAO,KAAM7mB,KAAM,SAAUa,GAAI,aAErCmtL,GAAwB,CACnC,CAAEpnK,MAAO,MAAOC,MAAO,MAAO7mB,KAAM,mBAAoBa,GAAI,uBAC5D,CAAE+lB,MAAO,KAAMC,MAAO,KAAM7mB,KAAM,mBAAoBa,GAAI,uBAE/CotL,GAAyB,CACpC,CAAErnK,MAAO,MAAOC,MAAO,MAAO7mB,KAAM,oBAAqBa,GAAI,wBAC7D,CAAE+lB,MAAO,KAAMC,MAAO,KAAM7mB,KAAM,oBAAqBa,GAAI,wBAehDu0O,GAA2B,CACtCnH,KAAM,QACNj9D,KAAM,QACNmH,UAAW,QACX+1D,KAAM,SACNp9D,KAAM,SACN,gBAAiB,SACjB,cAAe,SACf,cAAe,UAUJod,GAAe,CAC1B,CACErnK,MAAO,iBACPD,MAAO,iBACP/lB,GAAI,SAEN,CACEgmB,MAAO,QACPD,MAAO,QACP/lB,GAAI,SAEN,CACEgmB,MAAO,WACPD,MAAO,WACP/lB,GAAI,YAEN,CACEgmB,MAAO,UACPD,MAAO,UACP/lB,GAAI,WAEN,CACEgmB,MAAO,cACPD,MAAO,cACP/lB,GAAI,cAEN,CACEgmB,MAAO,WACPD,MAAO,WACP/lB,GAAI,YAEN,CACEgmB,MAAO,sBACPD,MAAO,sBACP/lB,GAAI,qBAEN,CACEgmB,MAAO,sBACPD,MAAO,sBACP/lB,GAAI,UAEN,CACEgmB,MAAO,4BACPD,MAAO,4BACP/lB,GAAI,kBAEN,CACEgmB,MAAO,0BACPD,MAAO,0BACP/lB,GAAI,cAEN,CACEgmB,MAAO,oBACPD,MAAO,oBACP/lB,GAAI,UAEN,CACEgmB,MAAO,6BACPD,MAAO,6BACP/lB,GAAI,cAEN,CACEgmB,MAAO,QACPD,MAAO,QACP/lB,GAAI,UAIKohD,GAAY,YAEZk/C,GAAoB,CAC/BntC,SAAU,WACVotC,KAAM,OACNvoF,MAAO,QACP9N,OAAQ,SACR2rL,KAAM,QAGK/1F,GAAoB,IAAIooI,KAAKsM,aAAa,QAAS,CAC9DvoM,MAAO,WACPwzD,SAAU,QAOC26E,GAAiB,CAC5BrzE,iBAAkB,GAClB/mF,qBAAsB,GACtB6R,UAAW,GACX0zB,cAAe,GACfi9B,iBAAkB,GAClBiqF,WAAY,GACZhG,WAAY,EACZgP,MAAO,EACPruK,UAAU,EACVy4C,OAAO,GAkBI22H,GAAgB,CAC3B,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAGW/0F,GAAa,CAAC,QAAS,QAAS,SAEhC2zF,GAAa,CAAC,QAAS,QAAS,QAAS,SAEzCqB,GAAsB,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAI7EyjD,GAAc,QAEd3B,GAAsB,CACjC7C,MAAO,QACPE,UAAW,YACXx6H,SAAU,WACV26H,SAAU,WACVI,KAAM,OACNF,OAAQ,SACRwe,OAAQ,SACRpe,QAAS,UACTwV,kBAAmB,oBACnBC,OAAQ,UAGGhV,GAAkB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEtDC,GAAuB,CAClC2d,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,I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","file":"static/js/main.226fb64d.chunk.js","sourcesContent":["export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAUCAYAAABmvqYOAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAF6ADAAQAAAABAAAAFAAAAADhR6t5AAACrElEQVQ4EZWVTWgTQRSA581u/tokaAtePLjJNgm1YA85F5S01ip48iAI9uTFs148iAqKHrx48+bVi394EQ8ePbSaagimoQmUggUxBmJ/tpvdeb5ZMunmxyQdAm/e3zdvX97sAmutmZmZqGNZs47LYsompYYM/Dpj2NYhHFhbX1//mTaMZcHgEg8GbpbL5d8q3gtMG+ZVwcRzRIwrxxBJLPby2OTkcjKZFPmVlVuI7DHBipF4bK5QKNRlvp7JZBLugf2CKvqsafyh4HwbmiAAADl3BCWgK3RN01zdFUKjH9fC2gZV/DcFsJCv1Z7pLLzkgM0RxSOrsXOHuLc9uGvbOao4xHTterlS2ZLGUVYqkVgQiO8YsnATrE9BgLNNxvcZah9Uvg6IEwyguXEE8FQicZ7AbyXYAyEzmsiebmxWryiwlLylCL9x0F6C6UkPwRRMrfsaiUdvdOcpeLe9rz5lGIv9wbF527Yj5L/rTxwZbhrmBWTsTbsVRAFgeZqOeTkdrmU/IP/0keESDEz0gEPj4x5YAgk86wfL/dDK06fMJQn2JqqVTRWvSXCxWPyjgMAwovZKDoRLsADxug845wdLGF1kKr5z6Z1qt4aUQXevtehifdPDoY6KlY9Gph2nbP+t3DSST0SAr3CAyxS83wLnSqVSTSV3yV44Wbz3S1cgPaS4xhz3YzgaXaXbO08VDwJLSA+8b1vOmOaJPceVD7plNXbPVTarr7oP79UP26d8feHfK5VfFHBSBY0oeyrnCODSNASy2WxgREjfMJqWMUBw/E5OvSqTgTfq9UW/4yj76WQyRWNlUs4Pfx7QFyho7e6t0iEZGrv3dPq2P2DoHvA49eMiwd0xXTvdaqmX5k0KHTBxsLN3n/7yORrr6FBgZ8ABDdwXHgrco09c1e/6B7JTFKh0S5ZUAAAAAElFTkSuQmCC\"","export const PROFILE_REQUESTED = [\n  [\n    {\n      internalCode: \"921\",\n      title: \"Acute Hepatitis Panel\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"907\",\n      title: \"Basic Metabolic Panel\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"904\",\n      title: \"Electrolytes Panel\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"912\",\n      title: \"Comprehensive Metabolic Panel\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"1085\",\n      title: \"Urine Drug Screen Panel\",\n      type: \"UR\",\n    },\n  ],\n  [\n    {\n      internalCode: \"1020\",\n      title: \"Urine Drug Scrn w/Alcohol Panel\",\n      type: \"UR\",\n    },\n    {\n      internalCode: \"913\",\n      title: \"Hepatic Function Panel\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"P175\",\n      title: \"Hepatitis ABC Panel\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"P169\",\n      title: \"Athritis Panel\",\n      type: \"SST/LV\",\n    },\n    {\n      internalCode: \"915\",\n      title: \"Lipid Panel\",\n      type: \"SST\",\n    },\n  ],\n  [\n    {\n      internalCode: \"916\",\n      title: \"Obstetric Panel\",\n      type: \"LV+R\",\n    },\n    {\n      internalCode: \"917\",\n      title: \"Renal Function Panel\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"A100\",\n      title: \"Food Allergy Panel\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"A200\",\n      title: \"Respiratiry Allergy Panel\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"7225\",\n      title: \"Lupus Assessment Panel\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"7190\",\n      title: \"Vaginosis\",\n      type: \"SW\",\n    },\n  ],\n];\n\nexport const INDIVIDUAL_REQUESTED = [\n  [\n    {\n      internalCode: \"3435\",\n      title: \"ABO & RH\",\n      type: \"LV\",\n    },\n    {\n      internalCode: \"2030\",\n      title: \"AFP (NON-PREGNANT)\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"110\",\n      title: \"AMMONIA\",\n      type: \"LV\",\n    },\n    {\n      internalCode: \"173\",\n      title: \"AMYLASE\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"143\",\n        title: \"LIPASE\",\n      },\n    },\n    {\n      internalCode: \"7219\",\n      title: \"ANA SCREEN\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"402\",\n      title: \"ASO SCREEN\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"640\",\n      title: \"BHCG QUANT. (Pregnancy)\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"114\",\n      title: \"BILIRUBIN (TOTAL)\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"9910\",\n      title: \"BNP\",\n      type: \"LV\",\n      sub: {\n        internalCode: \"1013\",\n        title: \"NT PROBNP\",\n      },\n    },\n    {\n      internalCode: \"822\",\n      title: \"CA 125\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"821\",\n      title: \"CA 19-9\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"820\",\n        title: \"CA 15-3\",\n      },\n    },\n    {\n      internalCode: \"7170\",\n      title: \"CANDIDA SP\",\n      type: \"SW\",\n      sub: {\n        internalCode: \"7188\",\n        title: \"C. GLABRATA\",\n      },\n    },\n    {\n      internalCode: \"829\",\n      title: \"CARBAMAZEPINE / TEGRETOL\",\n      type: \"R\",\n    },\n    {\n      internalCode: \"301\",\n      title: \"CBC W/AUTO DIFF.\",\n      type: \"LV\",\n      sub: {\n        internalCode: \"302\",\n        title: \"M DIFF.\",\n      },\n    },\n    {\n      internalCode: \"162\",\n      title: \"CCP ANTIBODY\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"211\",\n      title: \"CEA\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"124\",\n      title: \"CHOLESTEROL\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"7228\",\n      title: \"CELIAC PANEL 1gA\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"7236\",\n        title: \"1gG\",\n      },\n    },\n\n    {\n      internalCode: \"6990\",\n      title: \"CK-MB\",\n      type: \"LV\",\n    },\n    {\n      internalCode: \"125\",\n      title: \"CK-TOTAL\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"7060\",\n      title: \"COVID-19, PCR\",\n      type: \"SW\",\n    },\n    {\n      internalCode: \"1262\",\n      title: \"CRP HS\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"1265\",\n        title: \"CRP QT\",\n      },\n    },\n    {\n      internalCode: \"7605\",\n      title: \"D-DIMER\",\n      type: \"LV\",\n    },\n    {\n      internalCode: \"827\",\n      title: \"DIGOXIN\",\n      type: \"R\",\n      sub: {\n        internalCode: \"828\",\n        title: \"DILANTIN\",\n      },\n    },\n    {\n      internalCode: \"319\",\n      title: \"ESR\",\n      type: \"LV\",\n    },\n    {\n      internalCode: \"6571\",\n      title: \"ESTRADIOL\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"659\",\n      title: \"FERRITIN\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"7251\",\n      title: \"FLU A + V w/ RSV PCR\",\n      type: \"SW\",\n    },\n    {\n      internalCode: \"7275\",\n      title: \"FLUVID (FLU A+B and COVID)\",\n      type: \"SW\",\n    },\n  ],\n  [\n    {\n      internalCode: \"660\",\n      title: \"FOLATE\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"134\",\n      title: \"GLUCOSE FASTING\",\n      type: \"GR\",\n      sub: {\n        internalCode: \"135\",\n        title: \"RANDOM\",\n      },\n    },\n    {\n      internalCode: \"2731\",\n      title: \"GLYCOHGB A1C, HPLC\",\n      type: \"LV\",\n    },\n    {\n      internalCode: \"731\",\n      title: \"H. PYLORI, IgG AB Screen\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"237\",\n      title: \"HDL\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"676\",\n      title: \"HEP A IgG\",\n      type: \"GR\",\n      sub: {\n        internalCode: \"678\",\n        title: \"HEP A IgM\",\n      },\n    },\n    {\n      internalCode: \"670\",\n      title: \"HEP B Surf Ag\",\n      type: \"GR\",\n      sub: {\n        internalCode: \"671\",\n        title: \"HBS Ab\",\n      },\n    },\n    {\n      internalCode: \"672\",\n      title: \"HEP B Code Ab Tot\",\n      type: \"GR\",\n      sub: {\n        internalCode: \"680\",\n        title: \"Core IgM\",\n      },\n    },\n    {\n      internalCode: \"9224\",\n      title: \"HEP B DNA, Quant. (NAAT)\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"677\",\n      title: \"HEP C Antibody (HCV)\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"9222\",\n      title: \"HEP C Virus RNA Quant.\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"7199\",\n      title: \"HERPES 1 & 2 (NAAT)\",\n      type: \"SW/TP\",\n    },\n    {\n      internalCode: \"0209\",\n      title: \"HSV I, IgG\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"0201\",\n        title: \"HSV II, IgG\",\n      },\n    },\n    {\n      internalCode: \"469\",\n      title: \"HIV Ag + HIV Ab 1 & 2 Screen\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"7075\",\n      title: \"HV CONFIRMATION\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"2161\",\n      title: \"HOMOCYSTEINE\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"174\",\n      title: \"IRON\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"140A\",\n        title: \"TIBC\",\n      },\n      sub1: {\n        internalCode: \"140B\",\n        title: \"UIBC\",\n      },\n    },\n    {\n      internalCode: \"TX44\",\n      title: \"KEPPRA\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"5004\",\n      title: \"LEAD\",\n      type: \"RB\",\n    },\n    {\n      internalCode: \"665\",\n      title: \"LH\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"661\",\n        title: \"FSH\",\n      },\n    },\n    {\n      internalCode: \"1451\",\n      title: \"LITHIUM\",\n      type: \"SST/R\",\n    },\n    {\n      internalCode: \"146\",\n      title: \"NEGNESIUM\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"1531\",\n      title: \"MICROOALBUMIN/CREA PROFILE\",\n      type: \"UR\",\n    },\n    {\n      internalCode: \"7177\",\n      title: \"MMR\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"7206\",\n      title: \"MYCOPLASMA\",\n      type: \"UR/TP\",\n    },\n    {\n      internalCode: \"312\",\n      title: \"PT\",\n      type: \"BL\",\n      sub: {\n        internalCode: \"310\",\n        title: \"PTT\",\n      },\n    },\n    {\n      internalCode: \"5011\",\n      title: \"PHENOBARBITAL\",\n      type: \"R\",\n    },\n    {\n      internalCode: \"1032\",\n      title: \"PRELABUMIN\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"1044\",\n      title: \"Nail Fungal Panel\",\n      type: \"FFP\",\n    },\n  ],\n  [\n    {\n      internalCode: \"605\",\n      title: \"PREGNANCY Qual.(S)\",\n      type: \"SST/UR\",\n      sub: {\n        internalCode: \"604\",\n        title: \"(U)\",\n      },\n    },\n    {\n      internalCode: \"246\",\n      title: \"PROGESTERONE\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"255\",\n      title: \"PROCLATIN\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"2701\",\n      title: \"PSA TOTAL\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"2801\",\n        title: \"PSA FREE\",\n      },\n    },\n    {\n      internalCode: \"150\",\n      title: \"POTASSIUM\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"40\",\n      title: \"PTH INTACT\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"61133\",\n      title: \"QUANTIFERON TB Gold\",\n      type: \"GRN\",\n    },\n    {\n      internalCode: \"4011\",\n      title: \"RA Latex / Rheumatoid Factor\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"314a\",\n      title: \"RETICULOCYE COUNT\",\n      type: \"LV\",\n    },\n    {\n      internalCode: \"415\",\n      title: \"RPR\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"4140\",\n      title: \"RUBELLA, IgG\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"1003\",\n      title: \"SYPHILIS TOTAL\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"346\",\n      title: \"T-3 FREE\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"166\",\n        title: \"T-3 TOTAL\",\n      },\n    },\n    {\n      internalCode: \"192\",\n      title: \"T3 UPTAKE\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"342\",\n      title: \"T-4 FREE\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"166\",\n        title: \"T-4 TOTAL\",\n      },\n    },\n    {\n      internalCode: \"1684\",\n      title: \"T-CELL LYMPH ENYN\",\n      type: \"LV\",\n    },\n    {\n      internalCode: \"601\",\n      title: \"TETOSTERONE TOTAL\",\n      type: \"SST\",\n      sub: {\n        internalCode: \"6013\",\n        title: \"FREE\",\n      },\n    },\n    {\n      internalCode: \"4382\",\n      title: \"TROPONIN I\",\n      type: \"LV\",\n    },\n    {\n      internalCode: \"663\",\n      title: \"TSH (Ulta Sensitive)\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"168\",\n      title: \"URIC ACID\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"171\",\n      title: \"URINALYSIS TOTAL\",\n      type: \"UR\",\n      sub: {\n        internalCode: \"715A\",\n        title: \"REFLEX\",\n      },\n    },\n    {\n      internalCode: \"3392\",\n      title: \"URINE PROT RNDM\",\n      type: \"UR\",\n      sub: {\n        internalCode: \"3393\",\n        title: \"24 HR\",\n      },\n    },\n    {\n      internalCode: \"7442\",\n      title: \"VANCOMYCIN PEAK\",\n      type: \"R\",\n      sub: {\n        internalCode: \"7441\",\n        title: \"TROUGH\",\n      },\n    },\n    {\n      internalCode: \"7440\",\n      title: \"VANCOMYCIN  RANDOM\",\n      type: \"R\",\n    },\n    {\n      internalCode: \"826\",\n      title: \"VALPROIC ACID(DEPAKENE)\",\n      type: \"R\",\n    },\n    {\n      internalCode: \"7175\",\n      title: \"VARICELLA, IGG AB\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"651\",\n      title: \"VITAMIN B-12\",\n      type: \"SST\",\n    },\n    {\n      internalCode: \"7088\",\n      title: \"VITAMIN D-25 HYDROXY\",\n      type: \"SST\",\n    },\n  ],\n];\n\nexport const MICROBIOLOGY = [\n  {\n    internalCode: \"718\",\n    title: \"BETA STREP\",\n    type: \"SW/C\",\n  },\n  {\n    internalCode: \"705\",\n    title: \"BLOOD CULTURE\",\n    type: \"CALL\",\n  },\n  {\n    internalCode: \"1007\",\n    title: \"CANDIDA AURIS CULTURE\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"7272\",\n    title: \"C. DIFFICILE\",\n    type: \"ST\",\n  },\n  {\n    internalCode: \"740\",\n    title: \"CULTURE ROUTINE\",\n    type: \"SW/C\",\n  },\n  {\n    internalCode: \"732\",\n    title: \"CHLAMYDIA AMP\",\n    key: [\"U\", \"T\", \"R\"],\n    type: \"SW/UR\",\n  },\n  {\n    internalCode: \"7247\",\n    title: \"FLU A+B w/ RSV SCREEN\",\n    type: \"SW/UR\",\n  },\n  {\n    internalCode: \"7003\",\n    title: \"FLU A+B SCREEN\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"7004\",\n    title: \"GBS PANEL\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"734\",\n    title: \"GC AMP\",\n    key: [\"U\", \"T\", \"R\"],\n    type: \"SW\",\n  },\n  {\n    internalCode: \"7005\",\n    title: \"GI PCR\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"723\",\n    title: \"OCCULT BLOOD - STOOL\",\n    type: \"FOBT/ST\",\n  },\n  {\n    internalCode: \"7261\",\n    title: \"OVA & PARASITES\",\n    type: \"ST\",\n  },\n  {\n    internalCode: \"7246\",\n    title: \"RSV SCREEN\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"713\",\n    title: \"STOOL CULTURE\",\n    type: \"ST\",\n  },\n  {\n    internalCode: \"7245\",\n    title: \"STEP A SCREEN\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"712\",\n    title: \"SPUTUM CULTURE\",\n    type: \"S\",\n  },\n  {\n    internalCode: \"714\",\n    title: \"THROAT CULTURE\",\n    type: \"SW/C\",\n  },\n  {\n    internalCode: \"7164\",\n    title: \"TRICHOMONAS VAGINALIS\",\n    type: \"UR/SW/KOH\",\n  },\n  {\n    internalCode: \"715\",\n    title: \"URINE CULTURE\",\n    type: \"UR\",\n  },\n  {\n    internalCode: \"716\",\n    title: \"VAGINAL CULTURE\",\n    type: \"SW/C\",\n  },\n  {\n    internalCode: \"722\",\n    title: \"WET MOUNT\",\n    type: \"KOH/SW\",\n  },\n  {\n    internalCode: \"717\",\n    title: \"WOUND CULTURE\",\n    type: \"SW\",\n  },\n];\nexport const MICROBIOLOGY_CEROCLINIX = [\n  {\n    internalCode: \"CBC\",\n    title: \"BETA STREPCBC (Complete Blood Count)\",\n    type: \"SW/C\",\n  },\n  {\n    internalCode: \"Maker\",\n    title: \"Individual Markers\",\n    type: \"CALL\",\n  },\n];\n\nexport const CYTOLOGY = [\n  [\n    {\n      internalCode: \"801\",\n      title: \"PAP SMEAR\",\n    },\n    {\n      internalCode: \"4522\",\n      title: \"HPV\",\n    },\n    {\n      internalCode: \"8011\",\n      title: \"PAP W/ HPV if Ascus\",\n    },\n    {\n      internalCode: \"5061\",\n      title: \"URINE CYTOLOGY\",\n    },\n    {\n      internalCode: \"3994\",\n      title: \"ANAL PAP\",\n    },\n    {\n      internalCode: \"3995\",\n      title: \"FNA(source)\",\n    },\n    {\n      internalCode: \"\",\n      title: \"OTHER\",\n    },\n    {\n      title: \"SOURCE:  C | V | E  LMP\",\n      key: [\"C\", \"V\", \"E\"],\n      type: \"LMP\",\n    },\n    {\n      title: \"CLINICAL\",\n    },\n    {\n      title: \"HISTORY :\",\n    },\n  ],\n\n  [\n    {\n      internalCode: \"\",\n      title: \"PREGNANT\",\n    },\n    {\n      internalCode: \"\",\n      title: \"POST PARTUM\",\n    },\n    {\n      internalCode: \"\",\n      title: \"HYSTERECTOMY\",\n    },\n  ],\n  [\n    {\n      internalCode: \"\",\n      title: \"POSTMENOPAUSAL\",\n    },\n    {\n      internalCode: \"\",\n      title: \"LIQUID BASE PAP\",\n    },\n    {\n      internalCode: \"\",\n      title: \"HARMONAL\",\n    },\n  ],\n  [\n    {\n      internalCode: \"\",\n      title: \"IUD\",\n    },\n\n    {\n      internalCode: \"\",\n      title: \"BCP\",\n    },\n\n    {\n      internalCode: \"\",\n      title: \"OTHER\",\n    },\n  ],\n];\n\nexport const BIOPSY = [\n  {\n    title: \"Source Site(s):\",\n  },\n  {\n    title: \"1)\",\n  },\n  {\n    title: \"2)\",\n  },\n  {\n    title: \"CLINICAL HISTORY:\",\n  },\n  {\n    title: \"DIAGNOSIS:\",\n  },\n];\n\nexport const PRESUMPTIVE_ELIGIBILITY = [\n  {\n    internalCode: \"732\",\n    title: \"Chlamydia, DNA\",\n    type: \"DNA SW/UR\",\n  },\n  {\n    internalCode: \"734\",\n    title: \"GC, DNA\",\n    type: \"DNA SW/UR\",\n  },\n  {\n    internalCode: \"1085\",\n    title: \"DRUG SCREEN, URINE\",\n    type: \"UR\",\n  },\n  {\n    internalCode: \"1361\",\n    title: \"1-hour GTT, Post Gluc, Dose\",\n    type: \"UR\",\n  },\n  {\n    internalCode: \"469\",\n    title: \"HIV Ag + HIV Ab 1 & 2 Screen\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"801\",\n    title: \"Pap Smear I\",\n    type: \"CP/SL/SP/TP\",\n  },\n  {\n    internalCode: \"605\",\n    title: \"Pregnancy Test Qual\",\n    type: \"UR/SST\",\n  },\n  {\n    internalCode: \"640\",\n    title: \"Pregnancy Test Quant\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"415\",\n    title: \"RPR\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"715\",\n    title: \"Urine Culture, Bacterial\",\n    type: \"UR\",\n  },\n];\n\nexport const REQ_FORM_TESTS_NAMES = [\n  {\n    internalCode: \"921\",\n    title: \"Acute Hepatitis Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"907\",\n    title: \"Basic Metabolic Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"904\",\n    title: \"Electrolytes Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"912\",\n    title: \"Comprehensive Metabolic Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"1085\",\n    title: \"Urine Drug Screen Panel\",\n    type: \"UR\",\n  },\n  {\n    internalCode: \"1020\",\n    title: \"Urine Drug Scrn w/Alcohol Panel\",\n    type: \"UR\",\n  },\n  {\n    internalCode: \"913\",\n    title: \"Hepatic Function Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"P175\",\n    title: \"Hepatitis ABC Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"P169\",\n    title: \"Athritis Panel\",\n    type: \"SST/LV\",\n  },\n  {\n    internalCode: \"915\",\n    title: \"Lipid Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"916\",\n    title: \"Obstetric Panel\",\n    type: \"LV+R\",\n  },\n  {\n    internalCode: \"917\",\n    title: \"Renal Function Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"A100\",\n    title: \"Food Allergy Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"A200\",\n    title: \"Respiratiry Allergy Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"7225\",\n    title: \"Lupus Assessment Panel\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"7190\",\n    title: \"Vaginosis\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"3435\",\n    title: \"ABO & RH\",\n    type: \"LV\",\n  },\n  {\n    internalCode: \"2030\",\n    title: \"AFP (NON-PREGNANT)\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"110\",\n    title: \"AMMONIA\",\n    type: \"LV\",\n  },\n  {\n    internalCode: \"173\",\n    title: \"AMYLASE\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"143\",\n      title: \"LIPASE\",\n    },\n  },\n  {\n    internalCode: \"7219\",\n    title: \"ANA SCREEN\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"402\",\n    title: \"ASO SCREEN\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"640\",\n    title: \"BHCG QUANT. (Pregnancy)\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"114\",\n    title: \"BILIRUBIN (TOTAL)\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"9910\",\n    title: \"BNP\",\n    type: \"LV\",\n    sub: {\n      internalCode: \"1013\",\n      title: \"NT PROBNP\",\n    },\n  },\n  {\n    internalCode: \"822\",\n    title: \"CA 125\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"821\",\n    title: \"CA 19-9\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"820\",\n      title: \"CA 15-3\",\n    },\n  },\n  {\n    internalCode: \"7170\",\n    title: \"CANDIDA SP\",\n    type: \"SW\",\n    sub: {\n      internalCode: \"7188\",\n      title: \"C. GLABRATA\",\n    },\n  },\n  {\n    internalCode: \"829\",\n    title: \"CARBAMAZEPINE / TEGRETOL\",\n    type: \"R\",\n  },\n  {\n    internalCode: \"301\",\n    title: \"CBC W/AUTO DIFF.\",\n    type: \"LV\",\n    sub: {\n      internalCode: \"302\",\n      title: \"M DIFF.\",\n    },\n  },\n  {\n    internalCode: \"162\",\n    title: \"CCP ANTIBODY\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"211\",\n    title: \"CEA\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"124\",\n    title: \"CHOLESTEROL\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"7228\",\n    title: \"CELIAC PANEL 1gA\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"7236\",\n      title: \"1gG\",\n    },\n  },\n\n  {\n    internalCode: \"6990\",\n    title: \"CK-MB\",\n    type: \"LV\",\n  },\n  {\n    internalCode: \"125\",\n    title: \"CK-TOTAL\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"7060\",\n    title: \"COVID-19, PCR\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"1262\",\n    title: \"CRP HS\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"1265\",\n      title: \"CRP QT\",\n    },\n  },\n  {\n    internalCode: \"7605\",\n    title: \"D-DIMER\",\n    type: \"LV\",\n  },\n  {\n    internalCode: \"827\",\n    title: \"DIGOXIN\",\n    type: \"R\",\n    sub: {\n      internalCode: \"828\",\n      title: \"DILANTIN\",\n    },\n  },\n  {\n    internalCode: \"319\",\n    title: \"ESR\",\n    type: \"LV\",\n  },\n  {\n    internalCode: \"6571\",\n    title: \"ESTRADIOL\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"659\",\n    title: \"FERRITIN\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"7251\",\n    title: \"FLU A + V w/ RSV PCR\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"7275\",\n    title: \"FLUVID (FLU A+B and COVID)\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"660\",\n    title: \"FOLATE\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"134\",\n    title: \"GLUCOSE FASTING\",\n    type: \"GR\",\n    sub: {\n      internalCode: \"135\",\n      title: \"RANDOM\",\n    },\n  },\n  {\n    internalCode: \"2731\",\n    title: \"GLYCOHGB A1C, HPLC\",\n    type: \"LV\",\n  },\n  {\n    internalCode: \"731\",\n    title: \"H. PYLORI, IgG AB Screen\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"237\",\n    title: \"HDL\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"676\",\n    title: \"HEP A IgG\",\n    type: \"GR\",\n    sub: {\n      internalCode: \"678\",\n      title: \"HEP A IgM\",\n    },\n  },\n  {\n    internalCode: \"670\",\n    title: \"HEP B Surf Ag\",\n    type: \"GR\",\n    sub: {\n      internalCode: \"671\",\n      title: \"HBS Ab\",\n    },\n  },\n  {\n    internalCode: \"672\",\n    title: \"HEP B Code Ab Tot\",\n    type: \"GR\",\n    sub: {\n      internalCode: \"680\",\n      title: \"Core IgM\",\n    },\n  },\n  {\n    internalCode: \"9224\",\n    title: \"HEP B DNA, Quant. (NAAT)\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"677\",\n    title: \"HEP C Antibody (HCV)\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"9222\",\n    title: \"HEP C Virus RNA Quant.\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"7199\",\n    title: \"HERPES 1 & 2 (NAAT)\",\n    type: \"SW/TP\",\n  },\n  {\n    internalCode: \"0209\",\n    title: \"HSV I, IgG\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"0201\",\n      title: \"HSV II, IgG\",\n    },\n  },\n  {\n    internalCode: \"469\",\n    title: \"HIV Ag + HIV Ab 1 & 2 Screen\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"7075\",\n    title: \"HV CONFIRMATION\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"2161\",\n    title: \"HOMOCYSTEINE\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"174\",\n    title: \"IRON\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"140A\",\n      title: \"TIBC\",\n    },\n    sub1: {\n      internalCode: \"140B\",\n      title: \"UIBC\",\n    },\n  },\n  {\n    internalCode: \"TX44\",\n    title: \"KEPPRA\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"5004\",\n    title: \"LEAD\",\n    type: \"RB\",\n  },\n  {\n    internalCode: \"665\",\n    title: \"LH\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"661\",\n      title: \"FSH\",\n    },\n  },\n  {\n    internalCode: \"1451\",\n    title: \"LITHIUM\",\n    type: \"SST/R\",\n  },\n  {\n    internalCode: \"146\",\n    title: \"NEGNESIUM\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"1531\",\n    title: \"MICROOALBUMIN/CREA PROFILE\",\n    type: \"UR\",\n  },\n  {\n    internalCode: \"7177\",\n    title: \"MMR\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"7206\",\n    title: \"MYCOPLASMA\",\n    type: \"UR/TP\",\n  },\n  {\n    internalCode: \"312\",\n    title: \"PT\",\n    type: \"BL\",\n    sub: {\n      internalCode: \"310\",\n      title: \"PTT\",\n    },\n  },\n  {\n    internalCode: \"5011\",\n    title: \"PHENOBARBITAL\",\n    type: \"R\",\n  },\n  {\n    internalCode: \"1032\",\n    title: \"PRELABUMIN\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"1044\",\n    title: \"Nail Fungal Panel\",\n    type: \"FFP\",\n  },\n  {\n    internalCode: \"605\",\n    title: \"PREGNANCY Qual.(S)\",\n    type: \"SST/UR\",\n    sub: {\n      internalCode: \"604\",\n      title: \"(U)\",\n    },\n  },\n  {\n    internalCode: \"246\",\n    title: \"PROGESTERONE\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"255\",\n    title: \"PROCLATIN\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"2701\",\n    title: \"PSA TOTAL\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"2801\",\n      title: \"PSA FREE\",\n    },\n  },\n  {\n    internalCode: \"150\",\n    title: \"POTASSIUM\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"40\",\n    title: \"PTH INTACT\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"61133\",\n    title: \"QUANTIFERON TB Gold\",\n    type: \"GRN\",\n  },\n  {\n    internalCode: \"4011\",\n    title: \"RA Latex / Rheumatoid Factor\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"314a\",\n    title: \"RETICULOCYE COUNT\",\n    type: \"LV\",\n  },\n  {\n    internalCode: \"415\",\n    title: \"RPR\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"4140\",\n    title: \"RUBELLA, IgG\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"1003\",\n    title: \"SYPHILIS TOTAL\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"346\",\n    title: \"T-3 FREE\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"166\",\n      title: \"T-3 TOTAL\",\n    },\n  },\n  {\n    internalCode: \"192\",\n    title: \"T3 UPTAKE\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"342\",\n    title: \"T-4 FREE\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"166\",\n      title: \"T-4 TOTAL\",\n    },\n  },\n  {\n    internalCode: \"1684\",\n    title: \"T-CELL LYMPH ENYN\",\n    type: \"LV\",\n  },\n  {\n    internalCode: \"601\",\n    title: \"TETOSTERONE TOTAL\",\n    type: \"SST\",\n    sub: {\n      internalCode: \"6013\",\n      title: \"FREE\",\n    },\n  },\n  {\n    internalCode: \"4382\",\n    title: \"TROPONIN I\",\n    type: \"LV\",\n  },\n  {\n    internalCode: \"663\",\n    title: \"TSH (Ulta Sensitive)\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"168\",\n    title: \"URIC ACID\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"171\",\n    title: \"URINALYSIS TOTAL\",\n    type: \"UR\",\n    sub: {\n      internalCode: \"715A\",\n      title: \"REFLEX\",\n    },\n  },\n  {\n    internalCode: \"3392\",\n    title: \"URINE PROT RNDM\",\n    type: \"UR\",\n    sub: {\n      internalCode: \"3393\",\n      title: \"24 HR\",\n    },\n  },\n  {\n    internalCode: \"7442\",\n    title: \"VANCOMYCIN PEAK\",\n    type: \"R\",\n    sub: {\n      internalCode: \"7441\",\n      title: \"TROUGH\",\n    },\n  },\n  {\n    internalCode: \"7440\",\n    title: \"VANCOMYCIN  RANDOM\",\n    type: \"R\",\n  },\n  {\n    internalCode: \"826\",\n    title: \"VALPROIC ACID(DEPAKENE)\",\n    type: \"R\",\n  },\n  {\n    internalCode: \"7175\",\n    title: \"VARICELLA, IGG AB\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"651\",\n    title: \"VITAMIN B-12\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"7088\",\n    title: \"VITAMIN D-25 HYDROXY\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"718\",\n    title: \"BETA STREP\",\n    type: \"SW/C\",\n  },\n  {\n    internalCode: \"705\",\n    title: \"BLOOD CULTURE\",\n    type: \"CALL\",\n  },\n  {\n    internalCode: \"1007\",\n    title: \"CANDIDA AURIS CULTURE\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"7272\",\n    title: \"C. DIFFICILE\",\n    type: \"ST\",\n  },\n  {\n    internalCode: \"740\",\n    title: \"CULTURE ROUTINE\",\n    type: \"SW/C\",\n  },\n  {\n    internalCode: \"732\",\n    title: \"CHLAMYDIA AMP\",\n    key: [\"U\", \"T\", \"R\"],\n    type: \"SW/UR\",\n  },\n  {\n    internalCode: \"7247\",\n    title: \"FLU A+B w/ RSV SCREEN\",\n    type: \"SW/UR\",\n  },\n  {\n    internalCode: \"7003\",\n    title: \"FLU A+B SCREEN\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"7004\",\n    title: \"GBS PANEL\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"734\",\n    title: \"GC AMP\",\n    key: [\"U\", \"T\", \"R\"],\n    type: \"SW\",\n  },\n  {\n    internalCode: \"7005\",\n    title: \"GI PCR\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"723\",\n    title: \"OCCULT BLOOD - STOOL\",\n    type: \"FOBT/ST\",\n  },\n  {\n    internalCode: \"7261\",\n    title: \"OVA & PARASITES\",\n    type: \"ST\",\n  },\n  {\n    internalCode: \"7246\",\n    title: \"RSV SCREEN\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"713\",\n    title: \"STOOL CULTURE\",\n    type: \"ST\",\n  },\n  {\n    internalCode: \"7245\",\n    title: \"STEP A SCREEN\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"712\",\n    title: \"SPUTUM CULTURE\",\n    type: \"S\",\n  },\n  {\n    internalCode: \"714\",\n    title: \"THROAT CULTURE\",\n    type: \"SW/C\",\n  },\n  {\n    internalCode: \"7164\",\n    title: \"TRICHOMONAS VAGINALIS\",\n    type: \"UR/SW/KOH\",\n  },\n  {\n    internalCode: \"715\",\n    title: \"URINE CULTURE\",\n    type: \"UR\",\n  },\n  {\n    internalCode: \"716\",\n    title: \"VAGINAL CULTURE\",\n    type: \"SW/C\",\n  },\n  {\n    internalCode: \"722\",\n    title: \"WET MOUNT\",\n    type: \"KOH/SW\",\n  },\n  {\n    internalCode: \"717\",\n    title: \"WOUND CULTURE\",\n    type: \"SW\",\n  },\n  {\n    internalCode: \"801\",\n    title: \"PAP SMEAR\",\n  },\n  {\n    internalCode: \"4522\",\n    title: \"HPV\",\n  },\n  {\n    internalCode: \"8011\",\n    title: \"PAP W/ HPV if Ascus\",\n  },\n  {\n    internalCode: \"5061\",\n    title: \"URINE CYTOLOGY\",\n  },\n  {\n    internalCode: \"3994\",\n    title: \"ANAL PAP\",\n  },\n  {\n    internalCode: \"3995\",\n    title: \"FNA(source)\",\n  },\n  {\n    internalCode: \"732\",\n    title: \"Chlamydia, DNA\",\n    type: \"DNA SW/UR\",\n  },\n  {\n    internalCode: \"734\",\n    title: \"GC, DNA\",\n    type: \"DNA SW/UR\",\n  },\n  {\n    internalCode: \"1085\",\n    title: \"DRUG SCREEN, URINE\",\n    type: \"UR\",\n  },\n  {\n    internalCode: \"1361\",\n    title: \"1-hour GTT, Post Gluc, Dose\",\n    type: \"UR\",\n  },\n  {\n    internalCode: \"469\",\n    title: \"HIV Ag + HIV Ab 1 & 2 Screen\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"801\",\n    title: \"Pap Smear I\",\n    type: \"CP/SL/SP/TP\",\n  },\n  {\n    internalCode: \"605\",\n    title: \"Pregnancy Test Qual\",\n    type: \"UR/SST\",\n  },\n  {\n    internalCode: \"640\",\n    title: \"Pregnancy Test Quant\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"415\",\n    title: \"RPR\",\n    type: \"SST\",\n  },\n  {\n    internalCode: \"715\",\n    title: \"Urine Culture, Bacterial\",\n    type: \"UR\",\n  },\n];\n\nexport const REQ_FORM_TESTS_NAME = [\n  {\n    type: \"SST\",\n    label: \"Acute Hepatitis Panel\",\n    value: \"921\",\n  },\n  {\n    type: \"SST\",\n    label: \"Basic Metabolic Panel\",\n    value: \"907\",\n  },\n  {\n    type: \"SST\",\n    label: \"Electrolytes Panel\",\n    value: \"904\",\n  },\n  {\n    type: \"SST\",\n    label: \"Comprehensive Metabolic Panel\",\n    value: \"912\",\n  },\n  {\n    type: \"UR\",\n    label: \"Urine Drug Screen Panel\",\n    value: \"1085\",\n  },\n  {\n    type: \"UR\",\n    label: \"Urine Drug Scrn W/Alcohol Panel\",\n    value: \"1020\",\n  },\n  {\n    type: \"SST\",\n    label: \"Hepatic Function Panel\",\n    value: \"913\",\n  },\n  {\n    type: \"SST\",\n    label: \"Hepatitis ABC Panel\",\n    value: \"P175\",\n  },\n  {\n    type: \"SST/LV\",\n    label: \"Athritis Panel\",\n    value: \"P169\",\n  },\n  {\n    type: \"SST\",\n    label: \"Lipid Panel\",\n    value: \"915\",\n  },\n  {\n    type: \"LV+R\",\n    label: \"Obstetric Panel\",\n    value: \"916\",\n  },\n  {\n    type: \"SST\",\n    label: \"Renal Function Panel\",\n    value: \"917\",\n  },\n  {\n    type: \"SST\",\n    label: \"Food Allergy Panel\",\n    value: \"A100\",\n  },\n  {\n    type: \"SST\",\n    label: \"Respiratiry Allergy Panel\",\n    value: \"A200\",\n  },\n  {\n    type: \"SST\",\n    label: \"Lupus Assessment Panel\",\n    value: \"7225\",\n  },\n  {\n    type: \"SW\",\n    label: \"Vaginosis\",\n    value: \"7190\",\n  },\n  {\n    type: \"LV\",\n    label: \"ABO & RH\",\n    value: \"3435\",\n  },\n  {\n    type: \"SST\",\n    label: \"AFP (NON-Pregnant)\",\n    value: \"2030\",\n  },\n  {\n    type: \"LV\",\n    label: \"Ammonia\",\n    value: \"110\",\n  },\n  {\n    type: \"SST\",\n    label: \"Amylase\",\n    value: \"173\",\n  },\n  {\n    type: \"SST\",\n    label: \"Amylase Lipase\",\n    value: \"143\",\n  },\n  {\n    type: \"SST\",\n    label: \"ANA Screen\",\n    value: \"7219\",\n  },\n  {\n    type: \"SST\",\n    label: \"ASO Screen\",\n    value: \"402\",\n  },\n  {\n    type: \"SST\",\n    label: \"Bhcg Quant. (Pregnancy)\",\n    value: \"640\",\n  },\n  {\n    type: \"SST\",\n    label: \"Bilirubin (Total)\",\n    value: \"114\",\n  },\n  {\n    type: \"LV\",\n    label: \"BNP\",\n    value: \"9910\",\n  },\n  {\n    type: \"LV\",\n    label: \"BNP NT Probnp\",\n    value: \"1013\",\n  },\n  {\n    type: \"SST\",\n    label: \"CA 125\",\n    value: \"822\",\n  },\n  {\n    type: \"SST\",\n    label: \"CA 19-9\",\n    value: \"821\",\n  },\n  {\n    type: \"SST\",\n    label: \"CA 19-9 CA 15-3\",\n    value: \"820\",\n  },\n  {\n    type: \"SW\",\n    label: \"Candida SP\",\n    value: \"7170\",\n  },\n  {\n    type: \"SW\",\n    label: \"Candida SP C. Glabrata\",\n    value: \"7188\",\n  },\n  {\n    type: \"R\",\n    label: \"Carbamazepine / Tegretol\",\n    value: \"829\",\n  },\n  {\n    type: \"LV\",\n    label: \"CBC W/Auto Diff.\",\n    value: \"301\",\n  },\n  {\n    type: \"LV\",\n    label: \"CBC W/Auto Diff. M Diff.\",\n    value: \"302\",\n  },\n  {\n    type: \"SST\",\n    label: \"CCP Antibody\",\n    value: \"162\",\n  },\n  {\n    type: \"SST\",\n    label: \"CEA\",\n    value: \"211\",\n  },\n  {\n    type: \"SST\",\n    label: \"Cholesterol\",\n    value: \"124\",\n  },\n  {\n    type: \"SST\",\n    label: \"Celiac Panel 1GA\",\n    value: \"7228\",\n  },\n  {\n    type: \"SST\",\n    label: \"Celiac Panel 1GA 1GG\",\n    value: \"7236\",\n  },\n  {\n    type: \"LV\",\n    label: \"CK-MB\",\n    value: \"6990\",\n  },\n  {\n    type: \"SST\",\n    label: \"CK-Total\",\n    value: \"125\",\n  },\n  {\n    type: \"SW\",\n    label: \"Covid-19, PCR\",\n    value: \"7060\",\n  },\n  {\n    type: \"SST\",\n    label: \"CRP HS\",\n    value: \"1262\",\n  },\n  {\n    type: \"SST\",\n    label: \"CRP HS CRP QT\",\n    value: \"1265\",\n  },\n  {\n    type: \"LV\",\n    label: \"D-Dimer\",\n    value: \"7605\",\n  },\n  {\n    type: \"R\",\n    label: \"Digoxin\",\n    value: \"827\",\n  },\n  {\n    type: \"R\",\n    label: \"Digoxin Dilantin\",\n    value: \"828\",\n  },\n  {\n    type: \"LV\",\n    label: \"ESR\",\n    value: \"319\",\n  },\n  {\n    type: \"SST\",\n    label: \"Estradiol\",\n    value: \"6571\",\n  },\n  {\n    type: \"SST\",\n    label: \"Ferritin\",\n    value: \"659\",\n  },\n  {\n    type: \"SW\",\n    label: \"FLU A + V W/ RSV PCR\",\n    value: \"7251\",\n  },\n  {\n    type: \"SW\",\n    label: \"Fluvid (FLU A+B AND Covid)\",\n    value: \"7275\",\n  },\n  {\n    type: \"SST\",\n    label: \"Folate\",\n    value: \"660\",\n  },\n  {\n    type: \"GR\",\n    label: \"Glucose Fasting\",\n    value: \"134\",\n  },\n  {\n    type: \"GR\",\n    label: \"Glucose Fasting Random\",\n    value: \"135\",\n  },\n  {\n    type: \"LV\",\n    label: \"Glycohgb A1C, Hplc\",\n    value: \"2731\",\n  },\n  {\n    type: \"SST\",\n    label: \"H. Pylori, IGG AB Screen\",\n    value: \"731\",\n  },\n  {\n    type: \"SST\",\n    label: \"HDL\",\n    value: \"237\",\n  },\n  {\n    type: \"GR\",\n    label: \"HEP A IGG\",\n    value: \"676\",\n  },\n  {\n    type: \"GR\",\n    label: \"HEP A IGG HEP A IGM\",\n    value: \"678\",\n  },\n  {\n    type: \"GR\",\n    label: \"HEP B Surf AG\",\n    value: \"670\",\n  },\n  {\n    type: \"GR\",\n    label: \"HEP B Surf AG HBS AB\",\n    value: \"671\",\n  },\n  {\n    type: \"GR\",\n    label: \"HEP B Code AB TOT\",\n    value: \"672\",\n  },\n  {\n    type: \"GR\",\n    label: \"HEP B Code AB TOT Core IGM\",\n    value: \"680\",\n  },\n  {\n    type: \"SST\",\n    label: \"HEP B DNA, Quant. (Naat)\",\n    value: \"9224\",\n  },\n  {\n    type: \"SST\",\n    label: \"HEP C Antibody (HCV)\",\n    value: \"677\",\n  },\n  {\n    type: \"SST\",\n    label: \"HEP C Virus RNA Quant.\",\n    value: \"9222\",\n  },\n  {\n    type: \"SW/TP\",\n    label: \"Herpes 1 & 2 (Naat)\",\n    value: \"7199\",\n  },\n  {\n    type: \"SST\",\n    label: \"HSV I, IGG\",\n    value: \"0209\",\n  },\n  {\n    type: \"SST\",\n    label: \"HSV I, IGG HSV II, IGG\",\n    value: \"0201\",\n  },\n  {\n    type: \"SST\",\n    label: \"HIV AG + HIV AB 1 & 2 Screen\",\n    value: \"469\",\n  },\n  {\n    type: \"SST\",\n    label: \"HV Confirmation\",\n    value: \"7075\",\n  },\n  {\n    type: \"SST\",\n    label: \"Homocysteine\",\n    value: \"2161\",\n  },\n  {\n    type: \"SST\",\n    label: \"Iron\",\n    value: \"174\",\n  },\n  {\n    type: \"SST\",\n    label: \"Iron Tibc\",\n    value: \"140A\",\n  },\n  {\n    type: \"SST\",\n    label: \"Keppra\",\n    value: \"TX44\",\n  },\n  {\n    type: \"RB\",\n    label: \"Lead\",\n    value: \"5004\",\n  },\n  {\n    type: \"SST\",\n    label: \"LH\",\n    value: \"665\",\n  },\n  {\n    type: \"SST\",\n    label: \"LH FSH\",\n    value: \"661\",\n  },\n  {\n    type: \"SST/R\",\n    label: \"Lithium\",\n    value: \"1451\",\n  },\n  {\n    type: \"SST\",\n    label: \"Negnesium\",\n    value: \"146\",\n  },\n  {\n    type: \"UR\",\n    label: \"Microoalbumin/Crea Profile\",\n    value: \"1531\",\n  },\n  {\n    type: \"SST\",\n    label: \"MMR\",\n    value: \"7177\",\n  },\n  {\n    type: \"UR/TP\",\n    label: \"Mycoplasma\",\n    value: \"7206\",\n  },\n  {\n    type: \"BL\",\n    label: \"PT\",\n    value: \"312\",\n  },\n  {\n    type: \"BL\",\n    label: \"PT PTT\",\n    value: \"310\",\n  },\n  {\n    type: \"R\",\n    label: \"Phenobarbital\",\n    value: \"5011\",\n  },\n  {\n    type: \"SST\",\n    label: \"Prelabumin\",\n    value: \"1032\",\n  },\n  {\n    type: \"FFP\",\n    label: \"Nail Fungal Panel\",\n    value: \"1044\",\n  },\n  {\n    type: \"SST/UR\",\n    label: \"Pregnancy Qual.(S)\",\n    value: \"605\",\n  },\n  {\n    type: \"SST/UR\",\n    label: \"Pregnancy Qual.(S) (U)\",\n    value: \"604\",\n  },\n  {\n    type: \"SST\",\n    label: \"Progesterone\",\n    value: \"246\",\n  },\n  {\n    type: \"SST\",\n    label: \"Proclatin\",\n    value: \"255\",\n  },\n  {\n    type: \"SST\",\n    label: \"PSA Total\",\n    value: \"2701\",\n  },\n  {\n    type: \"SST\",\n    label: \"PSA Total PSA Free\",\n    value: \"2801\",\n  },\n  {\n    type: \"SST\",\n    label: \"Potassium\",\n    value: \"150\",\n  },\n  {\n    type: \"SST\",\n    label: \"PTH Intact\",\n    value: \"40\",\n  },\n  {\n    type: \"GRN\",\n    label: \"Quantiferon TB Gold\",\n    value: \"61133\",\n  },\n  {\n    type: \"SST\",\n    label: \"RA Latex / Rheumatoid Factor\",\n    value: \"4011\",\n  },\n  {\n    type: \"LV\",\n    label: \"Reticulocye Count\",\n    value: \"314a\",\n  },\n  {\n    type: \"SST\",\n    label: \"RPR\",\n    value: \"415\",\n  },\n  {\n    type: \"SST\",\n    label: \"Rubella, IGG\",\n    value: \"4140\",\n  },\n  {\n    type: \"SST\",\n    label: \"Syphilis Total\",\n    value: \"1003\",\n  },\n  {\n    type: \"SST\",\n    label: \"T-3 Free\",\n    value: \"346\",\n  },\n  {\n    type: \"SST\",\n    label: \"T-3 Free T-3 Total\",\n    value: \"166\",\n  },\n  {\n    type: \"SST\",\n    label: \"T3 Uptake\",\n    value: \"192\",\n  },\n  {\n    type: \"SST\",\n    label: \"T-4 Free\",\n    value: \"342\",\n  },\n  {\n    type: \"SST\",\n    label: \"T-4 Free T-4 Total\",\n    value: \"166\",\n  },\n  {\n    type: \"LV\",\n    label: \"T-Cell Lymph Enyn\",\n    value: \"1684\",\n  },\n  {\n    type: \"SST\",\n    label: \"Tetosterone Total\",\n    value: \"601\",\n  },\n  {\n    type: \"SST\",\n    label: \"Tetosterone Total Free\",\n    value: \"6013\",\n  },\n  {\n    type: \"LV\",\n    label: \"Troponin I\",\n    value: \"4382\",\n  },\n  {\n    type: \"SST\",\n    label: \"TSH (Ulta Sensitive)\",\n    value: \"663\",\n  },\n  {\n    type: \"SST\",\n    label: \"Uric Acid\",\n    value: \"168\",\n  },\n  {\n    type: \"UR\",\n    label: \"Urinalysis Total\",\n    value: \"171\",\n  },\n  {\n    type: \"UR\",\n    label: \"Urinalysis Total Reflex\",\n    value: \"715A\",\n  },\n  {\n    type: \"UR\",\n    label: \"Urine Prot Rndm\",\n    value: \"3392\",\n  },\n  {\n    type: \"UR\",\n    label: \"Urine Prot Rndm 24 HR\",\n    value: \"3393\",\n  },\n  {\n    type: \"R\",\n    label: \"Vancomycin Peak\",\n    value: \"7442\",\n  },\n  {\n    type: \"R\",\n    label: \"Vancomycin Peak Trough\",\n    value: \"7441\",\n  },\n  {\n    type: \"R\",\n    label: \"Vancomycin  Random\",\n    value: \"7440\",\n  },\n  {\n    type: \"R\",\n    label: \"Valproic Acid(Depakene)\",\n    value: \"826\",\n  },\n  {\n    type: \"SST\",\n    label: \"Varicella, IGG AB\",\n    value: \"7175\",\n  },\n  {\n    type: \"SST\",\n    label: \"Vitamin B-12\",\n    value: \"651\",\n  },\n  {\n    type: \"SST\",\n    label: \"Vitamin D-25 Hydroxy\",\n    value: \"7088\",\n  },\n  {\n    type: \"SW/C\",\n    label: \"Beta Strep\",\n    value: \"718\",\n  },\n  {\n    type: \"CALL\",\n    label: \"Blood Culture\",\n    value: \"705\",\n  },\n  {\n    type: \"SW\",\n    label: \"Candida Auris Culture\",\n    value: \"1007\",\n  },\n  {\n    type: \"ST\",\n    label: \"C. Difficile\",\n    value: \"7272\",\n  },\n  {\n    type: \"SW/C\",\n    label: \"Culture Routine\",\n    value: \"740\",\n  },\n  {\n    type: \"SW/UR\",\n    label: \"Chlamydia AMP\",\n    value: \"732\",\n  },\n  {\n    type: \"SW/UR\",\n    label: \"FLU A+B W/ RSV Screen\",\n    value: \"7247\",\n  },\n  {\n    type: \"SW\",\n    label: \"FLU A+B Screen\",\n    value: \"7003\",\n  },\n  {\n    type: \"SW\",\n    label: \"GBS Panel\",\n    value: \"7004\",\n  },\n  {\n    type: \"SW\",\n    label: \"GC AMP\",\n    value: \"734\",\n  },\n  {\n    type: \"SW\",\n    label: \"GI PCR\",\n    value: \"7005\",\n  },\n  {\n    type: \"FOBT/ST\",\n    label: \"Occult Blood - Stool\",\n    value: \"723\",\n  },\n  {\n    type: \"ST\",\n    label: \"OVA & Parasites\",\n    value: \"7261\",\n  },\n  {\n    type: \"SW\",\n    label: \"RSV Screen\",\n    value: \"7246\",\n  },\n  {\n    type: \"ST\",\n    label: \"Stool Culture\",\n    value: \"713\",\n  },\n  {\n    type: \"SW\",\n    label: \"Step A Screen\",\n    value: \"7245\",\n  },\n  {\n    type: \"S\",\n    label: \"Sputum Culture\",\n    value: \"712\",\n  },\n  {\n    type: \"SW/C\",\n    label: \"Throat Culture\",\n    value: \"714\",\n  },\n  {\n    type: \"UR/SW/KOH\",\n    label: \"Trichomonas Vaginalis\",\n    value: \"7164\",\n  },\n  {\n    type: \"UR\",\n    label: \"Urine Culture\",\n    value: \"715\",\n  },\n  {\n    type: \"SW/C\",\n    label: \"Vaginal Culture\",\n    value: \"716\",\n  },\n  {\n    type: \"KOH/SW\",\n    label: \"WET Mount\",\n    value: \"722\",\n  },\n  {\n    type: \"SW\",\n    label: \"Wound Culture\",\n    value: \"717\",\n  },\n  {\n    type: \"\",\n    label: \"PAP Smear\",\n    value: \"801\",\n  },\n  {\n    type: \"\",\n    label: \"HPV\",\n    value: \"4522\",\n  },\n  {\n    type: \"\",\n    label: \"PAP W/ HPV IF Ascus\",\n    value: \"8011\",\n  },\n  {\n    type: \"\",\n    label: \"Urine Cytology\",\n    value: \"5061\",\n  },\n  {\n    type: \"\",\n    label: \"Anal PAP\",\n    value: \"3994\",\n  },\n  {\n    type: \"\",\n    label: \"FNA(Source)\",\n    value: \"3995\",\n  },\n  {\n    type: \"DNA SW/UR\",\n    label: \"Chlamydia, DNA\",\n    value: \"732\",\n  },\n  {\n    type: \"DNA SW/UR\",\n    label: \"GC, DNA\",\n    value: \"734\",\n  },\n  {\n    type: \"UR\",\n    label: \"Drug Screen, Urine\",\n    value: \"1085\",\n  },\n  {\n    type: \"UR\",\n    label: \"1-Hour GTT, Post Gluc, Dose\",\n    value: \"1361\",\n  },\n  {\n    type: \"SST\",\n    label: \"HIV AG + HIV AB 1 & 2 Screen\",\n    value: \"469\",\n  },\n  {\n    type: \"CP/SL/SP/TP\",\n    label: \"PAP Smear I\",\n    value: \"801\",\n  },\n  {\n    type: \"UR/SST\",\n    label: \"Pregnancy Test Qual\",\n    value: \"605\",\n  },\n  {\n    type: \"SST\",\n    label: \"Pregnancy Test Quant\",\n    value: \"640\",\n  },\n  {\n    type: \"SST\",\n    label: \"RPR\",\n    value: \"415\",\n  },\n  {\n    type: \"UR\",\n    label: \"Urine Culture, Bacterial\",\n    value: \"715\",\n  },\n];\n","import { DataStore, Predicates, SortDirection } from \"@aws-amplify/datastore\";\nimport { API, Auth, Storage } from \"aws-amplify\";\nconst mime = require(\"mime-types\");\n\nimport axios from \"axios\";\nimport {\n  ADMIN_USER,\n  BUCKET_EXTERNAL_IMAGES,\n  CONFIG,\n  HEALTH_AND_SAFTEY,\n  RESULT_VALUE,\n  TEST_STATUS,\n  USER_ROLE_TYPE,\n} from \"constant\";\nimport { AWS_ENDPOINT } from \"constants/endpoints\";\nimport graphQLApi from \"graphQLApi\";\nimport moment from \"moment\";\nimport { jsonToCSV, readString } from \"react-papaparse\";\nimport {\n  clientIDInLocalStorage,\n  connectedIDInLocalStorage,\n  FormatAWSDate,\n  formatTest,\n  getPhoneNo,\n  medFlowInLocalStorage,\n  removeWhitespaceAndParentheses,\n  SYSTEM_TIME_ZONE,\n  formatTestDemo,\n} from \"utils\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport * as mutations from \"./graphql/mutations\";\nimport {\n  Client,\n  Documents,\n  Employee,\n  ExternalTest,\n  GeneralSettingType,\n  Lab,\n  LencoBarcodes,\n  Order,\n  Site,\n  Test,\n  TestConsent,\n  TestTypes,\n  UploadRequest,\n  UploadRequestMain,\n} from \"./models\";\nimport { callAmplifyAPI, callAmplifyAPIPut } from \"views/GraphQL/gqApi\";\nimport { TEST_SETTING_TYPES } from \"constant\";\nimport { callAmplifyAPIWithError } from \"views/GraphQL/gqApi\";\n\nconst MAX_PAGE_LIMIT = 1000;\nconst PRE_REGISTER_URL = {\n  LIVE: \"https://g8bgbgfb45.execute-api.eu-west-1.amazonaws.com/dev/register\",\n  DEV: \"https://qa3dzt4aoj.execute-api.eu-west-1.amazonaws.com/dev/register\",\n};\nconst apiName = \"AdminQueries\";\nconst publicApiName = \"usersApi\";\n\nconst callAPIPost = async (path, payload) => {\n  try {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: { ...payload, clientID: CONFIG.clientID },\n    };\n\n    return await API.post(apiName, path, params);\n  } catch (err) {\n    throw err;\n  }\n};\n\nconst callAPIPut = async (path, payload) => {\n  try {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: { ...payload, clientID: CONFIG.clientID },\n    };\n\n    return await API.put(apiName, path, params);\n  } catch (err) {\n    throw err;\n  }\n};\n\nconst getClients = async () => {\n  const models = await DataStore.query(Client, Predicates.ALL, {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n  /* const clients = [];\n  const promises = [];\n  models.map(async (model, i) => {\n    promises[i] = findTestsByClient(model.id);\n    return clients.push({ ...model, tests: await promises[i] });\n  });\n  return Promise.all([models, ...promises]).then(() => clients); */\n  return models;\n};\n// add new\n\nexport const exportClamDataToExcel = async (claimObj) => {\n  try {\n    return await callAmplifyAPI(\"/claims/export\", claimObj);\n  } catch (err) {\n    console.error(\"Error export\", err);\n    return err;\n  }\n};\n\nconst getResultClients = async () => {\n  const models = await DataStore.query(Client, (client) => client.resultType(\"eq\", \"P/F\"));\n  return models;\n};\n\nconst getClientById = async (id) => {\n  const client = await DataStore.query(Client, (client) => client.id(\"eq\", id));\n  return client[0];\n};\n\nconst getTestGraphQL = async (filter) => {\n  let employees = await graphQLApi.getTestGQL(filter);\n  return employees;\n};\n\nconst getEmployeeGraphQl = async () => {\n  let employees = await graphQLApi.getEmployeeGQL();\n  return employees;\n};\nconst getEmployeeByIdGraphQl = async (id) => {\n  let employee = await graphQLApi.getEmployeeByIdGQl(id);\n  return employee;\n};\n\nconst deleteEmployeeGQL = async (employees, siteID) => {\n  return await callAmplifyAPI(\"/employees/archive\", { ids: employees, siteID: siteID });\n};\n\nconst updateEmployeeGraphQL = async (employee) => {\n  const employeeData = {\n    id: employee.id,\n    first: employee.first,\n    last: employee.last,\n    dob: moment(employee.dob).format(\"YYYY-MM-DD\"),\n    id_number: employee.id_number,\n    email: employee.email,\n    sex: employee.sex,\n    phone_number: employee.phone_number,\n    countryCode: employee.countryCode,\n    street: employee.street,\n    street2: employee.street2,\n    city: employee.city,\n    state: employee.state,\n    zip: employee.zip,\n    profileImage: employee.profileImage,\n    vaccinationCardImage: employee.vaccinationCardImage,\n    externalTestImage: employee.externalTestImage,\n    _version: employee._version,\n  };\n  const updateEmp = await graphQLApi.updateEmployeeGQL(employeeData);\n  return updateEmp;\n};\n\nconst getCurrentUser = async () => {\n  try {\n    const response = await Auth.currentAuthenticatedUser({ bypassCache: true });\n    const role = medFlowInLocalStorage.get() || \"U\";\n    return {\n      ...response.attributes,\n      roles: response.signInUserSession.accessToken.payload[\"cognito:groups\"] || [],\n      name: `${response.attributes[\"custom:firstName\"]} ${response.attributes[\"custom:lastName\"]}`,\n      clientID: response.attributes[\"custom:clientID\"],\n      connectedID: response.attributes[\"custom:connectedID\"],\n      providerID: response.attributes[\"custom:providerID\"],\n      isAdmin: function () {\n        return this.roles.some((role) => role === \"Admins\") && role === \"A\";\n      },\n      isLab: function () {\n        return this.roles.some((role) => role === \"Labs\" || role === \"LabTechs\") && (role === \"L\" || role === \"LT\");\n      },\n      isUser: function () {\n        return this.roles.length === 0;\n      },\n      isSite: function () {\n        return this.roles.some((role) => role === \"Employers\" || role === \"Providers\") && role === \"E\";\n      },\n      isClient: function () {\n        return this.roles.some((role) => role === \"Clients\") && role === \"C\";\n      },\n    };\n  } catch (err) {\n    console.log(err);\n    medFlowInLocalStorage.clear();\n    return null;\n  }\n};\n\nconst getAllUsers = async () => {\n  const models = await DataStore.query(Employee);\n  return models;\n};\nexport const getCptData = async (params) => {\n  console.log(\"Params\", params);\n  if (!params?.codes) {\n    return [];\n  }\n\n  try {\n    return await callAmplifyAPI(\"/excpt\", params);\n  } catch (err) {\n    console.error(\"Error fetching CPT data:\", err);\n    return err;\n  }\n};\n\nconst signIn = async (username, password) => {\n  try {\n    const response = await Auth.signIn(username, password);\n    // console.log(response);\n    return {\n      ...response.attributes,\n      roles: response.signInUserSession.accessToken.payload[\"cognito:groups\"] || [],\n      isAdmin: function () {\n        return this.roles.some((role) => role === \"Admins\");\n      },\n      isUser: function () {\n        return this.roles.length === 0;\n      },\n    };\n  } catch (err) {\n    return null;\n  }\n};\n\nconst getLabs = async () => {\n  const models = await DataStore.query(Lab, Predicates.ALL, {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n  return models;\n};\n\nconst getLabsWithTests = async () => {\n  const models = await DataStore.query(Lab);\n  const labs = [];\n  const promises = [];\n  models.map(async (model, i) => {\n    promises[i] = findTestsByLab(model.id);\n    labs.push({ ...model, tests: await promises[i] });\n  });\n  return Promise.all([models, ...promises]).then(() => labs);\n};\n\nconst getLabByID = async (labID) => {\n  const model = await DataStore.query(Lab, (lab) => lab.id(\"eq\", labID));\n  return model[0];\n};\n\nconst createSite = async (newSite, loginUser) => {\n  try {\n    console.log(\"[createSite]\", newSite, loginUser);\n    const userName = `${loginUser.firstName} ${loginUser.lastName}`;\n    const localSiteObject = await DataStore.save(\n      new Site({\n        name: newSite.name,\n        clientID: newSite.clientID,\n        contactName: newSite.contactName,\n        contact_name: newSite.contact || newSite.contact_name || null,\n        phone_number: newSite.phone || newSite.phone_number || null,\n        email: newSite.email || null,\n        contact_email: newSite.contact_email || null,\n        user_id: loginUser.userID,\n        antigen: newSite.antigen,\n        automateTestType: newSite.automateTestType,\n        insurance_required: newSite.insurance_required,\n        startDate: newSite.startDate,\n        endDate: newSite.endDate,\n        orderKitDate: newSite.orderKitDate ? moment(newSite.orderKitDate).toISOString() : null,\n        orderKitType: newSite.orderKitType,\n        enableShipment: newSite.enableShipment,\n        orderQuantity: newSite.orderQuantity,\n        sendInsuranceCard: newSite.sendInsuranceCard,\n        resetTestDay: newSite.resetTestDay,\n        showOnSummaryScreen: newSite.showOnSummaryScreen,\n        messageTested: newSite.messageTested,\n        messageResulted: newSite.messageResulted,\n        messagePositive: newSite.messagePositive,\n        isArchive: newSite.isArchive,\n        isActive: newSite.isActive,\n        vaccinationCard: newSite.vaccinationCard,\n        externalTest: newSite.externalTest,\n        externalTestAdmit: newSite.externalTestAdmit,\n        externalTestType: newSite.externalTestType,\n        admit: newSite.admit,\n        patternTesting: newSite.patternTesting,\n        patternHippa: newSite.patternHippa,\n        preRegistration: newSite.preRegistration,\n        messageReTest: newSite.messageReTest ? JSON.stringify(newSite.messageReTest) : null,\n        isHRPR: newSite.isHRPR,\n        isPCRCustody: newSite.isPCRCustody,\n        sendIdentification: newSite.sendIdentification,\n        sendExternalRequisition: newSite.sendExternalRequisition,\n        sendPrescription: newSite.sendPrescription,\n        sendAuthorization: newSite.sendAuthorization,\n        sendOtherDocuments: newSite.sendOtherDocuments,\n        isAutoSubmitClaim: newSite.isAutoSubmitClaim,\n        isTesting: newSite.isTesting,\n        status: 1,\n        street: newSite.street,\n        city: newSite.city,\n        state: newSite.state,\n        zipcode: newSite.zipcode,\n        safeCampAdmin: newSite?.safeCampAdmin,\n        setting: newSite?.setting,\n        practiceID: newSite?.practiceID,\n        fax: newSite.fax,\n        contact_fax: newSite.contact_fax || null,\n        createdBy: loginUser.userID,\n        createdByName: userName,\n        updatedByName: userName,\n        discount: newSite.discount || 0,\n        commission: newSite.commission || 0,\n        siteType: newSite?.siteType,\n      })\n    );\n\n    console.log(\"localSiteObject\", localSiteObject);\n\n    const site = await callAmplifyAPI(\"/labclient\", {\n      site: { ...newSite, userID: loginUser.userID, id: localSiteObject.id },\n    });\n\n    return localSiteObject;\n  } catch (ex) {\n    console.log(\"Ex\", ex);\n  }\n  return null;\n};\n\nconst deleteUploadRequest = async (id, user) => {\n  try {\n    const path = \"/uploadrequest/remove\";\n    const models = await DataStore.query(UploadRequestMain, (record) => record.id(\"eq\", id));\n\n    if (models.length === 0) return;\n\n    const dbRequest = models[0];\n\n    await DataStore.save(\n      UploadRequestMain.copyOf(dbRequest, (updated) => {\n        updated.status = \"cancel\";\n      })\n    );\n    const params = {\n      id: dbRequest?.id,\n      version: dbRequest?._version,\n      userID: user?.sub,\n      userName: user?.name,\n    };\n    const apiRes = await callAmplifyAPI(path, params);\n  } catch (err) {\n    console.log(\"err\", err.message);\n  }\n};\n\nconst clearUploadRequest = async (id) => {\n  try {\n    const models = await DataStore.query(UploadRequestMain);\n    if (models.length === 0) return;\n    for (let i = 0; i < models.length; i++) {\n      await DataStore.delete(UploadRequestMain, (client) => client.id(\"eq\", models[i].id));\n    }\n  } catch (err) {\n    console.log(\"err\", err.message);\n  }\n};\n\nconst clearUploadSubRequest = async (id) => {\n  try {\n    const models = await DataStore.query(UploadRequest);\n    if (models.length === 0) return;\n    for (let i = 0; i < models.length; i++) {\n      await DataStore.delete(UploadRequest, (client) => client.id(\"eq\", models[i].id));\n    }\n  } catch (err) {\n    console.log(\"err\", err.message);\n  }\n};\n\nconst clearOrder = async (id) => {\n  try {\n    const models = await DataStore.query(Order, (order) => order.isActive(\"eq\", false));\n\n    if (models.length === 0) return;\n    for (let i = 0; i < models.length; i++) {\n      // await DataStore.delete(Order, (client) => client.id(\"eq\", models[i].id));\n    }\n  } catch (err) {\n    console.log(\"err\", err.message);\n  }\n};\n\nconst fetchUploadRequest = async (user) => {\n  const twentyMinutesAgo = new Date(Date.now() - 20 * 60000).toISOString();\n\n  const models = await DataStore.query(UploadRequestMain, (record) =>\n    record.status(\"eq\", \"pending\").createdBy(\"eq\", user?.sub).createdAt(\"ge\", twentyMinutesAgo)\n  );\n  const sites = [];\n  const promises = [];\n  models.map(async (model, i) => {\n    promises[i] = getUploadRequestBYReqID(model.id);\n    sites.push({\n      ...model,\n      Items: await promises[i],\n    });\n  });\n  return Promise.all([models, ...promises]).then(() => sites);\n};\nconst getUploadRequestBYReqID = async (Id) => {\n  const models = await DataStore.query(UploadRequest, (record) => record.requestID(\"eq\", Id));\n\n  return models;\n};\n\nconst updateUploadRequest = async (Id, results) => {\n  const models = await DataStore.query(UploadRequest, (record) => record.id(\"eq\", Id));\n  const dbRequest = models[0];\n  const { data } = dbRequest;\n  const fileData = { ...data };\n  const { record, eligibiltyStatus } = results;\n  if (eligibiltyStatus && eligibiltyStatus.error) {\n    const { error_mesg } = eligibiltyStatus.error;\n    Object.assign(fileData, { eligibility: \"fail\", eligibilityMessage: error_mesg });\n  } else if (eligibiltyStatus) {\n    Object.assign(fileData, { eligibility: \"pass\" }); \n  }\n\n  await DataStore.save(\n    UploadRequest.copyOf(dbRequest, (updated) => {\n      updated.status = \"pass\";\n      updated.data = {\n        ...fileData,\n        patientCreated: \"pass\",\n        orderCreated: \"pass\",\n        ...(record && { empID: record?.id }),\n      };\n    })\n  );\n};\n\nconst getUploadRequest = async (Id) => {\n  const models = await DataStore.query(UploadRequest);\n  console.log(\"getUploadRequest\", models);\n  return models;\n};\n\nconst getSites = async (params) => {\n  // Destructure params to extract dynamic values\n  let models = await DataStore.query(\n    Site,\n    (site) => site.or((site) => [site.isArchive(\"eq\", false), site.isArchive(\"notExists\")]),\n    {\n      sort: (s) => s.name(SortDirection.ASCENDING), // Sort by name\n    }\n  );\n\n  if (CONFIG.allowSites && CONFIG.allowSites.length > 0) {\n    return models.filter((f) => CONFIG.allowSites.includes(f.id));\n  }\n\n  const type = medFlowInLocalStorage.get() || \"A\";\n\n  if (type === \"E\") {\n    return models.filter((f) => f.id === connectedIDInLocalStorage.get());\n  }\n\n  return models;\n};\n\nconst getSitesWithTests = async () => {\n  const models = await DataStore.query(Site, (site) => site.isArchive(\"eq\", false).siteType(\"ne\", \"lab\"), {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n\n  const sites = [];\n  const promises = [];\n  models.map(async (model, i) => {\n    promises[i] = findTestsBySite(model.id);\n    sites.push({\n      ...model,\n      tests: await promises[i],\n      labID: await promises[i].then((resp) => (resp[0] ? resp[0].labID : null)),\n    });\n  });\n  return Promise.all([models, ...promises]).then(() => sites);\n};\n\nconst getShows = async () => {\n  const models = await DataStore.query(Site);\n  return models;\n};\n\nconst getSitesByClient = async (clientID) => {\n  const models = await DataStore.query(Site, (site) => site.clientID(\"eq\", clientID).siteType(\"ne\", \"lab\"), {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n\n  const sites = [];\n  const promises = [];\n  console.log(models);\n  models.map(async (model, i) => {\n    promises[i] = findTestsBySite(model.id);\n    sites.push({\n      ...model,\n      tests: await promises[i],\n      labID: await promises[i].then((resp) => (resp[0] ? resp[0].labID : null)),\n    });\n  });\n  return Promise.all([models, ...promises]).then(() => sites);\n};\n\nconst getSitesByUser = async (userID) => {\n  let models = await DataStore.query(Site, (site) => site.id(\"eq\", userID).siteType(\"ne\", \"lab\"), {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n\n  const sites = [];\n  const promises = [];\n  models.map(async (model, i) => {\n    promises[i] = findTestsBySite(model.id);\n    sites.push({\n      ...model,\n      tests: await promises[i],\n      labID: await promises[i].then((resp) => (resp[0] ? resp[0].labID : null)),\n    });\n  });\n  return Promise.all([models, ...promises]).then(() => sites);\n  // console.log(models);\n  // return models;\n};\n\nconst getUserSiteData = async (userID) => {\n  const isMultiSites = CONFIG.allowSites && CONFIG.allowSites.length > 1;\n\n  if (isMultiSites) {\n    let models = await DataStore.query(Site, (site) => site.siteType(\"ne\", \"lab\"), {\n      sort: (s) => s.name(SortDirection.ASCENDING),\n    });\n    return models.filter((site) => CONFIG.allowSites.includes(site.id));\n  }\n\n  let models = await DataStore.query(Site, (site) => site.id(\"eq\", userID).siteType(\"ne\", \"lab\"), {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n  return models;\n};\n\nconst getUserSites = async (userID) => {\n  let models = await DataStore.query(Site, (site) => site.user_id(\"eq\", userID).siteType(\"ne\", \"lab\"), {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n\n  if (models.length === 0) {\n    const allSites = await DataStore.query(Site);\n    models = allSites.filter((s) => s.show_contacts && s.show_contacts.includes(userID));\n  }\n\n  const sites = [];\n  const promises = [];\n  console.log(models);\n  return models[0].id;\n};\n\nconst findSiteByID = async (siteID) => {\n  const models = await DataStore.query(Site, (site) => site.id(\"eq\", siteID));\n  return models;\n};\n\nconst createUploadResult = async (param) => {\n  const {\n    siteID,\n    clientID,\n    fileName,\n    filesStatus,\n    fileType,\n    orderDate,\n    title,\n    createdBy,\n    createdByName,\n    uploadCallType,\n    status,\n  } = param;\n  const res = await DataStore.save(\n    new UploadRequestMain({\n      clientID,\n      siteID,\n      orderDate,\n      fileName,\n      filesStatus,\n      fileType,\n      title,\n      createdBy,\n      createdByName,\n      uploadCallType,\n      status,\n    })\n  );\n\n  return res;\n};\n\nconst getEmployeeByID = async (employeeID) => {\n  const models = await DataStore.query(Employee, (test) => test.id(\"eq\", employeeID));\n  return models.length > 0 ? models[0].mdID || employeeID : employeeID;\n};\nconst getEmployeeTestCount = async (employeeID) => {\n  const models = await DataStore.query(Test, (test) => test.employeeID(\"eq\", employeeID));\n  return models;\n};\n\nconst getEmployeeLastShow = async (employeeID) => {\n  const models = await DataStore.query(Test, (test) => test.employeeID(\"eq\", employeeID), {\n    sort: (s) => s.createdAt(SortDirection.DESC),\n  });\n  if (models.length === 0) return \"N/A\";\n  return models[0].site_name;\n};\n\nconst createEmployee = async (demographics = {}, clientID, phoneNumber) => {\n  const models = await DataStore.query(Employee, (emp) =>\n    emp\n      .clientID(\"eq\", clientID)\n      .first(\"eq\", demographics.firstName)\n      .last(\"eq\", demographics.lastName)\n      .dob(\"eq\", buildAWSDate(demographics.dob))\n  );\n  if (models.length > 0) {\n    return models[0];\n  }\n  //Must be new. Create it\n  const employee = await DataStore.save(\n    new Employee({\n      first: demographics.firstName,\n      last: demographics.lastName,\n      dob: buildAWSDate(demographics.dob),\n      id_number: demographics.idNumber,\n      clientID: clientID,\n      phone_number: phoneNumber,\n      street: demographics.street,\n      street2: demographics.street2,\n      city: demographics.city,\n      state: demographics.state,\n      zip: demographics.zip,\n    })\n  );\n  return employee;\n};\n\nconst preRegisterEmployee = async (employee, env) => {\n  const zipcode = employee.zipcode.replaceAll(\"[^0-9]+\", \"\");\n  let params = `first=${encodeURIComponent(employee.first)}&last=${encodeURIComponent(\n    employee.last\n  )}&dob=${encodeURIComponent(employee.dob)}&id_number=${encodeURIComponent(employee.id_number)}`;\n  params += `&email=${encodeURIComponent(employee.email)}&sex=${encodeURIComponent(\n    employee.sex\n  )}&isVaccinated=${encodeURIComponent(employee.isVaccinated)}`;\n  params += `&phone_number=${encodeURIComponent(employee.phone_number)}&street=${encodeURIComponent(employee.street)}`;\n  params += `&city=${encodeURIComponent(employee.city)}&state=${encodeURIComponent(\n    employee.state\n  )}&labid=${encodeURIComponent(CONFIG.appPackage)}&zipcode=${encodeURIComponent(\n    zipcode\n  )}&countryCode=${encodeURIComponent(employee.countryCode)}`;\n\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n\n  return notification.data;\n};\n\nconst getPreRegisterByPhone = async (phone, showId, env) => {\n  let params = `phoneNo=${encodeURIComponent(phone)}`;\n  if (showId) params += `&showId=${encodeURIComponent(showId)}`;\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n  return notification.data;\n};\n\nconst preRegisterNewEmployee = async (employee, clientID, isVaccinationInfoEnable, step, env) => {\n  const zipcode = employee.zipcode.replaceAll(\"[^0-9]+\", \"\");\n  let params = `first=${encodeURIComponent(employee.first)}&last=${encodeURIComponent(\n    employee.last\n  )}&dob=${encodeURIComponent(employee.dob)}&id_number=${encodeURIComponent(employee.id_number)}`;\n  params += `&email=${encodeURIComponent(employee.email)}&sex=${encodeURIComponent(\n    employee.sex\n  )}&isVaccinated=${encodeURIComponent(employee.isVaccinated)}`;\n  params += `&phone_number=${encodeURIComponent(employee.phone_number)}&countryCode=${encodeURIComponent(\n    employee.countryCode\n  )}&street=${encodeURIComponent(employee.street)}&street2=${encodeURIComponent(employee.street2)}`;\n  params += `&city=${encodeURIComponent(employee.city)}&state=${encodeURIComponent(\n    employee.state\n  )}&country=${encodeURIComponent(employee.country)}&zipcode=${encodeURIComponent(zipcode)}&rStep=${step}`;\n\n  if (employee.showId) {\n    params += `&showId=${employee.showId.id}&showName=${encodeURIComponent(employee.showId.name)}`;\n  }\n  if (employee.profileImage) {\n    params += `&profileImage=${encodeURIComponent(employee.profileImage)}`;\n  }\n  if (isVaccinationInfoEnable) {\n    params += `&vaccinationType=${encodeURIComponent(employee.vaccinationType)}&vaccinationDate=${encodeURIComponent(\n      employee.vaccinationFirstDate\n    )}&vaccinationLocation=${encodeURIComponent(\n      employee.vaccinationFirstLocation\n    )}&vaccineCardFile=${encodeURIComponent(employee.vaccineCardFile)}`;\n    if (employee.vaccinationSecondDate) {\n      params += `&vaccinationDate1=${encodeURIComponent(\n        employee.vaccinationSecondDate\n      )}&vaccinationLocation1=${encodeURIComponent(employee.vaccinationSecondLocation)}`;\n    }\n    if (employee.isBooster) {\n      params += `&isBooster=${encodeURIComponent(employee.isBooster)}&boosterType=${encodeURIComponent(\n        employee.boosterType\n      )}&boosterDate=${encodeURIComponent(employee.boosterDate)}&boosterLocation=${encodeURIComponent(\n        employee.boosterLocation\n      )}`;\n    }\n  }\n  if (employee.isExternalTest) {\n    params += `&isExternalTest=${encodeURIComponent(employee.isExternalTest)}&externalTestDate=${encodeURIComponent(\n      employee.externalTestDate\n    )}&externalTestResult=${encodeURIComponent(employee.externalTestResult)}&externalTestType=${encodeURIComponent(\n      employee.externalTestType\n    )}&externalFile=${encodeURIComponent(employee.externalFile)}`;\n  }\n\n  console.log(\"Parmas\", params);\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n  console.log(\"notification\", notification);\n  return notification.data;\n};\n\nconst requestTestKit = async (employee, clientID, env) => {\n  const zipcode = employee.zipcode.replaceAll(\"[^0-9]+\", \"\");\n  let params = `first=${encodeURIComponent(employee.first)}&last=${encodeURIComponent(\n    employee.last\n  )}&order_phone=${encodeURIComponent(employee.order_phone)}`;\n  params += `&email=${encodeURIComponent(employee.email)}&phone_number=${encodeURIComponent(\n    employee.phone_number\n  )}&profileImage=${encodeURIComponent(employee.profileImage)}`;\n  params += `&countryCode=${encodeURIComponent(employee.countryCode)}&street=${encodeURIComponent(\n    employee.street\n  )}&street2=${encodeURIComponent(employee.street2)}`;\n  params += `&city=${encodeURIComponent(employee.city)}&state=${encodeURIComponent(\n    employee.state\n  )}&country=${encodeURIComponent(employee.country)}&zipcode=${encodeURIComponent(zipcode)}`;\n  if (employee.showId) {\n    params += `&showId=${encodeURIComponent(employee.showId.id)}&showName=${encodeURIComponent(employee.showId.name)}`;\n\n    if (employee.showId.orderKitType) {\n      params += `&orderKitType=${encodeURIComponent(employee.showId.orderKitType)}`;\n    }\n  }\n  if (clientID) {\n    params += `&clientId=${encodeURIComponent(clientID)}`;\n  }\n  params += `&testSend=${encodeURIComponent(employee.testSend)}&testSendQty=${encodeURIComponent(\n    employee.testSendQty\n  )}`;\n\n  params += `&capacity=${employee.capacity}`;\n  if (employee.designation) {\n    params += `&designation=${encodeURIComponent(employee.designation)}`;\n  }\n\n  if (employee.dob) {\n    params += `&dob=${encodeURIComponent(employee.dob)}`;\n  }\n\n  if (employee.sex) {\n    params += `&sex=${encodeURIComponent(employee.sex)}`;\n  }\n  if (employee.reorder) {\n    params += `&reorder=${encodeURIComponent(employee.reorder)}`;\n  }\n  params += `&id_number=${encodeURIComponent(employee.id_number || 0)}`;\n\n  console.log(\"Parmas\", params);\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n\n  return notification.data;\n};\n\nconst getPregRegistrationPhoneData = async (data) => {\n  const path = \"https://9dpj6yddw2.execute-api.eu-west-1.amazonaws.com/default/preregistration\";\n  const employeeData = await axios.post(path, data);\n  console.log(\"employeeData\", employeeData);\n  return employeeData.data;\n};\n\nconst hipaaTestSearch = async (param, testKey) => {\n  try {\n    let path = \"/hippa/search\";\n    let params = {\n      body: {\n        email: param.email,\n        testKey: testKey,\n      },\n    };\n    const res = await API.post(publicApiName, path, params);\n    console.log(\"res\", res);\n    return res.rows;\n  } catch (err) {\n    console.log(\"Error:-\", err);\n  }\n};\n\nconst getHipaaEmployeeList = async (param, testKey) => {\n  try {\n    let path = \"/hippa/list\";\n    let params = {\n      body: {},\n    };\n    const res = await API.post(publicApiName, path, params);\n    console.log(\"res\", res);\n    return res.rows;\n  } catch (err) {\n    console.log(\"Error:-\", err);\n  }\n};\n\nconst UpdateHipaaTestAns = async (param, testKey, email, firstName, lastName) => {\n  try {\n    let path = \"/hippa/answer\";\n    let params = {\n      body: {\n        answers: JSON.stringify(param),\n        testKey: testKey,\n        email: email,\n        ...(firstName && { firstName: firstName }),\n        ...(lastName && { lastName: lastName }),\n      },\n    };\n    const res = await API.post(publicApiName, path, params);\n\n    return res.rows;\n  } catch (err) {\n    console.log(\"Error:-\", err);\n  }\n};\n\nconst UpdateHipaaTestComplete = async (param) => {\n  try {\n    let path = \"/hippa/complete\";\n    let params = {\n      body: param,\n    };\n    const res = await API.post(publicApiName, path, params);\n  } catch (err) {\n    console.log(\"Error:-\", err);\n  }\n};\n\nconst preRegisterClientShows = async (id, env) => {\n  let params = `&preregistration=${encodeURIComponent(id)}`;\n\n  console.log(\"Parmas\", params);\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n\n  return notification.data.body;\n};\n\nconst preRegisterShowData = async (id, env) => {\n  let params = `&registeruser=${encodeURIComponent(id)}`;\n\n  console.log(\"Parmas\", params);\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n\n  return notification.data.body;\n};\n\nconst createTest = async (cloneSequence, firstName, lastName, phone, email, sequenceNo) => {\n  const models = await DataStore.query(Test, (test) => test.sequenceNo(\"eq\", cloneSequence));\n\n  if (models.length === 0) return;\n\n  const dbEmp = models[0];\n\n  // const employee = await DataStore.save(\n  //   new Employee({\n  //     first: 'Joann',\n  //     last: 'Jackson',\n  //     dob: buildAWSDate('10291989'),\n  //     id_number: '123',\n  //     phone_number: '323620699677',\n  //     street: '',\n  //     street2: '',\n  //     city: 'CA',\n  //     state: 'CA',\n  //     zip: '',\n  //   })\n  // );\n\n  const demo = {\n    city: \"Fayetteville\",\n    dob: \"10081982\",\n    email: email,\n    firstName: firstName,\n    id: \"1a9431ed-e4c4-4fac-81d6-c8a91c842dd8\",\n    idNumber: \"123\",\n    insurance_name: \"\",\n    insurance_number: \"\",\n    isVaccinated: true,\n    lastName: lastName,\n    phoneNumber: phone,\n    sex: gender,\n    state: \"\",\n    street: \"\",\n    street2: \"\",\n    whiteGlove: false,\n  };\n\n  const test = await DataStore.save(\n    new Test({\n      barcode: sequenceNo,\n      batch: dbEmp.batch,\n      beenTimed: dbEmp.beenTimed,\n      clientID: dbEmp.clientID,\n      clientName: dbEmp.clientName,\n      createSource: dbEmp.createSource,\n      createdAt: dbEmp.createdAt,\n      createdBy: dbEmp.createdBy,\n      done: dbEmp.done,\n      email: dbEmp.email,\n      emailSend: dbEmp.emailSend,\n      employeeID: dbEmp.employeeID,\n      employee_demographics: demo,\n      expired: dbEmp.expired,\n      isAntigen: dbEmp.isAntigen,\n      isFalsePositive: dbEmp.isFalsePositive,\n      isLucira: dbEmp.isLucira,\n      labID: dbEmp.labID,\n      labName: dbEmp.labName,\n      owner: dbEmp.owner,\n      phoneNumber: dbEmp.phoneNumber,\n      referenceID: dbEmp.referenceID,\n      sequenceNo: sequenceNo,\n      siteID: dbEmp.siteID,\n      site_name: dbEmp.site_name,\n      sr_no: dbEmp.sr_no,\n      startTimeStamp: dbEmp.startTimeStamp,\n      status: dbEmp.status,\n      submittedBy: dbEmp.submittedBy,\n      submittedByName: dbEmp.submittedByName,\n      test_number: dbEmp.test_number,\n      test_type: dbEmp.test_type,\n      testerPhone: dbEmp.testerPhone,\n      tester_name: dbEmp.tester_name,\n      timerStatus: dbEmp.timerStatus,\n    })\n  );\n  return test;\n};\n\nconst createClient = async (newClient) => {\n  // const phoneNumber = newClient.phone.replace(/\\D/g, \"\");\n  const client = await DataStore.save(\n    new Client({\n      name: newClient.name,\n      contact_name: newClient.contact,\n      phone_number: newClient.phone,\n      fax_number: newClient.fax_number,\n      contact_email: newClient.email,\n      resultType: newClient.resultType,\n      showOnSummaryScreen: newClient.showOnSummaryScreen,\n      whiteLabel: newClient.whiteLabel,\n      whiteLabelPackage: newClient.whiteLabelPackage,\n      isArchive: newClient.isArchive,\n      street: newClient.street,\n      city: newClient.city,\n      state: newClient.state,\n      zipcode: newClient.zipcode,\n      // user_id: newUserID,\n    })\n  );\n  return client;\n};\n\nconst createLab = async (newLab, newUserID) => {\n  const lab = await DataStore.save(\n    new Lab({\n      name: newLab.name,\n      contact_name: newLab.contact,\n      phone_number: newLab.phone,\n      fax_number: newLab.fax_number,\n      contact_email: newLab.email,\n      user_id: newUserID,\n      street: newLab.street,\n      city_state_zip: newLab.city_state_zip,\n      lab_director: newLab.lab_director,\n      testing_notes: newLab.testing_notes,\n      clia_number: newLab.clia_number,\n      referredDoctor: newLab.referredDoctor,\n      default_antigen: newLab.default_antigen,\n      default_molecular: newLab.default_molecular,\n      default_other: newLab.default_other,\n      default_rapidflu: newLab.default_rapidflu,\n      default_lucira: newLab.default_lucira,\n      tubes_provided: newLab.tubes_provided,\n      sendInsurance: newLab.sendInsurance,\n      invalid_notes: newLab.invalid_notes,\n      indeterminate_notes: newLab.indeterminate_notes,\n      logo: newLab.logo,\n      barCodeProvided: newLab.barCodeProvided,\n      barCodeAlertLimit: 0,\n      antigen_notes: newLab.antigen_notes,\n      molecular_notes: newLab.molecular_notes,\n      showOnSummaryScreen: newLab.showOnSummaryScreen,\n      whiteLabel: newLab.whiteLabel,\n      whiteLabelPackage: newLab.whiteLabelPackage,\n      other_notes: newLab.other_notes,\n      lucira_notes: newLab.lucira_notes,\n      rapidflu_notes: newLab.rapidflu_notes,\n      custom_notes: newLab.custom_notes,\n      isArchive: newLab.isArchive,\n      pendingRelease: newLab.pendingRelease,\n    })\n  );\n  return lab;\n};\n\nconst deleteClient = async (id) => {\n  await DataStore.delete(Client, (client) => client.id(\"eq\", id));\n};\n\nconst deleteLab = async (id) => {\n  await DataStore.delete(Lab, (lab) => lab.id(\"eq\", id));\n};\n\nconst deleteSite = async (id) => {\n  await DataStore.delete(Site, (site) => site.id(\"eq\", id));\n};\nconst deleteEmployee = async (id) => {\n  await DataStore.delete(Employee, (e) => e.id(\"eq\", id));\n};\n\nconst getTests = async () => {\n  let currentPage = 0;\n  let fetchData = true;\n  let models = await DataStore.query(Test, (test) => test.labID(\"ne\", null), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n\n  return models;\n};\n\nconst getCompletedTests = async () => {\n  let models = await DataStore.query(Test, (test) => test.result(\"ne\", null), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n\n  return models;\n};\n\nconst getExternalTest = async () => {\n  let models = await DataStore.query(ExternalTest, Predicates.ALL, {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n\n  return models;\n};\n\nconst getTotalAdminTests = async () => {\n  let models = await DataStore.query(Test, (test) => test.labID(\"ne\", null), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n\n  return models;\n};\n\nconst getPendingTests = async () => {\n  let models = await DataStore.query(Test, (test) => test.status(\"eq\", \"Pending\").labID(\"ne\", null), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n\n  return models;\n};\n\nconst getUnSubmittedTest = async () => {\n  const models = await DataStore.query(\n    Test,\n    (test) => test.status(\"eq\", \"Pending\").result(\"eq\", null).test_type(\"eq\", \"PCR\"),\n    {\n      sort: (test) => test.createdAt(SortDirection.DESCENDING),\n    }\n  );\n  return models;\n};\n\nconst getUnprocessedTests = async () => {\n  let currentPage = 0;\n  let fetchData = true;\n  let models = await DataStore.query(\n    Test,\n    (test) =>\n      test\n        .labID(\"ne\", null)\n        .result(\"eq\", null)\n        .or((test) => test.status(\"eq\", \"Processing\").status(\"eq\", \"Pending\").status(\"eq\", \"Sent\")),\n    {\n      sort: (test) => test.createdAt(SortDirection.DESCENDING),\n    }\n  );\n\n  return models;\n};\n\nconst getAllEmployees = async () => {\n  let models = await DataStore.query(Employee, Predicates.ALL);\n  return models;\n};\n\nconst submitUnprocessedTests = async (tests, user, env) => {\n  const response = [];\n  const testsByLab = {};\n  let allTests = [];\n  console.log(\"tests\", tests);\n  for (const test of tests) {\n    if (!testsByLab[test.labID]) {\n      testsByLab[test.labID] = [test];\n    } else {\n      testsByLab[test.labID].push(test);\n    }\n  }\n\n  for (const lab in testsByLab) {\n    const labData = await getLabByID(lab);\n    if (labData) {\n      allTests = allTests.concat(\n        testsByLab[lab].map((t) => {\n          return { ...t, labName: labData.name };\n        })\n      );\n      const [formattedTests, bucket, batch] = formatTests(labData, testsByLab[lab]);\n      try {\n        await Storage.put(`${batch}.csv`, formattedTests, { bucket: bucket });\n        testsByLab[lab].forEach(async (test) => {\n          const testObj = await DataStore.query(Test, (t) => t.id(\"eq\", test.id));\n          await DataStore.save(\n            Test.copyOf(testObj[0], (updated) => {\n              updated.status = \"Sent\";\n              updated.submittedBy = user.sub;\n              updated.submittedByName = user.name;\n            })\n          );\n        });\n        response.push({ lab: labData, tests: testsByLab[lab], error: null });\n      } catch (e) {\n        console.log(\"Error uploading to bucket\", e);\n        response.push({ lab: labData, tests: testsByLab[lab], error: \"Error uploading to bucket\" });\n      }\n    }\n  }\n\n  await saveFileSendToLab(`${moment().format(\"DD_MM_YYYY_HH_mm_ss\")}_send_to_lab_${CONFIG.envType}.csv`, allTests);\n\n  return response;\n};\n\n// Documents CRUD APIs\nconst getDocuments = async (employeeID) => {\n  const models = await DataStore.query(Documents, (doc) =>\n    doc.employeeID(\"eq\", \"3afa4605-31bf-4d85-a954-dd879aa0c14c\")\n  );\n  return models;\n};\n\nconst fetchDocumentAPI = async (obj) => {\n  const path = \"/documents/list\";\n  try {\n    const res = await callAmplifyAPI(path, {\n      employeeID: obj.employeeID,\n      ...(obj.testID && { testID: obj.testID }),\n    });\n    return res?.rows || [];\n  } catch (e) {\n    console.log(\"Error :\", e);\n  }\n};\n\nconst newDocumentCreateAPI = async (param) => {\n  const path = \"/documents\";\n  try {\n    const res = await callAmplifyAPI(path, {\n      list: param,\n    });\n    return res;\n  } catch (e) {\n    console.log(\"Error :\", e);\n  }\n};\n\nconst updateDocumentAPI = async (param) => {\n  const { id, employeeID, docType, docLabel, fileName, fileType, fileSize, notes, updatedBy, updatedByName } = param;\n  const path = \"/documents\";\n  try {\n    const params = {\n      body: {\n        id,\n        employeeID,\n        docType,\n        docLabel,\n        fileName,\n        fileType,\n        fileSize,\n        notes,\n        updatedBy,\n        updatedByName,\n      },\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n    };\n    const res = await API.put(apiName, path, params);\n    return res;\n  } catch (e) {\n    console.log(\"Error :\", e);\n  }\n};\n\nconst deleteDocumentAPI = async (param) => {\n  console.log(\"deleteDocumentAPI\", param);\n  const path = \"/documents\";\n  const { id } = param;\n\n  try {\n    const params = {\n      body: {\n        id,\n      },\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n    };\n    const res = await API.del(apiName, path, params);\n    return res;\n  } catch (e) {\n    console.log(\"Error :\", e);\n  }\n};\n\nexport const fetchSignature = async (url) => {\n  try {\n    // Step 1: Get the public file URL\n    const fileUrl = await Storage.get(url, { download: false, contentType: \"image/png\" });\n    // Step 2: Fetch the actual file using the file URL\n    const response = await fetch(fileUrl);\n    if (!response.ok) {\n      throw new Error(`Failed to fetch PNG file: ${response.statusText}`);\n    }\n\n    // Step 3: Convert the file (Blob) to Base64\n    const blob = await response.blob();\n    const base64String = await new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.onloadend = () => resolve(reader.result); // Base64 string\n      reader.onerror = reject;\n      reader.readAsDataURL(blob); // Convert Blob to Base64\n    });\n\n    // Step 4: Return the Base64 string\n    return base64String;\n  } catch (err) {\n    console.error(\"Error in fetchSignature:\", err);\n    throw err;\n  }\n};\n\nconst saveImageFile = async ({ id, file, bucketName }) => {\n  const uniqueId = uuidv4();\n  const extension = file.name.toLowerCase().split(\".\").pop();\n\n  try {\n    if (!file || !(file instanceof File)) {\n      throw new Error(\"Invalid file provided.\");\n    }\n    const fileName = `container/${id}/${uniqueId}.${extension}`;\n\n    // Configure upload options\n    const uploadOptions = {\n      contentType: file.type, \n      ...(bucketName && { bucket: bucketName }), // Add bucketName only if it exists\n    };\n\n    // Upload the file to S3\n    const result = await Storage.put(fileName, file, uploadOptions);\n\n    console.log(\"File uploaded successfully to:\", result);\n    return fileName;\n  } catch (err) {\n    console.error(\"Error uploading file:\", err);\n    return \"\";\n  }\n};\n\n\nconst getImageFile = async (filePath) => {\n  try {\n    if (!filePath || typeof filePath !== \"string\") {\n      throw new Error(\"Invalid file path provided.\");\n    }\n    const image = await Storage.get(filePath);\n    return image;\n  } catch (err) {\n    console.log(\"Error in retrieving image\", err);\n  }\n};\nconst deleteImageFile = (filePath) => {\n  try {\n    if (!filePath || typeof filePath !== \"string\") {\n      throw new Error(\"Invalid file path provided.\");\n    }\n\n    // Delete the file from Bucket\n    Storage.remove(filePath);\n    console.log(\"File deleted successfully:\", filePath);\n    return true;\n  } catch (err) {\n    console.error(\"Error deleting file:\", err);\n    return false;\n  }\n};\n\nconst saveSignatureFile = ({ id, signatureURL }) => {\n  try {\n    // Extract the Base64 content and file type\n    const [metadata, content] = signatureURL.split(\",\");\n    const fileType = metadata.split(\";\")[0].split(\":\")[1].split(\"/\")[1]; // e.g., \"png\"\n\n    // Generate the file name with appropriate extension\n    const fileName = `Signature/${id}.${fileType}`;\n    // Decode the Base64 content to binary data\n    const fileContent = Buffer.from(content, \"base64\");\n\n    // Save to S3\n    Storage.put(fileName, fileContent, {\n      // bucket: BUCKET_EXTERNAL_IMAGES,\n      contentType: `image/${fileType}`, // Set the correct MIME type\n    });\n\n    return fileName;\n  } catch (err) {\n    console.log(err);\n  }\n  return \"\";\n};\nconst deleteSignatureFile = (fileName) => {\n  try {\n    if (!fileName) {\n      throw new Error(\"File name is required for deletion\");\n    }\n    // Delete the file from the S3 bucket\n    Storage.remove(fileName);\n    return true; // Return true to indicate successful deletion\n  } catch (err) {\n    throw new Error(\"Failed to delete the file\");\n  }\n};\nconst saveDocumentFile = async (id, type, fileContent) => {\n  try {\n    let fileName = `Document/${id}/${moment().format(\"YYYY_MM_DD_HH_mm_ss\")}$${type}`;\n    await Storage.put(`${fileName}`, fileContent, {\n      bucket: BUCKET_EXTERNAL_IMAGES,\n    });\n    return fileName;\n  } catch (err) {\n    console.log(\"Error in Image Uploading\", err);\n  }\n  return \"\";\n};\n\nconst saveResultFile = async (barcode, fileContent) => {\n  try {\n    let fileName = `results/${CONFIG.isLive ? \"live\" : \"test\"}/${CONFIG.clientID}/${barcode}`;\n    await Storage.put(`${fileName}`, fileContent, {\n      bucket: BUCKET_EXTERNAL_IMAGES,\n    });\n    return barcode;\n  } catch (err) {\n    console.log(\"Error in Image Uploading\", err);\n  }\n  return \"\";\n};\n\nconst saveTemplateFile = async (fileName, type, fileContent) => {\n  try {\n    const path = \"/labclient/pdftemplate\";\n\n    let filePath = `pdf_template/${fileName}_${moment().format(\"YYYY_MM_DD_HH_mm_ss\")}.${type}`;\n\n    await Storage.put(`${filePath}`, fileContent);\n\n    const { jsonData } = await callAmplifyAPI(path, filePath);\n    return { jsonData, filePath };\n  } catch (err) {\n    console.log(\"Error in Image Uploading\", err);\n  }\n  return \"\";\n};\n\nconst uploadPDFTemplate = async (param) => {\n  const path = \"/labclient/pdftemplate\";\n  try {\n    const res = await callAmplifyAPI(path, param);\n    return res;\n  } catch (e) {\n    console.log(\"Error :\", e);\n  }\n};\n\nconst saveOrderFileIntoBucket = async ({ name, fileContent, ext }) => {\n  try {\n    let fileName = `Order_Pdf/${CONFIG.envType}/${moment().format(\"YYYY_MM_DD_HH_mm_ss\")}$${name}.${ext}`;\n    let maxRetries = 2;\n    let attempt = 0;\n    while (attempt < maxRetries) {\n      try {\n        const res = await Storage.put(`${fileName}`, fileContent, {\n          bucket: BUCKET_EXTERNAL_IMAGES,\n          progressCallback: (event) => {\n           // console.log(\"progress event\", event);\n          },\n          errorCallback: (err) => console.log(\"error err\", err),\n          completeCallback: (event) => {\n            console.log(\"complete event\", event);\n          },\n        });\n        return fileName;\n      } catch (ex) {\n        console.log(\"Attempt to upload failed\", attempt + 1);\n        console.log(\"Error message:\", err.message);\n        if (err.response) {\n          console.log(\"HTTP Status:\", err.response.status);\n          console.log(\"Response Headers:\", err.response.headers);\n          console.log(\"Response Data:\", err.response.data);\n        }\n        attempt++;\n        if (attempt >= maxRetries) {\n          console.log(\"Max retries reached, giving up.\");\n          return \"\";\n        }\n      }\n    }\n\n    return \"\";\n  } catch (err) {\n    console.log(\"Error in Image Uploading\", err);\n  }\n  return \"\";\n};\n\nconst saveOrdersFiles = async (param) => {\n  const path = \"/savefiles\";\n  try {\n    const res = await callAmplifyAPI(path, param);\n    return res;\n  } catch (e) {\n    console.log(\"Error :\", e);\n  }\n};\n\nconst searchCptCode = async (param) => {\n  const path = \"/cpt/list\";\n  try {\n    const params = {\n      body: { ...param, clientID: CONFIG.clientID },\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n    };\n    const res = await API.post(apiName, path, params);\n    return res;\n  } catch (e) {\n    console.log(\"Error :\", e);\n  }\n};\n\nconst searchICTCode = async (param) => {\n  const path = \"/ict/list\";\n  try {\n    const params = {\n      body: { ...param, clientID: CONFIG.clientID },\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n    };\n    const res = await API.post(apiName, path, params);\n    return res;\n  } catch (e) {\n    console.log(\"Error :\", e);\n  }\n};\n\nconst reSubmitUnprocessedTests = async (tests, user) => {\n  const response = [];\n  const testsByLab = {};\n  for (const test of tests) {\n    if (!testsByLab[test.labID]) {\n      testsByLab[test.labID] = [test];\n    } else {\n      testsByLab[test.labID].push(test);\n    }\n  }\n\n  for (const lab in testsByLab) {\n    const labData = await getLabByID(lab);\n    if (labData) {\n      const [formattedTests, bucket, batch] = formatTests(labData, testsByLab[lab]);\n      try {\n        await Storage.put(`${batch}.csv`, formattedTests, { bucket: bucket });\n        response.push({ lab: labData, tests: testsByLab[lab], error: null });\n      } catch (e) {\n        console.log(\"Error uploading to bucket\", e);\n        response.push({ lab: labData, tests: testsByLab[lab], error: \"Error uploading to bucket\" });\n      }\n    }\n  }\n  return response;\n};\n\nconst formatTests = (labData, tests) => {\n  const labName = labData.name;\n  let batch;\n  switch (labName.toLowerCase()) {\n    case \"lenco\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/New_York\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatLencoCSV(tests, labData), \"lenco-tests\", batch];\n    case \"alliance\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/New_York\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatAllianceCSV(tests, labData), \"alliance-tests\", batch];\n    case \"biolab\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/Los_Angeles\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatBiolabCSV(tests, labData), \"biolabs-tests\", batch];\n    case \"sunrise\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/Los_Angeles\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatSunriseCSV(tests, labData), \"sunrise-tests\", batch];\n    case \"lifebrite\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/New_York\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatLifebriteCSV(tests, labData), \"lifebrite-tests\", batch];\n    case \"alta\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/Los_Angeles\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatAltaCSV(tests, labData), \"alta-tests\", batch];\n    case \"new discovery\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"EST\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatNewDiscoveryCSV(tests), \"new-discovery-tests\", batch];\n    case \"dls\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"HST\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatDLSCSV(tests), \"dls-tests\", batch];\n    case \"oxygen\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"EST\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatOxygenCSV(tests), \"oxygen-tests\", batch];\n    default:\n      console.log(\"default case\");\n      return [\n        formatSunriseCSV(tests, labData),\n        \"no-lab-found-tests\",\n        `${labName}/${new Date(tests[0].createdAt)\n          .toString()\n          .substring(0, 21)\n          .replace(/(:|\\s+)/g, \"_\")}`,\n      ];\n  }\n};\n\nconst toISOLocal = (d) => {\n  var z = (n) => (\"0\" + n).slice(-2);\n  var zz = (n) => (\"00\" + n).slice(-3);\n  var off = d.getTimezoneOffset();\n  var sign = off > 0 ? \"-\" : \"+\";\n  off = Math.abs(off);\n\n  return (\n    d.getFullYear() +\n    \"-\" +\n    z(d.getMonth() + 1) +\n    \"-\" +\n    z(d.getDate()) +\n    \"T\" +\n    z(d.getHours()) +\n    \":\" +\n    z(d.getMinutes()) +\n    \":\" +\n    z(d.getSeconds()) +\n    \".\" +\n    zz(d.getMilliseconds()) +\n    sign +\n    z((off / 60) | 0) +\n    \":\" +\n    z(off % 60)\n  );\n};\n\nconst parseDateOfBirth = (dob) => {\n  if (dob.includes(\"-\")) {\n    let index = dob.indexOf(\"-\");\n    let dateFormat = \"MM-DD-YYYY\";\n    if (index !== 2) {\n      dateFormat = \"YYYY-MM-DD\";\n    }\n    return moment(dob, dateFormat).format(\"MM/DD/YYYY\");\n  }\n  return dob;\n};\n\nconst parseDateOfBirthLenco = (dob) => {\n  if (dob.includes(\"-\")) {\n    let index = dob.indexOf(\"-\");\n    let dateFormat = \"MM-DD-YYYY\";\n    if (index !== 2) {\n      dateFormat = \"YYYY-MM-DD\";\n    }\n    return moment(dob, dateFormat).format(\"MM-DD-YYYY\");\n  }\n  return dob;\n};\n\nconst formatLencoCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      Provider_ID: 33133,\n      patientFirst: demographics?.firstName,\n      patientLast: demographics?.lastName,\n      patientDOB: demographics?.dob?.includes(\"-\")\n        ? parseDateOfBirthLenco(demographics?.dob)\n        : `${demographics?.dob?.substring(0, 2)}-${demographics?.dob?.substring(2, 4)}-${demographics?.dob?.substring(\n            4\n          )}`,\n      patientGender: demographics.sex === \"M\" ? \"male\" : \"female\",\n      address1: demographics.street,\n      addressCity: demographics.city,\n      addressState: demographics.state,\n      addressZip: demographics.zip.substring(0, 5),\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      Accession: test.barcode,\n      collection_date: `${test.createdAt.substring(5, 7)}-${test.createdAt.substring(8, 10)}-${test.createdAt.substring(\n        0,\n        4\n      )}`,\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatAllianceCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      client_id: 3211,\n      barcode: test.barcode,\n      date_created: `${test.createdAt.substring(5, 7)}/${test.createdAt.substring(8, 10)}/${test.createdAt.substring(\n        0,\n        4\n      )}`,\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      result: \"\",\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatBioBillingCSV = async (tests, labData) => {\n  //\n  // const filteredTests = tests.filter((f) => {\n  //   const demo = parseJSONObject(f.employee_demographics);\n  //   return (\n  //     demo?.insurance_name?.toLowerCase()?.includes(\"medicare\") ||\n  //     demo?.insurance_name?.toLowerCase()?.includes(\"medicaid\")\n  //   );\n  // });\n\n  const filteredTests = tests;\n\n  if (filteredTests.length === 0) return [];\n\n  const uniqueSites = [...new Set(filteredTests.map((test) => test.siteID))];\n\n  const siteToProviderMap = {};\n\n  if (uniqueSites.length > 0) {\n    const promiseArray = uniqueSites.map(async (siteID) => {\n      const defaultProvider = await getDefaultProvider(siteID);\n      siteToProviderMap[siteID] = defaultProvider;\n    });\n\n    await Promise.allSettled(promiseArray);\n  }\n  const formattedTests = filteredTests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n\n    const defaultProvider = siteToProviderMap[test.siteID];\n    let client_id = 7137; // kei client id for lab gen\n    const obj = {\n      client_id: client_id,\n      accession_no: test.barcode,\n      date_created: toISOLocal(new Date(test.createdAt)),\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      result: \"\",\n      dos: moment(test.createdAt).format(\"MMDDYY\"),\n      insurance_name: demographics.insurance_name,\n      insurance_number: demographics.insurance_number,\n      payer_id: demographics.insuranceCompanyCode,\n      ref_phy: defaultProvider?.name || \"\",\n      ref_npi: defaultProvider?.npi || \"\",\n      ict_code: \"Z20.822\",\n      eligibility: demographics?.isEligible ? \"Y\" : \"N\",\n    };\n    if (labData?.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n\n  return formattedTests;\n};\n\nconst formatBiolabGenCSV = async (tests, labData) => {\n  const uniqueSites = [...new Set(tests.map((test) => test.siteID))];\n\n  const siteToProviderMap = {};\n\n  if (uniqueSites.length > 0) {\n    const promiseArray = uniqueSites.map(async (siteID) => {\n      let models = await DataStore.query(Site, (site) => site.id(\"eq\", siteID));\n      siteToProviderMap[siteID] = models[0];\n    });\n\n    await Promise.allSettled(promiseArray);\n  }\n\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n\n    let siteRecord = siteToProviderMap[test.siteID];\n    let client_id = siteRecord?.practiceID || 3739; // kei client id for lab gen\n    const obj = {\n      client_id: client_id,\n      barcode: test.barcode,\n      date_created: toISOLocal(new Date(test.createdAt)),\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: \"\",\n      reference_id: test.barcode,\n      result: \"\",\n      phy_npi: \"1639125487\",\n      phy_first_name: \"LISA\",\n      phy_last_name: \"MA\",\n      sample_type: demographics?.swabtype || \"oral\",\n    };\n    if (labData?.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n\n  // Stop this function calling as move the process into lambda\n  // const testPushed = await pushTestOnBucket(new Date(tests[0].createdAt), formattedTests, LAB_SFTP_BUCKET.BIO_LAB);\n\n  return { testPushed: true, data: formattedTests };\n};\n\nconst pushTestOnBucket = async (batch, tests, bucket_name) => {\n  if (CONFIG.isLive && CONFIG.clientID === \"456ba480-b8dd-47ea-a07a-940693f686ea\") {\n    try {\n      await Storage.put(`${batch}.csv`, jsonToCSV(tests), { bucket: bucket_name });\n      return true;\n    } catch (e) {\n      console.log(\"Error uploading to bucket\", e);\n      return \"Error uploading to bucket\";\n    }\n  }\n  return false;\n};\n\nconst formatBiolabCSV = (tests, labData) => {\n  console.log(\"Test\", tests);\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      client_id: 3739,\n      barcode: test.barcode,\n      date_created: toISOLocal(new Date(test.createdAt)),\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      result: \"\",\n    };\n    if (labData?.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatSunriseCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      client_id: 36,\n      barcode: test.barcode,\n      date_created: toISOLocal(new Date(test.createdAt)),\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics?.dob?.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics?.dob?.substring(0, 2)}/${demographics?.dob?.substring(2, 4)}/${demographics?.dob?.substring(\n            4\n          )}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      result: \"\",\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatAltaCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      client_id: 1,\n      barcode: test.barcode,\n      date_created: toISOLocal(new Date(test.createdAt)),\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      result: \"\",\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatLifebriteCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      barcode: test.barcode,\n      date_created: toISOLocal(new Date(test.createdAt)).split(\"T\")[0],\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      insurance_name: demographics.insurance_name,\n      insurance_number: demographics.insurance_number,\n      test_code: 1,\n      result: \"\",\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatDLSCSV = (tests) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    return {\n      PatientFirstName: demographics.firstName,\n      PatientMiddleName: \"\",\n      PatientLastName: demographics.lastName,\n      patientDOB: demographics.dob.includes(\"-\")\n        ? parseDateOfBirthLenco(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}-${demographics.dob.substring(2, 4)}-${demographics.dob.substring(4)}`,\n      barcode: test.barcode,\n      date_created: test.createdAt.toString(),\n      PatientGender: demographics.sex,\n      Address1: demographics.street,\n      Address2: \"\",\n      AddressCity: demographics.city,\n      AddressState: demographics.state,\n      AddressZip: demographics.zip,\n      EmailAddress: \"\",\n      PatientPhone: test.phoneNumber,\n      UniqueID: test.id,\n      AccessionOrderID: test.barcode,\n      TestkitID: \"\",\n      Covid19TestCode: \"\",\n      SpecimenSource: \"OP\",\n      CollectionDateTime: \"\",\n      OrderingPhysician: \"\",\n      Race: \"UNK: Unknown\",\n      Ethnicity: \"UNK: Unknown\",\n      FirstCovidTest: \"\",\n      HealthCareWorker: \"\",\n      CovidSymptomatic: \"\",\n      SymptomOnsetDate: \"\",\n      CovidHospitalized: \"\",\n      InICU: \"\",\n      CongregateCareSetting: \"\",\n      Pregnant: \"\",\n      result: \"\",\n    };\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatNewDiscoveryCSV = (tests) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    return {\n      barcode: test.barcode,\n      date_created: test.createdAt,\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      result: \"\",\n    };\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatOxygenCSV = (tests) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    return {\n      accession_number: test.barcode,\n      requisition_number: test.referenceID,\n      date: new Date(test.createdAt).toString().substring(0, 15),\n      time: new Date(test.createdAt).toString().substring(16),\n      clinic_id: \"52a3c04d-2b81-43c0-8c9d-5a5ae8f067fc\",\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      patient_dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      patient_gender: demographics.sex,\n      patient_phone: test.phoneNumber,\n      patient_email: \"\",\n      patient_ethnicity_code: \"U\",\n      patient_race_code: \"U\",\n      provider_first_name: \"\",\n      provider_last_name: \"\",\n      provider_npi: \"1111111111\",\n      provider_phone_number: \"\",\n      specimen_type: \"OS\",\n      panel_type: \"COV  (COVID-19 (2019 Coronavirus (SARS-CoV-2)))\",\n      result: \"\",\n    };\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst getCurrentLabUserTests = async () => {\n  const user = await getCurrentUser();\n\n  let lab = await DataStore.query(Lab, (lab) => lab.user_id(\"eq\", user.sub));\n  if (lab.length === 0) {\n    const labs = await DataStore.query(Lab);\n    lab = labs.filter((l) => {\n      return l.lab_contacts && l.lab_contacts.includes(user.sub);\n    });\n    if (lab.length === 0) return [];\n  }\n\n  if (lab[0].default_antigen || lab[0].default_molecular) {\n    const models = await DataStore.query(\n      Test,\n      (test) =>\n        test\n          .labID(\"eq\", lab[0].id)\n          .test_type(\"eq\", \"PCR\")\n          .or((test) => test.status(\"eq\", \"Processing\").status(\"eq\", \"Pending\").status(\"eq\", \"Sent\")),\n      {\n        sort: (test) => test.createdAt(SortDirection.DESCENDING),\n      }\n    );\n\n    return models.filter((t) => !t.result);\n  }\n\n  const models = await DataStore.query(\n    Test,\n    (test) =>\n      test\n        .labID(\"eq\", lab[0].id)\n        .test_type(\"eq\", \"PCR\")\n        .or((test) => test.status(\"eq\", \"Processing\").status(\"eq\", \"Pending\").status(\"eq\", \"Sent\")),\n    {\n      sort: (test) => test.createdAt(SortDirection.DESCENDING),\n    }\n  );\n\n  return models.filter((t) => !t.result);\n\n  return models;\n};\n\nconst getAllCurrentLabUserTests = async () => {\n  const user = await getCurrentUser();\n  let lab = await DataStore.query(Lab, (lab) => lab.user_id(\"eq\", user.sub));\n  if (lab.length === 0) {\n    const labs = await DataStore.query(Lab);\n    lab = labs.filter((l) => {\n      return l.lab_contacts && l.lab_contacts.includes(user.sub);\n    });\n    if (lab.length === 0) return [];\n  }\n\n  const models = await DataStore.query(Test, (test) => test.labID(\"eq\", lab[0].id), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n  return models.filter((model) => model.result);\n};\n\nconst getCurrentLabUserProcessedTests = async (id, user) => {\n  let labID = id;\n  if (!labID) {\n    const lab = await DataStore.query(Lab, (lab) => lab.user_id(\"eq\", user.sub));\n    if (lab.length > 0) {\n      labID = lab[0].id;\n    } else {\n      const labs = await DataStore.query(Lab);\n      const filterLab = labs.filter((l) => {\n        return l.lab_contacts && l.lab_contacts.includes(user.sub);\n      });\n      if (filterLab.length > 0) {\n        labID = filterLab[0].id;\n      }\n    }\n  }\n\n  if (labID === null) return [];\n\n  let currentPage = 0;\n  let fetchData = true;\n  const models = await DataStore.query(\n    Test,\n    (test) =>\n      test\n        .labID(\"eq\", labID)\n        .result(\"ne\", null)\n        .test_type(\"eq\", \"PCR\")\n        .or((test) => test.status(\"eq\", \"Processed\").status(\"eq\", \"Pending\")),\n    {\n      sort: (test) => test.createdAt(SortDirection.DESCENDING),\n    }\n  );\n\n  const tests = models.map((test) => {\n    const obj = formatTest(test);\n    obj.status = TEST_STATUS.Processed;\n    return obj;\n  });\n\n  return tests;\n};\nconst getPendingReleaseTests = async () => {\n  const models = await DataStore.query(\n    Test,\n    (test) => test.status(\"eq\", \"Pending\").or((t) => t.result(\"eq\", \"Positive\").result(\"eq\", \"positive\")),\n    {\n      sort: (test) => test.updatedAt(SortDirection.DESCENDING),\n    }\n  );\n\n  return models;\n};\n\nconst sendToLab = async (tests = []) => {\n  tests.forEach(async (test) => {\n    await DataStore.save(\n      Test.copyOf(test, (updated) => {\n        updated.status = \"Sent\";\n      })\n    );\n  });\n};\n\nconst findTestByID = async (id) => {\n  const models = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  // console.log(\"findTestByID\", models);\n  return models[0];\n};\n\nconst findTestByBarcode = async (id) => {\n  const models = await DataStore.query(Test, (test) => test.barcode(\"eq\", id));\n  if (models.length > 0) return models[0];\n\n  const byId = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  if (byId.length > 0) return byId[0];\n\n  return null;\n};\nconst findExternalTestByID = async (testID) => {\n  const models = await DataStore.query(ExternalTest, (test) => test.id(\"eq\", testID));\n  console.log(models);\n  return models[0];\n};\n\nconst sortModelData = (models) => models?.sort((a, b) => a?.name?.localeCompare(b?.name));\n\nconst getTestTypes = async (category) => {\n  // Define the base condition to filter by clientID and exclude \"panel\" type\n  let condition = (test) => test.clientID(\"eq\", CONFIG.clientID).isArchive(\"eq\", false);\n\n  // Update the condition if a category is specified\n  if (category) {\n    condition = (test) => test.clientID(\"eq\", CONFIG.clientID).category(\"eq\", category).isArchive(\"eq\", false);\n  }\n\n  // Query the DataStore with the defined condition\n  const models = await DataStore.query(TestTypes, condition, {\n    sort: (t) => t.name(SortDirection.ASCENDING),\n  });\n\n  //await DataStore.delete(TestTypes, (test) => test.id(\"eq\", '880ea165-6c13-4c48-9983-be476143a295'));\n\n  // for (let i = 0; i < models.length; i++) {\n  //   console.log('models[i].isActive',models[i].isActive);\n\n  //   // await DataStore.save(\n  //   //   TestTypes.copyOf(models[i], (updated) => {\n  //   //     updated.isArchive = false;\n  //   //   })\n  //   // );\n  //   // if (!models[i].isActive) {\n  //   //   await DataStore.save(\n  //   //     TestTypes.copyOf(models[i], (updated) => {\n  //   //       updated.isArchive = true;\n  //   //     })\n  //   //   );\n  //   // }\n  // }\n\n  // Return the filtered models\n  return sortModelData(models);\n};\n\nconst getPanels = async () => {\n  let condition = (test) => test.clientID(\"eq\", CONFIG.clientID).type(\"eq\", \"panel\");\n\n  const models = await DataStore.query(TestTypes, condition, {\n    sort: (t) => t.name(SortDirection.ASCENDING),\n  });\n  // for (let i = 0; i < models.length; i++) {\n  //   await DataStore.delete(TestTypes, (test) => test.id(\"eq\", models[i].id));\n  // }\n  return sortModelData(models);\n};\n\nconst getPanelsAndTests = async () => {\n  let condition = (test) => test.clientID(\"eq\", CONFIG.clientID);\n\n  const models = await DataStore.query(TestTypes, condition, {\n    sort: (t) => t.name(SortDirection.ASCENDING),\n  });\n\n  return sortModelData(models);\n};\nconst getTestTypesOptions = async () => {\n  let models = await DataStore.query(\n    TestTypes,\n    (test) => test.clientID(\"eq\", CONFIG.clientID).and((c) => c.isArchive(\"eq\", false).isActive(\"eq\", true)), // Filter by isActive\n    {\n      sort: (t) => t.name(SortDirection.ASCENDING),\n    }\n  );\n\n  if (models.length === 0) {\n    models = await DataStore.query(\n      TestTypes,\n      (test) => test.clientID(\"eq\", null).and((c) => c.isArchive(\"eq\", false)), // Filter by isActive\n      {\n        sort: (t) => t.name(SortDirection.ASCENDING),\n      }\n    );\n  }\n\n  return sortModelData(models).map((e) => ({\n    code: e.code,\n    isSelected: false,\n    clinicalcomment: \"\",\n    sources: e.sources,\n    cptCodes: e.cptCodes,\n    ictCodes: e.ictCodes,\n    label: e.name,\n    value: e.name,\n    id: e.id,\n  }));\n};\n\nconst getTestTypesForFilter = async () => {\n  let models = await DataStore.query(\n    TestTypes,\n    (test) => test.clientID(\"eq\", CONFIG.clientID).and((c) => c.isArchive(\"eq\", false).isActive(\"eq\", true)), // Filter by isActive\n    {\n      sort: (t) => t.name(SortDirection.ASCENDING),\n    }\n  );\n  return sortModelData(models).map((e) => ({\n    code: e.code,\n    isSelected: false,\n    clinicalcomment: \"\",\n    sources: e.sources,\n    cptCodes: e.cptCodes,\n    ictCodes: e.ictCodes,\n    label: e.name,\n    value: e.id,\n    id: e.id,\n  }));\n};\nconst getTestTypesByName = async (name) => {\n  const models = await DataStore.query(TestTypes, (s) => s.name(\"eq\", name), {\n    sort: (t) => t.name(SortDirection.ASCENDING),\n  });\n  if (models.length > 0) {\n    return models[0].sources;\n  }\n  return [];\n};\n\nconst getTestTypesByID = async (id) => {\n  const models = await DataStore.query(TestTypes, (s) => s.id(\"eq\", id), {\n    sort: (t) => t.name(SortDirection.ASCENDING),\n  });\n  if (models.length > 0) {\n    return models[0];\n  }\n  return [];\n};\n\nconst addTestTypes = async (obj) => {\n  return await DataStore.save(\n    new TestTypes({\n      code: obj.code,\n      name: obj.name,\n      typeOfTest: obj.typeOfTest,\n      category: obj.category,\n      clientID: CONFIG.clientID,\n      sources: obj.sources,\n      cptCodes: obj.cptCodes,\n      ictCodes: obj.ictCodes,\n      targetRanges: obj.targetRanges,\n      custom_notes: obj.custom_notes,\n      units: obj.units,\n      refInterval: obj.refInterval,\n      minValue: obj.minValue,\n      maxValue: obj.maxValue,\n      setting: obj.setting,\n      lonicCode: obj.lonicCode,\n      isActive: obj.isActive,\n      isArchive: false,\n      isAssociatedPanel: obj?.isAssociatedPanel || false,\n      isARKStone: obj?.isARKStone || false,\n      isPanelOnly: obj?.isPanelOnly || false,\n      location: obj.location,\n      type: obj?.type || \"\",\n      ranges: obj?.ranges || null,\n      sampleContainer: obj.sampleContainer || null,\n    })\n  );\n};\n\nconst updateTestTypes = async (obj) => {\n  const items = await DataStore.query(TestTypes, (t) => t.id(\"eq\", obj.id));\n  return await DataStore.save(\n    TestTypes.copyOf(items[0], (updated) => {\n      updated.totalTime = obj.totalTime;\n      updated.firstAlert = obj.firstAlert;\n      updated.secondAlert = obj.secondAlert;\n      updated.duration = obj.duration ? parseInt(obj.duration) : 0;\n      updated.code = obj.code;\n      updated.name = obj.name;\n      updated.category = obj.category;\n      updated.typeOfTest = obj.typeOfTest;\n      updated.sources = obj.sources;\n      updated.cptCodes = obj.cptCodes;\n      updated.ictCodes = obj.ictCodes;\n      updated.targetRanges = obj.targetRanges;\n      updated.custom_notes = obj.custom_notes;\n      updated.units = obj.units;\n      updated.refInterval = obj.refInterval;\n      updated.minValue = obj.minValue;\n      updated.maxValue = obj.maxValue;\n      updated.setting = obj.setting;\n      updated.lonicCode = obj.lonicCode;\n      updated.isActive = obj.isActive;\n      updated.isPanelOnly = obj.isPanelOnly || false;\n      updated.location = obj.location;\n      updated.ranges = obj.ranges;\n      updated[\"sampleContainer\"] = obj.sampleContainer || null;\n      (updated.isArchive = false), (updated[\"isAssociatedPanel\"] = obj?.isAssociatedPanel || false);\n      updated[\"isARKStone\"] = obj?.isARKStone || false;\n      updated[\"type\"] = obj.type || \"\";\n    })\n  );\n};\n\nconst archiveTestType = async (obj) => {\n  const items = await DataStore.query(TestTypes, (t) => t.id(\"eq\", obj.id));\n  return await DataStore.save(\n    TestTypes.copyOf(items[0], (updated) => {\n      updated.isActive = obj.isActive;\n      updated.isArchive = obj.isArchive;\n    })\n  );\n};\n\nconst updateTestPathegon = async (obj) => {\n  const items = await DataStore.query(TestTypes, (t) => t.id(\"eq\", obj.id));\n  return await DataStore.save(\n    TestTypes.copyOf(items[0], (updated) => {\n      updated.targetRanges = obj.targetRanges;\n    })\n  );\n};\n\nconst updateTestFalsePositive = async () => {\n  const items = await DataStore.query(Test, (t) => t.sequenceNo(\"eq\", 22923));\n  if (items.length > 0) {\n    return await DataStore.save(\n      Test.copyOf(items[0], (updated) => {\n        updated.isFalsePositive = false;\n      })\n    );\n  }\n};\n\nconst findTestsByClient = async (clientID) => {\n  const models = await DataStore.query(Test, (test) => test.clientID(\"eq\", clientID).result(\"ne\", \"Expired\"));\n  // console.log(models);\n  return models;\n};\n\nconst findTestsBySite = async (siteID) => {\n  const models = await DataStore.query(Test, (test) => test.siteID(\"eq\", siteID).result(\"ne\", \"Expired\"));\n  return models;\n};\n\nconst findTestsByLab = async (labID) => {\n  const models = await DataStore.query(Test, (test) => test.labID(\"eq\", labID).result(\"ne\", \"Expired\"));\n  return models;\n};\n\nconst releaseTest = async (test) => {\n  const model = await findTestByID(test.id);\n  try {\n    await DataStore.save(\n      Test.copyOf(model, (updated) => {\n        updated.status = \"Processed\";\n      })\n    );\n    return true;\n  } catch (err) {\n    return false;\n  }\n};\n\nconst setFalsePositiveTest = async (id) => {\n  const model = await findTestByID(id);\n  try {\n    await DataStore.save(\n      Test.copyOf(model, (updated) => {\n        updated.status = \"Processed\";\n        updated.isFalsePositive = true;\n      })\n    );\n    return true;\n  } catch (err) {\n    return false;\n  }\n};\n\nconst changeBatchStatusToProcessing = async (tests) => {\n  const processingTests = tests.filter((test) => test.status === \"Sent\" || test.status === \"New\");\n  let ttl = processingTests.length;\n  for (let i = 0; i < ttl; i++) {\n    const test = processingTests[i];\n    const model = await findTestByID(test.id);\n    await DataStore.save(\n      Test.copyOf(model, (updated) => {\n        updated.status = \"Processing\";\n      })\n    );\n  }\n};\n\nconst fetchAllUsersInGroup = async (groupName) => {\n  const path = \"/listUsersInGroup\";\n  let NextToken = null;\n  let users = [];\n  try {\n    do {\n      const myInit = {\n        queryStringParameters: {\n          groupname: groupName,\n          limit: 60,\n          token: NextToken,\n        },\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n        },\n      };\n      const models = await API.get(apiName, path, myInit);\n      NextToken = models.NextToken || null;\n      users = users.concat(models.Users);\n    } while (NextToken);\n    return users;\n  } catch (e) {\n    console.log(\"Error getting users:\", e);\n  }\n};\nconst restoreTests = async (ids) => {\n  console.log(\"[restoreTests]\");\n  let path = \"/restoreTests\";\n  let params = {\n    body: {\n      ids: ids,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n  const models = await API.post(apiName, path, params);\n  return models.errorIds;\n};\n\nconst fetchAllCrewMembers = async (groupName, NextToken) => {\n  const path = \"/listUsersInGroup\";\n  let users = [];\n  const myInit = {\n    queryStringParameters: {\n      groupname: groupName,\n      limit: 60,\n      token: NextToken,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n  const models = await API.get(apiName, path, myInit);\n  return models;\n};\n\nconst fetchAllEmployees = async (phone) => {\n  const models = await DataStore.query(Employee, (test) => test.phone_number(\"eq\", phone));\n  return models;\n};\n\nconst fetchUsersInGroup = async (groupName) => {\n  const path = \"/listUsersInGroup\";\n  try {\n    const myInit = {\n      queryStringParameters: {\n        groupname: groupName,\n        limit: 60,\n      },\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n    };\n    const models = await API.get(apiName, path, myInit);\n\n    return models.Users;\n  } catch (e) {\n    console.log(\"Error getting users:\", e);\n  }\n};\n\nconst fetchAllUsers = async (filter, NextToken) => {\n  let path = \"/listUsers\";\n  let params = {\n    queryStringParameters: {\n      limit: 60,\n      filter: filter,\n      token: NextToken,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n  const models = await API.get(apiName, path, params);\n  return models;\n};\n\nconst changeUserRole = async (prevRole, newRole, username) => {\n  console.log(prevRole, newRole, username);\n  let path = \"/removeUserFromGroup\";\n  let prevRoleAlias;\n  if (prevRole === \"Crew\") {\n    prevRoleAlias = \"Employee\";\n  } else if (prevRole === \"Health & Safety\") {\n    prevRoleAlias = \"Employer\";\n  } else {\n    prevRoleAlias = prevRole;\n  }\n  let params = {\n    body: {\n      username: username,\n      groupname: prevRoleAlias + \"s\",\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    const roleRemoval = await API.post(apiName, path, params);\n    path = \"/addUserToGroup\";\n    params.body[\"groupname\"] = newRole + \"s\";\n    const roleChange = await API.post(apiName, path, params);\n    // console.log(\"Changing role\", roleRemoval, roleChange);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Unable to change user role\");\n  }\n};\n\nconst addUserToGroup = async (newRole, username) => {\n  let params = {\n    body: {\n      username: username,\n      groupname: newRole + \"s\",\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    const path = \"/addUserToGroup\";\n    const roleChange = await API.post(apiName, path, params);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Unable to Add user role\");\n  }\n};\n\nconst confirmUserSignUp = async (username) => {\n  console.log(username);\n  const path = \"/confirmUserSignUp\";\n  try {\n    const params = {\n      body: {\n        username: username,\n      },\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n    };\n    const done = await API.post(apiName, path, params);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Fail to confirm user\");\n  }\n};\n\nconst updateUserInfo = async (user) => {\n  console.log(\"[update_info]\", user);\n  const path = \"/updateUserInfo\";\n  let note = \"\";\n  let connectedID = \"\";\n  if (user.show) {\n    note = user.show.label;\n    connectedID = user.show.id;\n  } else if (user.lab) {\n    note = user.lab.label;\n    connectedID = user.lab.id;\n  } else if (user.client) {\n    note = user.client.label;\n  } else if (user.role === \"Admin\" || user.role === \"Tester\") note = \"System\";\n  else note = \"\";\n\n  try {\n    const infoUpdated = await callAmplifyAPI(path, {\n      username: user.username,\n      email: user.email,\n      firstName: user.firstName,\n      lastName: user.lastName,\n      note: note,\n      clientID: user.client ? user.client.id : \"\",\n      connectedID: connectedID,\n    });\n    console.log(\"[update_info]\", infoUpdated);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Unable to update user info\");\n  }\n};\n\nconst updateUserInfoV1 = async (user, rolesData, roles) => {\n  const path = \"/updateUserInfo\";\n  let note = \"\";\n  let noteArr = [];\n  let labID = user?.labID;\n  let labPrivilege = user?.labPrivilege;\n\n  if (rolesData.includes(HEALTH_AND_SAFTEY) && user.show) noteArr.push(user.show.label);\n  if (rolesData.includes(\"Lab\") && user.lab) noteArr.push(user.lab.label);\n  if (rolesData.includes(\"Client\") && user.client) noteArr.push(user.client.label);\n  if (rolesData.includes(\"Admin\") || rolesData.includes(\"Tester\")) noteArr.push(\"System\");\n\n  if (noteArr.length > 0) {\n    if (noteArr.length == \"1\") note = noteArr[0];\n    else note = noteArr.join(\",\");\n  }\n\n  let connectedID = \"\";\n  if (user.role === USER_ROLE_TYPE.Lab || user.role === USER_ROLE_TYPE.LabTech) {\n    connectedID = user.lab.id;\n  } else if (user.role === HEALTH_AND_SAFTEY) {\n    connectedID = user.show.id;\n  }\n  if (user.lab && user.lab.appPackage) {\n    labPrivilege = \"whiteLabelUser\";\n    labID = user.lab.appPackage;\n  }\n\n  if (labID && labID !== undefined && !labPrivilege) {\n    labPrivilege = \"whiteLabelUser\";\n  }\n\n  if (labID && !rolesData.includes(\"Lab\") && !rolesData.includes(\"Tester\")) {\n    labID = \"\";\n    labPrivilege = \"\";\n  }\n\n  let clientID = user.client ? user.client.id : \"\";\n\n  if (CONFIG.isWhiteLabel) {\n    connectedID = CONFIG.clientID;\n    labID = CONFIG.whiteLabelID;\n    clientID = CONFIG.clientID;\n  }\n\n  try {\n    const infoUpdated = await callAmplifyAPI(path, {\n      username: user.username || user.userID,\n      email: user.email,\n      firstName: user.firstName,\n      lastName: user.lastName,\n      note: user.associated || note,\n      clientID: clientID,\n      connectedID: connectedID,\n      roles: roles,\n      labPrivilege,\n      labID,\n      phone_number: user.phone_number,\n      userRole: `${user.role === HEALTH_AND_SAFTEY ? \"Employer\" : user.role}`,\n      status: user?.status || \"Confirmed\",\n      systemUser: user.systemUser,\n      is2FaEnabled: user?.is2FaEnabled ? \"y\" : \"n\",\n      userPermission: JSON.stringify(user.userPermission),\n      provider: user.provider,\n    });\n    return true;\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n  }\n  return false;\n};\n\nconst updateUserInfoV2 = async (user) => {\n  const path = \"/updateUserInfo\";\n  let labID = user?.lab?.id;\n  let labPrivilege = user?.labPrivilege;\n\n  let connectedID = \"\";\n  if (user.role === USER_ROLE_TYPE.Lab || user.role === USER_ROLE_TYPE.LabTech) {\n    connectedID = user.lab.id;\n  } else if (user.role === HEALTH_AND_SAFTEY) {\n    connectedID = user.show.id;\n  }\n  if (user.lab && user.lab.appPackage) {\n    labPrivilege = \"whiteLabelUser\";\n  }\n\n  if (labID && labID !== undefined && !labPrivilege) {\n    labPrivilege = \"whiteLabelUser\";\n  }\n\n  if (!labID) {\n    labID = \"\";\n    labPrivilege = \"\";\n  }\n\n  try {\n    const infoUpdated = await callAmplifyAPI(path, {\n      username: user.username || user.userID,\n      email: user.email,\n      firstName: user.firstName,\n      lastName: user.lastName,\n      note: user.note,\n      clientID: user.client ? user.client.id : \"\",\n      connectedID: connectedID,\n      roles: user.roles,\n      labPrivilege,\n      labID,\n      phone_number: user.phone_number,\n      userRole: `${user.role === HEALTH_AND_SAFTEY ? \"Employer\" : user.role}`,\n      status: user?.status || \"Confirmed\",\n      systemUser: user.systemUser,\n    });\n    return true;\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Unable to update user info\");\n  }\n  return false;\n};\n\nconst updateUserSecondRole = async (user) => {\n  console.log(\"[updateUserSecondRole]\", user);\n  const path = \"/updateUserSecondRole\";\n\n  const params = {\n    body: {\n      username: user.username,\n      role: user.adRole,\n      connectedID: user.connectedID,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    const infoUpdated = await API.post(apiName, path, params);\n    console.log(\"[update_info]\", infoUpdated);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Unable to update user info\");\n  }\n};\n\nconst updateAssociatedInfo = async (username, note) => {\n  console.log(\"[update_info]\", username, note);\n  const path = \"/updateAssociatedInfo\";\n\n  const params = {\n    body: {\n      username: username,\n      note: note,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    const infoUpdated = await API.post(apiName, path, params);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n  }\n};\n\nconst updateUserPassword = async (username, password) => {\n  console.log(\"[update_user_password_info]\", username, password);\n  const path = \"/updateUserPassword\";\n  const params = {\n    body: {\n      username: username,\n      password: password,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  const infoUpdated = await API.post(apiName, path, params);\n  console.log(\"[update_user_password_info]\", infoUpdated);\n};\n\nconst updatePatientPassword = async (username) => {\n  const path = \"/resetUserPassword\";\n  const params = {\n    body: {\n      id: username,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  return await API.post(apiName, path, params);\n};\nconst verifyOtp = async (otp) => {\n  const path = \"/verifyOtp\";\n\n  return await callAPIPost(path, { code: otp });\n};\n\nconst resendOtp = async () => {\n  const path = \"/reSendOtp\";\n\n  return await callAPIPost(path, {});\n};\n\nconst deleteUser = async (username, id) => {\n  console.log(\"[delete_user_password_info]\", username);\n  const path = \"/deleteUser\";\n  const params = {\n    body: {\n      username: username,\n      id: id,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    await API.post(apiName, path, params);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n  }\n};\n\nconst sendSMSNotification = async (phoneNumber, message) => {\n  try {\n    const notification = await axios.post(AWS_ENDPOINT + \"/notification\", {\n      phone_number: parseInt(phoneNumber.replace(/\\D/g, \"\")),\n      message: message,\n    });\n    return notification;\n  } catch (error) {\n    console.log(error);\n  }\n};\nconst updateClientsHippa = async (id, newHippa, fileName) => {\n  const client = await DataStore.query(Client, (client) => client.id(\"eq\", id));\n  await DataStore.save(\n    Client.copyOf(client[0], (updated) => {\n      updated.hippa = newHippa;\n      updated.hippaFile = fileName || \"\";\n    })\n  );\n};\nconst updateSiteHippa = async (id, newHippa, fileName) => {\n  const site = await DataStore.query(Site, (site) => site.id(\"eq\", id));\n  await DataStore.save(\n    Site.copyOf(site[0], (updated) => {\n      updated.hippa = newHippa;\n      updated.hippaFile = fileName || \"\";\n    })\n  );\n};\nconst emptySiteUpdateStatus = async () => {\n  const client = await DataStore.query(Client, (client) => client.id(\"eq\", CONFIG.clientID));\n  await DataStore.save(\n    Client.copyOf(client[0], (updated) => {\n      updated.uploadFileStatus = null;\n    })\n  );\n};\n\nconst updateClient = async (newClient) => {\n  const client = await DataStore.query(Client, (client) => client.id(\"eq\", newClient.id));\n  await DataStore.save(\n    Client.copyOf(client[0], (updated) => {\n      updated.name = newClient.name;\n      updated.contact_name = newClient.contact;\n      updated.phone_number = newClient.phone;\n      updated.fax_number = newClient.fax_number;\n      updated.contact_email = newClient.email;\n      updated.resultType = newClient.resultType;\n      updated.showOnSummaryScreen = newClient.showOnSummaryScreen;\n      updated.whiteLabel = newClient.whiteLabel;\n      updated.whiteLabelPackage = newClient.whiteLabelPackage;\n      updated.isArchive = newClient.isArchive;\n      updated.street = newClient.street;\n      updated.city = newClient.city;\n      updated.state = newClient.state;\n      updated.zipcode = newClient.zipcode;\n      updated.setting = newClient?.setting || client?.setting;\n      // updated.brmSetting = { appID : 'nz4ocewahrhpbfdnja6uethcvq', clientID: 'd813c694-ea26-4080-b34f-8686b9694ed3'}\n    })\n  );\n};\n\nconst updateProviderClient = async (pId, cId) => {\n  return await callAmplifyAPI(\"/providers/link\", { id: pId, cid: cId });\n};\n\nconst updateClientResultTypes = async (newClient) => {\n  const client = await DataStore.query(Client, (client) => client.id(\"eq\", newClient.id));\n  await DataStore.save(\n    Client.copyOf(client[0], (updated) => {\n      updated.resultTypes = newClient.resultTypes;\n    })\n  );\n};\n\nconst updateSite = async (newSite, loginUser) => {\n  const site = await DataStore.query(Site, (site) => site.id(\"eq\", newSite.id));\n\n  await DataStore.save(\n    Site.copyOf(site[0], (updated) => {\n      updated.name = newSite.name;\n      updated.clientID = newSite.clientID;\n      updated.contactName = newSite.contactName;\n      updated.contact_name = newSite.contact || newSite.contact_name || null;\n      updated.phone_number = newSite.phone || newSite.phone_number || null;\n      updated.contact_phone = newSite.contact_phone || null;\n      updated.email = newSite.email || null;\n      updated.contact_email = newSite.contact_email || null;\n      updated.antigen = newSite.antigen;\n      updated.automateTestType = newSite.automateTestType;\n      updated.insurance_required = newSite.insurance_required;\n      updated.sendInsuranceCard = newSite.sendInsuranceCard;\n      updated.resetTestDay = newSite.resetTestDay;\n      updated.startDate = newSite.startDate;\n      updated.endDate = newSite.endDate;\n      updated.orderKitDate = newSite.orderKitDate ? moment(newSite.orderKitDate).toISOString() : null;\n      (updated.orderKitType = newSite.orderKitType), (updated.enableShipment = newSite.enableShipment);\n      updated.showOnSummaryScreen = newSite.showOnSummaryScreen;\n      updated.messageTested = newSite.messageTested;\n      updated.messageResulted = newSite.messageResulted;\n      updated.messagePositive = newSite.messagePositive;\n      updated.isArchive = newSite.isArchive;\n      updated.isActive = newSite.isActive;\n      updated.vaccinationCard = newSite.vaccinationCard;\n      updated.admit = newSite.admit;\n      updated.externalTest = newSite.externalTest;\n      updated.externalTestAdmit = newSite.externalTestAdmit;\n      updated.externalTestType = newSite.externalTestType;\n      updated.patternTesting = newSite.patternTesting;\n      updated.patternHippa = newSite.patternHippa;\n      updated.preRegistration = newSite.preRegistration;\n      updated.orderQuantity = newSite.orderQuantity;\n      updated.messageReTest = newSite.messageReTest ? JSON.stringify(newSite.messageReTest) : null;\n      updated.isHRPR = newSite.isHRPR;\n      updated.safeCampAdmin = newSite.safeCampAdmin;\n      updated.isPCRCustody = newSite.isPCRCustody;\n      updated.sendIdentification = newSite.sendIdentification;\n      updated.sendExternalRequisition = newSite.sendExternalRequisition;\n      updated.sendPrescription = newSite.sendPrescription;\n      updated.sendAuthorization = newSite.sendAuthorization;\n      updated.sendOtherDocuments = newSite.sendOtherDocuments;\n      updated.isAutoSubmitClaim = newSite.isAutoSubmitClaim;\n      updated.isTesting = newSite.isTesting;\n      updated.setting = newSite.setting;\n      updated.practiceID = newSite.practiceID;\n      updated.street = newSite.street;\n      updated.city = newSite.city;\n      updated.state = newSite.state;\n      updated.zipcode = newSite.zipcode;\n      updated.fax = newSite.fax || null;\n      updated.contact_fax = newSite.contact_fax || null;\n      updated.updatedByName = `${loginUser.firstName} ${loginUser.lastName}`;\n      updated.discount = newSite.discount || 0;\n      updated.commission = newSite.commission || 0;\n      updated.siteType = newSite?.siteType;\n    })\n  );\n\n  await callAmplifyAPIPut(\"/labclient\", { site: { ...newSite } });\n  return site;\n};\n\nconst updateSiteArchive = async (id, isArchive) => {\n  const res = await DataStore.query(Site, (site) => site.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Site.copyOf(res[0], (updated) => {\n      updated.isArchive = isArchive;\n    })\n  );\n  const site = await callAmplifyAPIPut(\"/labclient/archive\", { site: { id, isArchive } });\n  return site;\n};\n\nconst updateLabArchive = async (id, isArchive) => {\n  console.log(\"UPDATING LAB ARCHIVE\", id, isArchive);\n  const res = await DataStore.query(Lab, (lab) => lab.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Lab.copyOf(res[0], (updated) => {\n      updated.isArchive = isArchive;\n    })\n  );\n  return;\n};\n\nconst updateClientArchive = async (id, isArchive) => {\n  console.log(\"UPDATING CLIENT ARCHIVE\", id, isArchive);\n  const res = await DataStore.query(Client, (client) => client.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Client.copyOf(res[0], (updated) => {\n      updated.isArchive = isArchive;\n    })\n  );\n  return;\n};\n\nconst addUserToSite = async (updatedSite, user) => {\n  console.log(\"FROM API\", updatedSite, user);\n  const models = await DataStore.query(Site, (site) => site.id(\"eq\", updatedSite.id));\n  return await DataStore.save(\n    Site.copyOf(models[0], (updated) => {\n      if (updated.show_contacts === null) {\n        updated.show_contacts = [user];\n      } else {\n        if (models[0].show_contacts.indexOf(user) === -1) {\n          updated.show_contacts = [...models[0].show_contacts, user];\n        }\n      }\n    })\n  );\n};\n\nconst removeUserToSite = async (updatedSite, user) => {\n  console.log(\"FROM API\", updatedSite, user);\n  const models = await DataStore.query(Site, (site) => site.id(\"eq\", updatedSite.id));\n  return await DataStore.save(\n    Site.copyOf(models[0], (updated) => {\n      if (updated.show_contacts !== null) {\n        updated.show_contacts = updated.show_contacts.filter((lc) => lc !== user);\n      }\n    })\n  );\n};\n\nconst addUserToLab = async (newLab, user) => {\n  if (newLab) {\n    const lab = await DataStore.query(Lab, (lab) => lab.id(\"eq\", newLab.id));\n    console.log(\"[ADD_USER_TO_LAB]\", lab);\n    try {\n      if (lab.length > 0) {\n        const result = await DataStore.save(\n          Lab.copyOf(lab[0], (updated) => {\n            if (updated.lab_contacts === null) {\n              updated.lab_contacts = [user];\n            } else {\n              if (updated.lab_contacts.indexOf(user) === -1) updated.lab_contacts = [...updated.lab_contacts, user];\n            }\n          })\n        );\n        console.log(\"[ADD_USER_TO_LAB]\", result);\n      }\n    } catch (e) {\n      console.log(\"Error adding user to lab:\", e);\n    }\n  }\n};\n\nconst removeUserToLab = async (prevLab, user) => {\n  if (prevLab) {\n    const lab = await DataStore.query(Lab, (lab) => lab.id(\"eq\", prevLab.id));\n    console.log(\"[REMOVE_USER_TO_LAB]\", lab);\n    try {\n      if (lab.length > 0) {\n        const result = await DataStore.save(\n          Lab.copyOf(lab[0], (updated) => {\n            if (updated.lab_contacts !== null) {\n              updated.lab_contacts = updated.lab_contacts.filter((lc) => lc !== user);\n            }\n          })\n        );\n        console.log(\"[REMOVE_USER_TO_LAB]\", result);\n      }\n    } catch (e) {\n      console.log(\"Error adding user to lab:\", e);\n    }\n  }\n};\n\nconst updateLab = async (newLab) => {\n  console.log(\"IN UPDATE LAB \", newLab);\n  const lab = await DataStore.query(Lab, (lab) => lab.id(\"eq\", newLab.id));\n  return await DataStore.save(\n    Lab.copyOf(lab[0], (updated) => {\n      updated.name = newLab.name;\n      updated.contact_name = newLab.contact;\n      updated.phone_number = newLab.phone;\n      updated.fax_number = newLab.fax_number;\n      updated.contact_email = newLab.email;\n      updated.street = newLab.street;\n      updated.city_state_zip = newLab.city_state_zip;\n      updated.lab_director = newLab.lab_director;\n      updated.clia_number = newLab.clia_number;\n      updated.custom_notes = newLab.custom_notes;\n      updated.referredDoctor = newLab.referredDoctor;\n      updated.testing_notes = newLab.testing_notes;\n      updated.default_antigen = newLab.default_antigen;\n      updated.default_molecular = newLab.default_molecular;\n      updated.default_other = newLab.default_other;\n      updated.default_rapidflu = newLab.default_rapidflu;\n      updated.default_lucira = newLab.default_lucira;\n      updated.tubes_provided = newLab.tubes_provided;\n      updated.sendInsurance = newLab.sendInsurance;\n      updated.logo = newLab.logo;\n      updated.barCodeProvided = newLab.barCodeProvided;\n      updated.barCodeAlertLimit = newLab.barCodeAlertLimit;\n      updated.antigen_notes = newLab.antigen_notes;\n      updated.molecular_notes = newLab.molecular_notes;\n      updated.invalid_notes = newLab.invalid_notes;\n      updated.indeterminate_notes = newLab.indeterminate_notes;\n      updated.other_notes = newLab.other_notes;\n      updated.lucira_notes = newLab.lucira_notes;\n      updated.rapidflu_notes = newLab.rapidflu_notes;\n      updated.showOnSummaryScreen = newLab.showOnSummaryScreen;\n      updated.whiteLabel = newLab.whiteLabel;\n      updated.whiteLabelPackage = newLab.whiteLabelPackage;\n      updated.isArchive = newLab.isArchive;\n      updated.pendingRelease = newLab.pendingRelease;\n    })\n  );\n};\n\nconst updateLabBarCodes = async (barCodeData, id) => {\n  barCodeData.forEach(async (row) => {\n    await DataStore.save(\n      new LencoBarcodes({\n        labID: id,\n        barcode: row.barcode,\n        available: true,\n        isActive: 1,\n      })\n    );\n  });\n};\n\nconst getLabBarCodes = async (id) => {\n  const models = await DataStore.query(LencoBarcodes, (lab) => lab.labID(\"eq\", id).available(\"eq\", true));\n  return models;\n};\n\nconst updateLabLogo = async (id, fileName) => {\n  const lab = await DataStore.query(Lab, (lab) => lab.id(\"eq\", id));\n  return await DataStore.save(\n    Lab.copyOf(lab[0], (updated) => {\n      updated.logo = fileName;\n    })\n  );\n};\n\nconst updateBarCodeAlert = async (val) => {\n  const labs = await DataStore.query(Lab, (lab) => lab.barCodeProvided(\"eq\", true));\n  console.log(\"Labs\", labs, parseInt(val));\n  labs.forEach(async (lab) => {\n    await DataStore.save(\n      Lab.copyOf(lab, (updated) => {\n        updated.barCodeAlertLimit = parseInt(val);\n      })\n    );\n  });\n};\n\nconst resetDefaultLab = async (labID, key) => {\n  const labs = await DataStore.query(Lab, (lab) => lab.id(\"ne\", labID).whiteLabel(\"eq\", false));\n  const ttl = labs.length;\n  for (let i = 0; i < ttl; i++) {\n    await DataStore.save(\n      Lab.copyOf(labs[i], (updated) => {\n        updated[`${key}`] = false;\n      })\n    );\n  }\n};\n\n// const AWS = require('aws-sdk');\n// AWS.config.update({\n//   accessKeyId: process.env.AWS_ACCESS_KEY,\n\n// })\n\nconst patientUpdateAPI = async (param) => {\n  const path = \"/employees/update\";\n  try {\n    delete param.Tests;\n    const params = {\n      body: {\n        employee: param,\n        clientID: CONFIG.clientID,\n      },\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n    };\n    const res = await API.post(apiName, path, params);\n    return res;\n  } catch (e) {\n    console.log(\"Error :\", e);\n  }\n};\n\nconst buildAWSDate = (dobFromID) => {\n  const awsdob = [];\n  awsdob.push(dobFromID.substring(4));\n  awsdob.push(dobFromID.substring(0, 2));\n  awsdob.push(dobFromID.substring(2, 4));\n  return awsdob.join(\"-\");\n};\n\nconst findHippaConsent = async (employeeID, showId) => {\n  const models = await DataStore.query(TestConsent, (test) => test.employeeID(\"eq\", employeeID).siteID(\"eq\", showId));\n  return models;\n};\n\nconst deleteWrongTest = async (id) => {\n  await DataStore.delete(Test, (test) => test.id(\"eq\", id));\n};\n\nconst updateDemographics = (c, crew) => {\n  const demos = { ...c.employee_demographics };\n  demos.firstName = crew.firstName;\n  demos.lastName = crew.lastName;\n  demos.email = crew.email;\n  return demos;\n};\n\nconst updateCrewInfo = async (crew) => {\n  const res = await DataStore.query(Test, (test) => test.employeeID(\"eq\", crew.employeeID));\n  res.forEach(async (c) => {\n    await DataStore.save(\n      Test.copyOf(c, (updated) => {\n        updated.employee_demographics = updateDemographics(c, crew);\n        updated.email = crew.email;\n      })\n    );\n  });\n\n  const employee = await DataStore.query(Employee, (test) => test.id(\"eq\", crew.employeeID));\n  employee.forEach(async (e) => {\n    await DataStore.save(\n      Test.copyOf(e, (updated) => {\n        updated.first = crew.firstName;\n        updated.last = crew.lastName;\n        updated.email = crew.email;\n      })\n    );\n  });\n\n  console.log(\"Data\", crew, employee);\n};\nconst getTestByIdGraphQl = async (id) => {\n  let test = await graphQLApi.getTestByIdGQL(id);\n  return test;\n};\n\nconst getTestBySequenceGraphQl = async (sequenceNo) => {\n  let test = await graphQLApi.getTestByIdGQL(sequenceNo);\n  return test;\n};\nconst updateCompleteCrewInfoV1 = async (crew) => {\n  try {\n    const demographics = crew.employee_demographics;\n    console.log(\"crew\", crew);\n    let TestData = {\n      appVer: crew?.appVer || \"0\",\n      barcode: crew?.barcode || \"\",\n      baseSiteID: crew?.baseSiteID || \"\",\n      beenTimed: crew?.beenTimed || false,\n      clientID: crew?.clientID || \"\",\n      clientName: crew?.clientName || \"\",\n      createSource: crew?.createSource ? crew.createSource : \"web\",\n      createdAt: moment(crew?.createdAt).utc().toISOString() || moment().utc().toISOString(),\n      createdBy: crew?.createdBy || \"\",\n      done: crew?.done || false,\n      email: demographics.email,\n      emailSend: crew?.emailSend || false,\n      employeeID: crew.employeeID,\n      expired: crew?.expired || false,\n      employee_demographics: JSON.stringify(crew.employee_demographics),\n      id: crew.id,\n      invalidResultStatus: crew?.invalidResultStatus || 0,\n      isAntigen: crew?.isAntigen || false,\n      isFalsePositive: crew?.isFalsePositive || false,\n      isLucira: crew?.isLucira || false,\n      labID: crew?.labID || \"\",\n      labName: crew?.labName || \"\",\n      labelPrinted: crew?.labelPrinted || 0,\n      owner: crew?.owner || \"\",\n      patternTestAnswer: crew?.patternTestAnswer || null,\n      pcrStatus: crew?.pcrStatus || \"new\",\n      phoneNumber: demographics.phoneNumber,\n      referenceID: crew?.referenceID || \"\",\n      result: crew?.result || \"\",\n      siteID: crew?.siteID || \"\",\n      schrID: crew?.schrID || \"\",\n      schrTestID: crew?.schrTestID || \"\",\n      sequenceNo: crew?.sequenceNo,\n      site_name: crew?.site_name || \"\",\n      sr_no: crew?.sr_no || \"0\",\n      startTimeStamp: crew?.startTimeStamp || \"\",\n      status: crew?.status || \"\",\n      submittedBy: crew?.createdBy,\n      submittedByName: crew?.submittedByName,\n      test_number: crew?.test_number || 0,\n      test_type: crew?.test_type || \"\",\n      ...(crew?.testTypeID && { testTypeID: crew?.testTypeID }),\n      testerPhone: crew?.testerPhone || \"\",\n      tester_name: crew?.tester_name || \"\",\n      timerStatus: crew?.timerStatus || \"\",\n      timezone: crew.timezone || SYSTEM_TIME_ZONE,\n      _version: crew._version,\n    };\n    if (crew?.resultDate) {\n      Object.assign(TestData, {\n        resultDate: crew.resultDate,\n      });\n    }\n    const updatedTest = await API.graphql({\n      query: mutations.updateTest,\n      variables: { input: TestData },\n    });\n    const employeeData = {\n      id: crew.employeeID,\n      first: demographics.firstName,\n      last: demographics.lastName,\n      dob: FormatAWSDate(demographics.dob),\n      id_number: demographics.idNumber,\n      email: demographics.email,\n      phone_number: demographics.phoneNumber,\n      country: demographics?.country || \"\",\n      countryCode: demographics.countryCode,\n      insurance_name: demographics.insurance_name,\n      insurance_number: demographics.insurance_number,\n      street: demographics.street,\n      street2: demographics.street2,\n      city: demographics.city,\n      state: demographics.state,\n      zip: demographics.zip,\n      autoRelease: demographics.autoRelease == true || demographics.autoRelease == \"1\" ? \"1\" : \"0\",\n      isVaccinated: demographics?.isVaccinated || false,\n      whiteGlove: demographics?.whiteGlove || false,\n      vaccinationCardImage: demographics.vaccinationCardImage,\n      externalTestImage: demographics.externalTestImage,\n      _version: demographics._version,\n      updatedBy: demographics.updatedBy,\n      updatedByName: demographics.updatedByName,\n    };\n    if (demographics._version) {\n      await API.graphql({ query: mutations.updateEmployee, variables: { input: employeeData } });\n    }\n    return updatedTest.data?.updateTest;\n  } catch (error) {\n    console.log(\"Error in Updating \", error);\n  }\n};\n\nconst updateCompleteCrewInfo = async (props) => {\n  const { crew, user, isConfirm, chngObj, prevTestType } = props;\n  const demographics = crew.employee_demographics;\n  const testDemo = formatTestDemo({ ...crew.employee_demographics });\n\n  for (const demo in testDemo) {\n    if (testDemo[demo] === undefined) testDemo[demo] = \"\";\n  }\n\n  const TestData = {\n    id: crew.id,\n    barcode: crew.barcode,\n    ...(crew.resultDateTime && { resultDateTime: moment(crew.resultDateTime).utc().toISOString() }),\n    ...(crew.clientID && { clientID: crew.clientID }),\n    ...(crew.clientName && { clientName: crew.clientName }),\n    ...(crew.siteID && { siteID: crew.siteID }),\n    ...(crew.site_name && { site_name: crew.site_name }),\n    ...(crew.labID && { labID: crew.labID }),\n    ...(crew.labName && { labName: crew.labName }),\n    test_type: crew.test_type,\n    ...(crew.result && { result: crew.result }),\n    status: crew.status,\n    ...(crew.labelPrinted && { labelPrinted: crew.labelPrinted }),\n    ...(crew.tester_name && { tester_name: crew.tester_name }),\n    ...(crew.createdBy && { createdBy: crew.createdBy }),\n    ...(crew.testerID && { testerID: crew.testerID }),\n    ...(crew.releaseDate && { releaseDate: moment(crew.releaseDate).utc().toISOString() }),\n    ...(crew.verifiedBy && { verifiedBy: crew.verifiedBy }),\n    ...(crew.verifiedByName && { verifiedByName: crew.verifiedByName }),\n    ...(crew.StampByName && { StampByName: crew.StampByName }),\n    ...(crew.email && { email: crew.email }),\n    ...(crew.phoneNumber && { phoneNumber: crew.phoneNumber }),\n    ...(crew.scanByLabUserID && { scanByLabUserID: crew.scanByLabUserID }),\n    ...(crew.scanByLabUserName && { scanByLabUserName: crew.scanByLabUserName }),\n    ...(crew.testTypeID && { testTypeID: crew.testTypeID }),\n    employee_demographics: JSON.stringify(testDemo),\n    sr_no: isConfirm ? parseSrNoObject(crew.sr_no, crew.barcode, user) : crew.sr_no,\n    createdAt: crew.createdAt,\n    sendToID: crew.sendToID,\n    sendToName: crew.sendToName,\n    _version: crew._version,\n  };\n\n  let updatedTest = null;\n  if (TestData._version) {\n    updatedTest = await API.graphql({\n      query: mutations.updateTest,\n      variables: { input: TestData },\n    });\n  }\n  const employeeData = {\n    id: crew.employeeID,\n    first: demographics.firstName,\n    last: demographics.lastName,\n    dob: FormatAWSDate(demographics.dob),\n    id_number: demographics.idNumber,\n    email: demographics.email,\n    phone_number: demographics.phoneNumber,\n    country: demographics?.country || \"\",\n    countryCode: demographics.countryCode,\n    insurance_name: demographics.insurance_name,\n    insurance_number: demographics.insurance_number,\n    insuranceCompanyCode: demographics.insuranceCompanyCode,\n    street: demographics.street,\n    street2: demographics.street2,\n    city: demographics.city,\n    state: demographics.state,\n    zip: demographics.zip,\n    county: demographics.county,\n    autoRelease: demographics.autoRelease == true || demographics.autoRelease == \"1\" ? \"1\" : \"0\",\n    isVaccinated: demographics?.isVaccinated || false,\n    employeeType: demographics?.employeeType || \"\",\n    whiteGlove: demographics?.whiteGlove || false,\n    vaccinationCardImage: demographics.vaccinationCardImage,\n    externalTestImage: demographics.externalTestImage,\n    _version: demographics._version,\n    updatedBy: demographics.updatedBy,\n    updatedByName: demographics.updatedByName,\n  };\n  if (demographics._version) {\n    await API.graphql({ query: mutations.updateEmployee, variables: { input: employeeData } });\n  }\n\n  if (prevTestType) {\n    await callAmplifyAPI(\"/orders/tests/change\", {\n      orderID: crew.orderID,\n      prevID: prevTestType,\n      newID: crew.testTypeID,\n    });\n  }\n\n  return updatedTest?.data?.updateTest;\n};\n\nconst updateEmployeeProfile = async (employee) => {\n  console.log(\"updateEmployeeProfile::\", employee);\n  const employeeData = {\n    id: employee.id,\n    first: employee.first,\n    last: employee.last,\n    dob: FormatAWSDate(employee.dob),\n    id_number: employee.id_number,\n    email: employee.email,\n    phone_number: employee.phone_number,\n    profileImage: employee.profileImage,\n    countryCode: employee.countryCode,\n    insurance_number: employee.insurance_number,\n    insurance_name: employee.insurance_name,\n    insuranceDetails: JSON.stringify(employee.insuranceDetails),\n    insuranceCompanyCode: employee.insuranceCompanyCode,\n    medicalNo: employee.medicalNo,\n    primaryCarePhysician: employee.primaryCarePhysician,\n    referringPyhsician: employee.referringPyhsician,\n    renderingProvider: employee.renderingProvider,\n    referringProvider: employee.referringProvider,\n    orderingProvider: employee.orderingProvider,\n    isBooster: employee.isBooster,\n    isVaccinated: employee.isVaccinated,\n    street: employee.street,\n    street2: employee.street2,\n    city: employee.city,\n    state: employee.state,\n    zip: employee.zip,\n    note: employee.note,\n    sendSMS: employee.sendSMS == true || employee.sendSMS == \"1\" ? \"1\" : \"0\",\n    sendEmail: employee.sendEmail == true || employee.sendEmail == \"1\" ? \"1\" : \"0\",\n    autoRelease: employee.autoRelease == true || employee.autoRelease == \"1\" ? \"1\" : \"0\",\n    vaccinationCardImage: employee.vaccinationCardImage,\n    externalTestImage: employee.externalTestImage,\n    _version: employee._version,\n    updatedBy: employee.updatedBy,\n    updatedByName: employee.updatedByName,\n  };\n\n  let updatedCrew = \"\";\n  if (employee._version) {\n    updatedCrew = await API.graphql({\n      query: mutations.updateEmployee,\n      variables: { input: employeeData },\n    });\n  }\n\n  return updatedCrew?.data?.updateEmployee;\n};\n\nconst updateEmployeeRecord = async (employee) => {\n  const dbEmp = await getRecordById(employee.id, \"employee\");\n  console.log(\"dbEmp\", dbEmp);\n  const employeeData = {\n    ...employee,\n    _version: dbEmp[0]?._version,\n  };\n\n  let updatedCrew = \"\";\n  if (dbEmp[0]?._version) {\n    updatedCrew = await API.graphql({\n      query: mutations.updateEmployee,\n      variables: { input: employeeData },\n    });\n  }\n\n  return updatedCrew?.data?.updateEmployee;\n};\n\nconst updateTestData = async (test) => {\n  const TestData = {\n    id: test.id,\n    createdAt: test.createdAt,\n    employee_demographics: JSON.stringify(test.employee_demographics),\n    tester_name: test.tester_name,\n    testerPhone: test.testerPhone,\n    createdBy: test.createdBy,\n    _version: test._version,\n  };\n  const updatedTest = await API.graphql({\n    query: mutations.updateTest,\n    variables: { input: TestData },\n  });\n  return updatedTest.data?.updateTest;\n};\n\nconst updateTestingGQL = async (tests) => {\n  const response = [];\n  for (const test of tests) {\n    const items = await getRecordById(test.id, \"test\");\n    const dbTest = items[0];\n    const srNo = JSON.parse(dbTest.sr_no);\n\n    srNo[0].date = moment(test.createdAt).add(30, \"minutes\").toISOString();\n\n    const TestData = {\n      id: dbTest.id,\n      scanByLabUserName: dbTest.tester_name,\n      sr_no: JSON.stringify(srNo),\n      scanByLabUserID: dbTest.createdBy,\n      _version: dbTest._version,\n    };\n    const updatedTest = await API.graphql({\n      query: mutations.updateTest,\n      variables: { input: TestData },\n    });\n    response.push(updatedTest.data?.updateTest);\n  }\n};\n\nconst updateTestFromOrder = async (dbEmp = {}) => {\n  try {\n    const demo = dbEmp.employee_demographics;\n    const [countryCode, phoneNo] = getPhoneNo(demo.phoneNumber, demo.countryCode);\n    const test = {\n      clientName: dbEmp.clientName,\n      email: dbEmp.email,\n      employee_demographics: JSON.stringify({ ...demo, countryCode, phoneNumber: phoneNo }),\n      isAntigen: dbEmp?.test_type === \"Antigen\" ? true : false,\n      labID: dbEmp.labID,\n      labName: dbEmp.labName,\n      phoneNumber: phoneNo,\n      baseSiteID: dbEmp.siteID,\n      siteID: dbEmp.siteID,\n      site_name: dbEmp.site_name,\n      test_type: dbEmp.test_type,\n      tester_name: dbEmp.tester_name,\n    };\n\n    await updateTest(dbEmp.testID, test);\n  } catch (err) {\n    console.log(\"Error:-\", err);\n  }\n};\n\nconst parseSrNoObject = (sr_no, barcode, user) => {\n  const newObj = { accession_no: barcode, date: moment().toISOString(), name: user.name };\n  let arr = [];\n  if (sr_no == \"0\") {\n    arr.push(newObj);\n  } else {\n    try {\n      arr = JSON.parse(sr_no);\n    } catch (er) {\n      console.log(\"Parser Error\");\n    }\n    arr.push(newObj);\n  }\n  return JSON.stringify(arr);\n};\n\nconst updateBarcodeNumber = async (test, appContext) => {\n  const items = await getRecordById(test.id, \"test\");\n\n  const dbTest = items[0];\n  const TestData = {\n    id: test.id,\n    barcode: test.barcode,\n    labelPrinted: 2,\n    sr_no: parseSrNoObject(test.sr_no, test.barcode, appContext.user),\n    _version: dbTest._version,\n  };\n\n  const updatedTest = await API.graphql({\n    query: mutations.updateTest,\n    variables: { input: TestData },\n  });\n\n  await addTestLogs({\n    ids: [{ id: dbTest.id, sequenceNo: dbTest.sequenceNo }],\n    oldValue: dbTest.barcode,\n    newValue: test.barcode,\n    userID: appContext.user?.sub,\n    userName: appContext.user?.name,\n    slug: \"AccessionNoChanged\",\n  });\n  return updatedTest.data?.updateTest;\n};\n\nconst updateTestRecord = async (test) => {\n  const TestData = {\n    ...test,\n  };\n\n  const updatedTest = await API.graphql({\n    query: mutations.updateTest,\n    variables: { input: TestData },\n  });\n\n  return updatedTest.data?.updateTest;\n};\n\nconst updateTestDataV1 = async (crew) => {\n  console.log(\"crew:::\", crew);\n\n  try {\n    const demographics = crew.employee_demographics;\n    let TestData = {\n      barcode: crew?.barcode || \"\",\n      clientID: crew?.clientID || \"\",\n      clientName: crew?.clientName || \"\",\n      createdAt: moment(crew?.createdAt).utc().toISOString() || moment().utc().toISOString(),\n      createdBy: crew?.createdBy || \"\",\n      email: demographics.email,\n      employeeID: crew.employeeID,\n      employee_demographics: JSON.stringify(crew.employee_demographics),\n      id: crew.id,\n      isLucira: crew?.isLucira || false,\n      labID: crew?.labID || \"\",\n      labName: crew?.labName || \"\",\n      phoneNumber: demographics.phoneNumber,\n      result: crew?.result || \"\",\n      siteID: crew?.siteID || \"\",\n      sequenceNo: crew?.sequenceNo,\n      site_name: crew?.site_name || \"\",\n      status: crew?.status || \"\",\n      test_type: crew?.test_type || \"\",\n      testerPhone: crew?.testerPhone || \"\",\n      tester_name: crew?.tester_name || \"\",\n      _version: crew._version,\n    };\n    if (crew?.resultDate) {\n      Object.assign(TestData, {\n        resultDate: crew.resultDate,\n      });\n    }\n    const updatedTest = await API.graphql({\n      query: mutations.updateTest,\n      variables: { input: TestData },\n    });\n    console.log(\"update Test::::\", updatedTest);\n    const employeeData = {\n      id: crew.employeeID,\n      first: demographics.firstName,\n      last: demographics.lastName,\n      dob: FormatAWSDate(demographics.dob),\n      id_number: demographics.idNumber,\n      email: demographics.email,\n      phone_number: demographics.phoneNumber,\n      country: demographics?.country || \"\",\n      countryCode: demographics.countryCode,\n      insurance_name: demographics.insurance_name,\n      insurance_number: demographics.insurance_number,\n      street: demographics.street,\n      street2: demographics.street2,\n      city: demographics.city,\n      state: demographics.state,\n      zip: demographics.zip,\n      autoRelease: demographics.autoRelease == true || demographics.autoRelease == \"1\" ? \"1\" : \"0\",\n      isVaccinated: demographics?.isVaccinated || false,\n      whiteGlove: demographics?.whiteGlove || false,\n      vaccinationCardImage: demographics.vaccinationCardImage,\n      externalTestImage: demographics.externalTestImage,\n      _version: demographics._version,\n      updatedBy: demographics.updatedBy,\n      updatedByName: demographics.updatedByName,\n    };\n    if (demographics._version) {\n      await API.graphql({ query: mutations.updateEmployee, variables: { input: employeeData } });\n    }\n    return updatedTest.data?.updateTest;\n  } catch (error) {\n    console.log(\"Error in Updating \", error);\n  }\n};\n\nconst searchProviderAPI = async (provider) => {\n  let path = \"/searchProvider\";\n  let params = {\n    body: {\n      ...(!provider.npi ? { first_name: provider.firstName, last_name: provider.lastName } : {}),\n      npi: provider.npi,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    const models = await API.post(apiName, path, params);\n\n    return models?.data || [];\n  } catch (e) {\n    console.log(\"Error:\", e);\n    return [];\n  }\n};\n\nconst sendEmailToCrew = async (data) => {\n  console.log(\"[sendEmailToCrew]\", data);\n  // const path = \"/sendEmailToCrew\";\n  const path = \"/sendEmailAttachement\";\n\n  const params = {\n    body: {\n      data: data,\n      isPortalCall: true,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  const infoUpdated = await API.post(apiName, path, params);\n};\n\nconst sendInvitationEmail = async (data) => {\n  console.log(\"[sendGeneralEmail]\", data);\n  // const path = \"/sendEmailToCrew\";\n  const path = \"/sendGeneralEmail\";\n\n  const params = {\n    body: {\n      data: data,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  const infoUpdated = await API.post(apiName, path, params);\n};\n\nconst getTestAutoNumber = async () => {\n  console.log(\"[getAutoNumber]\");\n  const path = \"/getAutoNumber\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {},\n  };\n\n  const counterData = await API.post(apiName, path, params);\n  console.log(\"Counter Api\", counterData);\n};\n\nconst getTestFromAPi = async (test) => {\n  const path = `/test/${test.id}`;\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  const res = await API.get(apiName, path, params);\n  console.log(\"res\", res);\n};\n\nconst getTestFromAPiQueryString = async (test) => {\n  const path = `/test`;\n\n  const params = {\n    queryStringParameters: {\n      id: test.id,\n      barcode: test.barcode,\n      sequenceNo: test.sequenceNo,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  const res = await API.get(apiName, path, params);\n  console.log(\"res\", res);\n  if (res && res.data) return res.data;\n  return null;\n};\nconst fetchTestFromByClientID = async (test) => {\n  const path = `/fetchTest`;\n\n  const params = {\n    body: {\n      id: test.id,\n      barcode: test.barcode,\n      sequenceNo: test.sequenceNo,\n      clientID: test.clientID, // Mandatory with one above any key\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  const res = await API.post(apiName, path, params);\n  console.log(\"res\", res);\n  if (res && res.data) return res.data;\n  return null;\n};\n\nconst getPreRegisterData = async (data, env, type, countryCode, siteID) => {\n  const path = \"/searchEmployee\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      env: env,\n      phone_number: data,\n      scanType: \"Search\",\n      countryCode,\n      type,\n      timezone: new Date().getTimezoneOffset(),\n      clientID: CONFIG.clientID,\n      siteID: siteID,\n      ...(!CONFIG.siteID && { onlyEmployee: \"y\" }),\n    },\n  };\n  const counterData = await API.post(apiName, path, params);\n\n  return counterData.Items;\n};\n\nconst deletePreRegistration = async (id) => {\n  console.log(\"[deletePreRegistration]\");\n  const path = \"/deletePreRegistration\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: id,\n    },\n  };\n\n  await API.post(apiName, path, params);\n};\n\nconst getTestListFromApi = async (siteid) => {\n  console.log(\"[testList]\");\n  const path = \"/testList\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      siteID: siteid,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  if (apiRes.Items) {\n    return apiRes.Items.filter((f) => f._delete !== true && f.result);\n  }\n  return [];\n};\n\nconst getTestLogs = async (id) => {\n  const apiRes = await callAmplifyAPI(\"/getTestLogs\", { id });\n\n  return apiRes.data;\n};\n\nconst getOrderLogs = async (id, testID) => {\n  const apiRes = await callAmplifyAPI(\"/orders/logs\", {\n    id: id,\n    testID,\n  });\n  return apiRes.data || [];\n};\nconst getLogs = async (id) => {\n  const apiRes = await callAmplifyAPI(\"/logs\", {\n    id: id,\n  });\n  return apiRes.data || [];\n};\n\nconst getPatientLogs = async (id) => {\n  const apiRes = await callAmplifyAPI(\"/employees/logs\", {\n    id: id,\n  });\n\n  return apiRes || [];\n};\n\nconst getAppTestLogs = async (id) => {\n  const path = \"/getAppTestLogs\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: id,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\nconst getAdminTestList = async (id) => {\n  const path = \"/adminTestList\";\n  let items = [];\n  let nextPage = null;\n  do {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: {\n        siteID: id,\n        siteKey: \"employeeID\",\n        siteIndex: \"byEmployee\",\n        nextPage: nextPage,\n      },\n    };\n    const apiRes = await API.post(apiName, path, params);\n    nextPage = apiRes.LastEvaluatedKey ?? null;\n    items = items.concat(apiRes.Items);\n  } while (nextPage);\n  return items;\n};\nconst getRecordById = async (id, type) => {\n  const path = \"/getRecordById\";\n  let items = [];\n  let nextPage = null;\n  do {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: {\n        id: id,\n        name: type,\n      },\n    };\n    const apiRes = await API.post(apiName, path, params);\n    nextPage = apiRes.data?.LastEvaluatedKey ?? null;\n    items = items.concat(apiRes.data?.Item);\n  } while (nextPage);\n  return items;\n};\nconst getPRRecordById = async (id, phone) => {\n  const path = \"/getPRRecordById\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: id,\n      phone_number: phone,\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n\n  return apiRes.data;\n};\n\nconst getShowPreRegistration = async (id) => {\n  const path = \"/getShowPreRegistration\";\n  let items = [];\n  let nextPage = null;\n  const token = (await Auth.currentSession()).getAccessToken().getJwtToken();\n\n  do {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: token,\n      },\n      body: {\n        id: id,\n        nextPage: nextPage,\n      },\n    };\n    const apiRes = await API.post(apiName, path, params);\n    nextPage = apiRes.data.LastEvaluatedKey ?? null;\n    items = items.concat(apiRes.data.Items);\n  } while (nextPage);\n\n  return items;\n};\nconst getExternalTestList = async (id) => {\n  const path = \"/getExternalTestList\";\n  let items = [];\n  let nextPage = null;\n  const token = (await Auth.currentSession()).getAccessToken().getJwtToken();\n\n  do {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: token,\n      },\n      body: {\n        siteID: id,\n        nextPage: nextPage,\n      },\n    };\n    const apiRes = await API.post(apiName, path, params);\n    console.log(\"apiRes\", apiRes);\n    nextPage = null;\n    items = items.concat(apiRes.data);\n  } while (nextPage);\n\n  return items;\n};\n\nconst addTestLogs = async (obj) => {\n  const path = \"/addTestLogs\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      params: obj,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst addLogs = async (obj) => {\n  try {\n    const path = \"/addLogs\";\n    const apiRes = await callAmplifyAPI(path, obj);\n    return apiRes.data;\n  } catch (error) {\n    console.log(error);\n  }\n};\n\nconst addTestAppLogs = async (obj) => {\n  const path = \"/addTestAppLogs\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      data: obj,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst getSettingForApp = async (siteid) => {\n  console.log(\"[testList]\");\n  const path = \"/getSettingForApp\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {},\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes;\n};\n\nconst getTestFromApi = async (id) => {\n  console.log(\"[testDetails]\");\n  const path = \"/adminTestList\";\n  let tests = [];\n  let nextPage = null;\n  const token = (await Auth.currentSession()).getAccessToken().getJwtToken();\n  do {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: token,\n      },\n      body: {\n        siteID: id,\n        siteKey: \"clientID\",\n        siteIndex: \"byClient\",\n        nextPage: nextPage,\n      },\n    };\n    const apiRes = await API.post(apiName, path, params);\n    nextPage = apiRes.LastEvaluatedKey ?? null;\n    tests = tests.concat(apiRes.Items);\n  } while (nextPage);\n  return tests;\n};\n\nconst saveUserPersonalisation = async (userID, personalisationData) => {\n  const path = \"/saveUserPersonalisation\";\n\n  const personalisation =\n    typeof personalisationData === \"string\" ? personalisationData : JSON.stringify(personalisationData);\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      userID: userID,\n      personalisationData: personalisation,\n    },\n  };\n\n  return await API.post(apiName, path, params);\n};\n\nconst getUserPersonalisation = async (userID) => {\n  const path = \"/getUserPersonalisation\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      userID: userID,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst updateEmailStatus = async (id) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Test.copyOf(res[0], (updated) => {\n      updated.emailSend = true;\n    })\n  );\n};\n\nconst updateTestResult = async (id, result, user) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Test.copyOf(res[0], (updated) => {\n      updated.result = RESULT_VALUE[result];\n      updated.status = result === \"positive\" ? \"Pending\" : \"Processed\";\n      updated.timerStatus = result === \"positive\" ? \"Pending\" : \"Processed\";\n      updated.resultDateTime = moment().utc().toISOString();\n      updated.resultDate = moment().utc().format(\"YYYY-MM-DD\");\n      updated.StampBy = user.sub;\n      updated.StampByName = user.name;\n    })\n  );\n};\n\nconst updateSiteStatus = async (id, status) => {\n  const res = await DataStore.query(Site, (site) => site.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Site.copyOf(res[0], (updated) => {\n      updated.status = status;\n    })\n  );\n\n  if (status === 1 && CONFIG.isLive) {\n    await sendInvitationEmail([\n      {\n        email: \"pclarke@othermind.com\",\n        subject: \"Show/Event Approved\",\n        msg: `<p>Hello, <br><br> Your request to create ${res[0].name} has been approved. Please login to the SafeCamp portal to retrieve your url and QR code. <br><br> Thank you</p>`,\n      },\n    ]);\n  }\n};\n\nconst updateTestForTest = async (id) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Test.copyOf(res[0], (updated) => {\n      updated.labOrderDetail = JSON.stringify({ status: \"Created\", message: \"Lab order Created \" });\n    })\n  );\n};\nconst updateTestLabOnly = async (id, labID, user) => {\n  console.log(\"Lab ID\", labID);\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Test.copyOf(res[0], (updated) => {\n      updated.labID = labID.value;\n      updated.labName = labID?.label;\n    })\n  );\n};\n\nconst updateTestLab = async (id, labID, user) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Test.copyOf(res[0], (updated) => {\n      updated.labID = labID.value;\n      updated.labName = labID?.label;\n      updated.status = \"Sent\";\n      updated.submittedBy = user.sub;\n      updated.submittedByName = user.name;\n    })\n  );\n};\n\nconst submitToLab = async (labData, tests) => {\n  const [formattedTests, bucket, batch] = formatTests(labData, tests);\n  try {\n    await Storage.put(`${batch}.csv`, formattedTests, { bucket: bucket });\n  } catch (e) {\n    console.log(\"Error uploading to bucket\", e);\n    return \"Error uploading to bucket\";\n  }\n  return `Successfully submitted to ${labData.name}`;\n};\n\nconst updateTestClientLab = async (id, clientID, siteID) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  res.forEach(async (c) => {\n    await DataStore.save(\n      Test.copyOf(c, (updated) => {\n        updated.clientID = clientID;\n        updated.siteID = siteID;\n      })\n    );\n  });\n};\n\nconst updateTestLabWithResetStatus = async (id, labID) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  res.forEach(async (c) => {\n    await DataStore.save(\n      Test.copyOf(c, (updated) => {\n        updated.result = null;\n        updated.resultDate = null;\n        updated.resultDateTime = null;\n        updated.StampBy = null;\n        updated.StampByName = null;\n        updated.status = \"Sent\";\n        updated.labID = labID;\n        updated.emailSend = false;\n      })\n    );\n  });\n};\n\nconst updateExpiredTestResult = async (id, result, user) => {\n  try {\n    const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n    res.forEach(async (c) => {\n      await DataStore.save(\n        Test.copyOf(c, (updated) => {\n          updated.result = RESULT_VALUE[result];\n          updated.status = result === \"positive\" ? \"Pending\" : \"Processed\";\n          updated.timerStatus = result === \"positive\" ? \"Pending\" : \"Processed\";\n          updated.resultDateTime = moment().utc().toISOString();\n          updated.resultDate = moment().utc().format(\"YYYY-MM-DD\");\n          updated.emailSend = true;\n          updated.expired = false;\n          updated.StampBy = user.sub;\n          updated.StampByName = user.name;\n        })\n      );\n    });\n  } catch (error) {\n    console.log(\"Error in Updating \", error);\n  }\n};\n\nconst updateTestType = async (id, type, user) => {\n  try {\n    const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n    res.forEach(async (c) => {\n      await DataStore.save(\n        Test.copyOf(c, (updated) => {\n          updated.test_type = type;\n        })\n      );\n    });\n  } catch (error) {\n    console.log(\"Test Type Change Error\", error);\n  }\n};\n\nconst updateQuarantineData = async (id, startDate, endDate) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  console.log(\"In Update Quarantine\", id, startDate, endDate, res);\n  if (res.length > 0) {\n    if (startDate && endDate) {\n      await DataStore.save(\n        Test.copyOf(res[0], (updated) => {\n          updated.quarantinedStart = moment(startDate).toISOString();\n          updated.quarantinedEnd = moment(endDate).toISOString();\n        })\n      );\n    } else if (startDate) {\n      await DataStore.save(\n        Test.copyOf(res[0], (updated) => {\n          updated.quarantinedStart = moment(startDate).toISOString();\n          updated.quarantinedEnd = null;\n        })\n      );\n    }\n  }\n};\n\nconst getExpiredTest = async () => {\n  const items = await DataStore.query(Test, (test) => test.result(\"eq\", \"Expired\"), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n  return items;\n};\n\nconst getPositiveTests = async (id) => {\n  if (!id) return [];\n\n  const test = await DataStore.query(Test, (test) =>\n    test.siteID(\"eq\", id).quarantinedStart(\"ne\", null).quarantinedEnd(\"eq\", null)\n  );\n  return test;\n};\n\nconst UpdateEndQuarantine = async (users) => {\n  for (let i = 0; i < users.length; i++) {\n    const res = await DataStore.query(Test, (test) => test.id(\"eq\", users[i]));\n    await DataStore.save(\n      Test.copyOf(res[0], (updated) => {\n        updated.quarantinedEnd = moment().utc().toISOString();\n      })\n    );\n  }\n};\n\nconst getTodaysTest = async () => {\n  const startDate = moment().subtract(1, \"days\").startOf(\"day\").utc().toISOString();\n  const endDate = moment().subtract(1, \"days\").endOf(\"day\").utc().toISOString();\n\n  const models = await DataStore.query(Test, (test) => test.createdAt(\"between\", [startDate, endDate]));\n  return models;\n};\n\nconst deleteUserLinkFromEmployee = async (val) => {\n  const users = await DataStore.query(Employee, (e) => e.subID(\"eq\", val));\n  users.forEach(async (user) => {\n    await DataStore.save(\n      Employee.copyOf(user, (updated) => {\n        updated.subID = null;\n      })\n    );\n  });\n};\n\nconst hrCheckIn = async (id) => {\n  const path = \"/graphqlEmployeeCheckIn\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: \"60956afd-0d86-4268-9c3d-83b80733cfd0\",\n      version: 15,\n      checkIn: moment().toISOString(),\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst getClientShowByApi = async (clientID) => {\n  const path = \"/getSiteByClient\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      clientID,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst saveFileSendToLab = async (fileName, formattedTests) => {\n  try {\n    await Storage.put(fileName, jsonToCSV(formattedTests), { bucket: \"result-update\" });\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n};\n\nconst archiveOrder = async (formattedTests) => {\n  try {\n    await callAmplifyAPI(\"/orders/quickarchive\", { ids: formattedTests.map((f) => f.id) });\n\n    const fileName = `${moment().utc().format(\"YYYY-MM-DD HH:mm\")}_archive_order_${CONFIG.envType}.csv`;\n    await Storage.put(fileName, jsonToCSV(formattedTests), { bucket: \"result-update\" });\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n};\n\nconst archiveAllOrder = async (filter) => {\n  try {\n    console.log(\"Filter\", filter);\n\n    const res = await callAmplifyAPI(\"/orders/archive\", { params: filter });\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n};\n\nconst saveFileExternalStorage = async (phoneNumber, employeeID, type, fileContent) => {\n  try {\n    // set the date format\n    let fileName = `${phoneNumber}/${employeeID}`;\n    if (type) fileName = `${fileName}_${type}_#datePattern#_${moment().utc().format(\"YYYY-MM-DD HH:mm\")}.png`;\n\n    await Storage.put(fileName, fileContent, { bucket: BUCKET_EXTERNAL_IMAGES });\n    return fileName;\n  } catch (err) {\n    console.log(\"Error in Image Uploading\", err);\n  }\n  return \"\";\n};\n\nconst saveFileCalredieImg = async (fileContent) => {\n  try {\n    // set the date format\n\n    let fileName = `logs/calredie_${moment().utc().format(\"YYYY-MM-DD HH:mm\")}.png`;\n\n    await Storage.put(fileName, fileContent);\n    return fileName;\n  } catch (err) {\n    console.log(\"Error in Image Uploading\", err);\n  }\n  return \"\";\n};\n\nconst uploadFileCalredieCsv = async (fileContent) => {\n  try {\n    // set the date format\n\n    await Storage.put(\n      `${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_confirmation_code_${CONFIG.envType}.csv`,\n      jsonToCSV(fileContent),\n      {\n        bucket: \"result-update\",\n      }\n    );\n  } catch (err) {\n    console.log(\"Error in Uploading\", err);\n  }\n  return \"\";\n};\n\nconst getFileExternalBlob = async (fileName) => {\n  try {\n    const path = await Storage.get(fileName, {\n      bucket: BUCKET_EXTERNAL_IMAGES,\n      download: true,\n    });\n    const mimeType = mime.lookup(fileName) || \"application/octet-stream\";\n    const blob = new Blob([path.Body], { type: mimeType });\n    return blob;\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n  return \"\";\n};\n\nconst getFileExternalStorage = async (fileName) => {\n  try {\n    const path = await Storage.get(fileName, { bucket: BUCKET_EXTERNAL_IMAGES });\n    return path;\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n  return \"\";\n};\n\nconst getFileProfileStorage = async (fileName) => {\n  try {\n    let profilePath = `profile/${fileName}`;\n    const path = await Storage.get(profilePath, { bucket: \"medflow-images\" });\n\n    return path;\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n  return \"\";\n};\n\nconst cloneTest = async () => {\n  const res = await DataStore.query(Test, (test) => test.sequenceNo(\"eq\", 46145));\n  console.log(\"Res\", res);\n  if (res.length === 0) return;\n\n  const demographics = res[0].employee_demographics;\n\n  // const employee = await DataStore.save(\n  //   new Employee({\n  //     first: demographics.firstName,\n  //     last: demographics.lastName,\n  //     dob: buildAWSDate('10291972'),\n  //     id_number: demographics.idNumber,\n  //     phone_number: demographics.phoneNumber,\n  //     street: demographics.street,\n  //     street2: demographics.street2,\n  //     city: demographics.city,\n  //     state: demographics.state,\n  //     zip: demographics.zip,\n  //   })\n  // );\n\n  await DataStore.save(\n    Test.copyOf(res[0], (updated) => {\n      updated.employee_demographics = {\n        ...demographics,\n        dob: \"10291972\",\n        id: \"eac9a1c8-a627-430c-86ed-b2a6053bcfc4\",\n      };\n      updated.employeeID = \"eac9a1c8-a627-430c-86ed-b2a6053bcfc4\";\n    })\n  );\n};\n\nconst getTestListFromPG = async (param) => {\n  let statusNew = \"\";\n  let statusPending = \"\";\n  let test_type = [];\n  let dob = \"\";\n  if (param?.status?.toLowerCase() == \"new\") {\n    statusNew = \"pending\";\n    test_type = [\"PCR\"];\n  }\n  if (param?.status?.toLowerCase() == \"pending\") {\n    statusPending = \"pending\";\n    test_type = [\"Lucira\", \"Molecular\", \"Antigen\", \"Rapid Flu\", \"Rapid PCR\"];\n  }\n  if (param?.dob) {\n    dob = param?.dob?.replace(/[&\\/\\\\#,+()$~%.'\":*?<>{}]/g, \"\");\n  }\n\n  if (clientIDInLocalStorage.get() && connectedIDInLocalStorage.get()) {\n    param[\"labID\"] = connectedIDInLocalStorage.get();\n    param[\"clientID\"] = clientIDInLocalStorage.get();\n  }\n  if (CONFIG.isWhiteLabel) {\n    param[\"labID\"] = CONFIG.whiteLabelID;\n    param[\"clientID\"] = CONFIG.clientID;\n    if (CONFIG.siteID) {\n      param[\"siteID\"] = CONFIG.siteID;\n    }\n  }\n  const path = \"/getTestFromPG\";\n\n  const apiParams = dob\n    ? { ...param, dob }\n    : statusNew\n    ? { ...param, status: statusNew, test_type }\n    : statusPending\n    ? { ...param, test_type }\n    : param;\n\n  try {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: {\n        params: { ...apiParams, timezone: SYSTEM_TIME_ZONE },\n      },\n    };\n\n    const apiRes = await API.post(apiName, path, params);\n\n    return apiRes.data;\n  } catch (err) {\n    console.log(\"Error:- getTestListFromPG\", err);\n    return {};\n  }\n};\n\nconst exportToCalRedieData = async (param) => {\n  param[\"clientID\"] = CONFIG.clientID;\n  param[\"labID\"] = CONFIG.whiteLabelID;\n\n  try {\n    const apiRes = await callAmplifyAPI(\"/tests/calredie\", {\n      params: param,\n    });\n\n    return apiRes.data;\n  } catch (err) {\n    console.log(\"Error:- tests/calredie\", err);\n    return {};\n  }\n};\n\nconst getEmployeeListFromPG = async (param) => {\n  let dob = \"\";\n  if (param?.dob) {\n    let employeDOB = new Date(param?.dob);\n    dob =\n      employeDOB.getFullYear() +\n      \"-\" +\n      (\"0\" + (employeDOB.getMonth() + 1)).slice(-2) +\n      \"-\" +\n      (\"0\" + employeDOB.getDate()).slice(-2);\n  }\n\n  const path = \"/employees/list\";\n\n  // const defaultTestDate = !param.testDate ? { testDate: moment().format(\"YYYY-MM-DD\") } : {};\n  const defaultTestDate = null;\n  const params = {\n    params: {\n      ...param,\n      ...(dob && dob),\n      ...(defaultTestDate && defaultTestDate),\n      timezone: SYSTEM_TIME_ZONE,\n      clientID: CONFIG.clientID,\n      ...(!param.siteID &&\n        CONFIG.siteID && {\n          siteID: CONFIG.allowSites && CONFIG.allowSites.length > 0 ? CONFIG.allowSites : CONFIG.siteID,\n        }),\n    },\n  };\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes;\n};\n\nconst getHipaaEmployeeListFromPG = async (param) => {\n  const path = \"/getEmployeeFromPG\";\n\n  const apiRes = await callAmplifyAPI(path, param);\n\n  return apiRes;\n};\n\nconst getOrderListFromPG = async (params) => {\n  const path = \"/orders\";\n\n  const apiRes = await callAmplifyAPI(path, { params: { ...params, timezone: SYSTEM_TIME_ZONE } });\n\n  return apiRes;\n};\n\nconst getOrderTestList = async (id) => {\n  const path = \"/orders/tests\";\n\n  const apiRes = await callAmplifyAPI(path, { timezone: SYSTEM_TIME_ZONE, id });\n\n  return apiRes;\n};\n\nconst getOrderListThroughEmpID = async (empId) => {\n  const path = \"/orders/employee\";\n\n  const apiRes = await callAmplifyAPI(path, { id: empId });\n\n  return apiRes?.rows || [];\n};\n\nconst getPreRegistrationData = async (param) => {\n  console.log(\"[getPreRegistrationData]\", param);\n  const path = \"/getPreRegistrationData\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: param,\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n\n  return apiRes;\n};\n\nconst getSummaryFromPG = async (param) => {\n  const path = \"/getSummary\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      params: param,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n\n  return apiRes.data;\n};\n\nconst getAppVersion = async (param) => {\n  const path = \"/appVersion\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      name: \"ios\",\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst updateTestStatus = async () => {\n  const res = await DataStore.query(Test, (test) => test.sequenceNo(\"eq\", \"83749\"));\n  if (res.length === 0) return;\n  return;\n  res.forEach(async (c) => {\n    await DataStore.save(\n      Test.copyOf(c, (updated) => {\n        updated.result = null;\n        updated.status = \"Sent\";\n        updated.resultDate = null;\n        updated.resultDateTime = null;\n      })\n    );\n  });\n};\n\nconst getTestBySequenceNo = async (num) => {\n  const res = await DataStore.query(Test, (test) => test.sequenceNo(\"eq\", parseInt(num)));\n  return res;\n};\n\nconst getEmployees = async () => {\n  const models = await DataStore.query(Employee, Predicates.ALL);\n  return models;\n  models.forEach(async (e) => {\n    console.log(\"Employee\", e.id);\n    // await DataStore.save(\n    //   Employee.copyOf(e, (updated) => {\n    //     updated.email = 'zero@yopmail.com';\n    //     updated.phone_number = '2222222222';\n    //   })\n    // );\n    // await DataStore.delete(Employee, (lab) => lab.id(\"eq\", e.id));\n  });\n  return models;\n};\n\nconst downloadcsv = async (param, setList) => {\n  const path = \"/downloadcsv\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      params: param,\n    },\n  };\n\n  const res = await API.post(apiName, path, params);\n\n  if (res) {\n    const result = await Storage.get(`excelfile/${res}`, {\n      bucket: \"employee-external-tests\",\n      download: true,\n    });\n    const data = await result.Body.text();\n\n    readString(data, {\n      header: true,\n      worker: true,\n      complete: (results) => {\n        if (results.data) {\n          setList(results.data.map((t) => formatTest(t)));\n        }\n      },\n    });\n  }\n  return [];\n};\n\nconst downloadEmployeeCSV = async (param, setList) => {\n  const path = \"/downloadEmployeeCSV\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      params: param,\n    },\n  };\n\n  const res = await API.post(apiName, path, params);\n  console.log(\"res\", res);\n  if (res) {\n    const result = await Storage.get(`excelfile/${res}`, {\n      bucket: \"employee-external-tests\",\n      download: true,\n    });\n    const data = await result.Body.text();\n\n    readString(data, {\n      header: true,\n      worker: true,\n      complete: (results) => {\n        console.log(results);\n        if (results.data) {\n          setList(results.data);\n        }\n      },\n    });\n  }\n  return [];\n};\nconst downloadPdf = async (param) => {\n  const path = \"/downloadcsv\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      params: param,\n    },\n  };\n  const res = await API.post(apiName, path, params);\n  if (res) {\n    let data = await Storage.get(`excelfile/${res}`, { bucket: BUCKET_EXTERNAL_IMAGES });\n    fetch(data).then((response) => {\n      response.blob().then((blob) => {\n        const fileURL = window.URL.createObjectURL(blob);\n        let alink = document.createElement(\"a\");\n        alink.href = fileURL;\n        alink.download = \"TestPDF.pdf\";\n        alink.click();\n      });\n    });\n  }\n  return [];\n};\n\nconst downloadEmployeePdf = async (param) => {\n  const path = \"/downloadEmployeeCSV\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      params: param,\n    },\n  };\n  const res = await API.post(apiName, path, params);\n  if (res) {\n    let data = await Storage.get(`excelfile/${res}`, { bucket: \"employee-external-tests\" });\n    fetch(data).then((response) => {\n      response.blob().then((blob) => {\n        const fileURL = window.URL.createObjectURL(blob);\n        let alink = document.createElement(\"a\");\n        alink.href = fileURL;\n        alink.download = \"EmployeePDF.pdf\";\n        alink.click();\n      });\n    });\n  }\n  return [];\n};\n\nconst getLabProvidedBarCode = async (labID) => {\n  console.log(\"[getLabProvidedBarCode]\");\n  const path = \"/getLabProvidedBarCode\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      params: { id: labID },\n    },\n  };\n\n  const res = await API.post(apiName, path, params);\n  console.log(\"res\", res);\n  return res.barcode;\n};\n\nconst updateTestEmployeeData = async (id, version) => {\n  const TestData = {\n    id: id,\n    employeeID: \"bcb771f5-2953-4f16-ac57-1d4db681a72b\",\n    _version: version,\n  };\n  const updatedTest = await API.graphql({\n    query: mutations.updateTest,\n    variables: { input: TestData },\n  });\n};\n\nconst getShipBobOrderDetails = async (id) => {\n  const path = \"/getShipBobOrder\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: id,\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  if (apiRes.data && apiRes.data.shipments && apiRes.data.shipments.length > 0) {\n    const tracking = apiRes.data.shipments[0].tracking;\n    if (tracking && tracking.tracking_url) {\n      return tracking.tracking_url;\n    }\n  }\n  return null;\n};\n\nconst getPreRegistrationOrderLog = async (id) => {\n  const path = \"/getPreRegistrationOrderLog\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: id,\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n\n  return apiRes.data;\n};\n\nconst addTestResult = async (list) => {\n  const path = \"/addTestResult\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      tests: list,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst prTestCreation = async (list) => {\n  const path = \"/prTestCreation\";\n  console.log(\"IN LAST prTestCreation\", list);\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      tests: list,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst getCompanyZone = async () => {\n  console.log(\"[getCompanyZone]\");\n  const path = \"/getCompanyZone\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: { id: \"50f733f9-a473-4755-989a-35e6d1c0ba2b\" },\n  };\n\n  const counterData = await API.post(apiName, path, params);\n  console.log(\"getCompanyZone Api\", counterData);\n};\n\nconst getProfileUpdateLogs = async (id) => {\n  const path = \"/getProfileUpdateLogs\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: id,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  console.log(\"Here are response data from employee logs\", apiRes);\n  return apiRes.data;\n};\n\nconst getPRPCRTest = async (id) => {\n  const path = \"/getTestsByStatus\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      siteID: \"180843da-f0c5-4c08-bd25-a651392836cd\",\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  console.log(\"Here are response data from employee logs\", apiRes);\n  return apiRes.data;\n};\n\nconst getPGEmployeeData = async (id) => {\n  const path = \"/pgSiteRecord\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      siteID: id,\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.rows;\n};\n\nconst deleteDuplicateEmployee = async (empObj, primary_id, deleted_id, user) => {\n  const path = \"/deleteDuplicateEmployee\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      empObj: empObj,\n      primary_id: primary_id,\n      deleted_id: deleted_id,\n      userID: user.sub,\n      userName: user.name,\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  console.log(\"deleted ID:\", apiRes);\n  return apiRes;\n};\n\nconst getTestByID = async (id, type) => {\n  const path = \"/getRecordById\";\n\n  const apiRes = await callAmplifyAPI(path, {\n    id: id,\n    name: type,\n  });\n  return apiRes?.data?.Item;\n};\n\nconst getTestByEmployee = async (id) => {\n  const path = \"/getTestByEmployee\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      siteID: id,\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  console.log(\"Api Re\", apiRes);\n  return apiRes;\n};\n\nconst mainCrewListing = async () => {\n  console.log(\"[mainCrewInfo]\", new Date().getTimezoneOffset());\n\n  const path = \"/mainCrewInfo\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: \"1\",\n    },\n  };\n  const counterData = await API.post(apiName, path, params);\n\n  console.log(\"Counter Api\", counterData);\n  return counterData.rows;\n};\n\nconst getEmployeeZoneSchedule = async () => {\n  console.log(\"[getEmployeeZoneSchedule]\");\n\n  const path = \"/getEmployeeZoneSchedule\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      employeeID: \"4f0d67fb-b023-4a7f-9578-647903a67b01\",\n      programID: \"f74e91bf-d39e-4d62-8e36-f74abebdc4ab\",\n      timezone: new Date().getTimezoneOffset(),\n    },\n  };\n  const counterData = await API.post(apiName, path, params);\n\n  console.log(\"Counter Api\", counterData);\n  return counterData.rows;\n};\n\nconst addEmployeeRoles = async (obj) => {\n  const path = \"/addEmployeeRoles\";\n\n  const apiRes = await callAmplifyAPI(path, {\n    ...obj,\n    userPermission: JSON.stringify(obj.userPermission),\n  });\n  return apiRes?.data;\n};\n\nconst addEmployee = async (obj) => {\n  const path = \"/addEmployee\";\n  const apiRes = await callAmplifyAPI(path, obj);\n  return apiRes?.data;\n};\n\nconst isUserExistsInDB = async (param) => {\n  let phone = param.replace(/[^a-zA-Z0-9 ]/g, \"\");\n  const path = \"/isUserExistsInDB\";\n\n  const apiRes = await callAmplifyAPI(path, {\n    phone: phone,\n  });\n  return apiRes?.data;\n};\n\nconst updateEmployeeRoles = async (obj) => {\n  const path = \"/updateEmployeeRoles\";\n  const {\n    id,\n    username,\n    roles,\n    firstName,\n    lastName,\n    phone_number,\n    email,\n    userRole,\n    note,\n    status,\n    systemUser,\n    clientID,\n    connectedID,\n  } = obj;\n\n  const apiRes = await callAmplifyAPI(path, {\n    id,\n    firstName: firstName,\n    lastName: lastName,\n    phone_number: phone_number,\n    email: email,\n    userRole: userRole,\n    note: note,\n    username: username,\n    roles: roles,\n    status,\n    systemUser,\n    clientID,\n    connectedID,\n  });\n  return apiRes?.data;\n};\n\nconst getEmployeeRoles = async (username) => {\n  const path = \"/getEmployeeRoles\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      username: username,\n    },\n  };\n  try {\n    const apiRes = await API.post(apiName, path, params);\n    if (apiRes.Items.length > 0) {\n      return apiRes.Items;\n    }\n  } catch (err) {\n    console.log(\"Error\", err.response);\n    throw err;\n  }\n\n  return [];\n};\nconst getUserFromLocalDB = async (username) => {\n  const path = \"/getUserFromLocalDB\";\n  const params = {\n    id: username,\n  };\n  const apiRes = await callAmplifyAPI(path, params);\n\n  if (apiRes && apiRes.length > 0 && CONFIG.isWhiteLabel) console.log(\"In Filter User\");\n  return apiRes.filter(\n    (u) => u.phone_number !== \"+18322959940\" && !ADMIN_USER.includes(removeWhitespaceAndParentheses(u.phone_number))\n  );\n};\n\nconst addMultipleUserToGroup = async (obj) => {\n  const path = \"/addMultipleUserToGroup\";\n  const { username, groupname } = obj;\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n\n    body: {\n      username: username,\n      groupname: groupname,\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst removeMultipleUserFromGroup = async (obj) => {\n  const path = \"/removeMultipleUserFromGroup\";\n  const { username, groupname } = obj;\n  const gpName = groupname.map((g) => {\n    if (g === \"Employerss\") return \"Employers\";\n    return g;\n  });\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n\n    body: {\n      username: username,\n      groupname: groupname,\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst updateExternalTest = async () => {\n  const path = \"/updateExternalTest\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n\n    body: {\n      employeeID: \"753111a8-fe0f-4a06-a7c0-5f88912f33eb\",\n      tests: [\n        {\n          id: \"9322a168-686d-4383-960d-89df5ec5af9a\",\n          testNow: false,\n          isDone: true,\n          value: \"Molecular\",\n          label: \"Cue\",\n          location: \"On Location\",\n          scheduleCategory: \"Testing\",\n          result: \"Negative\",\n          externalTestFile:\n            \"9322a168-686d-4383-960d-89df5ec5af9a/9322a168-686d-4383-960d-89df5ec5af9a_#datePattern#_2022-10-25 13:33.png\",\n          date: \"2022-10-25T13:34:02.552Z\",\n        },\n      ],\n      userName: \"Admin Testin User\",\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst deleteLogRecord = async (msg) => {\n  const path = \"/deleteLogs\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: msg.id,\n      testID: msg.testID,\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n\n  return apiRes;\n};\n\nconst changeTestType = async (tests, userName) => {\n  const path = \"/updateTestType\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n\n    body: {\n      tests: tests,\n      userName: userName,\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst confirmEmployeeAccount = async () => {\n  const path = \"/confirmEmployeeAccount\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n\n    body: {\n      id: \"946c28d5-a574-4fc2-8f55-b359e6ab2614\",\n      appPackage: \"appPackage\",\n      userName: \"Admin Testin User\",\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst getEmployeesTests = async (ids) => {\n  const path = \"/getEmployeesTests\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      ids: ids,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  console.log(\"Here are response data from employee logs\", apiRes);\n  return apiRes;\n};\n\nconst createHREmployee = async (ids) => {\n  const path = \"/createHREmployee\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      companyID: \"ecfda7c0-8e21-43ce-a10a-cac36d9d36b4\",\n      firstName: \"Austin\",\n      lastName: \"Rose\",\n      dob: \"2022-12-26\",\n      street: \"98G4+792\",\n      street2: \"\",\n      city: \"Ranchi\",\n      state: \"JH\",\n      countryCode: \"+1\",\n      country: \"India\",\n      zip: \"834001\",\n      phoneNumber: \"+15959599595\",\n      sex: \"M\",\n      email: \"hehd@hehdh.dhbdbd\",\n      idNumber: \"HDHDHDH\",\n      programName: \"Zone-A\",\n      programID: \"b0b58d09-73aa-4e92-8b5f-c638c3e11f16\",\n      department: \"a42447c5-3d96-41d2-b07f-2a2b31c7a988\",\n      id: \"\",\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  console.log(\"Here are response data from employee logs\", apiRes);\n  return apiRes;\n};\n\nconst hrEmployeeListing = async () => {\n  const path = \"/hrEmployeeListing\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      siteID: \"50f733f9-a473-4755-989a-35e6d1c0ba2b\",\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  console.log(\"Here are response data from employee logs\", apiRes);\n  return apiRes;\n};\n\nconst employeeByIds = async (ids) => {\n  console.log(\"[employeeByIds]\");\n  let path = \"/employeeByIds\";\n  let params = {\n    body: {\n      ids: ids,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n  const models = await API.post(apiName, path, params);\n  return models.data;\n};\n\nconst getProxyContactData = async () => {\n  const path = \"https://9dpj6yddw2.execute-api.eu-west-1.amazonaws.com/default/contacttypes\";\n  const relations = await axios.get(path);\n  return relations.data;\n};\n\nconst deleteTestwithHRid = async () => {\n  const path = \"/tests\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      schrID: \"9d50959e-667e-434e-9f06-de1ba3f3bb3d\",\n      startDate: \"2023-04-10T19:00:00.000Z\",\n      endDate: \"2023-04-11T10:14:55.479Z\",\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  console.log(\"Here are response data from employee logs\", apiRes);\n  return apiRes;\n};\n\nconst proxyContant = async (obj) => {\n  const path = \"/proxyContant\";\n  const employee = obj.employee_demographics;\n  try {\n    const params = {\n      ...(CONFIG.isWhiteLabel && { medflowDomain: CONFIG.appPackage }),\n      showID: obj.siteID,\n      clientID: obj.clientID,\n      isCheck: employee.isCheck || \"n\",\n      // parentId: \"19f7ce91-129c-4137-9a39-ab742b0ca1ec\",\n      // relation: {\n      //   id: \"2c2fceaf-b462-44e5-a11c-843b7c74851a\",\n      //   name: \"Parent Child\",\n      // },\n\n      employee: {\n        id_number: employee.idNumber,\n        site_name: obj.site_name,\n        firstName: employee.firstName,\n        lastName: employee.lastName,\n        sex: employee.sex,\n        phone_number: obj.phoneNumber,\n        countryCode: employee.countryCode,\n        street: employee.street,\n        street2: employee.street2,\n        state: employee.state,\n        county: employee.county,\n        city: employee.city,\n        zip: employee.zip,\n        dob: moment(employee.dob, \"MMDDYYYY\").format(\"YYYY-MM-DD\"),\n        country: employee.country,\n        email: employee.email,\n        whiteGlove: employee.whiteGlove,\n        isVaccinated: employee.isVaccinated,\n        ...(employee.insuranceCompanyCode && {\n          insurance_name: employee.insurance_name,\n          insurance_number: employee.insurance_number,\n          insuranceCompanyCode: employee.insuranceCompanyCode,\n        }),\n        updatedBy: obj.updatedBy,\n        updatedByName: obj.updatedByName,\n        lastUsed: moment().toISOString(),\n        insuranceDetails: employee.insuranceDetails,\n        insuranceCompanyCode: employee.insuranceCompanyCode,\n        medicalNo: employee.medicalNo,\n        status: employee.status,\n        isHospice: employee.isHospice,\n        primaryCarePhysician: employee.primaryCarePhysician,\n        referringPyhsician: employee.referringPyhsician,\n        renderingProvider: employee.renderingProvider,\n        referringProvider: employee.referringProvider,\n        orderingProvider: employee.orderingProvider,\n        siteID: obj.siteID,\n      },\n      ...(obj.employeeID && { id: obj.employeeID }),\n    };\n\n    const apiRes = await callAmplifyAPI(path, params);\n\n    return apiRes?.data;\n  } catch (err) {\n    return err.response.data?.errors?.[0] || null;\n  }\n};\n\nconst proxyContantFromPatient = async (obj) => {\n  const path = \"/proxyContant\";\n  const employee = obj.employee_demographics;\n  try {\n    const params = {\n      ...(CONFIG.isWhiteLabel && { medflowDomain: CONFIG.appPackage }),\n      showID: obj.siteID,\n      clientID: obj.clientID,\n      isCheck: \"y\",\n      // parentId: \"19f7ce91-129c-4137-9a39-ab742b0ca1ec\",\n      // relation: {\n      //   id: \"2c2fceaf-b462-44e5-a11c-843b7c74851a\",\n      //   name: \"Parent Child\",\n      // },\n      employee: {\n        id_number: employee.idNumber,\n        site_name: obj.site_name,\n        firstName: employee.firstName,\n        lastName: employee.lastName,\n        middleName: employee.middleName,\n        sex: employee.sex,\n        phone_number: obj.phoneNumber,\n        countryCode: employee.countryCode,\n        street: employee.street,\n        street2: employee.street2,\n        state: employee.state,\n        county: employee.county,\n        city: employee.city,\n        zip: employee.zip,\n        dob: moment(employee.dob, \"MMDDYYYY\").format(\"YYYY-MM-DD\"),\n        country: employee.country,\n        email: employee.email,\n        whiteGlove: employee.whiteGlove,\n        isVaccinated: employee.isVaccinated,\n        insurance_name: employee.insurance_name,\n        insurance_number: employee.insurance_number,\n        insuranceCompanyCode: employee.insuranceCompanyCode,\n        updatedBy: obj.updatedBy,\n        updatedByName: obj.updatedByName,\n        lastUsed: moment().toISOString(),\n        insuranceDetails: employee.insuranceDetails,\n        insuranceCompanyCode: employee.insuranceCompanyCode,\n        medicalNo: employee.medicalNo,\n        status: employee.status,\n        isHospice: employee.isHospice,\n        primaryCarePhysician: employee.primaryCarePhysician,\n        referringPyhsician: employee.referringPyhsician,\n        renderingProvider: employee.renderingProvider,\n        referringProvider: employee.referringProvider,\n        orderingProvider: employee.orderingProvider,\n        siteID: obj.siteID,\n        site_name: employee?.site_name,\n        previousSiteID: employee?.previousSiteID || \"\",\n        sendSMS: employee.sendSMS,\n        sendEmail: employee.sendEmail,\n        autoRelease: employee.autoRelease,\n        note: employee.note,\n        snf: employee.snf,\n        isInsHousing: employee.isInsHousing,\n        provider: employee.provider,\n        externalID : obj.externalID\n      },\n      ...(obj.employeeID && { id: obj.employeeID }),\n      customID: obj.customID,\n    };\n\n    const apiRes = await callAmplifyAPI(path, params);\n\n    return { message: null, record: apiRes?.data, eligibiltyStatus: apiRes?.eligibilityResponse };\n  } catch (err) {\n    const errorMessage = err.response.data?.errors?.[0].message || \"Fail to save the Patient\";\n    return { message: errorMessage, record: null };\n  }\n};\nconst searchEmployee = async (obj) => {\n  const path = \"/searchEmployee\";\n\n  try {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: {\n        phone_number: \"2222222222\",\n        siteID: \"35cab446-237a-402d-b661-afe60c086844\",\n        scanType: \"Lookup\",\n        type: \"Phone\",\n        countryCode: \"+1\",\n        timezone: -300,\n        requiredExternalTest: \"No\",\n        appPackage: \"com.bio.lab\",\n        clientID: \"5659da45-a80c-478b-8301-2e8d5b2b56ac\",\n      },\n    };\n\n    const apiRes = await API.post(apiName, path, params);\n\n    return apiRes?.data;\n  } catch (err) {\n    return null;\n  }\n};\n\nconst savePreRegistration = async (param, testKey) => {\n  try {\n    let path = \"/preregistration\";\n    let params = {\n      body: {\n        recordId: param.id ? param.id : uuidv4(),\n        first: param.first,\n        last: param.last,\n        profileImage: null,\n        countryCode: param.countryCode,\n        email: param.email,\n        phone_number: param.phone_number,\n        street: param.street,\n        street2: null,\n        city: param.city,\n        state: param.state,\n        country: param.country,\n        zipcode: param.zipcode,\n        sex: param.sex,\n        dob: param.dob,\n        isVaccinated: param.isVaccinated,\n        id_number: param.id_number,\n        insurance_name: param.insurance_name,\n        insurance_number: param.insurance_number,\n        insuranceCompanyCode: param.insuranceCompanyCode,\n        showId: \"\",\n        showName: \"\",\n        clientId: \"\",\n        isExternalTest: false,\n        testSend: \"No\",\n        rStep: 1,\n        labid: \"\",\n      },\n    };\n    const res = await API.post(publicApiName, path, params);\n    console.log(\"res\", res);\n    return res.rows;\n  } catch (err) {\n    console.log(\"Error:-\", err);\n  }\n};\n\nconst insurancesList = async (obj) => {\n  const path = \"/insurances\";\n\n  try {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: {\n        clientID: CONFIG.clientID,\n      },\n    };\n\n    const apiRes = await API.post(apiName, path, params);\n\n    return apiRes?.data;\n  } catch (err) {\n    return null;\n  }\n};\n\nconst checkEligibility = async (obj) => {\n  const path = \"/eligibility\";\n\n  try {\n    const apiRes = await callAmplifyAPI(path, {\n      clientID: CONFIG.clientID,\n      firstName: obj.firstName || obj.first,\n      lastName: obj.lastName || obj.last,\n      middleName: \"\",\n      medicalNo: [obj.insurance_number],\n      dob: obj.dob,\n      fdos: moment().format(\"YYYYMMDD\"),\n      empID: obj.mdID,\n      companyID: obj.siteID || null,\n      clientID: CONFIG.clientID,\n      subAgentID: null,\n      userID: obj.updatedBy,\n      userName: obj.updatedByName,\n      locationName: obj?.site_name || null,\n      clientName: CONFIG.basename,\n      subAgentName: null,\n      payerids: [obj.insuranceCompanyCode],\n      payerNames: [obj.insurance_name],\n      ssn: null,\n    });\n\n    return apiRes;\n  } catch (err) {\n    return null;\n  }\n};\n\nconst assignedTestSchedule = async (employeeIds, detail, user) => {\n  const path = \"/employees/testschedule\";\n\n  const payload = {\n    dateOfTest: moment(detail.date).format(\"MMDDYYYY\"),\n    testDate: moment(detail.date).toISOString(),\n    testType: { test: detail.testType },\n    data: employeeIds,\n    createdBy: user.sub,\n    createdByName: user.name,\n  };\n  const apiRes = await callAmplifyAPI(path, payload);\n  return apiRes?.data;\n};\n\nconst removeTestSchedule = async (employeeIds, detail, user) => {\n  const path = \"/employees/testschedule/remove\";\n\n  const payload = {\n    date: moment(detail.date).format(\"MMDDYYYY\"),\n    testDate: moment(detail.date).format(\"MM-DD-YYYY\"),\n    ids: employeeIds,\n    userID: user.sub,\n    userName: user.name,\n  };\n  const apiRes = await callAmplifyAPI(path, payload);\n  return apiRes?.data;\n};\n\nconst uploadPatientTestSchedule = async (obj, fileName) => {\n  try {\n    await Storage.put(`${fileName}`, jsonToCSV(obj), {\n      bucket: \"result-update\",\n    });\n  } catch (err) {\n    return null;\n  }\n};\n\nconst acknowledgedPositiveTest = async (arr) => {\n  try {\n    await Storage.put(\n      `${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_acknowledged_${CONFIG.envType}.csv`,\n      jsonToCSV(arr),\n      {\n        bucket: \"result-update\",\n      }\n    );\n  } catch (err) {\n    return null;\n  }\n};\n\nconst importLabClient = async (params) => {\n  const res = await callAmplifyAPI(\"/labclient/import\", params);\n  return res;\n};\n\nconst getTodayScheduleTests = async () => {\n  const path = \"/employees/testschedule/list\";\n\n  const payload = {\n    clientID: CONFIG.clientID,\n    timezone: SYSTEM_TIME_ZONE,\n    startDate: moment().format(\"YYYY-MM-DD\"),\n    endDate: moment().format(\"YYYY-MM-DD\"),\n  };\n  const apiRes = await callAmplifyAPI(path, payload);\n  console.log(\"Api\", apiRes);\n};\n\nconst resetTestSchedule = async () => {\n  const path = \"/employees/testschedule/reset\";\n\n  const payload = {\n    clientID: CONFIG.clientID,\n    employeeID: \"2350452e-18ad-4dd8-a15d-3ec2edf4019a\",\n    date: \"10182023\",\n  };\n  const apiRes = await callAmplifyAPI(path, payload);\n  console.log(\"Api\", apiRes);\n};\n\nconst upComingSchedule = async () => {\n  const path = \"/employees/testschedule/upcoming\";\n  const payload = {\n    ...(CONFIG.siteID && { siteID: CONFIG.siteID }),\n    startDate: moment().format(\"YYYY-MM-DD\"),\n    timezone: SYSTEM_TIME_ZONE,\n  };\n  const apiRes = await callAmplifyAPI(path, payload);\n  return apiRes?.rows || [];\n};\n\nconst updateTest = async (id, obj) => {\n  try {\n    const resApi = await callAmplifyAPI(\"/getRecordById\", {\n      id: id,\n      name: \"test\",\n    });\n\n    const {\n      data: { Item: dbTest },\n    } = resApi;\n\n    if (!dbTest) return;\n\n    const objToUpdate = {\n      id: id,\n      ...obj,\n      _version: dbTest._version,\n    };\n\n    await API.graphql({ query: mutations.updateTest, variables: { input: objToUpdate } });\n  } catch (ex) {\n    console.log(\"updateTest\", ex);\n  }\n};\nconst payerList = async () => {\n  try {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n    };\n\n    const apiRes = await API.get(apiName, \"/payers\", params);\n\n    return apiRes;\n  } catch (err) {\n    return null;\n  }\n};\n\nconst splitReqForm = async (params) => {\n  const resApi = await callAmplifyAPI(\"/requisitionformfiles\", {\n    params: { ...params, clientID: CONFIG.clientID },\n  });\n  return resApi;\n};\n\nconst downloadRequisitionForm = async (params) => {\n  try {\n    const resApi = await callAmplifyAPI(\"/requisitionform\", params);\n\n    return resApi;\n  } catch (err) {\n    return null;\n  }\n};\n\nconst downloadRequisitionZip = async (filePath, fileName, bucket) => {\n  try {\n    const options = bucket ? { bucket } : {};\n    const data = await Storage.get(filePath, { ...options });\n    const response = await fetch(data);\n\n    if (!response.ok) {\n      return false;\n    }\n\n    const blob = await response.blob();\n\n    if (blob.size === 0) {\n      return false;\n    }\n\n    const fileURL = window.URL.createObjectURL(blob);\n    let alink = document.createElement(\"a\");\n    alink.href = fileURL;\n    alink.download = fileName;\n    document.body.appendChild(alink);\n    alink.click();\n\n    return true;\n  } catch (error) {\n    console.error(\"Error downloading requisition zip:\", error);\n    return false;\n  } finally {\n    if (alink) {\n      document.body.removeChild(alink);\n      window.URL.revokeObjectURL(fileURL);\n    }\n  }\n};\n\nconst getDefaultProvider = async (id) => {\n  try {\n    const resApi = await callAmplifyAPI(\"/defaultProvider\", {\n      id: id,\n    });\n\n    const { Item } = resApi;\n    return Item;\n  } catch (err) {\n    return null;\n  }\n};\n\nconst getPaymentIntent = async (id) => {\n  try {\n    const resApi = await callAmplifyAPI(\"/payments/intent\", {\n      amount: 123,\n      payment_methods: [\"card\"],\n    });\n\n    console.log(\"[getPaymentIntent]\", resApi);\n  } catch (err) {\n    return null;\n  }\n};\n\nconst exportOrder = async (params) => {\n  const path = \"/orders/export\";\n\n  const apiRes = await callAmplifyAPI(path, { params: { ...params, timezone: SYSTEM_TIME_ZONE } });\n\n  return apiRes;\n};\n\nconst getClientInsurances = async (params) => {\n  const path = \"/insurances/all\";\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes?.rows;\n};\n\nconst getTestSources = async (params) => {\n  const path = \"/sources/list\";\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes?.rows;\n};\n\nconst assingTestResult = async (params) => {\n  const path = \"/test/update\";\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes;\n};\n\nconst addSources = async (params) => {\n  const path = \"/sources\";\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes?.rows;\n};\n\nconst createMulipleTests = async (params) => {\n  const path = \"/test/create\";\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes?.data || [];\n};\n\nconst createEmployeeTests = async (params) => {\n  const path = \"/test/create/order\";\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes?.data || [];\n};\n\nconst createBulkTestFromOrder = async (params) => {\n  const path = \"/test/create-multi\";\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes?.data || [];\n};\n\nconst createPatientUser = async (param) => {\n  const path = \"/createPatientLogin\";\n  const apiRes = await callAmplifyAPIWithError(path, param);\n  return apiRes;\n};\n\nconst invoicesPDF = async (params) => {\n  const path = \"/getURL\";\n\n  const apiRes = await callAmplifyAPI(path, { path: \"invoices/test/000001.pdf\" });\n  console.log(\"invoicesPDF\", apiRes);\n  return apiRes?.data || [];\n};\n\nexport const getTestsDetails = async (searchKey) => {\n  try {\n    return await callAmplifyAPI(\"/testassaylist\", searchKey);\n  } catch (err) {\n    console.error(\"Error fetching tests data:\", err);\n    return err;\n  }\n};\n\nexport const createTestsDetails = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/testassay\", params);\n  } catch (err) {\n    console.error(\"Error create tests data:\", err);\n    return err;\n  }\n};\nexport const createBulkTestsDetails = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/testassaybulk\", params);\n  } catch (err) {\n    console.error(\"Error create tests data:\", err);\n    return err;\n  }\n};\n\nexport const updateTestsDetails = async (params) => {\n  try {\n    return await callAmplifyAPIPut(\"/testassay\", params);\n  } catch (err) {\n    console.error(\"Error create tests data:\", err);\n    return err;\n  }\n};\n\nconst getConnectedProfiles = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/employees/connected\", params);\n  } catch (err) {\n    console.error(\"Error create tests data:\", err);\n    return err;\n  }\n};\n\nconst updateRelations = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/employees/connected/update\", params);\n  } catch (err) {\n    console.error(\"Error create tests data:\", err);\n    return err;\n  }\n};\n\nconst manageEmployeeRelation = async (params) => {\n  const apiRes = await callAmplifyAPIWithError(\"/employees/connected/manage\", params);\n  return apiRes;\n};\n\nconst getMultipleTests = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/tests\", params);\n  } catch (err) {\n    console.error(\"Error create tests data:\", err);\n  }\n  return [];\n};\n\nconst getEligibilityFile = async (params) => {\n  try {\n    const data = await callAmplifyAPI(\"/getURL\", params);\n    return data?.url;\n  } catch (err) {\n    console.error(\"Error create tests data:\", err);\n  }\n  return \"\";\n};\n\nconst getCompanySetting = async () => {\n  try {\n    const data = await callAmplifyAPI(\"/setting\", {});\n    return data;\n  } catch (err) {\n    console.error(\"Error create tests data:\", err);\n  }\n  return \"\";\n};\nconst getCptWithTests = async (params) => {\n  try {\n    const data = await callAmplifyAPI(\"/cpt/search\", params);\n    return data;\n  } catch (err) {\n    console.error(\"Error create tests data:\", err);\n  }\n  return \"\";\n};\n\nconst getGeneralSetting = async (settingType) => {\n  const models = await DataStore.query(\n    GeneralSettingType,\n    (s) => s.settingType(\"eq\", settingType) && s.clientID(\"eq\", CONFIG.clientID),\n    {\n      sort: (s) => s.label(SortDirection.ASCENDING),\n    }\n  );\n\n  if (models.length > 0) {\n    return models.map((model) => ({\n      label: model.label,\n      value: model.value,\n      code: model.code,\n      title: model.title,\n      id: model.id,\n    }));\n  }\n  return [];\n};\n\nconst createOption = async (settingType, optionValue) => {\n  const settingTypeConfig = {\n    source: {\n      valueField: \"source\",\n      labelField: \"source\",\n      additionalFields: [\"code\"],\n    },\n    cancelled: {\n      valueField: \"label\",\n      labelField: \"label\",\n      additionalFields: [\"title\"],\n    },\n    default: {\n      valueField: \"value\",\n      labelField: \"label\",\n      additionalFields: [],\n    },\n  };\n\n  const config = settingTypeConfig[settingType] || settingTypeConfig.default;\n  const { valueField, labelField, additionalFields } = config;\n\n  let dataToSave = {\n    settingType,\n    clientID: CONFIG.clientID,\n  };\n\n  let valueToSearch;\n\n  if (typeof optionValue === \"object\") {\n    valueToSearch = optionValue[valueField];\n\n    dataToSave.value = optionValue[valueField];\n    dataToSave.label = optionValue[labelField];\n\n    additionalFields.forEach((field) => {\n      if (optionValue[field] !== undefined) {\n        dataToSave[field] = optionValue[field];\n      }\n    });\n  } else {\n    valueToSearch = optionValue;\n    dataToSave.value = optionValue;\n    dataToSave.label = optionValue;\n  }\n\n  const models = await DataStore.query(\n    GeneralSettingType,\n    (s) => s.settingType(\"eq\", settingType) && s.clientID(\"eq\", CONFIG.clientID) && s.value(\"eq\", valueToSearch)\n  );\n\n  if (models.length > 0) {\n    return;\n  }\n\n  const newOption = await DataStore.save(new GeneralSettingType(dataToSave));\n  return newOption;\n};\n\nconst createRolesOption = async (settingType, optionData) => {\n  const { permission, option } = optionData;\n\n  const isClientRole = permission?.clientBaseRole?.access || false;\n\n  let dataToSave = {\n    settingType,\n    clientID: CONFIG.clientID,\n    value: isClientRole ? \"Provider\" : \"Lab\",\n    label: option,\n    code: JSON.stringify(permission),\n  };\n\n  const models = await DataStore.query(\n    GeneralSettingType,\n    (s) => s.settingType(\"eq\", settingType) && s.clientID(\"eq\", CONFIG.clientID) && s.label(\"eq\", option)\n  );\n\n  if (models.length > 0) {\n    return;\n  }\n\n  const newOption = await DataStore.save(new GeneralSettingType(dataToSave));\n\n  return newOption;\n};\n\nconst updateRolesOption = async (optionData) => {\n  const { permission, id } = optionData;\n\n  const existingOption = await DataStore.query(GeneralSettingType, id);\n\n  let dataToUpdate = {\n    settingType: TEST_SETTING_TYPES.ROLE,\n    clientID: CONFIG.clientID,\n    code: JSON.stringify(permission),\n  };\n\n  const updatedOption = await DataStore.save(\n    GeneralSettingType.copyOf(existingOption, (updated) => {\n      Object.assign(updated, dataToUpdate);\n    })\n  );\n\n  return updatedOption;\n};\n\nconst updateOptions = async (settingType, optionValue, id, loginUser) => {\n  const existingOption = await DataStore.query(GeneralSettingType, id);\n\n  if (existingOption) {\n    const settingTypeConfig = {\n      source: {\n        valueField: \"source\",\n        labelField: \"source\",\n        additionalFields: [\"code\"],\n      },\n      cancelled: {\n        valueField: \"label\",\n        labelField: \"label\",\n        additionalFields: [\"title\"],\n      },\n      default: {\n        valueField: \"value\",\n        labelField: \"label\",\n        additionalFields: [],\n      },\n    };\n\n    const config = settingTypeConfig[settingType] || settingTypeConfig.default;\n    const { valueField, labelField, additionalFields } = config;\n\n    let dataToUpdate = {\n      settingType,\n      clientID: CONFIG.clientID,\n    };\n\n    if (typeof optionValue === \"object\") {\n      dataToUpdate.value = optionValue[valueField];\n      dataToUpdate.label = optionValue[labelField];\n\n      additionalFields.forEach((field) => {\n        if (optionValue[field] !== undefined) {\n          dataToUpdate[field] = optionValue[field];\n        }\n      });\n    } else {\n      dataToUpdate.value = optionValue;\n      dataToUpdate.label = optionValue;\n    }\n\n    const keyName = {\n      source: {\n        label: \"Source\",\n        code: \"Source Code\",\n      },\n      cancelled: {\n        title: \"Details\",\n        label: \"Reason\",\n      },\n      department: {\n        value: \"Name\",\n      },\n      unit: {\n        value: \"Unit\",\n      },\n      default: {\n        value: \"Name\",\n      },\n    };\n\n    const changeLog = [];\n\n    for (const key in dataToUpdate) {\n      if (dataToUpdate[key] !== existingOption[key] && keyName[settingType][key]) {\n        changeLog.push({\n          key: key,\n          name: keyName[settingType][key],\n          newResult: dataToUpdate[key],\n          oldResult: existingOption[key],\n        });\n      }\n    }\n\n    if (changeLog.length > 0) {\n      const logObj = {\n        updatedBy: loginUser.sub,\n        updatedByName: loginUser.name,\n        userID: loginUser.sub,\n        userName: loginUser.name,\n        testID: id,\n        slug: \"Update\",\n        changeObject: changeLog,\n      };\n      await addLogs(logObj);\n    }\n\n    const updatedOption = await DataStore.save(\n      GeneralSettingType.copyOf(existingOption, (updated) => {\n        Object.assign(updated, dataToUpdate);\n      })\n    );\n    return updatedOption;\n  }\n};\n\nconst deleteOption = async (id) => {\n  const existingOption = await DataStore.query(GeneralSettingType, id);\n\n  if (existingOption) {\n    // Delete the existing option\n    const deletedOption = await DataStore.delete(existingOption);\n    return deletedOption;\n  } else {\n    throw new Error(`Option with id ${id} not found.`);\n  }\n};\n\nconst createTestLabel = async (optionValue) => {\n  const models = await DataStore.query(\n    GeneralSettingType,\n    (s) =>\n      s.settingType(\"eq\", TEST_SETTING_TYPES.TEST_LABEL) &&\n      s.clientID(\"eq\", CONFIG.clientID) &&\n      s.value(\"eq\", optionValue.code)\n  );\n\n  if (models.length > 0) {\n    return;\n  }\n\n  const newOption = await DataStore.save(\n    new GeneralSettingType({\n      settingType: TEST_SETTING_TYPES.TEST_LABEL,\n      clientID: CONFIG.clientID,\n      label: optionValue.code,\n      title: optionValue.label,\n      value: optionValue.code,\n    })\n  );\n  return newOption;\n};\n\nconst updateTestLabel = async (optionValue, id) => {\n  const existingOption = await DataStore.query(GeneralSettingType, id);\n\n  if (existingOption) {\n    const updatedOption = await DataStore.save(\n      GeneralSettingType.copyOf(existingOption, (updated) => {\n        updated.settingType = TEST_SETTING_TYPES.TEST_LABEL;\n        updated.label = optionValue.label;\n        updated.value = optionValue.code;\n      })\n    );\n    return updatedOption;\n  }\n};\n\nconst updateInstrument = async (optionValue, id) => {\n  const existingOption = await DataStore.query(GeneralSettingType, id);\n\n  if (existingOption) {\n    const updatedOption = await DataStore.save(\n      GeneralSettingType.copyOf(existingOption, (updated) => {\n        updated.settingType = TEST_SETTING_TYPES.INSTRUMENT;\n        updated.label = optionValue.platform;\n        updated.value = optionValue.platform;\n        updated.title = optionValue.instrument;\n      })\n    );\n    return updatedOption;\n  }\n};\nconst updateSpecimanContainer = async (optionValue, id) => {\n  const existingOption = await DataStore.query(GeneralSettingType, id);\n\n  if (existingOption) {\n    const updatedOption = await DataStore.save(\n      GeneralSettingType.copyOf(existingOption, (updated) => {\n        updated.settingType = TEST_SETTING_TYPES.SPECIMEN_CONTAINER;\n        updated.value = optionValue.name;\n        updated.title = optionValue.image;\n        updated.code = optionValue.type;\n      })\n    );\n    return updatedOption;\n  }\n};\nconst createSpecimanContainer = async (optionValue) => {\n  const models = await DataStore.query(\n    GeneralSettingType,\n    (s) =>\n      s.settingType(\"eq\", TEST_SETTING_TYPES.SPECIMEN_CONTAINER) &&\n      s.clientID(\"eq\", CONFIG.clientID) &&\n      s.value(\"eq\", optionValue.name)\n  );\n\n  if (models.length > 0) {\n    return;\n  }\n\n  const newOption = await DataStore.save(\n    new GeneralSettingType({\n      settingType: TEST_SETTING_TYPES.SPECIMEN_CONTAINER,\n      clientID: CONFIG.clientID,\n      code: optionValue.type,\n      title: optionValue.image,\n      label: optionValue.name,\n      value: optionValue.name,\n    })\n  );\n  return newOption;\n};\nconst createInstrument = async (optionValue) => {\n  const models = await DataStore.query(\n    GeneralSettingType,\n    (s) =>\n      s.settingType(\"eq\", TEST_SETTING_TYPES.INSTRUMENT) &&\n      s.clientID(\"eq\", CONFIG.clientID) &&\n      s.value(\"eq\", optionValue.instrument)\n  );\n\n  if (models.length > 0) {\n    return;\n  }\n\n  const newOption = await DataStore.save(\n    new GeneralSettingType({\n      settingType: TEST_SETTING_TYPES.INSTRUMENT,\n      clientID: CONFIG.clientID,\n      label: optionValue.platform,\n      title: optionValue.instrument,\n      value: optionValue.platform,\n    })\n  );\n  return newOption;\n};\n\nconst createResultOptions = async (optionValue) => {\n  const models = await DataStore.query(\n    GeneralSettingType,\n    (s) =>\n      s.settingType(\"eq\", TEST_SETTING_TYPES.OPTIONS) &&\n      s.clientID(\"eq\", CONFIG.clientID) &&\n      s.value(\"eq\", optionValue.value)\n  );\n\n  if (models.length > 0) {\n    return;\n  }\n\n  const newOption = await DataStore.save(\n    new GeneralSettingType({\n      settingType: TEST_SETTING_TYPES.OPTIONS,\n      clientID: CONFIG.clientID,\n      label: optionValue.label,\n      value: optionValue.value,\n      code: optionValue.code,\n    })\n  );\n  return newOption;\n};\n\nconst updateResultOptions = async (optionValue, id) => {\n  const existingOption = await DataStore.query(GeneralSettingType, id);\n\n  if (existingOption) {\n    const updatedOption = await DataStore.save(\n      GeneralSettingType.copyOf(existingOption, (updated) => {\n        updated.settingType = TEST_SETTING_TYPES.OPTIONS;\n        updated.label = optionValue.label;\n        updated.value = optionValue.value;\n        updated.code = optionValue.code;\n      })\n    );\n    return updatedOption;\n  }\n};\n\nconst getAllGeneralSetting = async () => {\n  const models = await DataStore.query(GeneralSettingType, (s) => s.clientID(\"eq\", CONFIG.clientID));\n  return models;\n};\n\nconst getEligibilityList = async (param) => {\n  const path = \"/eligibility/list\";\n\n  const apiRes = await callAPIPost(path, { params: param });\n  return apiRes;\n};\n\nconst createPortalUser = async ({ newUser, role, personalization }) => {\n  try {\n    if (newUser && !newUser.subID) {\n      const phoneNumber = newUser.phone_number || newUser.phoneNumber;\n      const attributePayload = {\n        preferred_username: phoneNumber,\n        email: newUser.email,\n        phone_number: newUser.phone_number,\n        \"custom:role\": role,\n        \"custom:autoConfirm\": \"true\",\n        \"custom:firstName\": `${newUser.firstName}`,\n        \"custom:lastName\": `${newUser.lastName}`,\n        \"custom:note\": `${newUser.firstName} ${newUser.lastName}`,\n        \"custom:labID\": connectedIDInLocalStorage.get(),\n      };\n      console.log(\"attributePayload\", attributePayload);\n      const signUp = await Auth.signUp({\n        username: phoneNumber,\n        password: newUser.password,\n        attributes: attributePayload,\n      });\n      return signUp;\n    }\n  } catch (err) {\n    console.log(\"Error\", err);\n    return null;\n  }\n};\n\nconst createMessagesTemplate = async (params) => {\n  const resApi = await callAmplifyAPI(\"/messages\", params);\n  return resApi;\n};\n\nconst updateMessagesTemplate = async (params) => {\n  const resApi = await callAmplifyAPI(\"/messages\", params);\n  return resApi;\n};\n\nconst deleteMessagesTemplate = async (params) => {\n  const resApi = await callAmplifyAPI(\"/messages/remove\", params);\n  return resApi;\n};\n\nconst getMessagetTemplate = async (params) => {\n  const resApi = await callAmplifyAPI(\"/messages/list\", params);\n  return resApi;\n};\n\nconst updateTestNames = async (params) => {\n  const resApi = await callAmplifyAPI(\"/testassay/updatename\", params);\n  return resApi;\n};\nconst createTestPanel = async (params) => {\n  const resApi = await callAmplifyAPI(\"/panel\", params);\n  return resApi;\n};\nconst getTestPanel = async (params) => {\n  const resApi = await callAmplifyAPI(\"/panel/tests\");\n  return resApi;\n};\n\nconst getTestResultDetails = async (params) => {\n  const resApi = await callAmplifyAPI(\"/test/result\", params);\n  return resApi;\n};\n\nconst fetchTestDetail = async (test) => {\n  const path = `/orders/details`;\n  const apiRes = await callAmplifyAPI(path, { id: test.id });\n\n  return apiRes;\n};\n\nexport const deleteTestAssay = async (deletedItems) => {\n  const apiRes = await callAmplifyAPI(\"/deletetestassay\", { testsList: deletedItems });\n\n  return apiRes;\n};\n\nconst deletePanels = async (id) => {\n  let condition = (test) => test.clientID(\"eq\", CONFIG.clientID).type(\"eq\", \"panel\");\n\n  const model = await DataStore.delete(TestTypes, (test) => condition(test).id(\"eq\", id));\n\n  // for (let i = 0; i < models.length; i++) {\n  //   await DataStore.delete(TestTypes, (test) => test.id(\"eq\", models[i].id));\n  // }\n  return model;\n};\n\nconst ordertestUpdate = async (params) => {\n  const path = \"/orders/tests/update\";\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes;\n};\n\nconst changesTestStatus = async (testData) => {\n  const path = \"/test/status/email\";\n  const apiRes = await callAmplifyAPI(path, { tests: testData });\n  return apiRes;\n};\n\nconst restoreOrders = async (params) => {\n  const path = \"/orders/unarchive\";\n\n  const apiRes = await callAmplifyAPI(path, { params });\n\n  return apiRes;\n};\n\nconst canelTests = async (tests) => {\n  const path = \"/test/cancel\";\n\n  const apiRes = await callAmplifyAPI(path, { tests });\n\n  return apiRes;\n};\n\nconst resendToARKStone = async (id) => {\n  const path = \"/test/resend/ark\";\n\n  const apiRes = await callAmplifyAPI(path, { id });\n\n  return apiRes;\n};\n\nconst updateOrderTestStatus = async (params) => {\n  const path = \"/orders/update/status\";\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes;\n};\n\nconst acknwoledgedOrder = async (params) => {\n  const path = \"/orders/acknowledged\";\n\n  const apiRes = await callAmplifyAPI(path, params);\n\n  return apiRes;\n};\n\nconst cancelOrder = async (orders) => {\n  const path = \"/orders/cancel\";\n\n  const apiRes = await callAmplifyAPI(path, orders);\n\n  return apiRes;\n};\n\nconst receiveTests = async (tests) => {\n  const path = \"/test/receive\";\n\n  const apiRes = await callAmplifyAPI(path, tests);\n\n  return apiRes;\n};\n\nexport default {\n  receiveTests,\n  cancelOrder,\n  acknwoledgedOrder,\n  updateOrderTestStatus,\n  resendToARKStone,\n  getPanelsAndTests,\n  createTestPanel,\n  getTestResultDetails,\n  getTestPanel,\n  getCptWithTests,\n  updateTestNames,\n  getAllGeneralSetting,\n  createTestLabel,\n  createOption,\n  createRolesOption,\n  updateRolesOption,\n  getGeneralSetting,\n  getCompanySetting,\n  getEligibilityFile,\n  getMultipleTests,\n  updateRelations,\n  getConnectedProfiles,\n  createTestsDetails,\n  assingTestResult,\n  getTestsDetails,\n  invoicesPDF,\n  addSources,\n  createMulipleTests,\n  createEmployeeTests,\n  createBulkTestFromOrder,\n  getTestSources,\n  getClientInsurances,\n  exportOrder,\n  getPaymentIntent,\n  getDefaultProvider,\n  splitReqForm,\n  downloadRequisitionForm,\n  payerList,\n  checkEligibility,\n  updateTestingGQL,\n  insurancesList,\n  savePreRegistration,\n  searchEmployee,\n  getDocuments,\n  newDocumentCreateAPI,\n  fetchDocumentAPI,\n  updateDocumentAPI,\n  deleteDocumentAPI,\n  saveDocumentFile,\n  saveResultFile,\n  saveTemplateFile,\n  deleteTestwithHRid,\n  proxyContant,\n  hrEmployeeListing,\n  createHREmployee,\n  updateExternalTest,\n  addMultipleUserToGroup,\n  removeMultipleUserFromGroup,\n  addEmployeeRoles,\n  addEmployee,\n  updateEmployeeRoles,\n  getEmployeeRoles,\n  getEmployeeZoneSchedule,\n  mainCrewListing,\n  getTestByEmployee,\n  getPGEmployeeData,\n  deleteDuplicateEmployee,\n  getCompanyZone,\n  addTestResult,\n  getPreRegistrationOrderLog,\n  getShipBobOrderDetails,\n  updateTestEmployeeData,\n  getLabProvidedBarCode,\n  getEmployees,\n  getEmployeeGraphQl,\n  deleteEmployeeGQL,\n  getTodaysTest,\n  getClients,\n  getResultClients,\n  getSitesByClient,\n  getLabs,\n  getLabsWithTests,\n  createEmployee,\n  requestTestKit,\n  preRegisterEmployee,\n  getPreRegisterByPhone,\n  preRegisterNewEmployee,\n  preRegisterClientShows,\n  deletePreRegistration,\n  preRegisterShowData,\n  getEmployeeTestCount,\n  getEmployeeLastShow,\n  createTest,\n  getTests,\n  getPendingTests,\n  sendToLab,\n  getCurrentUser,\n  getAllUsers,\n  signIn,\n  getCurrentLabUserTests,\n  getAllCurrentLabUserTests,\n  getCurrentLabUserProcessedTests,\n  getTestGraphQL,\n  getRecordById,\n  getPRRecordById,\n  changeBatchStatusToProcessing,\n  getPendingReleaseTests,\n  findTestByID,\n  findTestByBarcode,\n  findTestsByClient,\n  releaseTest,\n  setFalsePositiveTest,\n  fetchUsersInGroup,\n  fetchAllUsersInGroup,\n  fetchAllUsers,\n  changeUserRole,\n  addUserToGroup,\n  confirmUserSignUp,\n  updateUserInfo,\n  updateUserInfoV1,\n  updateUserInfoV2,\n  updateUserSecondRole,\n  deleteUser,\n  updateUserPassword,\n  updatePatientPassword,\n  sendSMSNotification,\n  deleteEmployee,\n  createLab,\n  deleteLab,\n  updateClientsHippa,\n  updateSiteHippa,\n  updateClient,\n  updateProviderClient,\n  updateSite,\n  updateSiteArchive,\n  updateLab,\n  updateLabBarCodes,\n  getLabBarCodes,\n  updateLabLogo,\n  updateBarCodeAlert,\n  resetDefaultLab,\n  getClientById,\n  createSite,\n  getSites,\n  getSitesWithTests,\n  getShows,\n  createClient,\n  deleteClient,\n  deleteSite,\n  getSitesByUser,\n  getUserSiteData,\n  findSiteByID,\n  addUserToSite,\n  removeUserToSite,\n  addUserToLab,\n  removeUserToLab,\n  getUnprocessedTests,\n  getUnSubmittedTest,\n  restoreTests,\n  getLabByID,\n  getExternalTestList,\n  submitUnprocessedTests,\n  reSubmitUnprocessedTests,\n  getTestTypes,\n  getTestTypesOptions,\n  getTestTypesForFilter,\n  getTestTypesByName,\n  getTestTypesByID,\n  addTestTypes,\n  updateTestTypes,\n  archiveTestType,\n  updateTestType,\n  updateTestPathegon,\n  findHippaConsent,\n  getCompletedTests,\n  getTotalAdminTests,\n  deleteWrongTest,\n  sendEmailToCrew,\n  sendInvitationEmail,\n  updateCrewInfo,\n  updateCompleteCrewInfo,\n  updateCompleteCrewInfoV1,\n  updateEmailStatus,\n  updateTestResult,\n  getExpiredTest,\n  updateQuarantineData,\n  getTestAutoNumber,\n  getTestListFromApi,\n  exportToCalRedieData,\n  getTestFromApi,\n  getPreRegisterData,\n  findExternalTestByID,\n  getExternalTest,\n  fetchAllCrewMembers,\n  fetchAllEmployees,\n  getPositiveTests,\n  UpdateEndQuarantine,\n  getUserSites,\n  getEmployeeByIdGraphQl,\n  getEmployeeByID,\n  updateEmployeeGraphQL,\n  getAllEmployees,\n  updateExpiredTestResult,\n  getTestLogs,\n  getOrderLogs,\n  getLogs,\n  getPatientLogs,\n  addTestLogs,\n  updateTestLab,\n  updateTestClientLab,\n  getAppTestLogs,\n  addTestAppLogs,\n  addLogs,\n  submitToLab,\n  updateTestLabOnly,\n  getAdminTestList,\n  getShowPreRegistration,\n  updateTestFalsePositive,\n  formatTests,\n  getPreRegistrationData,\n  getTestByIdGraphQl,\n  getTestByID,\n  getTestBySequenceGraphQl,\n  deleteUserLinkFromEmployee,\n  updateTestForTest,\n  hrCheckIn,\n  getClientShowByApi,\n  saveFileSendToLab,\n  archiveOrder,\n  archiveAllOrder,\n  getUserPersonalisation,\n  saveUserPersonalisation,\n  getSettingForApp,\n  updateLabArchive,\n  getCptData,\n  updateTestData,\n  updateTestDataV1,\n  updateClientArchive,\n  cloneTest,\n  getTestListFromPG,\n  getEmployeeListFromPG,\n  getSummaryFromPG,\n  updateTestStatus,\n  getTestBySequenceNo,\n  downloadcsv,\n  downloadEmployeeCSV,\n  prTestCreation,\n  saveFileExternalStorage,\n  getFileExternalStorage,\n  getProfileUpdateLogs,\n  getPRPCRTest,\n  getPregRegistrationPhoneData,\n  updateSiteStatus,\n  updateEmployeeProfile,\n  getFileProfileStorage,\n  getUserFromLocalDB,\n  downloadPdf,\n  downloadEmployeePdf,\n  confirmEmployeeAccount,\n  getEmployeesTests,\n  isUserExistsInDB,\n  changeTestType,\n  employeeByIds,\n  getProxyContactData,\n  updateClientResultTypes,\n  getTestFromAPi,\n  getTestFromAPiQueryString,\n  updateBarcodeNumber,\n  saveFileCalredieImg,\n  uploadFileCalredieCsv,\n  deleteLogRecord,\n  getHipaaEmployeeListFromPG,\n  getOrderListFromPG,\n  getOrderTestList,\n  getOrderListThroughEmpID,\n  hipaaTestSearch,\n  UpdateHipaaTestAns,\n  UpdateHipaaTestComplete,\n  getHipaaEmployeeList,\n  updateTestRecord,\n  fetchTestFromByClientID,\n  updateEmployeeRecord,\n  searchProviderAPI,\n  patientUpdateAPI,\n  searchICTCode,\n  searchCptCode,\n  assignedTestSchedule,\n  uploadPatientTestSchedule,\n  getTodayScheduleTests,\n  resetTestSchedule,\n  upComingSchedule,\n  removeTestSchedule,\n  emptySiteUpdateStatus,\n  updateTest,\n  acknowledgedPositiveTest,\n  saveOrderFileIntoBucket,\n  saveOrdersFiles,\n  createUploadResult,\n  fetchUploadRequest,\n  updateUploadRequest,\n  deleteUploadRequest,\n  clearUploadRequest,\n  clearOrder,\n  proxyContantFromPatient,\n  clearUploadSubRequest,\n  formatBiolabGenCSV,\n  formatBioBillingCSV,\n  downloadRequisitionZip,\n  updateTestFromOrder,\n  createPatientUser,\n  verifyOtp,\n  resendOtp,\n  uploadPDFTemplate,\n  getFileExternalBlob,\n  updateOptions,\n  updateTestLabel,\n  deleteOption,\n  getEligibilityList,\n  createMessagesTemplate,\n  updateMessagesTemplate,\n  getMessagetTemplate,\n  manageEmployeeRelation,\n  deleteMessagesTemplate,\n  importLabClient,\n  getPanels,\n  fetchTestDetail,\n  deleteTestAssay,\n  deletePanels,\n  ordertestUpdate,\n  changesTestStatus,\n  restoreOrders,\n  canelTests,\n  updateResultOptions,\n  createResultOptions,\n  createInstrument,\n  updateInstrument,\n  createSpecimanContainer,\n  updateSpecimanContainer,\n  saveSignatureFile,\n  deleteSignatureFile,\n  saveImageFile,\n  deleteImageFile,\n  getImageFile,\n};\n","export default __webpack_public_path__ + \"static/media/safecamp_BRAND.1-nobg.7f77ef29.png\";","export default __webpack_public_path__ + \"static/media/pdf.65e31070.svg\";","var map = {\n\t\"./05abfe0d-7717-46a9-8d02-05e8a2f48915.png\": 1452,\n\t\"./2ce90d8b-daa3-4b3c-a685-6bec0dfecb43.png\": 1453,\n\t\"./3eaf991b-b876-4897-8e39-47aef2247dcd.png\": 284,\n\t\"./655f8008-f306-4052-a932-3f5622a39925.png\": 1454,\n\t\"./6d8ec4ef-f634-4237-9984-c5b337e36546.png\": 1455,\n\t\"./8cd1a74a-392c-4378-a8a0-15480ee37a1e.png\": 1456,\n\t\"./9a41b680-4f5f-4914-a8f6-2229740dca0b.png\": 1457,\n\t\"./MedFlow-Alpha-LIS.png\": 295,\n\t\"./Seroclinix.png\": 1458,\n\t\"./active-programs.png\": 1459,\n\t\"./alta.png\": 548,\n\t\"./b63c398e-dc3f-412c-871e-ad89a94ddb0e.png\": 1460,\n\t\"./biolab_mobile.png\": 426,\n\t\"./biolab_mobile_qr.png\": 365,\n\t\"./biolab_qr.png\": 1461,\n\t\"./black-check-tick-icon.png\": 77,\n\t\"./cancel-icon.png\": 415,\n\t\"./chart-simple-solid.png\": 448,\n\t\"./close-icon.png\": 1462,\n\t\"./co_lab-1.png\": 194,\n\t\"./colab_white_logo.png\": 1463,\n\t\"./comment.png\": 433,\n\t\"./default-avatar.png\": 413,\n\t\"./default_profile.png\": 65,\n\t\"./dots.png\": 184,\n\t\"./download-black.png\": 447,\n\t\"./edit-icon.png\": 103,\n\t\"./employee-icon.png\": 549,\n\t\"./envelope-mail-mobile-ui-svgrepo-com.png\": 429,\n\t\"./eye-not-open-icon.png\": 228,\n\t\"./eye-open-icon.png\": 227,\n\t\"./female.png\": 1464,\n\t\"./file-icon-gray.png\": 440,\n\t\"./file-icon.png\": 439,\n\t\"./globe-alt-svgrepo-com.png\": 430,\n\t\"./green-tick-icon.png\": 449,\n\t\"./hide.png\": 1465,\n\t\"./imagePlcaholder.png\": 423,\n\t\"./login_logo.png\": 515,\n\t\"./male.png\": 1466,\n\t\"./marker-pin-01-svgrepo-com.png\": 431,\n\t\"./mask.png\": 1467,\n\t\"./medflow_icon.png\": 241,\n\t\"./more.png\": 1468,\n\t\"./negative-test.png\": 1469,\n\t\"./new_logo.png\": 1470,\n\t\"./patient_portal.png\": 285,\n\t\"./phone-svgrepo-com.png\": 428,\n\t\"./positive-test.png\": 1471,\n\t\"./range.png\": 434,\n\t\"./reactlogo.png\": 317,\n\t\"./reject-icon.png\": 432,\n\t\"./report.png\": 436,\n\t\"./restore.png\": 1472,\n\t\"./roles.png\": 435,\n\t\"./safecamp_BRAND.1-nobg-1.png\": 1473,\n\t\"./safecamp_BRAND.1-nobg.png\": 134,\n\t\"./safecamp_biolab.png\": 1474,\n\t\"./safecamp_biolab_1.png\": 427,\n\t\"./save-icon.png\": 414,\n\t\"./settings-garage.png\": 289,\n\t\"./thrive.png\": 476,\n\t\"./thrive_1.png\": 1475,\n\t\"./tick-icon.png\": 83,\n\t\"./tick-white.png\": 1476,\n\t\"./tim_80x80.png\": 1477,\n\t\"./total-test.png\": 1478,\n\t\"./trash-icon.png\": 205,\n\t\"./tube.png\": 1479,\n\t\"./user-profile.png\": 416,\n\t\"./venturedx.png\": 477,\n\t\"./venturedx_1.png\": 1480,\n\t\"./venturedx_2.png\": 1481,\n\t\"./video-camera.png\": 1482,\n\t\"./view.png\": 1483,\n\t\"./viewreport.png\": 437\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1451;","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMwAAAAzCAYAAADb5uc+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADJ2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDIgNzkuYTZhNjM5NjhhLCAyMDI0LzAzLzA2LTExOjUyOjA1ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuMTIgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFBQjRDNjdCOEE2NDExRUY5RkREQTk0REUzQzc3OEFCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFBQjRDNjdDOEE2NDExRUY5RkREQTk0REUzQzc3OEFCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MUFCNEM2Nzk4QTY0MTFFRjlGRERBOTRERTNDNzc4QUIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MUFCNEM2N0E4QTY0MTFFRjlGRERBOTRERTNDNzc4QUIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJE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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK0AAABECAYAAAGE44WfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4FpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4OTkyMzZkZS03ODI5LTJiNGQtOGRiZS0zZWUwNjlkZGM5ODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTQ4OUQ2RTVGNkMzMTFFQjg0RkI5OTdERDQ0RUIzM0QiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTQ4OUQ2RTRGNkMzMTFFQjg0RkI5OTdERDQ0RUIzM0QiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YWU1YzFmOTUtNzM4NC1kZjQ4LTgzNWYtY2E4MDc2MTI2ZjdjIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MzFjZWI2YTMtYmU0Yi02YjQzLTlhYjAtZjcw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\"","export default __webpack_public_path__ + \"static/media/655f8008-f306-4052-a932-3f5622a39925.5264a633.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK0AAABECAYAAAGE44WfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4FpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4OTkyMzZkZS03ODI5LTJiNGQtOGRiZS0zZWUwNjlkZGM5ODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTQ4OUQ2RTVGNkMzMTFFQjg0RkI5OTdERDQ0RUIzM0QiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTQ4OUQ2RTRGNkMzMTFFQjg0RkI5OTdERDQ0RUIzM0QiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YWU1YzFmOTUtNzM4NC1kZjQ4LTgzNWYtY2E4MDc2MTI2ZjdjIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MzFjZWI2YTMtYmU0Yi02YjQzLTlhYjAtZjcwZThiMDZhOTRhIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1uOfNgAAH2NJREFUeNpitDx+jwENBAHxOhDjZGIjAys/DwM5gAmL2FoYg1xD0Q3+P/3ng/8dvx4zvGRk/Y8sDsRz0fjI7P9IYmUwNsxgFqt/nxl/MzIyAtmMXn8/MKI5IAmHwxjR6E50F1cE/3nP8B3IBal4xsjGQClggdLNxWxyzVhcM5lMc/eCDQaGK9zrOewK7jz//+48HlLGwC4jnoPkzf9o7HdALIwW3nB5FmSRvcx8DCBDQWJAQ5HDDlt44hNnBIex4P+/8UAqfimLMMiOLQxUAAABxIiWQVSA+A6Mc66glyrpGARuwxhsQnwUuRglg4AyBxCDE/zPd59wZQhsmeM/ujzcYPV/3xmhEQDGj5bvhEk9IiJzwNi3gJgX2WC7pD9vwLL8//+CBZ6t2AVzgTyaS3EBkBp1IP4EyyBgTeVssqjK2FgZsXifGMMhOe8TI7PotJ8P3sAEKthkwcmaXVoU2cvYwpkRR/BACiGW///hhiayK4El2cUEcSV+RrQwxZmBmLgY/oFsAGcQ8f+/wbYdcMumOIMABBAjlhoEW5hJAvELZNHTGW0MzJzsDPQG2GqmOCCe5Pj3E8MLRlbGZ0A84+eDF0A2Ir0I8w2IY5GLeWSwEER8Y2DKW/ATEvofGJlRfPb+/E0GHJmcEUcMoYu/gtKwFP0aSU4Mn7nIDv4PUtEJLIWwZTfrv58ZbjNxgDULGqjDhH9AaVA18haItYH4KhEBhe4oMTyF0H/kqgnm4ECQACMkO+NLz2DfHARmHnZJEXDtBcSLoXUfCFzBkc1JBf+Q2KACjQ89Da//A7TnPSMLBkZL5BkcEsIwx8JCxwpak91Fr4DIBMug9F2oua+RYwMUwj1fGJmKp/x8+BKbbmBZJw4slkBMUyA+cyyyigFa7INALBAvQYsFFXwlNCgLALEQHgdHIlXpMHAElCqB2BcUgCU8//+J8v7/KwFkw3E6u8I5YPIAOdYAGs1nTqW2wKwGad4KTQ7PgZgTiJvAeRWSvLCBNqg5gmi18EocmdQJiP2BOBRqH0hsM0AAESqHQe3hZIzCm4mJ4Wxe96Aog5F9moStYv7z9fuAlL9M5Gg6V9g3aBwLztlG/74ygmo34f9/GJf+vMswGAATlqhXecPI8j/sz7v/wJrtf+nv5/9/MDAhN0cZJJxMGLA0WdHBFqh4JJp4C5ZmLjYzMMTQHSsBrmL+/+llRGqGMTP8B9EKYBP+/mN4eeAsTP0aMgLoK7QcRa560fnI4Bm2KjhE7d+PNd8ZmRjTfr9C8dJzSB/0IbgkYGZiYGZnA9bXYBXBSMreEShHYaAdivFVwSeQ2JLoIQsqL1fr/vv2P/v3y/+skKYDHLNA2q//YTXNjxdvkQ0+D6UFqZg8zaH0T2zJAOT626eYeUDtBRQMCsxfDEywJBHFrSjFwC4uBKscwHmRRvnpAlIAZCAnA0sgVnsMjO5y7A2bb9CaivHf95/IVSEDWksMlHlqKHSkJ5Q2RBKbDsQzmKDRewxPDv0PdSikRmNmxlZ5wNJFNRVCdBu+0gAcxe8YWRjfY8FQ+USo+mS0vtYXaEuJFgUxhrmgZGDd8+vR0T9YmqW/gGJ1bDL/oZoYWfl4YAN0z6FKeJGUv4Tman4g/ojW/FuGp5eBDXSBuuboZS7IsUe+MzC9ZMVSriv8/wkTVAaPNyCGHiSwWCAONfQDWjeZFPAXSpfj6psx/gWai+xYDmDDPYZdmUHo/x9ErQEszR7MWc/ALi+JL3SQxb2J6X2j8ZnxqQO7pZFNCkXmN1BO5P+f/0xICfzX+88wh4KACFoUdWAZLYojYgggB8r+DU51CDkvaKmgDeVLwIcKgeXoRSAFb0pBewgogF9XGZn7BkfoEBv1MHVToBhfaMM7lAAByLXW2BqCKHx27972VpWSIlLPH57xCiHxCiEkFe/44RWvlD+ECBJC1OuHH4QEIR7RkEbCL1RItBVR9UgQiUf44V4EQUtdLe3q3TFn9+zt3One3b0lUelJJnfvzuzM7Nkz35zznfFyvpPJIdJK3MVFctxzhtxpv7u04I9Y9P9J1GY+t8ZhrU5yJVoyM7jfvr/VKLZZysUEhmqZ/hObr+F/Ap8VrYw7mma940DpQR7B1UFrEs2jfh8vG0QwmRv7okyIfYeu7Ndgw4RzBp+VoAnSiH15oX4jMphxjOibOBga+i/Tao16XR7jnuhpk9tV5WNfHi3838lLiUv7lR4bQDKcHZek7o3EgfVqjnI3JHCZigZzGr7u4N6a+kEJOs0mxu12h0AdxTEgEErnlvsDVC1hyG68jJK6qfSx0QyUXryTR/ueLopKVXSH/WUyL6UpKZd7kQr6O8yKaCoyeNBYqOXArFi1YyiuWM/slO+HuubAjTErIL17F7nqrYulnfiLK3SbQ0DDPHZ9JxmSZOMucXpeBshhoi810qgx+XJ01/kvO6xHYGYSxaJgliIvVt0kSKn7UAnjrhwEvfq72HyT9PhG4fp4C4XRx8L1GKnurJflThOBZIDxcyz/rTZ8uoOoTe4c9xdumQlgZhjw7XkYglmZMm6KYe41wnhbrvMypQUpVs5e3wHr2IId6iwGi3lvXApufm47HioNNX4kZC2SabU8kAW1SgDz/02qP5bch/dXK4DF4nUPJNJEEci8rT6WarEUTi3k5VyKykoVFsT24wU+hSUEXwBpsuUiH9eDrlHb+QjcUe4L3FKz/Ew0m8+s2EGxizBC77k4D8JniiGtY3t7TFGx6wXG9InDCyktwGpl8rO7MOdCXpbRNeJxHyD6WxNcGfto0FKJ5fIr28HK6YhSigF+beQ9BDJC4tcV5YBHv1MIIv6V5EixPkiUjiwvbYOIwwIu/c6sARY0VAEGA4YPe0FOalV6b8hygALT7DjWfrr5EN5dvCku3yIfS9FrycqwcImXZ0njnqYfPRVYkI+COEVJ83i5IPzH8QpQuQjIe6McLw/XR8rVFJZhLtONqaH+4yXiZBBQRr0m/A5e7C8CRQs4TbTKwSJswWTiSWknXuKiXDeRD42lotzVElGTLRGTrv1ptONVaow91EF5FPI4EMTIwjWKzDLByBd80jpbsZj8QaLGSgSkzEKdgsQTjLJM/wvL3c9cjlBpVn9xWMCaqKJCUd0r86CKownwb7ErmIvk6TyyHMTqiNwumN0WKuZvtU7jsPjHWk4WaefDmfCLyrpC13fIh7TrkVrsS1g9mzaNMoKCIeT+YN+nhf5eCyGpuCmup/7sdpvJXUSuHznKGZB4KkwhV2svXb8kBnA4wQ22w82knrwVfAc8BIHJuU+qYJGsBgIs1Jgga1IGGj9ZjWLmUS/QDhmGRn4/LtGnYctqWcIquE0vPVHApd3CiwfJS7E9Bvsw6mVSPuakelNIrZKCl1C7QqF9vhSKruLlPO3iZTQe3isAKzm3lpTeFhrTSSvofgcaH59ZRwY1nVboFvLVdRob95MotcUPVp7g56IqjtZHIOpiuXuCuW3SwKh1Ww6BUBo83nIE9K9RaM3yWwB2rjU2iioKn5md3eVV20ppgbIgUEhKgmDUBENAIwnpD1BRozQxJBJERQw+Ep4Ro4gEoz+EBhAjEUJiTCzGEgQ14SFClIfhFYFABUpbKNCGlW3tbnd2vGfmzOzd25nZGaBxE/Yk0+7embk7882dc8/5zjn3dslyoFeqnG1veuI2wyE4sWwdJNqiebrRo6cynwzqRsiLI2HjRTbbtF3OdhJOal2ZhE0eWBs+1LcgG9YVjeWBdZFqm7ZsLqs+mcm9QnlgbV9nplo7JPmKYLCjs/BOkxTSXeS8eAcWXUokg0cjeBs7LyB3sAPT9a+wrVVS5s5MtsKeztMwUEvkEfVoFfCz/1kVpNIiUK9vSFyAAi2l70SCBuNnjQx0OvgHMHK8M2JsoaICPRApB7v9JB/Qi5NBn00wDUzlBsdEH8d7dVdfsvMwmWBSUSX3fbLdcW7APiU2TE7duoYgYuQhxjkSZh6ZEJHYQR6PLn1HRkBlVgHmJ3Cygkw1v/JYDx+P0sehfarN/DLDD7Cnuz1GTbsINnEgjqzBdLVXqelIeqcG7fWXQSkpEk+zy3B8GIwoRC5KoU3bM35VwTmi+ywabk/gvuHvdTWDXbhcf4/1ShldBfBuL/SOlMHuSXMgXNbfy8VvYtu4uwyIGCEIEi1oGS02FKGd6vjkjicvSaeWJORQMV/gUcnIGDWC5y4KWRJARWmu+xXCA7uBWuXQzYM9MNJKhU3kd/fZHHPWpp+5Dv0v8gIs3vA4NtvDMjY6h6fiTcO0+JEq9Sac+vckNEnORXrVyTbbuuvB0yZBvKFbWdIGF7Uj9/Ar3e8uuPaXuM8rswGLg24n246x2X5nBbNL5yVbYH5XC2A6EmaOB1xGbCcbr2z/NupnjaUibtyEwkcq3Tw4UfmvhdyT2S6jNODDjtWqsL6CmVj6Bu5Z7vrGHoYmgWaCZLFeWjIJof6FbiNGfO3m5SCwfIkUUoJiicxET69AUDef9Oxhz3GxPpBKsYdgBvuslIXe5aVwY/8xHlw7Fxg9uFdy2ObnR8b7NpMbxssecgIWQcRymkZ21vR2Sfac6VDOvK7Dcj/oLcR9MYJb/1UdhNDUSkcW5nCH7KX/iwVg0Y6uyxFQRadlK2dNmJPK+GwjVke9L/OsapX79bROV7NCM6ILuwKFOriFmhoGrh6p79BBcLHmWwiPKHfqwgSzTWjfmEPA1ji0LxZUBDoVHTywAVLOVkYgG3mwV/a+fkZES0wAIyhoNeHI72hsgUEvToW2w1bd+cvCqecF29GcCMpySA1MFbgTU9YIwH5qzg8KqdMEN0oW3IbngxHKt4W2y6Z+Lh4/Clr/OGkEGruHl6uFi35asD+v5Ziu/RPsqVOU13lgRUP987t6GejOXmoxQTVehkxxS+VBW/fZ/xlIMT94uVfPazv3/SpkLoriZ7MVXI7n6k+Whhjh86Zm5MAI9VuxOYvXsZL5JyoFdCrQizVQxFe+Gac3kG49g9QaZsfE/m4CtTNuLqvytdCNXWHkyBx79XlbHxM2mrNcM+rZLQoP1AQ1Bi+oba7eFT+5vRscBrekDB9jKP+loGII/DJ2Jm8RTOJ2I+lR4eCPf8F9fwOyp/18DM5rGS3n5hC/MtmGc4i5WJ0oA/gRO71YU7dXq61UipTdJ5AAzLKlJDeTY6d6NaGsBODogs+g16iIntdl0+lqh643CsDWeAB2icu+FXcArFg34RQNPS4wcuXWMlrklx7w+ovtDNTn1dZB3yj9A1ImPad/DRYVQPRkPSgF1ly1VOhiFeS+jOY+p7I82B/5SVfhDUhm7Ff4ya9OuSx2gCEYNRbjgf3Ixw0h21Up+OEHehBAu7sW007fcjl/p/B9mkKdLkpI0mrJA6hYsl2kqbpntjQUwZN5/TLGAhZD3Zl1YH5S4sfcBhB+5GcPfdzw+TuSnUu7OmVQflk5gUXBCDTIYf1YTEJWjQW2FNK1BqjhIJz64EsIlxTDvSpyWisHoF7q5XggjtIF4WGQYFYAA3RtiZZcqKYfUpJ3CJK3OuDavqPi88Zng0z9euIA8Mce4J4ZpmAil7uO1MZ6yFwNEvNUh9DnhTRCUKcfpNd2JfX/vUDpnRCuIUzmUZ3Q/29E/GAe1GZIr+1ips3X0OdVdC3byLIZQJ4q7htM167x5tY49pofdwK2kwEaSSWgVVI0YWbPgA/rbH+ftVys/TLlcboAtPUwuwPzbHFdFozbPAnpBOBlQr94U8jv7qIb2QNGMQiaWbUE7GmaICV6aKacof9VBDzaosX0+2YiH048GK75i/gONPIxIRkTU3bTsSEy/ZYQ+TKarvU6WQTnyMZFt9YyQq8zu/TYQbmfI4kdB0mboka1bBYu1iCo8aST2bOJbnw/tb1GbNpKascbRw74EIFrupOHiKqrops7TyMKlyL6h/RhA9cHP/E1krmGID1BXGqUzjN54XU0gsdAOkl5LBiFh1O4iXcFp0/3kXteRgOjjuNqrfzY5xIgf7e4q3l2qdaVctKxx+U+Q5l59aHkNpEw6KNnLsL59bXssUn3rI41VUGtpld+OI9HXH92i1LC3gcNR41Zc9p95Wc2lxVWjmB6tv2eWjRClP8EaO/aY6Qqr/j57jx3GWB57S4sjxXdiBAQhILSqEhpgw1I21hAAYs1RNs01PpooEmRP4BqauURsWAKVgsFLdQiEgxSLBYRhKIBQRAoC5VSFhaWx75n5vb73Tl3987d+5qZHUCYk0x2du693339vvOd98kkojsdmmejJWGBmWJaaNJfkVENrTFK+2a/StXHTt7QL/i6lriyTIOZU9up9QNY5d7YGieDqw3iNBRANa7m3nIOtGnRfI/7jSbvSZ42gFUpv2tnOvm3f9CF3Qcyrn6foxsXtJ943C/GEnjaFC7soKWkl6/aREFU/FdznDYH2vToGTLVWLEg2A+Cgi32Z6Xqckn4yE+pgU4XDZCGyl6MHOVA653g/O2kOXZVOiGCK2qbixyjDhpiIMbJfwoltMQZ4R/0lQjGUQL14Wglbas9QI80nqVyEcq9pRwlkT/D42Fmtkp3QCX2BypE4N1B8RpaVn+MLguFDoo8+lIJwcq7q46UXXD2tpUSQVe1gW6P11IHCdjTIkD1EuaJZhqpc1rE4MQbo1oylClnJ0c3OGiRhnLeCTtVwrd+QLx6/dRoxdxyJUgSpBSRAL0jXpPYgZJdk/CxV3NSAzgztrdV44WiZXwnLOf32J0YsfqdhvajohGD6dSGbXq3GDsyh01aEVaE1a3wrM3V38yE3K5MahfCv/XEFcLNIBbnvBDcL4dc9oErZkm2Qftdtx0gTYZIHesjMdYqkcqJf3KKFAHsFvshfGkCJTfDMQg8ktNGYxStqSPyuUo/izzcK9w9bxFRpgLyKZftmRZ5qKQrR6lEHL3sYR9EvsKx66mfT7oy7Z/dtPyIGqfDIjT8CxEW7dRYStGi8CAFpITRW61HMu8MwwuBLfcbtoAViNovoiNL1tKZzZ+4JUlO5bHcCN1FZtG1T22uwRUaEbpeirJiiX3hSihiIygRXoFKXUZmWi4/0yWPFBeE/+NPlXwtpiZVby72h2wrB35BJKIK8BPyVnZb7e/LD5MqOSxKrsFGG+5Z7GTuyufl1CvB4d35GgctSiaHXT5u9fi2ehgDn30er2lJCtePqJJ+WRMPEoE8KlWR7+Q54R8fkiunj/RGH0KzGiB3aXK0kkbGLmr1/1K1liLZd5Q8dr+SR3sl8KGkuV5XNK5VEFbCIc305UBzKTmcxqvM+MNrGLRRMsaCWVOjB6muvpWuB6tTYYrHoLroXZmC9n6eLcYw+TfPCv/EgVKher3hqMZDJXgpKhK5DWEpFgDEksvSZWbkDWkwdABfihVaiWtO9EM4EOogIj6hhbMiVl1L+b2Kqexn4+nz55YmKohay7TIRLSLh0U9BriUf2SxDYU14bF7L6e/u1IHXp2sCKFlETKVvzEoxqi0vTJd0KK2zgMWU3GClDcn3B+tWlVHykVU/Tcu/dWGnJBMArwSilwckaW949Zy0cQk2VZOmrrTldRxyG1UOGIw/W/jdjvLgVPbBiQjjrIBra4w3JrDpCu95iB6zqZE3eenbba/mAloHV9OXIiHslk8nvuLoB+23d0PNytkiO6KXqym6hOnScm3tNHC6nCvzSn1MhXo72HOljCab5AEOz+HS1tChvI4m21v8N/PebUcarFPMQN7djqKWF8rC4GSUJAmfuBrJxoke/Oln09qaznA3zZyWhSqUdEoFCHBiweBuPdjvDxjCf95szCraoqYX8qye3+9hC4dKqdgQcSOk1pRPSX3fpnpwo0Lcti0pQUOqtCTJsXRSfG9OR1OG6fmOtwWNgqVukheCNNWY4b8VhhOeEIEabOvPW33RahCih4Yv4da/36MhG3DCkRynd9zSMvsUYJ+ChV21LsLGwnh8d1shphpUkAgGn1GpiobBgKnfTSHzxb0E5sVSld+jQ6pDymRxjDSgTmMazXrASwD+0Qe3Rnu1+S9yoR0eMECAeUrX8JXArh7ZzWKovUjJGARX4icD8TbIjM+qc5arL6R8noUUrioI9VXVlmZuqBI2rUWPmmz3OM879ocM5WP2ZvDaRPlkX0lsDqyKGcm6Smy96xBn7LsrmMELRLjUfjTWOIBnqDJZlMJZE1w2pLsVJkdFk+4as1lFzuxnI0l5jB/V3XLQaS0G5V8/z46PH8l+SP5VgqUHY21+X0D3/94m+0rKDtFBr+utJjs+y+PZ+CaCc4ieCWn2xwHpbnUTqa9h4HQ2+JkDeShvFwrfnaQe+fiMjIaroXQgr+VgHxmaOSezGkh4nzPYaw9Dtcy3uE4ZOY9nsOqRre7iEvvODzj6Q7Hob7jDDtOe9Dlot5nja+GWj+cUTdCFLJmf4vH444lCeDRKJ3/l7wNOBWSawssyeLLgutxGbkb9a93+kMWx0aKLtJ5L5pBW8HAuY8SNkokaO9i1n3uKjwEKEbzHLbDM7UmYThQKdK7hL5cuJoq3ttOodKuRM15YTMpu3ZV1KH8jYsmfL0TylwOyeL4fmY8DzctrOZsXLBRBBJUCb8WLlggmUjPeAN61yUpTZlaCzDaKRHU5GPFflQfPxB4CVBN4FMjf/blBTX59bNfLqKq3Qco3KPImK0A5e0MGZqmmmg0y/BeyK1BIcwz/85wDIho/8wywL7jcs8fOGjzdoACw7MrxqL1kfU41gre346aGuO2sB4gTqC7BOmChuPUVW3U6qKgA1uMWs+RAOvABTnunEAJnVZg1oqVsblkEMvQMIe8yGaonS3kCSkChIs6UfXxU/Tx5FkagkMlheb0mpccALsxBcCCnnYB3HIn86BH+jCDYzFBr0b/quccALs3BcCCEDAz0UGZW8yyc5N8uk4XjOVrvxQidTQK8vxXBLRcrQb5PcaBMK3x0Ti4GqUytS5SRwJIQxGcX/CLBzeYw9qmZYB2uLAjnd2xj3ZNm9vEbU3KFzwtjzk8oBkpvhwEMb/hsB2y+NUqlHmOMo/1TYf6kHNhzmdSHO88OVcWHKC/U4WB0RRjEFHjkeMiuPGECKltEhb6Vv+g4H1Yoqy9GrvUSI4V2RBA8WAL8cKnaMU4BKwF1oc7+a7XUXr2VbfqgytdlNT8LIGnbQqLoJtdPpVrfN1h20eUXvfy2R4UvjzcxCg+icZ64evvpdb/tERtWFYjspP3yJkJKGB1i5/UAw67llPL7gVajazLR78itVaOUNDWvBX+2287aPTptuA8yMtwgY1or/BSWelgq8xrJbUgyXBCFk1tbAgeKKfeVl7DEgHuh8g+gyHdZwxui2D2TjbPCdCJ+PmGBzY/eVVrmyTkX5/WA0ikLMvqLLWdFCpQCxCt8A4qYaqSEz2mpd9GKazEaY+vzRdtE1kN32J73VB+EJvYepBk1oLMit7awie0po4iFEyIBcnc9jLZF47NlC5lIDuevQY0/Tpqnb65NR4Uz0zGrnHaQWnJpuLy6Qa15uyQZ+H7T5VwTEwC6dlgT7or3I+eCJXScn8Xetvfgdb5OtCrgS70kr9YTmshWY82oVCEEn7mrpQwKE9rAdi4Sm1Ku9J/3vo7bek/kSp37k+0bWkpHgxiTXQ3K3HGMMNpvM1vUtisxIl5rBnDzTiZf3vQJNviOGMlfcSKorUUHBbDDb8jLhlRTSd5XCgbm5nz4XqQ9PikQYs2OkOe5zF3krUvfoWN/BhkRegpw29IHfoTWwlwjbN49dAJDaGRy4ayiWNMiuhaFqueNylLIT6P0UmwhldvXBsKhf7RwKFf4/uBw6E7/96N993G701/3hP4vDrhPM8q1khWtUIZSHfxpbGaIe37ojzygvzWQ20ISNl1E9cFRmq5Kk+qokSc/P4DL6MDsJGbutHhxX+h8qVrKNy3dyLA2zqdpi+bTmBCGsZcXDWYpiaZlkvEdtYaOFAx7w/AwuFxBzX7xxHDMIW3L2MQtzUsMJjhRXzMR/zyfPzgUVgeRvKlbFUcxTIarge1zhawsjGJmltQqGzqK+J7WWdjVrrXhrMfZjAtMlgZsD9qcW7lSTbIcK5hzDjg4FlFzY23Afyb+PqGm0Svs6yozmCLjz65H+dz4XlNpURvE6zqv+f7mcLj/5jvcRJbI4bwxMK9vslWFX3xhsL+W7Ngjtm1GvmBUlnaId/AfIVSt3ahXkH/eE380WhF6YJA8e86Sc6rWCsFa/ninNys1KZXMZWv3Egnlr9D4Zt7aCk1DqS7gI/yOTobrAV6rECUOSacKS/zMSX88LoxmBAQg6YEtzHIMNatBtlqAXMzvZXcK6xIQNYrY/kQgGnPE2ILc8o5PFHQ1qc/H1vGANOf80AGDbjPQjYH9mEznVWzxTHMHWFJGMvcsorvZT2bk44weAVPXr1TxCreT2+4cCfL5hGeWDonDDD47mbABfkeK1hOfps5MsS7X/E9Ev/Fu/grT+SdrB/04XtebuC432TuSoaVZyErwXm6omZ2LlTxQ5ZyaEBrsPhY9Ixty1AnKlYbaYO/gF7xF1Fn1TF4sYLc2ixJESDUuYD2z12WyLItKczV6LqBycwAoRmX1ZEyUi7r4u74JXG5uZSR50+I4ihzJLYo7dDXeasLmx7jepUSoLHaeuo9dSzlSTEhWl2be3M3MFnZ7Y5IkB2BM6ExDcuBpgFIkJ1RAlpGbZ6qjuCfH+GlJZ+XqhW8PHizSEiRQAT85EOmbbQq9+ZuYPo/59LW+rsumagAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/8cd1a74a-392c-4378-a8a0-15480ee37a1e.c318638b.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/Seroclinix.5264a633.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIaADAAQAAAABAAAAIQAAAAAWQIAAAAADwklEQVRYCcVYz2sTQRSeN5smoWntD7AUvWSbthG0VqEBkbZQBUVEPEhEPVpPRZD6F3j04MGDqCBFERUxetGLKHqoBQ+lQgsVkzY/QKoRIbVJWps2u+ObpLvMhpCdBJsOhHnz3tvv+/btzOxOgJS0/V5vZw5gmDC2lxGiEQC9JKX6IWMUCFEQa8nF2OR8IpEUQTBWbMFgUJmdng4isZu6XO/C4fAPI/a/er/fv0fP5U4gXu5QIPAiFAppJjYX4FPVq72q2m86t9HgPJyP85o0vV7vBb+qHjQddTC4kB6v9yKnonwO8EcQjsfn6sBtUkTi8VkcuDg/5ZOQzwEzWkeD8xb4+SrYjkkocy8FXuR3FJahzBVCTl9fX9t6NjuAa1fFm3ADwDKj9Gtra+vczMzMppBqa3J+RzX7AGMM/D7fqb/Z7Gm0HQYD2gilDaZTqd/7uroef4vFIkbMtsd9iNomCQk9Pt8lTdfPigKEMNEZ251n7JrP5zsg+u1saRH+rq4BpuvDdoBcIGjaZdyYmu1yjbi0CKzAGeOiQg+wgvPheQOld3BOfEAfPpNiQ8OjbWyMGGO7XkoElrcDgTsNMNzrNULprQlo77yfb77+UGuLKpS+NOK8x3zpzc+cXCJAGbtD9KGI8ETe42FMe4pkoEH+iLupaWA1nQ4aeXh3lmsMf7leqhJYbsubVAdo0F0NGUZgrQDKYIGm0w0iAU5SyzVirNSWEuFyuSyvXpwL3WP55TZFUY4CJWPUSUczhJwUwbFaP8VxJVtKxPz8fApBYwIQbOr6+ChZbr3hbX8wml8+h7FjQpwwRZkWx5VsKREcAEFf8c4AQ0PBeg8lk8kW7A8b/kIP8Mvtdk9ZfBUG0iKi0egiBXgmYuHFVNd1LJLQcOm6GbuL1dsQvBVNaREcZSEenwSH45GIKIpAkTmH03m79PNNzC9nVyWCAywuLn4GSvm3QLn2ppY3suw+YSHE7TuGz2AXLsO4p7FxbTWTWQDGFPx9tyRKDmoS8doT+JhXwp9Mjubme9xOtbfnRhIJ0y1r1CTidzZyE9/e46UkdCV1BX0TpX67cdVzYgswWw4YH9Gfcn47H8Xdr2ohikKeECA5KzgstbSQt1afxAj5iycjiVwxZSg2G1EYPQ5AvgC+P/D3njpgpH9ublXMk7Gxegp0q+p5xemcqmVpyZBUyuEnMvzuGKT8bLh1NKuUvy0xzsv5Kd/dsCTrO3ECwzvLcf7CpOwPBEJ5QobrJYTz4El4iB+KeYmxCMW2k6dyU4QhZif+n/gH1AZ5mCP+lnEAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/b63c398e-dc3f-412c-871e-ad89a94ddb0e.7d4ef83e.png\";","export default __webpack_public_path__ + \"static/media/biolab_qr.c553c613.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAKKADAAQAAAABAAAAKAAAAAB65masAAAB9ElEQVRYCe3YvVHDMBQHcDeBOwbIHqlYIU0yQZgga3DskYMJ6DELcEeTBeipXFFh/s/oJTqdJb0nS3KK6O4hf8hPP0vYjt00F1L6vl8hWkSHOCJ2F0JrGmDWiB+EW+ZHQuTDEfY46yhGcATsZgMKcARsZwEKcfQ/uaoOVODWV5w9AteRs0dDs5xl5JBkgdgg9oh7DSDUFrlCN2HsHgpdrf4LAjuXiM+h6fnPAYs3oc5j+3D8dBx1gkTPZ9ew9GvWX1EnIXFcHpwBfhuQXSUjs+IM8MuWWctqZHacAT4aFIMsY8/botNdBGeAt0j+NgVZDEdAKujgLhVZHPdPTENWwyUitwCO/UzH5lMJ34S5Y02N1NLpPik8C/lxfCIZkOVwCqRn4IZp9z9buYMctWAkXWT5kXNPzCA/XIlnfeseX3wdEMmDX/zEyQoW4ngw6yKVuLpIBY5HjYFU87boD4yk6Rbi6GrlC4dBhOPC2/IikV1yQQy3ErSVPnHyIDU4nppqyBRcNSRw9GWTpi1Ugk8IHCid7gOfmLhG8jYkw74gjjtSIHXv3UjcBYAinAJJXe25vajGAfTBeqyocNwZEsWme8NtRTUS7kZ0STju0EHa6ekLxoLbiWsc9ICgkaTpfkdM/rKJHPS2+ISg9276OPCCWIpRpuEf4ES30TS2nbsAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/colab_white_logo.7d4ef83e.png\";","export default __webpack_public_path__ + \"static/media/female.3f889d0a.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAADOUlEQVR4nO2ZX2jOURjHP+9a2GouhCtbRHMxSnKjIURhLqjZiFzsUhRaNOVPC9FEkUy7cyVyQWQkpNy58Z8LSqbZWv6Njf17dfS89XY6v9855/f7beun91vnYu/7nOc83/ec5/s85wwKKKCA/x5VpBhHgCFgGykNPisjdSTmAYN5BLLyd32A/QSgGmgCrgNPgA/AL+A30AW8BW4AR4H1QMlok6j3ILEA6NFsbUORuwasAjJpJZGV8QyoSTuJLNAOVIw3iTnAImCa5IYaU4TcFuA88C6ExFegLmkCO0WJsh6JbcMS4DIwbPA7AjQnlRsnLdseh0SuUD4I8N0GFBEDxwxOhz0l1gUZoNHgV43WqE53GZz1A7WeOTEbuCs7WWlZc4XUDH3dPb7BLwYGNCdfgGUx1Ul9fwooDll7LtCp+VX5t841+KnAR0PRUcqSlMTetJCoAro1v9+AchcCtw1nfkOIfb1BoVxItFjiqDacgnabMm02nL8DloVmekpsjoQKrjJCHjYEGZcBHZrxIwcZa4kgsTkSJ/A/EZ+AUpPhIc2wD5jlsMDriHVCkVBHwgbVWvRqPvfrRiWGHkZVQhf0a/N2eLYdLtB/3B69HTcROOjkGn5o88o81ckFx20EkG3JN+p17AxfavM2yudJkagE/mh+9pkMSyVB8g1VAtlwRpvzRrrPJEgUAfe1+R1ht7kGQxIqKcNSdHQZVYVwEzBZcsI1sXU0GeZuJwSqSNzRJgxIUQnDOYsS+ahTDmsNP8wtHFAuZTt/YrflfUhdWu4lSKIYeG/oxWbgiBoD+05ptMJInA2oyrkxFLF3GgRW44m9hgC6pOUNg9qp08BzUbI+UaoWaTuiNIC7iYjWgG1vjHnd8yFRHmOdfzLWFnAcHgLzY/hOutgFIiNtxYiBhGq1rwBLPXckIw9ar2JIrDfq5MkjKEGValwAtgIL5WI0UcZ0+Uxp+EVD15sdKxIV0kFmx2AMjhaJnMw+TTDYx8DhscqJfKwErgI/IwT9HbgELB+PxNZRIrvSLM/rqqH7LHeFPmkSX8h3qk1fA0wK8BVEQj35pwa1Ggl1vFKHWiGRyuD/i38wFlBAAdjxF2g0YRwTM6ZTAAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/male.f1e1f8f6.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAdCAIAAAHFskzeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG2YAABzjgAA+swAAIT6AAB5gQAA/RMAADBtAAASKQ0eJk4AAAJ6SURBVHjaYvj///////8ZsIH///8z4JKDACYGvICANAAAAP//Yvj//7+joyOmeG1tLX57iQEXL17EYy8AAAD//2L4//8/HhX4Hc1AieuYKPEUE8QB////t7OzI1JPVVUVRAsAAAD//5zRsQlAIQyEYSuxNWUcILOIywsZxwtavAe2cgN8cPnzS3cvpbzI1lpEXEwMFpG9dxpjcAevtfhaZsbXBpB67/xsLlit9b5qzplzfmGqCuBTBwAA//+Cav7////z588ZaAwCAgLg1jH8////58+fDHQEiYmJlGZIskFfX9/AWMzMzDygPqZzHMfHx6Ok6idPntDaSn9/f7h1AAAAAP//xNXBCYQwEAXQkIPk6k0sINiFeEtOgh0kJ2sIFmFngpYgKSIS+R52IazsUTO/gUeY+ZkEAzjPc5qmuq4fxIQQXdet64rfJHgYhrdf7L2/w2VZ5hnwtm0JttbmXK4QAgB2HEfmLmmtAbB5nvP3GABrmoYG5pyTwFxKySjCx3EkgQm2Win17bExhqDHlD/XJ33fv63u+/7/OsUYnXNVVT2IFUXRtu2yLLfrdAEAAP//5JjBCYQwEEUnFhC8Gy9qAyoWLmoDiWetIJ6NJRjIeFBYdgmyp2WdvA4eA/P/DKAPa+0wDE3TwAMpy7LrOmutV+1TeJ7nNE2BBEKIuwkbY7IsA3IURbFt25uwc04pBaQZx9E5dwkvywLUYYxprS/hH5Tpf+A8zAER4zgOQZhzjogRBEYEAN4vKj0uTUTUWoe1tEKIJSnlK5ZO1nUlWTzyPDfG3FVLIQQN1SRJpmn69njo+76u6yd6VlXVtu2+7161AwAA//8DACrtnqL2lIBiAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAk0lEQVR4nO2WUQqAIAyG/6cuVYfoSL5EO6h2jUWwBwmzcGpE+2AvDt2HUxQwjDJmABsAPkWQXHNCongs0RyWeDquLsSV4nsCNbZV3RY2AeS30AGgt1rgojz1FnCJU069BFzmqlHvW8DK/C0mwNYC2CHEz1/DIAuMBXMnmes1AmuFn9CiERhEIvcTvgovxY81DAMpdvcbu9Xse+bpAAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/safecamp_BRAND.1-nobg-1.c66c5a92.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/thrive_1.a4fa852b.png\";","export default __webpack_public_path__ + \"static/media/tick-white.9a1b4a34.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAIAAAABc2X6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG2YAABzjgAA+swAAIT6AAB5gQAA/RMAADBtAAASKQ0eJk4AABJbSURBVHja7Jt3XBTX9sDPndkpu8sWmixFAekCagAbUVFRozGWWLHAs7yYiMYYk4CxRhOfsQZLYp5GQ/BFk9hiiwkxFqIEY4kiURE1ICqIguyyMzuz094fi9gwRYjw+z3vZz/7x+69d+Y7p9xzzr2DFEWB/6WGwf9Yewr8FPgp8FPgp8BPgZ8CPwV+Cvx/Cjg7O7t7fPf4bvF7v9nb6IiV+m4XL150d3NX02qNWkOoiMOHDyuNqdW/hOfMnmOxWCiaomgKV+Fr/r3m/7NKFxUVbdu2jSRJh+7gOJ6Xl9eogFV1HF9cXHzgwIGysjKCIHQ63XfffSfJEqWiFEVBCAGARqMBAIZhSkpKbty4wTIsAGi0GldXV5PJZDQanzAwqksB4OjRowP6DygvL8cwzGEhAECraQzHQAGEEM/zPj4+LcJa5ObmlpWVcRzneAqKopAkaTQavb29o6OjO8R26NixY0BAQGMHThyVuGXLFlpN1/g/QAD3zMeyrIMNwzAMwwCgBtjxLcuyLMmiJFIk1aZNm0GDByUkJLi6ujZSG/bw8JBl+S4t3EfrQNVqtSRJqlQqhJCD1oGNEMIwjCAIiqY0Gg2GYTlHc6ZMmRIdFb1kyRKWZRujhEtKSvr26Zubl0tRFK7CUd1mQwgpiiKKop23h4eHpy1Pi4uLa1wS9vT0zNyXmTwh2c3VzcbYeI6vC7BjLEEQGq0mPz+/d6/eK1esrHdg/J133qnLeLVa3at3LzWt3rNnD0LIobr1sHgQKgDYvXu3oihdunRpLCrtaLt27kpMTBREgSTJeiz6IoQkSWIZdunSpa9Nea2xAF+8eDEmOqbeaWuYRVG0sbZdu3b1fr53owDu369/ZmYmraZrnadGvR/7Kgghu93upHU6kn0kMDCwgZ3WoYOH9uzZQ1K1yNbhci1VTGVlZWVlpShKf2jbjg6iKNZEaTVrm9lsTp6QXC8aVCfg5cuXEwThiCgeuG9LldVisYQH+EweO3ho7zgby1qqrH8kScFsNsuiZLFYWNZ2LzOtpg8cOLB+3fqGVOnS0tLQkFBZljEVVhNvIIQEQWQYa1hAs5SXhyf07Uo7G0CWv/nm0KtzVly+VqrT6XAcf+CiCCHWZrPz9pnJIxKH9z1+/Mzkd1aYGc7JSevoiRAS7IKzs/Pp3NMuLi4Nkw9v/mozoSIM9zSj0UhRNABMGT3IcmaPcv2IcnGfkp+p5Gcq149cy9k8uFdnh1rpdDrjnabT6QBAQ1MZS6YpJdlK0UGlLOfwF8t1GjVF0Uaj8c7sBkJFLF26tI758ONLeGLyxPXr19e4K4QQw7A4UtbOf2PUyL7A8SCI9w0gCUBo8679aZ9uzT75673/xHeIWpDyUpt2LcHKguN+jPr1n3w1bsYynU5XE4QLdiEwMPDY8WMEQTxplVYUpeOzHU/nniYIwuFjOI4DRf4ibWb/gT3AbIVap0UItGqF5X48lvvDkZMlZeVeTVzjO0Z3ahMJJAk27r6eNNV/dOrO/T8ZjcaaZINhmJycnJiYmCcNbDabw0LDrIzV8fhFUWIYa8bClMTRA6HS8keOEgFFgQoHWQEMgSgBz4P80G3QVEH+5aj+E0TAaIp0PFYba5s7b25qauqT9tJms9lqtSKodqQMY52Q8ELiqH5grvrjwbICNg6qGGBYqGLAxtVCCwAcHxQRPHpgT852N3PCcOzUL6caYFnieV6SJECAEGJZ1t/HtGDaeOAFeJS+PF6AbRfeHDdEr9VwHO9YpRBCRUVFDVnTUhRFEIRp4xMMHm4gCI/UYRUO2F9n5u2+oc2H9I7jOFvNAmauNAuPutDfB6xSqRzWy7C2gKZeiS/2AMb2iHwMt1rZ1PfXinbx95hVOJAkPKwfovTSkF4YQqIoAgACxPN8AwATBIHjOACIgn3MwJ5qN2eQpNq7aui0jB2L1mxatzUTtJra+5DEzZsVuXn5QJMPG09MVIuoFkEsawMABRRH/eRJA9M0TRCEIAhqihrcqxPw9kfRZmcd37Tn4PbV89Iyvr56qRhI4mEVkGR59LRlAya9W2W2wgMwsoJrNS8n9JFlyVFCMjobHWXgJwpMkiRFURzHRQT7hwT5gr02HcMxroqdPH/1m2MGDhjVb0B8hynzVwOOA7rfvNXUpJnLXY26uJjIqf/6uBYhs9ywvl2beTZhWJsCioeHRwM4LZVKRdO0oiiRwX6gpmt3zhQ1f9V/vD3cxozoCzcrpk8c8eulKxu+2AN3qpwAABS5YFn6qfOX1y58M23WhKxjZ7779kfQqu+bR5J0TVwnjeon2HlZkg0GQwMAkySpVqsBoHVY80cuObx9QHyH1XMmgSSBXdAZ9R/PmeRs0IEo1YQWR7J/Sd/+/cYPplE0ZXB3WfjG2InvflRytRRU+H1T2bhxCX283F04nsPwOq0sjx9Lx8bGtvJ1XThjgl5NgSQ/yhuBrIAgVterHerK8dXPCENms5XleE9vD+AFwBBg2Mef73quY5S/nw+I4gOBV86JvMlzVrTt3H3VqlWPXy177JEGg6F7bJTe3eX3oiuHbTs0AEG1b6vRCFkxGHQGFwPYBUAAigKy9MrYQcDbQRAAQwDorrHYuPZxbdtEhri5uTVM4EHTdFn5bXAU4hG6z/1iGPzJlUOW70uqFADWBpIECEmiDAgBjt+N1aqYi0XXg4ODGwZYr9ffNlsdt2Ln7WfPXgINDRQJWo0iSUVXrkFdjE2FX79Z8fr8jzhBAJ0T0BQ4aTiLtaDwakhISJ0KwI890sfH58rlXFAUQEgmVKmL10aG+CcOfb7wSknaJ19169A69fUxYH3cHRNJ8vYxNfVqkjBpbr/nOvl7eQCGnEjCrmD+/v4NI+GYmJhzF4uAt4Mi0yTxyaKUm+WV4T3+8fbCfw/rH//a2MGPDDb/VIwOmCRNnTKmuPTm13uzfjh6uvB62elzlyMiI+tY4nl8Cbdu3fr8b9dKr5eZvJqAXfRwd1m7cvbZS1eC/XzGvjIcbtyqPen7Czbj9NXGnZUW5qctq0hnA1DEqKTU2NjODVa1bNasmcnb5+CxXKBIQAB2AQRxxayJG3bsO7EvG2iqTvel0547fW7s9KVLUseTeidg2PILRT/89Ev37t0bDBjH8RdffPGL3QfvXTmi27ca9Fynl2elgSQD9riT67V5ufldRkwd8lznFwf0ACsLavr7IyfcPb3btm3bkHXpxMTEwyfPns/NvytPXvhgZvKZC7+9u3Q96J3+ct6P42DQ7dlzqE2/l1uG+K9ZlAI8DwgpNm5Fxtfjx4+vS55UD8ABAQGDhgyd++HngGPVbHbBy89n/ftvzV6Zkf7pVjDo/uyCjGGg03KCOHPeqhf+OX1gr05fr51PqHAQRNBpN237/vptJikpqe6F+Lo+sBkzZrRq1Wrnzv39BvaASisgACszMuEFBeCVmR+cOndp9pTRLiY3EEQQBJDkB9MMDANSBSQpVjFbNu+ds+zTm7fNny5KGT28L9gF4O2gpm8UXntr8dpFy5br9fqG3Hmoaenp6bOmvXVw0wcBwX5gtVUHkjqn48dyX5+3qujajf49O/bvHhsdHujsbACKBIQBKIAQSJJoZXPzf9v+/eGvdh8svVWRNLDn9AkjPH29wcqCLANF2Th+wLjpnkER6enpUB8N1csO1eTJkw/s3fVtxiJvP2+oYqp/VdMgitv2Zq3+fOexM/lqmvLycA3x8/HzMalpymxl8y9fOXfxSll5ZYCv19A+XZIG9PD297lbwVfTHGsb+eq8GyxkZmY6jj81FmBJkpKTk3/ct/fTxdPaPRsFDFudAyIEGhpkufRqaUHhtYLCa1dLbpabLTaOxzDMw9W5RaBvVERQUPOmoKbvomIY6LQX8gpemraYcjZt2rSpHs/1oHrcxZ47d+6yxYtnThqZnDhA62qsBnCcZVKpQIUDhgOGAN2TAzmSB0c3B6qGVjh+3ZffzFiybtCw4UuXLnUk3o0RGAD279+fkJDgSirjhvUZ2Kdb8wBfIAmQZBAEEKXfq1oTKqBImWF3fn9kRcaOW4w4e/bswYMHQ323ega2WCzBLSLIvq+UZX+ruX6+lY9zt/at2j4TER4a6OPlAWoaMASKArICoACgaoHbhcLfir/Zdzh9y7fHCq7rtPTJkyfrZb//bwfOyMiY+mFG2437JA7MF/JvHN1/69hB/uJpnfWmv6smvEVIkH9TP2+TQaclCZUkyxXmqrxzBT+fOHOysIw1BTUdOM7ULu7M1GEje8SuXr367wBW1e90Fy5cwEhKYiTAcENgiHN4iDJmglAlMFcLru7dfGLNewAihmEtg5tjhIqxMvm/FYPapdkrM0I69DCEROI0AIKWyzanvxTv5+dXl02zvyXSeri5u7ndPPzNqSlDJdaKUSALIPOAE4QhqEXLt+bEbj3p0iYeKUozk8uKeZP9XJ10IVEdt/wc/upUl5aROAUAINtBHx7ccsnWWf9alJGR0ahVuqysLDoqWjsi5fKHM2hPv7A5H+MaPelsIl3ccDUAAqQCsUou/uKj8ytmqdhKfbehrResU5uchCrgrl+vyj91+8Qha0Fe4KsL3ONbFm/YUTAn6dczub6+vo1Upd977z0hpJ0hvC3h3ETjG3jsH50BQyqdUePtr2kepg95xhjVydgy2v+fk65tWUt5xbVL/5K/ZS/87LMbmV+ac38SLJWOeQhnN0S8WpixmCYJx4GI+mz19S5Bbm6uVm/suKew6eAJpp4JvS4oTgERD1/Os+dQv1FvAoDGyz80Nc0pMLIWrVMRCCc8n090DohYuXJl/b7zUG/AvXr18ktK7Zmn0O5erdN2d8thCWOd6qmtFm9t/+VJtc6wb9++Rge8detW2tXU7Sdzm/VHaDev+GNc+y9y4XFPmWK0RuffoungCS+UKKGpH5pMpuLi4kb0VgvLsjNnzvR/eZ7GV399xzpjVGfag5Js1kfFVbqQZ2gPH61vsFNAZO1VALXWresA5lKe/Rb4jk4mnh0wcuRIm83WWJal5cuXl+CGpgljbVe5iqM/mJ4fJdlAFxqp9Q97sHbv2Sz07VWx2486t+7UpNug2O05ga8t0Po+WFjHKbVrbC+upIgvqwAZQt5Oy70tTJ06tVF46cLCwoULFwYu3K4y4Ley9su8zTk6TrIB6erUdNik8+9PBACc1hhatvN8Ick9rh9tcgEAkakChEh3TcjUac2GTTbnHTWfzq7MzeFKCu23bxki2ukjYgCQ7WoB5dEOV1MR729MH9PpmWeeGT9+fAMDz5s3T9Ohj1tcV5mH0m//Y4zqTLo7SQxILHg8N5wvu6bxDzW27KD1D8QokDgQrYCrQZFEDFflTU9RaYwBydPdOnZ1j+uqiCCyksRakYog9GrK1NRy9rhL+3aiFZyC/Fq8s/71qS+Gh4c/++yzDQaclZW1cduONhtPggJCpb3yxKGgN9Ic5zQUCUijc0jqfFBAFqo/NUV2RRIAw25m7aVcTc3l6bJwJ5VQ4ZjRAAogHLTNW1jOHAWYCABiFTTp3sM6fl5iYmJ2drbJZGoAG5YkKSUlxWfYZKcgXwCoPHFYFgSX9t1l/g6XDKIVRAZk+wNvu4DEsYTepf3GH1su2aaId/5VQJFBEUGRABTQBbdifjsr89WbjyID/i9N5cM6JSUl2e32BgDesGFDXkmF75g3JBsgHEq/3egc04Vyd1Kk349lARRQBAGpVGovI+Wqq7W/LIEuNJorLeZvlSPH/qEMsgihsz88WlwxY8aMJw1cXl4+a9asgEnvky5OIIP9Nlfx03dNeg5T5D8R20mgSCKudrp96mxVwSVUm1UpAmj8Q5FKZbtSUNNBEYDQO0Uu3LRyXcZnn332RIEXLFhg8ww29R4oMoBRcPvYIdnOOUfH1ejz7wlYAlBkWbD/nNjlzLShCAd4KEJRZCCMBtLFZL30K3bP6QeJBV1YUNistRMnTjx16tQTclr5+flr1q0PW5mJcAAekApu7t9qjI6jPQwi84fpGch2u8hYCKNbwIRZOG0ABWo5j6YAToMupHXV+ZOAjbt3uFgFphf6VV2YNmLEiKysrL96IOBxJJySkuLcc6RL2xiH9Qq3+Yqc703Pj/pTiSYCmbeJVWacVjd/5VWfIUnyo0/V6VvEVJ09XuO37pVzwKSZFaawsWPH/u0qvXv37u9+zPF7abpsBwDAKKj8JVsW7S5t4/9QnwEAYSBabksci1G0xIBkq/2hIAwUBfQRbe0VZaLFhhGA8DsfVXVqHb4gI+tS6ezZs//S/f93AMTXNllyG4JBAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/venturedx_1.786ff3fa.png\";","export default __webpack_public_path__ + \"static/media/venturedx_2.10152fa7.png\";","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAADpUlEQVR4nO2YR4hVSRSGPzEtbGOb2pyZhYqrWenoxs2oCKYZMYILwdQ7EWRW2o5pFJeCuHDhiIg5oj0OKgiDjLSgbXahYOgRxgC24dly5C8ob9+67/az2wD1w4X76oQ659ZJ9SAiIiIiIiIiIuJ7QCdgCvA7cAioBeqAej11WjsonslAR74RdAQWAmeAt0BDEx+TOQ0s+FpODQS2AM8SRp0D1gLTgJFAV6CtHnsfBUwH1gHngXeevOn6AxjwJRzoAWwDXie+7G9AeQn6ugOrE7rqga2itQjmA0+1WQF4o/d9zaB7l3S9k257/097NmsYnfS+mOXDRJ2KhdPggNxU4G/gpZ6zKgZpqABeyQnj+cvb74Rs+Cz8AjyXwkf6bVistb0BufUZCV4VkNkpeqV+zwYea81smFWKA22UzG7zI4kcOK71uYGTKFatrPQmMUM0q2IOlidHtf4e2CzbcqGrQsJVopVAqwTPfdGHpcg72azHQicJC1GjPUis296rvPJusl2KOdEHuOKF0tgAX714ylJoL3I4YqGSRAevaqXhJy/UapRXqbCEuifGW8DQDIeft4Aj1hBDNAeLgNviu5tWBCpkvDFcAnqSjRviHZ5CO5vDkeoUuRGiXS+ydy/gX++Df3IyF0W4DHSjOE6I31UxH1NyODIpRc6qlNGO5di/m2xtkO2NHKnJcRqGZeLfHaBXZTixJiCzR/QlOfbvKVsbOdIbuCnCVf3OQn914fqMZjVZFeaFnurASbiKZbqsMvUrsndv2dggmxsl/QAlkIvTUMd22FHkVJqCvdK1vQjfENlmvHeyBswK78ieZJRfQ1+vQi0v3YePndxNvxUZfON0p3G5XCxqPjabaq+mL0tpiH4XLygklpfohBsUQ3OY7b3Cm7it83fOu0EbjQPvJXw4Y6yu9CZWS9hBOfQP9sKpkPERemg8ciPKRqA1JWCW1/weAvMCpzPV47NT/BP4FfhBHbuD3mfL2ddeOKXNXa00wj/0muRMPhM2thzwyuc/wI8Bvu05r7wF3UHScmIMcMHjPd4cY7yPuV6yFfQHw/hAaV4qA2q98lurZrckUGInKIRdmNpec2ghlGu8d0OjG2kWlXjVLZfsJU/fK+VnKfqaDPuim4D/PQPeKiSqdLcYLWPaAe31Plq0deL1w9B0bVBZ/+IoU1Ke8u7wTXne6Bo9LzBJfxWUaQSxE9kPXNP9wf1B91hr+8Xz87dkfEREREREREREBEF8AD7Af6tLTfskAAAAAElFTkSuQmCC\"","export const authSelector = (state) => state.auth;\n\nexport const selectLoginUser = (state) => state.auth.user;\nexport const userGivenPermission = (state) => state.auth.permission;\nexport const selectLab = (state) => state.auth.lab;\nexport const selectCountryCode = (state) => state.auth.countryCode;\nexport const selectClient = (state) => state.auth.clientData;\n","import { CONFIG } from \"constant\";\nimport { useEffect, useState } from \"react\";\nimport PhoneInput, { isPossiblePhoneNumber, parsePhoneNumber } from \"react-phone-number-input\";\nimport \"react-phone-number-input/style.css\";\nimport { useSelector } from \"react-redux\";\nimport { selectCountryCode } from \"store/features/authentication/authenticationSelectors\";\n\nconst getDefaultCountryCode = (labCountryCode) => {\n  if (CONFIG.clientID === \"e33ea32c-7cc2-4609-b3b2-35d8309df342\") {\n    return \"CA\";\n  }\n  return labCountryCode || \"US\";\n};\n\nconst PhoneNoInput = (props) => {\n  const { handleChange, value, error, disabled = false, cssCode, cssClass } = props;\n\n  const labCountryCode = useSelector(selectCountryCode);\n\n  const [defaultCountryCode, setDefaultCountryCode] = useState(getDefaultCountryCode(labCountryCode));\n\n  useEffect(() => {\n    if (error) error(validatePhone());\n  });\n\n  useEffect(() => {\n    if (value && isPossiblePhoneNumber(value)) {\n      let countryCode = parsePhoneNumber(value)?.country;\n      setDefaultCountryCode(countryCode || getDefaultCountryCode());\n    }\n  }, [value]);\n\n  const validatePhone = () => {\n    if (value) {\n      if (isPossiblePhoneNumber(value)) {\n        return \"\";\n      }\n      return \"Invalid phone number\";\n    }\n    return \"\";\n  };\n\n  return (\n    <PhoneInput\n      key={defaultCountryCode}\n      international\n      countryCallingCodeEditable={true}\n      className={`modalPhoneInput ${cssClass}`}\n      defaultCountry={defaultCountryCode || labCountryCode}\n      placeholder=\"Phone\"\n      value={value}\n      disabled={disabled}\n      onChange={handleChange}\n      error={validatePhone()}\n    />\n  );\n};\n\nexport default PhoneNoInput;\n","import PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport viewIcon from \"../../assets/img/eye-open-icon.png\";\nimport hideIcon from \"../../assets/img/eye-not-open-icon.png\";\nimport { useState } from \"react\";\nconst LoginUi = ({\n  phone,\n  setPhone,\n  password,\n  setPassword,\n  handleKeyDownEvent,\n  disableBtn,\n  handleSubmit,\n  handleSendOTPUi,\n}) => {\n  const [showPassword, setShowPassword] = useState(false);\n\n  const togglePasswordVisibility = () => {\n    setShowPassword(!showPassword);\n  };\n\n  return (\n    <div className=\"login-right-side\">\n      <h3 className=\"mt-0 mb-4\">Login</h3>\n      {/* <p className=\"tag-line\">Sign in to your account</p> */}\n\n      <div className=\"form-group mb-3 phoneInput\">\n        <label className=\"login-input-label mb-2\">Phone Number</label>\n        <PhoneNoInput handleChange={(e) => setPhone(e)} value={phone} />\n      </div>\n      <label className=\"login-input-label mb-2\">Password</label>\n      <div className=\"position-relative\">\n        <input\n          className=\"w-100\"\n          placeholder=\"Enter your  password\"\n          minLength={8}\n          onKeyDown={handleKeyDownEvent}\n          value={password}\n          type={showPassword ? \"text\" : \"password\"}\n          onChange={(e) => setPassword(e.target.value)}\n        />\n        <span\n          onClick={togglePasswordVisibility}\n          style={{\n            position: \"absolute\",\n            right: \"10px\",\n            top: \"50%\",\n            transform: \"translateY(-50%)\",\n            cursor: \"pointer\",\n          }}\n        >\n          {showPassword ? (\n            <img className=\"header-btn-img object-fit-contain\" width={20} height={20} src={viewIcon} alt={`viewIcon`} />\n          ) : (\n            <img className=\"header-btn-img object-fit-contain\" width={20} height={20} src={hideIcon} alt={`hideIcon`} />\n          )}\n        </span>\n      </div>\n      <div style={{ marginTop: \"5px\", textAlign: \"right\", cursor: \"pointer\" }} onClick={handleSendOTPUi}>\n        <p style={{ fontSize: \"14px\" }} className=\"linkedText\">\n          Forgot Password?\n        </p>\n      </div>\n      {process.env.REACT_APP_WHITE_LABEL_NAME !== \"thrive\" && (\n        <p className=\"mt-2\">\n          I have read and agree to the\n          <a\n            className=\"text-decoration-none\"\n            target=\"_blank\"\n            href=\"https://medflow-images.s3.eu-west-1.amazonaws.com/PrivacyPolicy-MedFlow.pdf\"\n          >\n            &nbsp; Privacy Policy\n          </a>\n          &nbsp; and &nbsp;\n          <a\n            className=\"text-decoration-none\"\n            href=\"https://medflow-images.s3.eu-west-1.amazonaws.com/TermsofUse-MedFlow.pdf\"\n            target=\"_blank\"\n          >\n            Terms and Use &nbsp;\n          </a>\n        </p>\n      )}\n      <div className=\"text-right w-100\">\n        <button\n          type=\"submit\"\n          disabled={disableBtn}\n          className=\"text-uppercase w-100 btn signin-btn\"\n          onClick={handleSubmit}\n        >\n          Sign In\n        </button>\n      </div>\n    </div>\n  );\n};\n\nexport default LoginUi;\n","import React, { useState } from \"react\";\nimport logoImage from \"../../assets/img/safecamp_BRAND.1-nobg.png\";\nimport { CONFIG } from \"../../constant\";\n\nconst MultiRole = (props) => {\n  const { roles, handleRoleSelection } = props;\n\n  const [error, setError] = useState(\"\");\n  const [selectedRole, setSelectedRole] = useState(\"\");\n\n  const showErrorMessage = (message) => {\n    setError(message);\n    setTimeout(() => setError(\"\"), 2000);\n  };\n\n  const handleSubmit = () => {\n    if (!selectedRole) {\n      showErrorMessage(\"Select the role\");\n      return;\n    }\n    handleRoleSelection(selectedRole);\n  };\n\n  const onChangeSelection = (e) => {\n    setSelectedRole(e);\n  };\n\n  const PORTAL_TITLE = {\n    Lab: \"as Lab Admin\",\n    Labs: \"as Lab Admin\",\n    LabTech: \"as Lab Tech\",\n    LabTechs: \"as Lab Tech\",\n    Employer: \"as H&S Admin\",\n    Employers: \"as H&S Admin\",\n    Client: \"as Client Admin\",\n    Clients: \"as Client Admin\",\n  };\n\n  return (\n    <div className=\"registerFormWrapper\">\n      <div className=\"registerWrapper\">\n        {/* <div className=\"text-center\">\n          <img src={CONFIG.logoImage} alt=\"logo\" className=\"logo-width\" />\n        </div> */}\n        <div className=\"codeScannerWrapper codeScannerPhoneInput\">\n          <div className=\"registered-successful\">\n            <h4 className=\"w-100 text-center mt-5\">\n              <b>Login into</b>\n            </h4>\n            <div className=\"custom-radio-btn-wrapper\">\n              {roles.map((role, index) => {\n                return (\n                  <div key={index}>\n                    <input\n                      id={index}\n                      className=\"radio-custom\"\n                      name=\"radio-group\"\n                      type=\"radio\"\n                      value={role.role}\n                      onChange={() => onChangeSelection(role)}\n                    />\n                    <label htmlFor={index} className=\"radio-custom-label\">\n                      <div className=\"d-inline-flex flex-column align-items-start\">\n                        {role.role !== \"Admins\" && (\n                          <>\n                            <span className=\"fw-bold\">{`${role.title || role.role} Portal`}</span>\n                            {/* <span>{PORTAL_TITLE[role.role]}</span> */}\n                            <span>\n                              {role.optLabel\n                                ? role.optLabel !== \"Provider\"\n                                  ? role.optLabel\n                                  : \"\"\n                                : PORTAL_TITLE[role.role] || \"\"}\n                            </span>\n                          </>\n                        )}\n                        {role.role === \"Admins\" && (\n                          <>\n                            <span>Admin Portal</span>\n                          </>\n                        )}\n                      </div>\n                    </label>\n                  </div>\n                );\n              })}\n            </div>\n\n            {error && (\n              <div className=\"error-message\">\n                <h6>{error}</h6>\n              </div>\n            )}\n            <div className=\"mt-5 w-50 mx-auto\">\n              <button type=\"submit\" className=\"text-uppercase w-100 btn signup-btn\" onClick={handleSubmit}>\n                Proceed\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default MultiRole;\n","import api from \"api\";\nimport React, { useState, useEffect } from \"react\";\n\nconst ResendOTP = ({ setTwoFaError, setLoading }) => {\n  const [showResend, setShowResend] = useState(false);\n\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setShowResend(true);\n    }, 2 * 60 * 1000);\n\n    return () => clearTimeout(timer);\n  }, [showResend]);\n\n  const handleResendOtp = async () => {\n    setShowResend(false);\n\n    try {\n      setLoading(true);\n      const result = await api.resendOtp();\n      if (!result) {\n        setTwoFaError(\"Fail to send the code.\");\n      }\n    } catch (error) {\n      console.log(\"Error\", { error });\n    } finally {\n      setLoading(false);\n    }\n\n    setTimeout(() => {\n      setShowResend(true);\n    }, 2 * 60 * 1000);\n  };\n\n  return (\n    <>\n      {showResend && (\n        <p className=\"mt-2\" style={{ cursor: \"pointer\", fontSize: \"15px\" }} onClick={handleResendOtp}>\n          Resend Code?\n        </p>\n      )}\n    </>\n  );\n};\n\nexport default ResendOTP;\n","import api from \"api\";\nimport { createRef, useEffect, useRef, useState } from \"react\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { DataStore } from \"@aws-amplify/datastore\";\nimport { medFlowInLocalStorage, showsInSS } from \"utils\";\nimport { useHistory } from \"react-router-dom\";\nimport { Auth } from \"aws-amplify\";\nimport ResendOTP from \"./ResendOTP\";\nimport { formatTwoFaErrorMessage } from \"utils\";\n\nconst TwoFa = ({ goToPortal, setLoading, setTwoFa }) => {\n  const inputRefs = useRef([createRef(), createRef(), createRef(), createRef(), createRef(), createRef()]);\n\n  const [digits, setDigits] = useState(Array(6).fill(\"\"));\n\n  useEffect(() => {\n    if (digits.join(\"\").length === 6) {\n      handelOtpVerification();\n    }\n  }, [digits]);\n\n  let history = useHistory();\n\n  const [twoFaError, setTwoFaError] = useState(null);\n\n  const handleChange = (value, index) => {\n    if (value !== \"\" && !/^\\d$/.test(value)) {\n      return;\n    }\n\n    const newDigits = [...digits];\n    newDigits[index] = value;\n    setDigits(newDigits);\n\n    if (value) {\n      if (index < 5) {\n        inputRefs.current[index + 1].focus();\n      }\n    } else if (index > 0) {\n      inputRefs.current[index - 1].focus();\n    }\n  };\n\n  const handleKeyUp = (e, index) => {\n    if (e.key === \"Backspace\" && !digits[index] && index > 0) {\n      inputRefs.current[index - 1].focus();\n    }\n  };\n\n  useEffect(() => {\n    inputRefs.current[0].focus();\n  }, []);\n\n  const handelOtpVerification = async () => {\n    console.log(\"digitBeforeJOin\", digits);\n\n    const code = digits.join(\"\");\n\n    console.log(\"CodeAfterJoin\", code);\n    setLoading(true);\n\n    try {\n      const result = await api.verifyOtp(code);\n      console.log(\"Result\", result);\n      if (result?.verified) {\n        goToPortal();\n        setLoading(false);\n      }\n    } catch (error) {\n      console.log({ error });\n\n      const errorMessage = formatTwoFaErrorMessage(error);\n      setTwoFaError(errorMessage);\n      setLoading(false);\n    }\n  };\n\n  const backToLogin = async () => {\n    await DataStore.clear();\n    await Auth.signOut();\n    medFlowInLocalStorage.clear();\n    showsInSS.clear();\n    setTwoFa(false);\n    history.push(\"/login\");\n  };\n\n  return (\n    <>\n      <SweetAlert show={twoFaError ? true : false} error title=\"Error\" onConfirm={() => setTwoFaError(null)}>\n        {twoFaError}\n      </SweetAlert>\n\n      <div className=\"registerFormWrapper\">\n        <div className=\"registerWrapper\">\n          <div className=\"codeScannerWrapper codeScannerPhoneInput\">\n            <div className=\"registered-successful\">\n              <h3 className=\"w-100 text-center mt-2\">\n                <b>Authenticate Your Account</b>\n              </h3>\n              <p style={{ fontSize: \"17px\" }}>\n                Please confirm your account by entering the authorization code sent to your email address.\n              </p>\n              <div className=\"custom-radio-btn-wrapper\">\n                {Array.from({ length: 6 }).map((_, index) => (\n                  <input\n                    key={index}\n                    ref={(el) => (inputRefs.current[index] = el)}\n                    type=\"text\"\n                    maxLength=\"1\"\n                    value={digits[index]}\n                    onChange={(e) => handleChange(e.target.value, index)}\n                    onKeyUp={(e) => handleKeyUp(e, index)}\n                    style={{ width: \"45px\", textAlign: \"center\", margin: \"0 5px\" }}\n                  />\n                ))}\n              </div>\n              <div className=\"mt-4\">\n                <button\n                  type=\"submit\"\n                  disabled={digits.join(\"\").length !== 6}\n                  className=\"text-uppercase w-50 btn signin-btn\"\n                  onClick={handelOtpVerification}\n                >\n                  Verify\n                </button>\n                <ResendOTP setTwoFaError={(value) => setTwoFaError(value)} setLoading={(value) => setLoading(value)} />\n                <p className=\"mt-2\" style={{ cursor: \"pointer\", fontSize: \"15px\" }} onClick={backToLogin}>\n                  Back to Login?\n                </p>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default TwoFa;\n","import { useState, useEffect } from 'react';\n\n\nfunction useLocalStorageState(key, defaultValue) {\n\n  const [state, setState] = useState(() => {\n    const storedValue = localStorage.getItem(key);\n    return storedValue !== null ? JSON.parse(storedValue) : defaultValue;\n  });\n\n  useEffect(() => {\n    localStorage.setItem(key, JSON.stringify(state));\n  }, [key, state]);\n\n  return [state, setState];\n}\n\nexport default useLocalStorageState;\n","import React from \"react\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\n\nconst Loader = ({ cssClass }) => {\n  return (\n    <>\n      <div\n        style={{\n          width: \"100vw\",\n          height: \"100vh\",\n          position: \"fixed\",\n          top: \"0\",\n          left: \"0\",\n          zIndex: \"11000\",\n        }}\n      />\n      <Bounce\n        style={{ flex: 1, alignItems: \"center\", justifyContent: \"center\", zIndex: 20 }}\n        size={35}\n        className={`${cssClass} loader`}\n      />\n    </>\n  );\n};\nexport default Loader;\n","export default __webpack_public_path__ + \"static/media/edit-icon.7c6395b5.svg\";","import React, { useReducer, createContext } from \"react\";\n\nconst initialState = {\n\n};\n\nconst reducer = (state, action) => {\n  switch (action.type) {\n    // case \"ADD_CONTACT\":\n    //   return {\n    //     contacts: [...state.contacts, action.payload]\n    //   };\n    // case \"DEL_CONTACT\":\n    //   return {\n    //     contacts: state.contacts.filter(\n    //       contact => contact.id !== action.payload\n    //     )\n    //   };\n    // case \"START\":\n    //   return {\n    //     loading: true\n    //   };\n    // case \"COMPLETE\":\n    //   return {\n    //     loading: false\n    //   };\n    default:\n      return state;\n  }\n};\n\nexport const AppContextProvider = props => {\n  const [state, dispatch] = useReducer(reducer, initialState);\n\n  return (\n    <AppContext.Provider value={[state, dispatch]}>\n      {props.children}\n    </AppContext.Provider>\n  );\n};\n\nexport const AppContext = createContext();\n\n// export const UserContextProvider = props => {\n//   const [state, dispatch] = useReducer(reducer, initialState);\n\n//   return (\n//     <UserContext.Provider value={[state, dispatch]}>\n//       {props.children}\n//     </UserContext.Provider>\n//   );\n// };","import React, { useEffect, useState } from \"react\";\nimport { Document, Page, Text, View, Image, StyleSheet } from \"@react-pdf/renderer\";\nimport { formatPhoneNumber, formatZipCode, formatDateOfBirthDOB, formatDateMDY } from \"utils\";\nimport API from \"api\";\n\nconst RequisitionPDF = ({ test, lab, signature, demographics }) => {\n  const [labInfo , setLabInfo] = useState();\n\n  const data = {\n    maintainAspectRatio: false,\n    responsive: false,\n    labels: [\"a\", \"b\", \"c\", \"d\"],\n    datasets: [\n      {\n        data: [300, 50, 100, 50],\n        backgroundColor: [\"red\", \"white\"],\n        hoverBackgroundColor: [\"red\", \"white\"],\n      },\n    ],\n  };\n\n\n  useEffect(() => {\n    if(test?.labID){\n      getLabByID(test);\n    }\n  },[test]);\n\n  const getLabByID = async (test) => {\n\n    if (!lab) {\n       let labModel = await API.getLabByID(test?.labID);\n        setLabInfo(labModel);\n    }\n\n  }\n\n  const today = new Date();\n\n  const time =\n    today.getHours() > 12\n      ? `${today.getHours() - 12}:${today.getMinutes()} PM`\n      : `${today.getHours()}:${today.getMinutes()} AM`;\n\n\n\n  return (\n    <Document title={`${demographics?.firstName} ${demographics?.lastName}`}>\n      {console.log(test, demographics)}\n      <Page size=\"A4\" style={styles.page}>\n        <View style={{ flex: 1, flexDirection: \"row\", borderWidth: 2, padding: 0, alignItems: \"stretch\" }}>\n          <View style={{ flex: 1, top: 0, bottom: 0, position: \"relative\" }}>\n            <Text style={{ backgroundColor: \"black\", color: \"white\", textAlign: \"center\", fontSize: 14 }}>\n              CLIENT INFORMATION\n            </Text>\n            <Text style={{ padding: 10 }}>SHOW {test?.site_name}</Text>\n          </View>\n          <View style={{ ...styles.hr, height: 135 }} />\n          <View style={{ flex: 1 }}>\n            <Text style={{ backgroundColor: \"black\", color: \"white\", textAlign: \"center\", fontSize: 14 }}>\n              LAB TEST REQUISITION\n            </Text>\n            <View style={{ textAlign: \"right\", padding: 10 }}>\n              <Text style={{ fontWeight: \"bold\" }}>{lab?.name}</Text>\n              <Text style={{ fontSize: 14 }}>{lab?.street}</Text>\n              <Text style={{ fontSize: 14 }}>{lab?.city_state_zip}</Text>\n              <Text style={{ fontSize: 14 }}>P: {formatPhoneNumber(lab?.contact_phone)}</Text>\n            </View>\n            {lab && lab.logoSrc && (\n              <View style={{ textAlign: \"left\", padding: 10, position: \"absolute\", top: \"18px\" }}>\n                <Image style={{ width: \"50px\", height: \"50px\", top: 0, objectFit: \"contain\" }} src={lab.logoSrc} />\n              </View>\n            )}\n          </View>\n        </View>\n        <View style={{ flex: 2, borderWidth: 2 }}>\n          <Text style={{ backgroundColor: \"black\", color: \"white\", textAlign: \"center\", fontSize: 14 }}>\n            PATIENT'S INFORMATION\n          </Text>\n          <View style={{ flexDirection: \"row\" }}>\n            <View style={{ flex: 1 }}>\n              <View style={{ flexDirection: \"row\", flex: 1, borderBottomWidth: 1 }}>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ fontSize: 8 }}>Last Name</Text>\n                  <Text style={{ fontSize: 12 }}>{demographics?.lastName}</Text>\n                </View>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ fontSize: 8 }}>First Name</Text>\n                  <Text style={{ fontSize: 12 }}>{demographics?.firstName}</Text>\n                </View>\n              </View>\n              <View style={{ borderBottomWidth: 1, flex: 1 }}>\n                <Text style={{ fontSize: 8 }}>Address</Text>\n                <Text style={{ fontSize: 12 }}>{demographics?.street}</Text>\n              </View>\n              <View style={{ flexDirection: \"row\", flex: 1, borderBottomWidth: 1 }}>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ fontSize: 8 }}>City</Text>\n                  <Text style={{ fontSize: 12 }}>{demographics?.city}</Text>\n                </View>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ fontSize: 8 }}>State</Text>\n                  <Text style={{ fontSize: 12 }}>{demographics?.state}</Text>\n                </View>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ fontSize: 8 }}>ZIP</Text>\n                  <Text style={{ fontSize: 12 }}>{demographics?.zip}</Text>\n                </View>\n              </View>\n              <View style={{ flexDirection: \"row\", flex: 3 }}>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ backgroundColor: \"black\", color: \"white\", textAlign: \"center\", fontSize: 14 }}>\n                    BILLING\n                  </Text>\n                </View>\n                <View style={{ flex: 1 }}>\n                  <View style={{ borderBottomWidth: 1, flex: 1 }}>\n                    <Text style={{ fontSize: 8 }}>Insurance Company</Text>\n                    <Text style={{ fontSize: 12 }}>{demographics?.insurance_name}</Text>\n                  </View>\n                  <View style={{ borderBottomWidth: 1, flex: 1 }}>\n                    <Text style={{ fontSize: 8 }}>Subscriber ID #</Text>\n                    <Text style={{ fontSize: 12 }}>{demographics?.insurance_number}</Text>\n                  </View>\n                  <View style={{ borderBottomWidth: 1, flex: 1 }}>\n                    <Text style={{ fontSize: 8 }}>Medical #</Text>\n                    {/* <Text style={{ fontSize: 12 }}>{demographics?.insurance_number}</Text> */}\n                  </View>\n                  <View style={{ flex: 1 }}>\n                    <Text style={{ fontSize: 8 }}>Medicare #</Text>\n                    {/* <Text style={{ fontSize: 12 }}>{demographics?.insurance_number}</Text> */}\n                  </View>\n                </View>\n              </View>\n            </View>\n            <View style={{ ...styles.hr, height: 255 }} />\n            <View style={{ flex: 1 }}>\n              {/* <Text style={{ backgroundColor: 'black', color: 'white', textAlign: 'center', fontSize: 14 }}>ICD-10 CODES REQUIRED</Text> */}\n              {/* <View style={{ flexDirection: 'row', flex: 1, borderBottomWidth: 1 }}>\n                            <Text style={{ borderWidth: 1, flex: 1 }}></Text>\n                            <Text style={{ borderWidth: 1, flex: 1 }}></Text>\n                            <Text style={{ borderWidth: 1, flex: 1 }}></Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', flex: 1 }}>\n                            <Text style={{ borderWidth: 1, flex: 1 }}></Text>\n                            <Text style={{ borderWidth: 1, flex: 1 }}></Text>\n                            <Text style={{ borderWidth: 1, flex: 1 }}></Text>\n                        </View> */}\n              <View style={{ flexDirection: \"row\", flex: 1, borderBottomWidth: 1 }}>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ fontSize: 8 }}>Date of Birth</Text>\n                  <Text style={{ fontSize: 12 }}>{formatDateOfBirthDOB(demographics?.dob)}</Text>\n                </View>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ fontSize: 8 }}>Sex</Text>\n                  <Text style={{ fontSize: 12 }}>{demographics?.sex}</Text>\n                </View>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ fontSize: 8 }}>Date Collected</Text>\n                  <Text style={{ fontSize: 12 }}>{formatDateMDY(test.createdAt)}</Text>\n                </View>\n                <Text style={{ fontSize: 8 }}>Time Collected</Text>\n              </View>\n              <View style={{ flex: 1, borderBottomWidth: 1 }}>\n                <Text style={{ fontSize: 8 }}>Patient's Phone #</Text>\n                <Text style={{ fontSize: 12 }}>{formatPhoneNumber(test.phoneNumber)}</Text>\n              </View>\n              <View style={{ flex: 1 }}>\n                <Text style={{ fontSize: 8 }}>Email Address</Text>\n                <Text style={{ fontSize: 12 }}>{test.email}</Text>\n              </View>\n            </View>\n          </View>\n        </View>\n        <View style={{ flex: 3, borderWidth: 2, borderColor: \"black\" }}>\n          <Text style={{ backgroundColor: \"black\", color: \"white\", textAlign: \"center\", fontSize: 14 }}>\n            STANDING ORDER FORM\n          </Text>\n          <View style={{ flexDirection: \"row\", flex: 2 }}>\n            <View style={{ flex: 1, paddingHorizontal: 20 }}>\n              { \n              labInfo?.referredDoctor?.name &&\n              <><View style={{ borderBottomWidth: 1, borderBottomStyle: \"dashed\", marginVertical: 10 }} /><View style={{ flexDirection: \"row\" }}>\n                  <View style={{ borderWidth: 3, height: 16, width: 20 }} />\n                  <Text style={{ fontSize: 12, marginLeft: 2 }}>Referred By: {labInfo?.referredDoctor?.name} </Text>\n                </View></>\n              }\n              <View style={{ borderBottomWidth: 1, borderBottomStyle: \"dashed\", marginVertical: 10 }} />\n              <View style={{ flexDirection: \"row\" }}>\n                <View style={{ borderWidth: 3, height: 16, width: 20 }} />\n                <Text style={{ fontSize: 12, marginLeft: 2 }}>7060 - COVID BY PCR SWAB</Text>\n              </View>\n              <View style={{ flexDirection: \"row\", marginLeft: 30, marginTop: 5 }}>\n                <View style={{ borderWidth: 3, height: 16, width: 20 }} />\n                <Text style={{ fontSize: 12, marginRight: 30 }}>ORAL</Text>\n                <View style={{ borderWidth: 3, height: 16, width: 20 }} />\n                <Text style={{ fontSize: 12, marginRight: 30 }}>NASAL</Text>\n              </View>\n              <View style={{ borderBottomWidth: 1, borderBottomStyle: \"dashed\", marginVertical: 10 }} />\n              <View style={{ flexDirection: \"row\" }}>\n                <View style={{ borderWidth: 3, height: 16, width: 20 }} />\n                <Text style={{ fontSize: 12, marginLeft: 2 }}>7043 - COVID-19 IgG / IgM</Text>\n              </View>\n              <View style={{ borderBottomWidth: 1, borderBottomStyle: \"dashed\", marginVertical: 10 }} />\n              <Text style={{ fontSize: 6, lineHeight: 2 }}>\n                *NEGATIVE results do not rule out SARS-CoV-2 infection, patricularlyin those who have been in contact\n                with the virus. Follow-uptesting with a molecular diagnostic should be considered to ruleout infection\n                in these individuals.*Results from antibody testing should not be used as the solebasis to diagnose or\n                exclude SARS-CoV-2 infection or inform infection status. *Positive results may be due to past or present\n                infection withnon-SARS-CoV-2 corona virus strains, such as HKU1, NL63,OC43, or 229E.\n              </Text>\n              <Text style={{ fontSize: 6, alignSelf: \"center\" }}>\n                *This test is FDA EUA cleared, but not FDA approved.*\n              </Text>\n              <Text style={{ fontSize: 6, alignSelf: \"center\", marginTop: 10 }}>\n                * This test has been performed by a CLIA laboratory withhigh complexity certification.*\n              </Text>\n            </View>\n            <View style={{ flex: 1, paddingHorizontal: 20, paddingVertical: 10 }}>\n              <Text style={{ fontSize: 6, lineHeight: 2 }}>\n                *PLEASE NOTE: Standing orders will expire 12 months from the date issued unless otherwise specified on\n                the requistion.*\n              </Text>\n              <View style={{ flexDirection: \"row\", borderWidth: 2 }}>\n                <View style={{ flex: 1, borderRightWidth: 2 }}>\n                  <Text style={{ backgroundColor: \"black\", color: \"white\", fontSize: 8 }}>ORDER START DATE:</Text>\n                  <View style={{ height: 20 }}></View>\n                </View>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ backgroundColor: \"black\", color: \"white\", fontSize: 8 }}>ORDER START DATE:</Text>\n                  <View style={{ height: 20 }}></View>\n                </View>\n              </View>\n              <View style={{ flex: 3, borderWidth: 2, marginTop: 10 }}>\n                <Text style={{ textAlign: \"center\", fontSize: 10, borderBottomWidth: 2 }}>\n                  HAVING SYMPTOMS? (PLEASE MARK ALL THAT APPLY)\n                </Text>\n              </View>\n            </View>\n          </View>\n          <View\n            style={{\n              borderWidth: 1,\n              marginHorizontal: 10,\n              marginVertical: 20,\n              flex: 1,\n              justifyContent: \"space-evenly\",\n            }}\n          >\n            <Text style={{ fontSize: 6, textAlign: \"center\" }}>\n              I GIVE CONSENT TO MY EMPLOYER AND {lab?.name} LAB TO TEST THE ORAL/NASAL SAMPLE I HAVE PROVIDED FOR THE\n              PRESENCE OF SARS-COV-2 THROUGH THE USE OF AN RT-PCR TEST. I CONSENT TO THE RELEASE OF THE TEST RESULTS TO\n              MY EMPLOYER AND TO STATE AND LOCAL OFFICALS, AS REQUIRED BY LAW. I UNDERSTAND THAT A POSITIVE RESULT OR A\n              REFUSAL TO BE TESTED AND SUBMIT MY SAMPLE MAY RESULT IN TERMINIATION OR SUSPENSION OF EMPLOYMENT UNTIL I\n              HAVE BEEN RE-TESTED WITH A NEGATIVE RESULT.{\" \"}\n            </Text>\n            <Text style={{ fontSize: 6 }}>\n              BY SIGNING BELOW, I HEREBY ACKNOWLEDGE THAT I HAVE COMPLETELY READ AND FULLY UNDERSTAND ALL THE\n              INFORMATION CONTAINED ON THIS FORM.\n            </Text>\n            <View style={{ flexDirection: \"row\" }}>\n              <Text style={{ backgroundColor: \"#5AB6D4\", flex: 1, fontSize: 12 }}>PATIENT SIGNATURE:</Text>\n              <Text style={{ backgroundColor: \"#5AB6D4\", flex: 1, fontSize: 12 }}>DATE:</Text>\n            </View>\n            <View style={{ flexDirection: \"row\" }}>\n              <View style={{ flex: 1 }}>\n                {signature && (\n                  <Image\n                    style={{\n                      width: 150,\n                      height: 40,\n                      borderBottomWidth: 1,\n                      borderBottomStyle: \"dashed\",\n                      marginLeft: 10,\n                    }}\n                    source={{\n                      uri: signature,\n                      headers: { Pragma: \"no-cache\", \"Cache-Control\": \"no-cache\" },\n                    }}\n                  />\n                )}\n              </View>\n              <Text style={{ flex: 1, fontSize: 14, textAlign: \"center\" }}>\n                {new Date(test.createdAt).toDateString()}\n              </Text>\n            </View>\n          </View>\n        </View>\n      </Page>\n    </Document>\n  );\n};\n\nconst styles = StyleSheet.create({\n  page: {\n    flex: 1,\n    backgroundColor: \"white\",\n    paddingVertical: 10,\n    paddingHorizontal: 10,\n  },\n  infoText: {\n    fontSize: 12,\n  },\n  patientInfo: {\n    flexDirection: \"row\",\n    justifyContent: \"space-around\",\n  },\n  infoCol: {\n    flexDirection: \"column\",\n    justifyContent: \"space-evenly\",\n  },\n  hr: {\n    borderLeftColor: \"black\",\n    borderLeftWidth: 1,\n    // width: \"100%\",\n  },\n  address: {\n    marginLeft: 50,\n    marginVertical: 20,\n  },\n});\n\nexport default RequisitionPDF;\n","import React,{useEffect, useState}from 'react'\n\nconst ErrorMessage = (props) => {\n    const {error, handleChange}= props\n    useEffect(() => {\n        setTimeout(() => handleChange(), 10000);\n    }, []);\n\n    \n\n  return (\n    <div style={{color:\"red\"}}>\n        <h6>{error}</h6>\n        </div>\n  )\n}\n\nexport default ErrorMessage","export default __webpack_public_path__ + \"static/media/qr-code-rounded.d5b0b54f.svg\";","import React, { useEffect } from \"react\";\nimport Lightbox from \"react-awesome-lightbox\";\nimport \"react-awesome-lightbox/build/style.css\";\n\nconst FullImageView = (props) => {\n  const { image, handleClose } = props;\n  if (image) {\n    return <Lightbox image={image} allowRotate={false} onClose={handleClose} />;\n  }\n\n  return <></>;\n};\n\nexport default FullImageView;\n","import React, { useState, useEffect } from \"react\";\nimport FullPageImageView from \"components/FullPageImageView\";\nimport imagePlaceholder from '../../assets/img/imagePlcaholder.png';\nconst ImageView = (props) => {\n    const {imgSrc, crewProfile, cssClass} = props;\n    const [showImage, setShowImage] = useState(true);\n    const [fullView, setFullView] = useState(\"\");\n\n    useEffect(() => {\n        if(!imgSrc) {\n            setShowImage(false);\n        }\n    }, [imgSrc]);\n  const handleOnError = () => {\n    console.log(\"image Error\");\n    setShowImage(false);\n  };\n  const handleImageClick = (image) => {\n    setFullView(image);\n  };\n\n  if (showImage) {\n    return (\n      <>\n        <FullPageImageView image={fullView} handleClose={() => setFullView(\"\")} />\n        <div className={`${crewProfile ? \"inputFileWrapperFull d-block\" : \"\"} ${cssClass}`}>\n            <img\n                className={crewProfile ? \"\":\"imageView\"}\n                src={imgSrc instanceof Object ? URL.createObjectURL(imgSrc) : imgSrc }\n                onError={handleOnError}\n                onClick={() => handleImageClick(imgSrc instanceof Object ? URL.createObjectURL(imgSrc) : imgSrc)}\n            />\n\n        </div>\n      </>\n    );\n  }\n  return <> <img src={imagePlaceholder} className=\"imagePlaceholder\" alt=\"image placholder\" /></>;\n};\n\nexport default ImageView;\n","import React, { useContext } from \"react\";\nimport { Document, Page, Text, View, StyleSheet, Image } from \"@react-pdf/renderer\";\nimport {\n  formatPhoneNumber,\n  formatZipCode,\n  getDemoGraphics,\n  getAge,\n  formatDateOfBirthDOB,\n  formatDateMDY,\n  currentDate,\n  formatPDFName,\n} from \"utils\";\nimport { TEST_TYPE_DISCLAIMER_KEY } from \"constant\";\nimport { logoImage } from \"constant\";\n\nconst PDF = ({ test, testsLab, parseTestResultForPDF, employeeID }) => {\n  let demos = getDemoGraphics(test);\n  const today = new Date();\n\n  const time =\n    today.getHours() > 12\n      ? `${today.getHours() - 12}:${today.getMinutes()} PM`\n      : `${today.getHours()}:${today.getMinutes()} AM`;\n\n  const getLabDisclaimer = () => {\n    if (testsLab) {\n      const disclaimerKey = TEST_TYPE_DISCLAIMER_KEY[test.test_type.replace(/(:|\\s+)/g, \"_\")] || \"testing_notes\";\n      const notes = testsLab[disclaimerKey];\n      if (notes) return notes;\n    }\n    return \"N/A\";\n  };\n\n  const testTypeLabel = () => {\n    if (test.test_type === \"RapidFlu\" || test.test_type === \"Rapid Flu\") return \"2022 - INFLUENZA A/B - Accula\";\n    return `2019-nCoV rRT-${test.test_type}`;\n  };\n  const baseTestTypeLabel = () => {\n    if (test.test_type === \"RapidFlu\" || test.test_type === \"Rapid Flu\") return \"2022 - INFLUENZA A/B - Accula\";\n    return `2019-nCoV`;\n  };\n  return (\n    <Document title={`${demos.firstName} ${demos.lastName}`}>\n      <Page size=\"A4\" style={styles.page}>\n        <View style={{ position: \"absolute\", top: \"65%\", left: \"25%\" }} fixed>\n          <Image style={{ width: \"290px\", opacity: 0.4 }} src={logoImage} />\n        </View>\n        {testsLab ? (\n          <>\n            <Text style={{ fontSize: 28 }}>{testsLab.name}</Text>\n            <Text style={{ fontSize: 16 }}>{testsLab.street}</Text>\n            <Text style={{ fontSize: 16 }}>{testsLab.city_state_zip}</Text>\n            <Text style={{ fontSize: 16 }}>Phone: {formatPhoneNumber(testsLab.contact_phone)}</Text>\n          </>\n        ) : (\n          <Text style={{ fontSize: 16 }}>Lab: N/A</Text>\n        )}\n        <Text style={{ position: \"absolute\", top: \"35\", right: \"20\", color: \"red\" }}>Final</Text>\n        {/*  {testsLab && testsLab.logoSrc && (\n          <View>\n            <Image\n              style={{ width: \"50px\", height: \"50px\", position: \"absolute\", right: \"-5\", bottom: \"-5\" }}\n              src={testsLab.logoSrc}\n            />\n          </View>\n        )} */}\n        <View style={{ ...styles.hr, marginTop: 10, marginBottom: 20 }} />\n        <View style={styles.patientInfo}>\n          <View style={styles.infoCol}>\n            <Text style={styles.infoText}>Patient:</Text>\n            <Text style={styles.infoText}>Patient #:</Text>\n            <Text style={styles.infoText}>Gender :</Text>\n            <Text style={styles.infoText}>Doctor:</Text>\n            <Text style={styles.infoText}>Phone:</Text>\n          </View>\n          <View style={styles.infoCol}>\n            <Text style={styles.infoText}>{formatPDFName(demos)}</Text>\n            <Text style={styles.infoText}>{test.empID || test.employeeID}</Text>\n            <Text style={styles.infoText}>{demos.sex === \"F\" ? \"Female\" : \"Male\"}</Text>\n            <Text style={styles.infoText}>{testsLab ? testsLab.lab_director : \"\"}</Text>\n            <Text style={styles.infoText}>{test.phoneNumber}</Text>\n          </View>\n          <View style={styles.infoCol}>\n            <Text style={{ fontSize: 12, opacity: 0 }}></Text>\n            <Text style={styles.infoText}></Text>\n            <Text style={styles.infoText}></Text>\n            <Text style={styles.infoText}></Text>\n            <Text style={styles.infoText}></Text>\n          </View>\n          <View style={styles.infoCol}>\n            <Text style={{ fontSize: 12, opacity: 0 }}></Text>\n            <Text style={styles.infoText}></Text>\n            <Text style={styles.infoText}></Text>\n            <Text style={styles.infoText}></Text>\n            <Text style={styles.infoText}></Text>\n          </View>\n          <View style={styles.infoCol}>\n            <Text style={styles.infoText}>Accession:</Text>\n            <Text style={styles.infoText}>Birth:</Text>\n            <Text style={styles.infoText}>Age:</Text>\n            <Text style={styles.infoText}>Collection Date:</Text>\n            <Text style={styles.infoText}>Received Date:</Text>\n          </View>\n          <View style={styles.infoCol}>\n            <Text style={styles.infoText}>{test.barcode}</Text>\n            <Text style={styles.infoText}>{formatDateOfBirthDOB(demos.dob)}</Text>\n            <Text style={styles.infoText}>{`${getAge(demos.dob)} Years`}</Text>\n            <Text style={styles.infoText}>{formatDateMDY(test.createdAt)}</Text>\n            <Text style={styles.infoText}>{formatDateMDY(test.createdAt)}</Text>\n          </View>\n        </View>\n\n        <View style={styles.address}>\n          <Text style={styles.infoText}>{formatPDFName(demos)}</Text>\n          <Text style={styles.infoText}>{demos.street2 ? demos.street + \" \" + demos.street2 : demos.street}</Text>\n          <Text style={styles.infoText}>{demos.city + \", \" + demos.state + \" \" + demos.zip}</Text>\n        </View>\n\n        <View style={styles.hr} />\n        <View style={styles.infoHeader}>\n          <View style={{ ...styles.infoCol, width: \"35%\", padding: \"5px\", borderRight: \"1px solid black\" }}>\n            <Text style={styles.infoTextRightBorder}>Test Name</Text>\n          </View>\n          <View style={{ ...styles.infoCol, width: \"15%\", padding: \"5px\", borderRight: \"1px solid black\" }}>\n            <Text style={styles.infoTextRightBorder}>Result</Text>\n          </View>\n          <View style={{ ...styles.infoCol, width: \"10%\", padding: \"5px\", borderRight: \"1px solid black\" }}>\n            <Text style={styles.infoTextRightBorder}>Units</Text>\n          </View>\n          <View style={{ ...styles.infoCol, width: \"10%\", padding: \"5px\", borderRight: \"1px solid black\" }}>\n            <Text style={styles.infoTextRightBorder}>Flag</Text>\n          </View>\n          <View style={{ ...styles.infoCol, width: \"30%\", padding: \"5px\", borderRight: \"1px solid black\" }}>\n            <Text style={styles.infoTextRightBorder}>Reference Range/Cutoff</Text>\n          </View>\n        </View>\n        <View style={styles.hrTwo} />\n        <View style={styles.infoHeader}>\n          <View style={{ ...styles.infoCol, width: \"35%\", padding: \"5px\" }}>\n            <Text style={styles.infoText}>{testTypeLabel()}</Text>\n            <Text style={styles.infoText}>{baseTestTypeLabel()}</Text>\n          </View>\n          <View style={{ ...styles.infoCol, width: \"15%\", padding: \"5px\" }}>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={styles.infoText}>{parseTestResultForPDF(test)}</Text>\n          </View>\n          <View style={{ ...styles.infoCol, width: \"10%\", padding: \"5px\" }}>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n          </View>\n          <View style={{ ...styles.infoCol, width: \"10%\", padding: \"5px\" }}>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n          </View>\n          <View style={{ ...styles.infoCol, width: \"30%\", padding: \"5px\" }}>\n            <Text style={styles.italicText}>{`Run on ${formatDateMDY(test.createdAt)}`}</Text>\n            <Text style={styles.infoText}>{parseTestResultForPDF(test)}</Text>\n          </View>\n        </View>\n        <View style={{ ...styles.hr, opacity: 0.75, marginBottom: 20 }} />\n        <View>\n          <Text style={{ ...styles.infoText, fontWeight: \"200\", marginRight: 20 }}>Notes:</Text>\n          {testsLab.invalid_notes && test.result && test.result.toLowerCase() === \"invalid\" && (\n            <Text\n              style={{\n                ...styles.infoText,\n                fontFamily: \"Helvetica-Bold\",\n                paddingHorizontal: 40,\n                marginBottom: \"5px\",\n              }}\n            >\n              {testsLab.invalid_notes}\n            </Text>\n          )}\n          {testsLab.indeterminate_notes && test.result && test.result.toLowerCase() === \"indeterminate\" && (\n            <Text\n              style={{\n                ...styles.infoText,\n                fontFamily: \"Helvetica-Bold\",\n                paddingHorizontal: 40,\n                marginBottom: \"5px\",\n              }}\n            >\n              {testsLab.indeterminate_notes}\n            </Text>\n          )}\n          <Text style={{ ...styles.infoText, paddingHorizontal: 40 }}>{getLabDisclaimer()}</Text>\n        </View>\n\n        {/* <View style={{ ...styles.patientInfo, marginVertical: 0, width: \"90%\" }}>\n          <Text style={{ ...styles.infoText, fontWeight: \"200\", marginRight: 20 }}>\n            {testsLab && testsLab.molecular_notes ? \"Antigen Notes:\" : \"\"}\n          </Text>\n          <Text style={{ ...styles.infoText, fontWeight: \"200\", marginRight: 10 }}>\n            {testsLab && testsLab.antigen_notes ? testsLab.antigen_notes : \"\"}\n          </Text>\n        </View>\n        <View style={{ ...styles.patientInfo, marginVertical: 0, width: \"90%\" }}>\n          <Text style={{ ...styles.infoText, fontWeight: \"200\", marginRight: 20 }}>\n            {testsLab && testsLab.molecular_notes ? \"Molecular Notes:\" : \"\"}\n          </Text>\n          <Text style={{ ...styles.infoText, fontWeight: \"200\", marginRight: 10 }}>\n            {testsLab && testsLab.molecular_notes ? testsLab.molecular_notes : \"\"}\n          </Text>\n        </View> */}\n        <View\n          style={{\n            ...styles.infoCol,\n            alignSelf: \"center\",\n            alignItems: \"center\",\n            position: \"absolute\",\n            bottom: \"90\",\n          }}\n          fixed\n        >\n          <Text style={{ ...styles.infoText, fontFamily: \"Times-Bold\" }}>\n            CLIA #{testsLab ? testsLab.clia_number : \"N/A\"}\n          </Text>\n          <Text style={{ ...styles.infoText, fontFamily: \"Times-Bold\" }}>\n            Laboratory Director: Dr. {testsLab ? testsLab.lab_director : \"N/A\"}\n          </Text>\n        </View>\n\n        <View\n          style={{\n            position: \"absolute\",\n            bottom: \"45\",\n            left: \"20\",\n            width: \"100%\",\n          }}\n          fixed\n        >\n          <View style={{ ...styles.hr }} />\n          <View style={{ display: \"flex\", flexDirection: \"row\", justifyContent: \"space-between\" }}>\n            <View style={{ display: \"flex\", flexDirection: \"column\" }}>\n              <Text\n                style={{\n                  ...styles.infoText,\n                  fontWeight: \"200\",\n                  fontSize: 10,\n                  marginRight: 20,\n                }}\n              >\n                Originally Reported On: {formatDateMDY(test.createdAt)}\n              </Text>\n              <Text\n                style={{\n                  ...styles.infoText,\n                  fontWeight: \"200\",\n                  fontSize: 10,\n                  marginRight: 20,\n                }}\n              >\n                Printed: {currentDate()} {time}\n              </Text>\n              <Text\n                style={{\n                  ...styles.infoText,\n                  fontWeight: \"200\",\n                  marginRight: 20,\n                  fontSize: 10,\n                }}\n              >\n                (UTC-08:00) Pacific Time (US & Canada)\n              </Text>\n            </View>\n            <View style={{ display: \"flex\", flexDirection: \"column\", justifyContent: \"flex-end\" }}>\n              <Text style={{ ...styles.infoText, fontSize: 10 }}>STAT[S] Corrected [C] Amended [A]</Text>\n            </View>\n            <View style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"flex-end\" }}>\n              <Text style={{ ...styles.infoText, fontSize: 10 }}>Accession: {test.barcode}</Text>\n              <Text style={{ ...styles.infoText, fontSize: 10, right: 0 }}>\n                Patient #: {test.empID || test.employeeID}\n              </Text>\n              <Text style={{ ...styles.infoText, fontSize: 10 }}>\n                Lab Results for: {demos.lastName}, {demos.firstName}\n              </Text>\n              <Text style={{ ...styles.infoText, fontSize: 10 }}>Lab Results for:</Text>\n            </View>\n          </View>\n        </View>\n        <Text\n          style={styles.pageNumbers}\n          render={({ pageNumber, totalPages }) => `Page ${pageNumber} of ${totalPages}`}\n          fixed\n        />\n      </Page>\n    </Document>\n  );\n};\n\nconst styles = StyleSheet.create({\n  page: {\n    flex: 1,\n    backgroundColor: \"white\",\n    paddingHorizontal: 20,\n    paddingTop: 35,\n    paddingBottom: 150,\n  },\n  infoText: {\n    fontSize: 12,\n  },\n  infoTextRightBorder: {\n    fontSize: 12,\n    fontStyle: \"bold\",\n  },\n  italicText: {\n    fontSize: 12,\n    fontStyle: \"italic\",\n  },\n  pageNumbers: {\n    position: \"absolute\",\n    fontSize: 10,\n    bottom: 15,\n    right: 22,\n  },\n  patientInfo: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n  },\n  infoHeader: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    borderRightWidth: 1,\n    borderRightColor: \"black\",\n    borderLeftWidth: 1,\n    borderLeftColor: \"black\",\n  },\n  infoCol: {\n    flexDirection: \"column\",\n    justifyContent: \"space-around\",\n  },\n  hr: {\n    borderBottomColor: \"black\",\n    borderBottomWidth: 1,\n    width: \"100%\",\n  },\n  hrTwo: {\n    borderBottomColor: \"black\",\n    borderBottomWidth: 2,\n    width: \"100%\",\n  },\n  address: {\n    // marginLeft: 50,\n    marginVertical: 20,\n  },\n  waterMark: {\n    opacity: 0.05,\n    fontSize: \"70px\",\n    color: \"black\",\n    background: \"#ccc\",\n    position: \"absolute\",\n    cursor: \"default\",\n    top: \"45%\",\n    left: \"30%\",\n    transform: \"Translate(-50%, -50%)\",\n  },\n});\n\nexport default PDF;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { HEALTH_AND_SAFTEY, newRoleOptions } from \"../../constant\";\nimport { AppContext } from \"context/app-context\";\nimport { formatQuaratineDate } from \"../../utils\";\nimport ErrorMessage from \"components/Message/ErrorMessage\"\nimport moment from \"moment\";\n\nconst QuarantineModal = (props) => {\n  const { test, handleSave, handleClose } = props;\n  const [startDate, setStartDate] = useState(test?.quarantinedStart);\n  const [endDate, setEndDate] = useState(test?.quarantinedEnd);\n  const [error, setError] = useState(\"\");\n\n  const onHandleSave = () => {\n    if (!startDate) {\n      setError(\"Please select dates\");\n      return;\n    }\n\n    if (endDate && !startDate) {\n      setError(\"Please select start date\");\n      return;\n    }\n\n    if (startDate && endDate) {\n      if (moment(endDate).isBefore(moment(startDate))) {\n        setError(\"End date should be after start date\");\n        return;\n      }\n    }\n\n    handleSave({ startDate, endDate });\n    \n    handleClose();\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Quarantine Info\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Start Date: </label>\n            <input\n              className=\"modalInput\"\n              type=\"date\"\n              value={formatQuaratineDate(startDate)}\n              placeholder=\"Start Date\"\n              style={{ width: \"100%\", marginBottom: \"10px\" }}\n              onChange={(e) => setStartDate(e.target.value)}\n            />\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">End Date: </label>\n            <input\n              className=\"modalInput\"\n              type=\"date\"\n              value={formatQuaratineDate(endDate)}\n              placeholder=\"End Date\"\n              style={{ width: \"100%\", marginBottom: \"10px\" }}\n              onChange={(e) => setEndDate(e.target.value)}\n            />\n          </div>\n          {error && (\n          <ErrorMessage error={error} handleChange={()=>setError('')}/>\n        )}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            Save\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default QuarantineModal;\n","import React from \"react\";\n\nimport { components } from \"react-select\";\n\nexport const ReactSelectCustomOption = (props) => {\n  const isSelected = props.isSelected;\n  const customStyle = isSelected ? { backgroundColor: \"blue\", color: \"white\" } : {};\n\n  return (\n    <components.Option {...props} style={customStyle}>\n      {props.children}\n    </components.Option>\n  );\n};\n\nexport const ReactSelectCustomContainer = ({ children, ...props }) => {\n  let [values, input] = children;\n\n  if (Array.isArray(values)) {\n    let label = values.length > 1 ? `${values.length} selected` : values[0].props.children;\n    values = <components.MultiValueContainer {...props}>{label}</components.MultiValueContainer>;\n  }\n\n  return (\n    <components.ValueContainer {...props}>\n      {values}\n      {input}\n    </components.ValueContainer>\n  );\n};\n\nexport const Option = (props) => {\n  return (\n    <components.Option {...props}>\n      <input\n        type=\"checkbox\"\n        checked={props.isSelected}\n        onChange={(e) => e.preventDefault()}\n        style={{ marginRight: \"10px\", cursor: \"pointer\" }}\n      />\n      {props.data.label}\n    </components.Option>\n  );\n};\n\nexport const customStyles = {\n  option: (provided, state) => ({\n    ...provided,\n    backgroundColor: state.isSelected ? \"white\" : provided.backgroundColor,\n    color: state.isSelected ? \"black\" : provided.color,\n    \":active\": {\n      ...provided[\":active\"],\n      backgroundColor: state.isSelected ? provided.backgroundColor : provided[\":active\"].backgroundColor,\n    },\n    \":hover\": {\n      ...provided[\":hover\"],\n      backgroundColor: \"#cfe2ff\",\n      color: \"black\",\n    },\n  }),\n  valueContainer: (provided) => ({\n    ...provided,\n    whiteSpace: \"nowrap\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    display: \"flex\",\n    flexWrap: \"nowrap\", // Prevents wrapping\n  }),\n  multiValue: (provided) => ({\n    ...provided,\n    maxWidth: \"100px\", // Adjust as needed\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n  }),\n  multiValueLabel: (provided) => ({\n    ...provided,\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n  }),\n};\n","export const generalSettings = (state) => state.generalSettings.settings;\nexport const associatedPanelSelector = (state) => state.generalSettings.associatedPanelData;\n","import React, { useState, useMemo } from \"react\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { ReactSelectCustomContainer } from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\n// import { CANCEL_REASON_OPTIONS } from \"constant\";\nimport \"../../../src/tableStyling.css\";\nimport { useSelector } from \"react-redux\";\nimport { generalSettings } from \"store/features/testDictionary/testDictionarySelectors\";\n\nconst ConfirmationModal = (props) => {\n  const {\n    title,\n    message,\n    handleConfirm,\n    isPreRegister,\n    handleClose,\n    cssClass,\n    note,\n    selectedOptions,\n    options,\n    handleOptions,\n    isSelectOptions,\n    reasonObj = { cancelTestData: { actionType: \"Default\" } },\n  } = props;\n  const [value, setValue] = useState(\"\");\n\n  const generalSettingsData = useSelector(generalSettings);\n\n  const CANCEL_REASON_OPTIONS = useMemo(() => {\n    return generalSettingsData.filter((item) => item.settingType === \"cancelled\");\n  }, [generalSettingsData]);\n  \n  return (\n    <Modal\n      show\n      // style={{ transform: \"translate(0, -30%)\" }}\n      animation={true}\n      onHide={() => {\n        handleClose ? handleClose(false) : handleConfirm(false);\n      }}\n      centered\n      size={\"md\"}\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 modal-title h4\" id=\"contained-modal-title-vcenter\">\n          {title}\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {reasonObj?.cancelTestData?.message || message}\n        </Modal.Title>\n        {note && note.label && (\n          <div className=\"w-100 mt-2\">\n            <label className=\"profile-title\">{note.label}</label>\n            <div className=\"mb-3\">\n              <textarea\n                className=\"form-control reason-textarea w-100\"\n                value={value}\n                onChange={(e) => setValue(e.target.value)}\n              ></textarea>\n            </div>\n          </div>\n        )}\n\n        {reasonObj?.cancelTestData?.actionType === \"Cancelled\" && (\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Select Reason: </label>\n            <Select\n              options={CANCEL_REASON_OPTIONS}\n              blurInputOnSelect={true}\n              menuPlacement=\"auto\"\n              className=\"w-100 siteSelector site-select-test\"\n              placeholder=\"Select\"\n              value={selectedOptions}\n              onChange={(e) =>\n                reasonObj.setCancelTestsData({\n                  ...reasonObj?.cancelTestData,\n                  preDefineReason: `${e.label}: ${e.title}`,\n                })\n              }\n              components={{ ValueContainer: ReactSelectCustomContainer }}\n            />\n          </div>\n        )}\n\n        {(reasonObj?.cancelTestData?.actionType === \"Cancelled\" ||\n          reasonObj.cancelTestData.actionType === \"Cancel\") && (\n          <div className=\"w-100\">\n            <div className=\"mb-3\">\n              <label className=\"profile-title\">Please add note below</label>\n              <textarea\n                className=\"form-control reason-textarea w-100\"\n                value={reasonObj?.cancelTestData.reason}\n                onChange={(e) => reasonObj.setCancelTestsData({ ...reasonObj?.cancelTestData, reason: e.target.value })}\n              ></textarea>\n            </div>\n          </div>\n        )}\n\n        {isSelectOptions && (\n          <Select\n            options={options}\n            blurInputOnSelect={true}\n            menuPlacement=\"auto\"\n            className=\"w-100 siteSelector site-select-test\"\n            placeholder=\"Select Source\"\n            value={selectedOptions}\n            onChange={(e) => handleOptions(e)}\n            components={{ ValueContainer: ReactSelectCustomContainer }}\n          />\n        )}\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button\n          className=\"modalButtons\"\n          variant=\"secondary\"\n          onClick={() => {\n            handleConfirm(false);\n          }}\n        >\n          {isPreRegister ? \"No\" : \"Go back\"}\n        </Button>\n        <Button\n          className=\"modalButtons\"\n          variant=\"primary\"\n          onClick={() => {\n            handleConfirm(true, value);\n          }}\n        >\n          {isPreRegister ? \"Yes\" : \" Confirm\"}\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ConfirmationModal;\n","import React from \"react\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport moment from \"moment\";\n\nconst SingleDatePicker = (props) => {\n  const { onApply, value, currentDate, startDate, onCancel } = props;\n\n  return (\n    <DateRangePicker\n      initialSettings={{\n        startDate: startDate ? startDate : moment(),\n        singleDatePicker: true,\n        showDropdowns: true,\n        autoUpdateInput: false,\n        autoApply: true,\n        maxDate: currentDate ? moment() : false,\n      }}\n      onApply={onApply}\n      onCancel={onCancel}\n    >\n      <input\n        type=\"text\"\n        placeholder=\"MM-DD-YYYY\"\n        readOnly\n        value={value ? moment(value).format(\"MM-DD-YYYY\") : \"\"}\n        className={\n          startDate\n            ? `modalInput form-control-plaintext w-100`\n            : `form-control dobInput edit_style ${value !== null && \"selected\"}`\n        }\n        style={{ cursor: \"pointer\" }}\n      />\n    </DateRangePicker>\n  );\n};\n\nexport default SingleDatePicker;\n","import React, { useEffect, useRef, useState, useContext } from \"react\";\nimport { AppContext } from \"context/app-context\";\nimport { isValidFile } from \"../../utils\";\nimport Compressor from \"compressorjs\";\n\nconst ImageInput = (props) => {\n  const { selectedImage, setSelectedImage, type, title, cssClass, showCropDialog, disabled, setCopyImage, cameraIcon } =\n    props;\n  const [image, setImage] = useState(selectedImage);\n  const appContext = useContext(AppContext);\n\n  useEffect(() => {\n    if (selectedImage instanceof Object) {\n      setImage(URL.createObjectURL(selectedImage));\n    } else {\n      setImage(selectedImage);\n    }\n  }, [selectedImage]);\n\n  const inputFile = useRef();\n\n  const handleImageClick = () => {\n    if (inputFile.current && title !== \"profile\") {\n      inputFile.current.click();\n    }\n  };\n\n  const onChangeImage = async (event) => {\n    console.log(\"event\", event.currentTarget.files);\n    if (event.currentTarget.files && event.currentTarget.files.length > 0) {\n      const file = event.currentTarget.files[0];\n      //   const isValid = await isValidImageHeightWidth(file);\n      //   if (!isValid) {\n      //     alert(\"File resolution should be upto 150px*150px\");\n      //     return;\n      //   }\n      console.log(\"File\", file);\n      const message = isValidFile(file);\n      if (message.length > 0) {\n        // appContext.showErrorMessage(message);\n        event.target.value = null;\n        return;\n      }\n      new Compressor(file, {\n        quality: 0.6, // 0.6 can also be used, but its not recommended to go below.\n        maxWidth: 800,\n        convertSize: 1000000,\n        success: (compressedResult) => {\n          // compressedResult has the compressed file.\n          // Use the compressed file to upload the images to your server.\n          setCopyImage ? setCopyImage(compressedResult) : setSelectedImage(compressedResult);\n\n          // setImage(URL.createObjectURL(compressedResult));\n        },\n      });\n\n      if (showCropDialog) showCropDialog(true);\n      event.target.value = null;\n    }\n  };\n\n  if (type === \"profile\") {\n    return (\n      <div className=\"form-group-wrapper justify-content-center\">\n        <div className=\"inputFileWrapper positionRelative\" onClick={handleImageClick}>\n          {/* <i className=\"fas fa-times-circle\"></i> */}\n          {image && <img src={image} />}\n          <div className=\"profileEditImage\">\n            <i\n              className={`fas ${cameraIcon ? \"fa-camera\" : \"fa-edit\"}`}\n              onMouseLeave={(e) => (e.target.style.color = \"black\")}\n              onMouseOver={(e) => {\n                e.target.style.color = \"blue\";\n                e.target.style.cursor = \"pointer\";\n              }}\n              aria-hidden=\"true\"\n            />\n          </div>\n\n          <input\n            type=\"file\"\n            ref={inputFile}\n            accept=\"image/*\"\n            onChange={(e) => onChangeImage(e)}\n            style={{ display: \"none\" }}\n          />\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"form-group-wrapper\">\n      {title && <label className=\"modalLineHeaders\">{`${title}:`}</label>}\n      <div className={`inputFileWrapperFull d-block ${cssClass}`} onClick={handleImageClick}>\n        {image && <img src={image} />}\n        <input\n          type=\"file\"\n          //   ref={inputFile}\n          accept=\"image/*\"\n          disabled={disabled || false}\n          onChange={(e) => onChangeImage(e)}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default ImageInput;\n","export default [\n  { label: 'Afghanistan', value: 'Afghanistan' },\n  { label: 'Åland Islands', value: 'Åland Islands' },\n  { label: 'Albania', value: 'Albania' },\n  { label: 'Algeria', value: 'Algeria' },\n  { label: 'American Samoa', value: 'American Samoa' },\n  { label: 'AndorrA', value: 'AndorrA' },\n  { label: 'Angola', value: 'Angola' },\n  { label: 'Anguilla', value: 'Anguilla' },\n  { label: 'Antarctica', value: 'Antarctica' },\n  { label: 'Antigua and Barbuda', value: 'Antigua and Barbuda' },\n  { label: 'Argentina', value: 'Argentina' },\n  { label: 'Armenia', value: 'Armenia' },\n  { label: 'Aruba', value: 'Aruba' },\n  { label: 'Australia', value: 'Australia' },\n  { label: 'Austria', value: 'Austria' },\n  { label: 'Azerbaijan', value: 'Azerbaijan' },\n  { label: 'Bahamas', value: 'Bahamas' },\n  { label: 'Bahrain', value: 'Bahrain' },\n  { label: 'Bangladesh', value: 'Bangladesh' },\n  { label: 'Barbados', value: 'Barbados' },\n  { label: 'Belarus', value: 'Belarus' },\n  { label: 'Belgium', value: 'Belgium' },\n  { label: 'Belize', value: 'Belize' },\n  { label: 'Benin', value: 'Benin' },\n  { label: 'Bermuda', value: 'Bermuda' },\n  { label: 'Bhutan', value: 'Bhutan' },\n  { label: 'Bolivia', value: 'Bolivia' },\n  { label: 'Bosnia and Herzegovina', value: 'Bosnia and Herzegovina' },\n  { label: 'Botswana', value: 'Botswana' },\n  { label: 'Bouvet Island', value: 'Bouvet Island' },\n  { label: 'Brazil', value: 'Brazil' },\n  { label: 'British Indian Ocean Territory', value: 'British Indian Ocean Territory' },\n  { label: 'Brunei Darussalam', value: 'Brunei Darussalam' },\n  { label: 'Bulgaria', value: 'Bulgaria' },\n  { label: 'Burkina Faso', value: 'Burkina Faso' },\n  { label: 'Burundi', value: 'Burundi' },\n  { label: 'Cambodia', value: 'Cambodia' },\n  { label: 'Cameroon', value: 'Cameroon' },\n  { label: 'Canada', value: 'Canada' },\n  { label: 'Cape Verde', value: 'Cape Verde' },\n  { label: 'Cayman Islands', value: 'Cayman Islands' },\n  { label: 'Central African Republic', value: 'Central African Republic' },\n  { label: 'Chad', value: 'Chad' },\n  { label: 'Chile', value: 'Chile' },\n  { label: 'China', value: 'China' },\n  { label: 'Christmas Island', value: 'Christmas Island' },\n  { label: 'Cocos (Keeling) Islands', value: 'Cocos (Keeling) Islands' },\n  { label: 'Colombia', value: 'Colombia' },\n  { label: 'Comoros', value: 'Comoros' },\n  { label: 'Congo', value: 'Congo' },\n  { label: 'Congo, The Democratic Republic of the', value: 'Congo, The Democratic Republic of the' },\n  { label: 'Cook Islands', value: 'Cook Islands' },\n  { label: 'Costa Rica', value: 'Costa Rica' },\n  { label: \"Cote D'Ivoire\", value: \"Cote D'Ivoire\" },\n  { label: 'Croatia', value: 'Croatia' },\n  { label: 'Cuba', value: 'Cuba' },\n  { label: 'Cyprus', value: 'Cyprus' },\n  { label: 'Czech Republic', value: 'Czech Republic' },\n  { label: 'Denmark', value: 'Denmark' },\n  { label: 'Djibouti', value: 'Djibouti' },\n  { label: 'Dominica', value: 'Dominica' },\n  { label: 'Dominican Republic', value: 'Dominican Republic' },\n  { label: 'Ecuador', value: 'Ecuador' },\n  { label: 'Egypt', value: 'Egypt' },\n  { label: 'El Salvador', value: 'El Salvador' },\n  { label: 'Equatorial Guinea', value: 'Equatorial Guinea' },\n  { label: 'Eritrea', value: 'Eritrea' },\n  { label: 'Estonia', value: 'Estonia' },\n  { label: 'Ethiopia', value: 'Ethiopia' },\n  { label: 'Falkland Islands (Malvinas)', value: 'Falkland Islands (Malvinas)' },\n  { label: 'Faroe Islands', value: 'Faroe Islands' },\n  { label: 'Fiji', value: 'Fiji' },\n  { label: 'Finland', value: 'Finland' },\n  { label: 'France', value: 'France' },\n  { label: 'French Guiana', value: 'French Guiana' },\n  { label: 'French Polynesia', value: 'French Polynesia' },\n  { label: 'French Southern Territories', value: 'French Southern Territories' },\n  { label: 'Gabon', value: 'Gabon' },\n  { label: 'Gambia', value: 'Gambia' },\n  { label: 'Georgia', value: 'Georgia' },\n  { label: 'Germany', value: 'Germany' },\n  { label: 'Ghana', value: 'Ghana' },\n  { label: 'Gibraltar', value: 'Gibraltar' },\n  { label: 'Greece', value: 'Greece' },\n  { label: 'Greenland', value: 'Greenland' },\n  { label: 'Grenada', value: 'Grenada' },\n  { label: 'Guadeloupe', value: 'Guadeloupe' },\n  { label: 'Guam', value: 'Guam' },\n  { label: 'Guatemala', value: 'Guatemala' },\n  { label: 'Guernsey', value: 'Guernsey' },\n  { label: 'Guinea', value: 'Guinea' },\n  { label: 'Guinea-Bissau', value: 'Guinea-Bissau' },\n  { label: 'Guyana', value: 'Guyana' },\n  { label: 'Haiti', value: 'Haiti' },\n  { label: 'Heard Island and Mcdonald Islands', value: 'Heard Island and Mcdonald Islands' },\n  { label: 'Holy See (Vatican City State)', value: 'Holy See (Vatican City State)' },\n  { label: 'Honduras', value: 'Honduras' },\n  { label: 'Hong Kong', value: 'Hong Kong' },\n  { label: 'Hungary', value: 'Hungary' },\n  { label: 'Iceland', value: 'Iceland' },\n  { label: 'India', value: 'India' },\n  { label: 'Indonesia', value: 'Indonesia' },\n  { label: 'Iran, Islamic Republic Of', value: 'Iran, Islamic Republic Of' },\n  { label: 'Iraq', value: 'Iraq' },\n  { label: 'Ireland', value: 'Ireland' },\n  { label: 'Isle of Man', value: 'Isle of Man' },\n  { label: 'Israel', value: 'Israel' },\n  { label: 'Italy', value: 'Italy' },\n  { label: 'Jamaica', value: 'Jamaica' },\n  { label: 'Japan', value: 'Japan' },\n  { label: 'Jersey', value: 'Jersey' },\n  { label: 'Jordan', value: 'Jordan' },\n  { label: 'Kazakhstan', value: 'Kazakhstan' },\n  { label: 'Kenya', value: 'Kenya' },\n  { label: 'Kiribati', value: 'Kiribati' },\n  { label: \"Korea, Democratic People's Republic of\", value: \"Korea, Democratic People's Republic of\" },\n  { label: 'Korea, Republic of', value: 'Korea, Republic of' },\n  { label: 'Kuwait', value: 'Kuwait' },\n  { label: 'Kyrgyzstan', value: 'Kyrgyzstan' },\n  { label: \"Lao People's Democratic Republic\", value: \"Lao People's Democratic Republic\" },\n  { label: 'Latvia', value: 'Latvia' },\n  { label: 'Lebanon', value: 'Lebanon' },\n  { label: 'Lesotho', value: 'Lesotho' },\n  { label: 'Liberia', value: 'Liberia' },\n  { label: 'Libyan Arab Jamahiriya', value: 'Libyan Arab Jamahiriya' },\n  { label: 'Liechtenstein', value: 'Liechtenstein' },\n  { label: 'Lithuania', value: 'Lithuania' },\n  { label: 'Luxembourg', value: 'Luxembourg' },\n  { label: 'Macao', value: 'Macao' },\n  { label: 'Macedonia, The Former Yugoslav Republic of', value: 'Macedonia, The Former Yugoslav Republic of' },\n  { label: 'Madagascar', value: 'Madagascar' },\n  { label: 'Malawi', value: 'Malawi' },\n  { label: 'Malaysia', value: 'Malaysia' },\n  { label: 'Maldives', value: 'Maldives' },\n  { label: 'Mali', value: 'Mali' },\n  { label: 'Malta', value: 'Malta' },\n  { label: 'Marshall Islands', value: 'Marshall Islands' },\n  { label: 'Martinique', value: 'Martinique' },\n  { label: 'Mauritania', value: 'Mauritania' },\n  { label: 'Mauritius', value: 'Mauritius' },\n  { label: 'Mayotte', value: 'Mayotte' },\n  { label: 'Mexico', value: 'Mexico' },\n  { label: 'Micronesia, Federated States of', value: 'Micronesia, Federated States of' },\n  { label: 'Moldova, Republic of', value: 'Moldova, Republic of' },\n  { label: 'Monaco', value: 'Monaco' },\n  { label: 'Mongolia', value: 'Mongolia' },\n  { label: 'Montserrat', value: 'Montserrat' },\n  { label: 'Morocco', value: 'Morocco' },\n  { label: 'Mozambique', value: 'Mozambique' },\n  { label: 'Myanmar', value: 'Myanmar' },\n  { label: 'Namibia', value: 'Namibia' },\n  { label: 'Nauru', value: 'Nauru' },\n  { label: 'Nepal', value: 'Nepal' },\n  { label: 'Netherlands', value: 'Netherlands' },\n  { label: 'Netherlands Antilles', value: 'Netherlands Antilles' },\n  { label: 'New Caledonia', value: 'New Caledonia' },\n  { label: 'New Zealand', value: 'New Zealand' },\n  { label: 'Nicaragua', value: 'Nicaragua' },\n  { label: 'Niger', value: 'Niger' },\n  { label: 'Nigeria', value: 'Nigeria' },\n  { label: 'Niue', value: 'Niue' },\n  { label: 'Norfolk Island', value: 'Norfolk Island' },\n  { label: 'Northern Mariana Islands', value: 'Northern Mariana Islands' },\n  { label: 'Norway', value: 'Norway' },\n  { label: 'Oman', value: 'Oman' },\n  { label: 'Pakistan', value: 'Pakistan' },\n  { label: 'Palau', value: 'Palau' },\n  { label: 'Palestinian Territory, Occupied', value: 'Palestinian Territory, Occupied' },\n  { label: 'Panama', value: 'Panama' },\n  { label: 'Papua New Guinea', value: 'Papua New Guinea' },\n  { label: 'Paraguay', value: 'Paraguay' },\n  { label: 'Peru', value: 'Peru' },\n  { label: 'Philippines', value: 'Philippines' },\n  { label: 'Pitcairn', value: 'Pitcairn' },\n  { label: 'Poland', value: 'Poland' },\n  { label: 'Portugal', value: 'Portugal' },\n  { label: 'Puerto Rico', value: 'Puerto Rico' },\n  { label: 'Qatar', value: 'Qatar' },\n  { label: 'Reunion', value: 'Reunion' },\n  { label: 'Romania', value: 'Romania' },\n  { label: 'Russian Federation', value: 'Russian Federation' },\n  { label: 'RWANDA', value: 'RWANDA' },\n  { label: 'Saint Helena', value: 'Saint Helena' },\n  { label: 'Saint Kitts and Nevis', value: 'Saint Kitts and Nevis' },\n  { label: 'Saint Lucia', value: 'Saint Lucia' },\n  { label: 'Saint Pierre and Miquelon', value: 'Saint Pierre and Miquelon' },\n  { label: 'Saint Vincent and the Grenadines', value: 'Saint Vincent and the Grenadines' },\n  { label: 'Samoa', value: 'Samoa' },\n  { label: 'San Marino', value: 'San Marino' },\n  { label: 'Sao Tome and Principe', value: 'Sao Tome and Principe' },\n  { label: 'Saudi Arabia', value: 'Saudi Arabia' },\n  { label: 'Senegal', value: 'Senegal' },\n  { label: 'Serbia and Montenegro', value: 'Serbia and Montenegro' },\n  { label: 'Seychelles', value: 'Seychelles' },\n  { label: 'Sierra Leone', value: 'Sierra Leone' },\n  { label: 'Singapore', value: 'Singapore' },\n  { label: 'Slovakia', value: 'Slovakia' },\n  { label: 'Slovenia', value: 'Slovenia' },\n  { label: 'Solomon Islands', value: 'Solomon Islands' },\n  { label: 'Somalia', value: 'Somalia' },\n  { label: 'South Africa', value: 'South Africa' },\n  { label: 'South Georgia and the South Sandwich Islands', value: 'South Georgia and the South Sandwich Islands' },\n  { label: 'Spain', value: 'Spain' },\n  { label: 'Sri Lanka', value: 'Sri Lanka' },\n  { label: 'Sudan', value: 'Sudan' },\n  { label: 'Suriname', value: 'Suriname' },\n  { label: 'Svalbard and Jan Mayen', value: 'Svalbard and Jan Mayen' },\n  { label: 'Swaziland', value: 'Swaziland' },\n  { label: 'Sweden', value: 'Sweden' },\n  { label: 'Switzerland', value: 'Switzerland' },\n  { label: 'Syrian Arab Republic', value: 'Syrian Arab Republic' },\n  { label: 'Taiwan, Province of China', value: 'Taiwan, Province of China' },\n  { label: 'Tajikistan', value: 'Tajikistan' },\n  { label: 'Tanzania, United Republic of', value: 'Tanzania, United Republic of' },\n  { label: 'Thailand', value: 'Thailand' },\n  { label: 'Timor-Leste', value: 'Timor-Leste' },\n  { label: 'Togo', value: 'Togo' },\n  { label: 'Tokelau', value: 'Tokelau' },\n  { label: 'Tonga', value: 'Tonga' },\n  { label: 'Trinidad and Tobago', value: 'Trinidad and Tobago' },\n  { label: 'Tunisia', value: 'Tunisia' },\n  { label: 'Turkey', value: 'Turkey' },\n  { label: 'Turkmenistan', value: 'Turkmenistan' },\n  { label: 'Turks and Caicos Islands', value: 'Turks and Caicos Islands' },\n  { label: 'Tuvalu', value: 'Tuvalu' },\n  { label: 'Uganda', value: 'Uganda' },\n  { label: 'Ukraine', value: 'Ukraine' },\n  { label: 'United Arab Emirates', value: 'United Arab Emirates' },\n  { label: 'United Kingdom', value: 'United Kingdom' },\n  { label: 'United States', value: 'United States' },\n  { label: 'United States Minor Outlying Islands', value: 'United States Minor Outlying Islands' },\n  { label: 'Uruguay', value: 'Uruguay' },\n  { label: 'Uzbekistan', value: 'Uzbekistan' },\n  { label: 'Vanuatu', value: 'Vanuatu' },\n  { label: 'Venezuela', value: 'Venezuela' },\n  { label: 'Vietnam', value: 'Vietnam' },\n  { label: 'Virgin Islands, British', value: 'Virgin Islands, British' },\n  { label: 'Virgin Islands, U.S.', value: 'Virgin Islands, U.S.' },\n  { label: 'Wallis and Futuna', value: 'Wallis and Futuna' },\n  { label: 'Western Sahara', value: 'Western Sahara' },\n  { label: 'Yemen', value: 'Yemen' },\n  { label: 'Zambia', value: 'Zambia' },\n  { label: 'Zimbabwe', value: 'Zimbabwe' },\n];\n","import React from \"react\";\nimport Styles from \"components/CheckBox/ViewCheckBox.module.css\";\nconst ViewCheckBox = (props) => {\n  const { id, bgColor, title } = props;\n\n  const getColor = () => {\n    switch (bgColor) {\n      case \"red\":\n        return Styles.red;\n      case \"blue\":\n        return Styles.blue;\n      case \"yellow\":\n        return Styles.yellow;\n      case \"orange\":\n        return Styles.orange;\n      default:\n        return Styles.green;\n    }\n  };\n  return (\n    <div title={title}>\n      <input id={id} className={`${Styles.checkboxCustom}`} name=\"checkbox-1\" type=\"checkbox\" checked readOnly />\n      <label htmlFor={id} className={`mb-0 ${getColor()} ${Styles.checkboxCustomLabel}`} />\n    </div>\n  );\n};\n\nexport default ViewCheckBox;\n","import React, { useState } from \"react\";\nimport { Card, Table, Row, Col, Button, Modal, ModalBody } from \"react-bootstrap\";\nimport ViewCheckBox from \"./CheckBox/ViewCheckBox\";\nimport { formatDOB, formatPhoneNumber, parseBooleanValue } from \"utils\";\nimport ErrorMessage from \"./Message/ErrorMessage\";\n\nconst EmployeeSearchRecord = (props) => {\n  const { data, handleSelect, handleClose, setSelectSearchData, selectSearchdata } = props;\n  const [error, setError] = useState(\"\");\n\n  const handleSubmit = () => {\n    if (!selectSearchdata) {\n      setError(\"Please Select AnyOne\");\n      return;\n    }\n\n    handleSelect(selectSearchdata);\n  };\n  const TableRow = ({ item, index }) => {\n    return (\n      <tr className=\"cursor-pointer active\" onClick={() => setSelectSearchData(item)}>\n        <td className=\"popOver-centered\">{item.first || item.firstName}</td>\n        <td className=\"popOver-centered\">{item.last || item.lastName}</td>\n        <td className=\"popOver-centered\">{formatDOB(item.dob)}</td>\n        <td className=\"popOver-centered\">{item.email}</td>\n        <td className=\"popOver-centered\">{formatPhoneNumber(item.phone_number, item.countryCode)}</td>\n        {/* <td className=\"popOver-centered\">{parseBooleanValue(item.isHR)}</td> */}\n        <td>{selectSearchdata?.id === item.id && <ViewCheckBox />}</td>\n      </tr>\n    );\n  };\n\n  return (\n    <Modal\n      className=\"searchList seperateModal\"\n      show\n      animation={true}\n      size=\"xl\"\n      onHide={() => {\n        handleClose();\n      }}\n      style={{ paddingLeft: \"0\" }}\n      centered\n      scrollable\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Search List\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body>\n        <div style={{ flex: 1 }}>\n          <Row>\n            <Col md=\"12\">\n              <Card className=\"strpied-tabled-with-hover m-0\">\n                <Card.Body>\n                  <div className=\"form-group-wrapper m-0 d-block\">\n                    <div className=\"table-responsive overFlow-y-hidden\">\n                      <Table className=\"table table-hover\">\n                        <thead>\n                          <tr>\n                            <th className=\"popOver-centered border-0\">First Name</th>\n                            <th className=\"popOver-centered border-0\">Last Name</th>\n                            <th className=\"popOver-centered border-0\">Date of Birth</th>\n                            <th className=\"popOver-centered border-0\">Email</th>\n                            <th className=\"popOver-centered border-0\">Phone Number</th>\n                            {/* <th className=\"popOver-centered border-0\">HR</th> */}\n                            <th className=\"checkbox-min-width\"></th>\n                          </tr>\n                        </thead>\n                        <tbody>\n                          {data.map((item, i) => (\n                            <TableRow key={i} index={i} item={item} />\n                          ))}\n                        </tbody>\n                      </Table>\n                    </div>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      </Modal.Body>\n      <div className=\"px-4\" style={{ height: \"3vh\" }}>\n        {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n      </div>\n      <Modal.Footer>\n        <Button onClick={handleClose}>Close</Button>\n        <Button onClick={() => handleSubmit()}>Ok</Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default EmployeeSearchRecord;\n","import React, { useState, useEffect } from \"react\";\nimport Autocomplete from \"react-google-autocomplete\";\nimport { getValidName } from \"utils\";\nconst options = {\n  fields: [\"address_components\", \"name\", \"formatted_address\"],\n  strictBounds: false,\n  types: [],\n};\nconst AutoCompleteAddress = (props) => {\n  const { handleChange, value, cssClass, readOnly } = props;\n  const [address, setAddress] = useState(null);\n\n  useEffect(() => {\n    if (address) {\n      handleChange(address, true);\n    }\n  }, [address]);\n\n  const handleAddressUpdate = (place) => {\n    if (!place || Object.keys(place).length === 1) return;\n\n    const obj = {};\n    let address1 = \"\";\n    let postcode = \"\";\n    for (const curr of place.address_components) {\n      const type = curr.types[0];\n\n      switch (type) {\n        case \"street_number\": {\n          address1 = `${curr.long_name}`;\n          break;\n        }\n        case \"route\": {\n          address1 += ` ${curr.long_name}`;\n          break;\n        }\n        case \"postal_code\": {\n          postcode = `${curr.long_name}`;\n          break;\n        }\n        case \"locality\": {\n          Object.assign(obj, { city: curr.long_name });\n          break;\n        }\n        case \"administrative_area_level_1\": {\n          Object.assign(obj, { state: curr.short_name });\n        }\n        case \"administrative_area_level_2\": {\n          Object.assign(obj, { county: curr.long_name });\n        }\n        case \"country\": {\n          Object.assign(obj, { country: curr.long_name, isoCode: curr.short_name });\n          break;\n        }\n      }\n    }\n    Object.assign(obj, { street: address1.trim() || place.name, zipcode: postcode });\n    setAddress({ ...obj });\n  };\n  return (\n    <Autocomplete\n      apiKey={process.env.REACT_GOOGLE_API_KEY}\n      onPlaceSelected={(place) => {\n        handleAddressUpdate(place);\n      }}\n      disabled={readOnly}\n      value={value}\n      options={options}\n      className={cssClass || \"form-control\"}\n      placeholder=\"Enter Address\"\n      onChange={(e) => handleChange(getValidName(e.target.value))}\n    />\n  );\n};\n\nexport default AutoCompleteAddress;\n","import React, { useState, useEffect, useContext, useMemo, useRef } from \"react\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport Select from \"react-select\";\nimport countriesOption from \"countries\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport {\n  toTitleCase,\n  FormatAWSDate,\n  makeAlphabetInput,\n  convertToLower,\n  isValidEmail,\n  makeBarcode,\n  formatDoBForDemo,\n  isValidPhoneWithCode,\n  isValidIdNum,\n  getPhoneNo,\n  isValidName,\n  isValidZipCode,\n  validSpace,\n  formatZip,\n  isValidState,\n  isValidDobField,\n  formatPhoneNumber,\n  formatPhoneWithOutSpaces,\n  zipCodeValidationUS,\n  convertToUpper,\n  sortByAlphaOrder,\n} from \"../../utils\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport Loader from \"components/Loader/Loader\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport EmployeeSearchRecord from \"components/EmployeeSearchRecord\";\nimport api from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { externalTypesOptions, countryListAllIsoData, TEST_TYPE_VALUE, INSURANCE_PROVIDER } from \"constant\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport moment from \"moment\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport { AppContext } from \"context/app-context\";\nimport { stringConstant } from \"constant\";\nimport { CONFIG } from \"constant\";\nimport { UN_RESULT } from \"constant\";\n\nconst TestModal = (props) => {\n  const { newTestCreate, handleCloseCreateTest, createTest, setTestCreate, clients, sites, labs, isNew, users } = props;\n  const [loading, setLoading] = useState(false);\n  const [recordData, setRecordData] = useState([]);\n  const [showPopOver, setShowPopOver] = useState(false);\n  const [selectSearchdata, setSelectSearchData] = useState(null);\n  const [show, setShow] = useState(\"\");\n  const [error, setError] = useState(\"\");\n  const [disableVaccination, setDisabledVaccination] = useState(false);\n  const [onSelectedCreateTestType, setOnSelectedCreateTestType] = useState({});\n  const [onSelectedTester, setOnSelectedTester] = useState({});\n  const [resultTypes, setResultTypes] = useState([]);\n  const childNode = useRef();\n  const [lab, setLabs] = useState([]);\n  const [testOptions, setTestOptions] = useState();\n  const appContext = useContext(AppContext);\n\n  const loadTestOptions = async () => {\n    const options = await api.getTestTypesOptions();\n    setTestOptions(options);\n  };\n\n  const getSiteOptions = useMemo(() => {\n    if (!newTestCreate.clientID) return [];\n    return sites\n      .filter((s) => s.clientID === newTestCreate.clientID)\n      .map((l) => {\n        return { value: l.id, label: l.name };\n      });\n  }, [newTestCreate.clientID]);\n\n  useEffect(() => {\n    if (appContext?.clients?.length > 0) {\n      const client = appContext.clients.find((f) => f.id === CONFIG.clientID);\n      if (client && client.resultTypes) {\n        setResultTypes(\n          sortByAlphaOrder(\n            [\n              ...(client.resultTypes.results.map((m) => ({ value: m, label: m })) || []),\n              { value: UN_RESULT, label: UN_RESULT },\n            ],\n            \"label\"\n          )\n        );\n      }\n    }\n  }, [appContext.clients]);\n\n  const usersData = useMemo(() => {\n    if (!users) return;\n    return users\n      .filter((u) => u.roles?.includes(\"Tester\") || u.roles?.includes(\"Admin\"))\n      .map((u) => {\n        return {\n          value: u.userID,\n          label: `${u.firstName} ${u.lastName}`,\n          phone_number: u.phone_number?.replace(/ /g, \"\"),\n        };\n      });\n  }, [users]);\n\n  useEffect(() => {\n    let updates = {};\n\n    if (clients.length === 1 && !newTestCreate.clientID) {\n      const { id, name } = clients[0];\n      updates = {\n        ...updates,\n        clientID: id,\n        clientName: name,\n      };\n\n      const baseSite = sites.find((s) => s.clientID === id);\n      if (baseSite) {\n        const { id, name } = baseSite;\n        updates = {\n          ...updates,\n          siteID: id,\n          site_name: name,\n        };\n      }\n    }\n\n    if (labs.length === 1 && !newTestCreate.labID) {\n      const { id, name } = labs[0];\n      updates = {\n        ...updates,\n        labID: id,\n        labName: name,\n      };\n    }\n\n    if (Object.keys(updates).length > 0) {\n      setTestCreate((prev) => ({\n        ...prev,\n        ...updates,\n      }));\n    }\n  }, [clients, labs, newTestCreate]);\n\n  const getSelectedTester = (onChangeTesterData) => {\n    setTestCreate({\n      ...newTestCreate,\n      createdBy: onChangeTesterData.value,\n      tester_name: onChangeTesterData.label,\n      testerPhone: onChangeTesterData.phone_number,\n    });\n    setOnSelectedTester(onChangeTesterData);\n  };\n\n  useEffect(() => {\n    loadTestOptions();\n    if (newTestCreate?.test_type) {\n      const TEST_TYPE_VALUE = {\n        Lucira: \"Lucira\",\n        PCR: \"PCR\",\n        Molecular: \"Molecular\",\n        Rapid_PCR: \"Other\",\n        Rapid_Antigen: \"Antigen\",\n        Rapid_Flu: \"RapidFlu\",\n      };\n\n      const TEST_TYPE_LABEL = {\n        Lucira: \"Lucira\",\n        PCR: \"PCR\",\n        Molecular: \"Molecular\",\n        Other: \"Rapid PCR\",\n        Antigen: \"Antigen\",\n        RapidFlu: \"Rapid Flu\",\n      };\n\n      let type = newTestCreate?.test_type;\n\n      setOnSelectedCreateTestType({ label: type, value: type });\n      setTestCreate({\n        ...newTestCreate,\n        test_type: type,\n        employee_demographics: {\n          ...newTestCreate.employee_demographics,\n          country: newTestCreate.employee_demographics?.country\n            ? newTestCreate.employee_demographics?.country\n            : \"United States\",\n          isoCode: newTestCreate.employee_demographics?.isoCode ? newTestCreate.employee_demographics?.isoCode : \"US\",\n          phoneNumber: formatPhoneWithOutSpaces(\n            newTestCreate.employee_demographics.phoneNumber,\n            newTestCreate.employee_demographics.countryCode\n          ),\n        },\n      });\n    } else {\n      setTestCreate({\n        ...newTestCreate,\n      });\n    }\n    if (newTestCreate?.tester_name) {\n      setOnSelectedTester({ label: newTestCreate?.tester_name, value: newTestCreate?.tester_name });\n    }\n  }, []);\n\n  useEffect(() => {\n    setTimeout(() => {\n      setShow(\"\");\n    }, 4000);\n  }, [show]);\n\n  useEffect(() => {\n    // setSite(appContext.sites);\n    setLabs(appContext.labs);\n  }, [appContext.sites, appContext.labs]);\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setTestCreate({\n        ...newTestCreate,\n        employee_demographics: { ...newTestCreate.employee_demographics, street: val },\n      });\n    } else {\n      let addressObj = {\n        street: val.street,\n        country: val.country || \"United States\",\n        city: val.city,\n        zip: val.zipcode,\n        county: val.county,\n        state: val.state,\n        isoCode: val.isoCode || val.isCode || \"US\",\n      };\n      setTestCreate({\n        ...newTestCreate,\n        employee_demographics: { ...newTestCreate.employee_demographics, ...addressObj },\n      });\n    }\n  };\n\n  const handlePhoneNo = (e) => {\n    setTestCreate({\n      ...newTestCreate,\n      employee_demographics: { ...newTestCreate.employee_demographics, phoneNumber: e },\n      phoneNumber: e,\n    });\n  };\n\n  const searchPreReg = async (data, type) => {\n    if (!data) return;\n    setLoading(true);\n    let phoneNo = data;\n    let countryCode = \"\";\n    if (phoneNo && type === \"Phone\") {\n      const [cc, ph] = getPhoneNo(data);\n      phoneNo = ph;\n      countryCode = cc;\n    }\n    let env = CONFIG.isLive ? \"remote\" : \"localhost\";\n\n    let record = [];\n    try {\n      let siteID = null;\n\n      if (sites.length > 1) {\n        siteID = newTestCreate.siteID;\n      }\n\n      record = await api.getPreRegisterData(phoneNo, env, type, countryCode, siteID);\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n    }\n\n    if (record && record.length === 1) {\n      populate(record[0]);\n      return;\n    }\n    if (record && record.length > 1) {\n      setRecordData(\n        record.map((e) => {\n          return { ...e, first: toTitleCase(e.first), last: toTitleCase(e.last) };\n        })\n      );\n      setShowPopOver(!showPopOver);\n    }\n  };\n\n  const populate = (record) => {\n    setShowPopOver(false);\n    setSelectSearchData(null);\n    const {\n      zip,\n      state,\n      sex,\n      fetchFrom,\n      city,\n      whiteGlove,\n      isVaccinated,\n      employeeType,\n      street,\n      phone_number,\n      dob,\n      last,\n      first,\n      email,\n      id_number,\n      id,\n      country,\n      countryCode,\n      clientID,\n      insurance_name,\n      insuranceCompanyCode,\n      insurance_number,\n    } = record;\n\n    const [ccCode, phno] = getPhoneNo(phone_number, countryCode);\n    const val = countryListAllIsoData.find((f) => f.name === country) || { code: \"US\" };\n\n    const obj = {\n      employee_demographics: {\n        email: email,\n        firstName: first,\n        lastName: last,\n        dob: formatDoBForDemo(dob),\n        phoneNumber: `${ccCode}${phno}`,\n        countryCode: ccCode,\n        address: \"\",\n        employeeType: employeeType,\n        isVaccinated: isVaccinated || false,\n        whiteGlove: whiteGlove,\n        city: city,\n        country: country || \"United States\",\n        isoCode: val.code || \"US\",\n        state: state,\n        street: street,\n        street2: \"\",\n        zip: zip,\n        isLucira: false,\n        sex: sex,\n        testerDes: \"\",\n        idNumber: id_number,\n        insurance_name,\n        insuranceCompanyCode,\n        insurance_number,\n        status: \"Pending\",\n      },\n      phoneNumber: phone_number,\n      email: email,\n      employeeID: CONFIG.clientID === clientID ? id : \"\",\n    };\n\n    setTestCreate({\n      ...newTestCreate,\n      employee_demographics: obj.employee_demographics,\n      email: obj.email,\n      phoneNumber: obj.phoneNumber,\n      employeeID: obj.employeeID,\n    });\n\n    setDisabledVaccination(isVaccinated || false);\n  };\n  const onHandleSave = async () => {\n    let newTestObj = _.cloneDeep(newTestCreate);\n    const [ccCode, phoneNo, completePhone] = getPhoneNo(\n      newTestCreate?.employee_demographics?.phoneNumber,\n      newTestCreate?.employee_demographics?.countryCode\n    );\n\n    if (!newTestCreate.employee_demographics.firstName) {\n      setError(\"First name is required\");\n      return;\n    }\n    if (!isValidName(newTestCreate.employee_demographics.firstName)) {\n      setError(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!newTestCreate.employee_demographics.lastName) {\n      setError(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(newTestCreate.employee_demographics.lastName)) {\n      setError(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!newTestCreate.employee_demographics.email) {\n      setError(\"Email name is required\");\n      return;\n    }\n\n    if (!isValidEmail(newTestCreate.employee_demographics.email)) {\n      setError(\"Invalid Email\");\n      return;\n    }\n\n    if (!newTestCreate.employee_demographics.dob) {\n      setError(\"Date of birth is required\");\n      return;\n    }\n    const startDate = moment(\"1900-01-01\").startOf(\"day\").format(\"YYYY-MM-DD\");\n    const endDate = moment().endOf(\"day\").format(\"YYYY-MM-DD\");\n    if (\n      !isValidDobField(newTestCreate.employee_demographics.dob, \"MMDDYYYY\") ||\n      !(\n        moment(FormatAWSDate(newTestCreate.employee_demographics?.dob)).isSame(moment().format(\"YYYY-MM-DD\")) ||\n        moment(FormatAWSDate(newTestCreate.employee_demographics?.dob)).isBetween(startDate, endDate)\n      )\n    ) {\n      setError(\"Date of Birth is Invalid\");\n      return;\n    }\n    if (!newTestCreate.employee_demographics.phoneNumber) {\n      setError(\"Phone number is required\");\n      return;\n    }\n    if (!isValidPhoneWithCode(newTestCreate.employee_demographics.phoneNumber)) {\n      setError(\"Phone number is invalid\");\n      return;\n    }\n\n    if (!newTestCreate.employee_demographics.sex) {\n      setError(\"Gender is required\");\n      return;\n    }\n\n    if (!newTestCreate.employee_demographics.idNumber) {\n      setError(\"License No. is required\");\n      return;\n    }\n\n    if (!isValidIdNum(newTestCreate.employee_demographics.idNumber)) {\n      setError(`Invalid license no must contains at least 5 characters`);\n      return;\n    }\n\n    if (!newTestCreate.employee_demographics.street.trim()) {\n      setError(\"Address is required\");\n      return;\n    }\n    if (!newTestCreate.employee_demographics.country) {\n      setError(\"Country is Required\");\n      return;\n    }\n    if (newTestCreate.employee_demographics.zip === null || !newTestCreate.employee_demographics.zip) {\n      setError(\"Zipcode is required\");\n      return;\n    }\n\n    // if (\n    //   !isValidZipCode(\n    //     newTestCreate?.employee_demographics?.isoCode || newTestCreate?.employee_demographics?.isCode || \"US\",\n    //     newTestCreate?.employee_demographics?.zip\n    //   )\n    // ) {\n    //   setError(\"Invalid Postal Code\");\n    //   return;\n    // }\n    if (!zipCodeValidationUS(newTestCreate.employee_demographics.zip)) {\n      setError(\"Invalid Postal Code\");\n      return;\n    }\n\n    if (!newTestCreate.employee_demographics.state.trim()) {\n      setError(\"State is required\");\n      return;\n    }\n    if (!newTestCreate.clientID) {\n      setError(\"Client is required\");\n      return;\n    }\n    if (!newTestCreate.siteID) {\n      setError(`${stringConstant.site} is required`);\n      return;\n    }\n\n    if (!newTestCreate.labID) {\n      setError(\"Lab is required\");\n      return;\n    }\n\n    if (!newTestCreate.test_type || newTestCreate.test_type == \"\" || newTestCreate.test_type == \"undefined\") {\n      setError(\"Test Type is required\");\n      return;\n    }\n\n    if (newTestCreate.result === UN_RESULT) {\n      newTestObj.result = \"\";\n      newTestObj.status = \"Pending\";\n    }\n\n    newTestObj.testerPhone = appContext.user.phone_number;\n    newTestObj.phoneNumber = phoneNo;\n    newTestObj.employee_demographics.phoneNumber = phoneNo;\n    newTestObj.employee_demographics.countryCode = ccCode;\n\n    setLoading(true);\n\n    try {\n      // save employee data using proxy contact api\n      let record = await api.proxyContant({\n        ...newTestObj,\n        updatedBy: appContext.user.sub,\n        updatedByName: appContext.user.name,\n        clientID: newTestCreate.clientID,\n      });\n\n      // when employee data update fail\n      if (!record) {\n        setError(\"Fail to save the Employee Record\");\n        setLoading(false);\n        return;\n      }\n\n      // set the newly assigned employee id at test level and in demographics\n      if (record.id) {\n        newTestObj.employeeID = record.id;\n        newTestObj.employee_demographics.id = record.id;\n      }\n\n      // check seuqence no is not being used in other test\n      if (newTestCreate.sequenceNo) {\n        let sequenceData = await GQAPI.getTestBySequenceNoByAPI(newTestCreate.sequenceNo);\n        if (sequenceData == newTestCreate.sequenceNo || sequenceData < newTestCreate.sequenceNo) {\n          setError(\"Sequence No. already used\");\n          setLoading(false);\n          return;\n        }\n        let barcode = makeBarcode(newTestObj.employee_demographics.idNumber, newTestCreate.sequenceNo);\n        newTestObj = { ...newTestObj, barcode };\n      }\n\n      // if create new test allocate the new sequenec no\n      let newSequenceNo;\n      if (!newTestCreate?.sequenceNo) {\n        // if bio lab then change the barcode format\n        if (CONFIG.appPackage === \"com.bio.lab\") {\n          let dateOfTest = moment().format(\"YYMMDD\");\n          if (newTestObj.createdAt) {\n            dateOfTest = moment(newTestObj.createdAt).format(\"YYMMDD\");\n          }\n          newSequenceNo = await GQAPI.getLabTestAutoNumber(dateOfTest, newTestObj.labID);\n        } else {\n          newSequenceNo = await GQAPI.getTestAutoNumber();\n        }\n\n        const barcode = newSequenceNo.dailyCounter || newSequenceNo.counter;\n        newTestObj = { ...newTestObj, sequenceNo: newSequenceNo.counter, barcode };\n      }\n      createTest(newTestObj);\n    } catch (err) {\n      setLoading(false);\n      console.log(err);\n    }\n  };\n\n  const handleTestType = (e) => {\n    setOnSelectedCreateTestType({ label: e.label, value: e.value });\n    setTestCreate({ ...newTestCreate, test_type: e.value });\n  };\n\n  return (\n    <>\n      <Modal show animation={true} onHide={handleCloseCreateTest} size=\"xl\" style={{ paddingLeft: \"0\" }} centered>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {isNew === false ? \"Update Test\" : \"Create Test\"}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"tset-clent-edit createClientsWrapper\">\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">First Name: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"First Name\"\n                style={{\n                  width: \"100%\",\n                  flexShrink: \"initial\",\n                }}\n                value={newTestCreate?.employee_demographics?.firstName}\n                onChange={(e) => {\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      firstName: makeAlphabetInput(e.target.value),\n                    },\n                  });\n                }}\n              />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.firstName, \"FirstName\")}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Last Name: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"Last Name\"\n                style={{\n                  width: \"100%\",\n                  flexShrink: \"initial\",\n                }}\n                value={newTestCreate?.employee_demographics?.lastName}\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      lastName: makeAlphabetInput(e.target.value),\n                    },\n                  })\n                }\n              />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.lastName, \"LastName\")}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Email: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"Email\"\n                style={{\n                  width: \"100%\",\n                  flexShrink: \"initial\",\n                }}\n                value={newTestCreate?.employee_demographics?.email}\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      email: convertToLower(e.target.value),\n                    },\n                    email: convertToLower(e.target.value),\n                  })\n                }\n              />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.email, \"Email\")}\n              />\n            </div>\n            <div className=\"form-group-wrapper dateWrapper\">\n              <label className=\"modalLineHeaders\">DoB: </label>\n              <input\n                className=\"modalInput\"\n                type=\"date\"\n                style={{\n                  width: \"100%\",\n                  flexShrink: \"initial\",\n                }}\n                value={FormatAWSDate(newTestCreate.employee_demographics?.dob)}\n                placeholder=\"Date of Birth\"\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      dob: moment(e.target.value).format(\"MMDDYYYY\"),\n                    },\n                  })\n                }\n                min={moment(\"1900-01-01\").format(\"YYYY-MM-DD\")}\n                max={moment().format(\"YYYY-MM-DD\")}\n              />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.dob, \"DOB\")}\n              />\n            </div>\n\n            <div className=\"form-group-wrapper phoneInput\">\n              <label className=\"modalLineHeaders\">Phone #: </label>\n              <PhoneNoInput handleChange={handlePhoneNo} value={newTestCreate?.employee_demographics?.phoneNumber} />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.phoneNumber, \"Phone\")}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Gender: </label>\n              <div className=\"d-flex justify-content-between w-100\">\n                <span className=\"radioBox-wrapper\">\n                  <input\n                    type=\"radio\"\n                    className=\"radioButton\"\n                    name=\"sex\"\n                    checked={newTestCreate?.employee_demographics?.sex == \"M\"}\n                    onChange={(e) =>\n                      setTestCreate({\n                        ...newTestCreate,\n                        employee_demographics: {\n                          ...newTestCreate.employee_demographics,\n                          sex: e.target.checked && \"M\",\n                        },\n                      })\n                    }\n                  />\n                  <span className=\"radioButton\">Male</span>\n                </span>\n                <span className=\"radioBox-wrapper\">\n                  <input\n                    type=\"radio\"\n                    className=\"radioButton\"\n                    name=\"sex\"\n                    checked={newTestCreate?.employee_demographics?.sex == \"F\"}\n                    onChange={(e) =>\n                      setTestCreate({\n                        ...newTestCreate,\n                        employee_demographics: {\n                          ...newTestCreate.employee_demographics,\n                          sex: e.target.checked && \"F\",\n                        },\n                      })\n                    }\n                  />\n                  <span className=\"radioButton\">Female</span>\n                </span>\n                <span className=\"radioBox-wrapper\">\n                  <input\n                    type=\"radio\"\n                    className=\"radioButton\"\n                    name=\"sex\"\n                    checked={newTestCreate?.employee_demographics?.sex == \"X\"}\n                    onChange={(e) =>\n                      setTestCreate({\n                        ...newTestCreate,\n                        employee_demographics: {\n                          ...newTestCreate.employee_demographics,\n                          sex: e.target.checked && \"X\",\n                        },\n                      })\n                    }\n                  />\n                  <span className=\"radioButton\">Not Specified</span>\n                </span>\n              </div>\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">DL/Passport #: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"License/Passport\"\n                style={{\n                  width: \"100%\",\n                  flexShrink: \"initial\",\n                }}\n                maxLength={16}\n                value={newTestCreate?.employee_demographics?.idNumber}\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: { ...newTestCreate.employee_demographics, idNumber: e.target.value },\n                  })\n                }\n              />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.idNumber, \"License\")}\n              />\n            </div>\n\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Address: </label>\n              <AutoCompleteAddress\n                value={newTestCreate?.employee_demographics?.street}\n                cssClass={\"modalInput\"}\n                handleChange={handleUpdateAddress}\n              />\n              {/* <input\n                ref={ref}\n                value={newTestCreate?.employee_demographics?.street}\n                placeholder=\"Enter Address\"\n                className=\"modalInput\"\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      street: validSpace(e.target.value),\n                    },\n                  })\n                }\n              /> */}\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">City: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"City \"\n                value={newTestCreate?.employee_demographics?.city}\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: { ...newTestCreate.employee_demographics, city: validSpace(e.target.value) },\n                  })\n                }\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Zip: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"Zip\"\n                maxLength={10}\n                value={newTestCreate?.employee_demographics?.zip}\n                onChange={(e) => {\n                  let val = e.target.value;\n                  if (val) val = val.toUpperCase();\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      zip: newTestCreate.employee_demographics.isoCode === \"US\" ? formatZip(val) : validSpace(val),\n                    },\n                  });\n                }}\n              />\n            </div>\n            {loading && <Loader />}\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">State: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"State\"\n                maxLength={35}\n                value={newTestCreate?.employee_demographics?.state}\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      state: e.target.value.toUpperCase(),\n                    },\n                  })\n                }\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Country: </label>\n              <Select\n                options={countriesOption}\n                blurInputOnSelect={true}\n                defaultValue={{ label: \"United States\", value: \"United States\" }}\n                menuPlacement=\"auto\"\n                className=\"w-100 siteSelector\"\n                placeholder=\"Select Country\"\n                value={\n                  newTestCreate.employee_demographics.country\n                    ? {\n                        label: newTestCreate.employee_demographics.country,\n                        value: newTestCreate.employee_demographics.country,\n                      }\n                    : null\n                }\n                onChange={(e) => {\n                  const country = countryListAllIsoData.find((f) => f.name === e.value) || {\n                    code: newTestCreate.employee_demographics.isoCode || \"US\",\n                  };\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      country: e.value,\n                      isoCode: country.code,\n                    },\n                  });\n                }}\n              />\n            </div>\n\n            {clients.length > 1 && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Client </label>\n                <Select\n                  className=\"w-100 siteSelector\"\n                  options={clients.map((l) => {\n                    return { value: l.id, label: l.name };\n                  })}\n                  blurInputOnSelect={true}\n                  defaultValue={null}\n                  menuPlacement=\"auto\"\n                  value={\n                    newTestCreate.clientID\n                      ? {\n                          label: newTestCreate.clientName,\n                          value: newTestCreate.clientID,\n                        }\n                      : null\n                  }\n                  placeholder=\"Select Client\"\n                  onChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      clientID: e.value,\n                      clientName: e.label,\n                      siteID: null,\n                      site_name: null,\n                    })\n                  }\n                />\n              </div>\n            )}\n            {getSiteOptions.length > 1 && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">{stringConstant.site} </label>\n                <Select\n                  className=\"w-100 siteSelector\"\n                  options={getSiteOptions}\n                  blurInputOnSelect={true}\n                  defaultValue={null}\n                  menuPlacement=\"auto\"\n                  placeholder={`Select ${stringConstant.site}`}\n                  value={\n                    newTestCreate.siteID\n                      ? {\n                          label: newTestCreate.site_name,\n                          value: newTestCreate.siteID,\n                        }\n                      : null\n                  }\n                  onChange={(e) => setTestCreate({ ...newTestCreate, siteID: e.value, site_name: e.label })}\n                />\n              </div>\n            )}\n            {labs.length > 1 && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Lab </label>\n                <Select\n                  className=\"w-100 siteSelector\"\n                  options={labs?.map((l) => {\n                    return { value: l.id, label: l.name };\n                  })}\n                  blurInputOnSelect={true}\n                  defaultValue={null}\n                  menuPlacement=\"auto\"\n                  placeholder=\"Select Lab\"\n                  value={\n                    newTestCreate.labID\n                      ? {\n                          label: newTestCreate.labName,\n                          value: newTestCreate.labID,\n                        }\n                      : null\n                  }\n                  onChange={(e) => setTestCreate({ ...newTestCreate, labID: e.value, labName: e.label })}\n                />\n              </div>\n            )}\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Test Type </label>\n              <Select\n                className=\"w-100 siteSelector\"\n                options={testOptions}\n                blurInputOnSelect={true}\n                defaultValue={null}\n                menuPlacement=\"auto\"\n                placeholder=\"Test Type\"\n                value={\n                  onSelectedCreateTestType.value\n                    ? {\n                        label: onSelectedCreateTestType.label,\n                        value: onSelectedCreateTestType.value,\n                      }\n                    : null\n                }\n                onChange={(e) => handleTestType(e)}\n              />\n            </div>\n            {/* <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Sequence: </label>\n              <input\n                className=\"modalInput\"\n                type=\"number\"\n                placeholder=\"Sequence No\"\n                style={{\n                  width: \"100%\",\n                }}\n                value={newTestCreate?.sequenceNo}\n                onChange={(e) => setTestCreate({ ...newTestCreate, sequenceNo: e.target.value })}\n              />\n            </div> */}\n            <div className=\"form-group-wrapper dateWrapper\">\n              <label className=\"modalLineHeaders\">Created At: </label>\n\n              <input\n                className=\"modalInput\"\n                type=\"datetime-local\"\n                value={newTestCreate?.createdAt}\n                style={{ width: \"100%\", marginBottom: \"10px\" }}\n                onChange={(e) => setTestCreate({ ...newTestCreate, createdAt: e.target.value })}\n                max={moment().format(\"YYYY-MM-DDTHH:mm\")}\n              />\n            </div>\n            {!CONFIG.isWhiteLabel && (\n              <>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Vaccinated: </label>\n                  <div className=\"d-flex\">\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"isVaccinated\"\n                        checked={newTestCreate?.employee_demographics?.isVaccinated}\n                        disabled={disableVaccination}\n                        onChange={(e) =>\n                          setTestCreate({\n                            ...newTestCreate,\n                            employee_demographics: {\n                              ...newTestCreate.employee_demographics,\n                              isVaccinated: e.target.checked && true,\n                            },\n                          })\n                        }\n                      />\n                      <span className=\"radioButton\">Yes</span>\n                    </span>\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"isVaccinated\"\n                        disabled={disableVaccination}\n                        checked={!newTestCreate?.employee_demographics?.isVaccinated}\n                        onChange={(e) =>\n                          setTestCreate({\n                            ...newTestCreate,\n                            employee_demographics: {\n                              ...newTestCreate.employee_demographics,\n                              isVaccinated: e.target.checked && false,\n                            },\n                          })\n                        }\n                      />\n                      <span className=\"radioButton\">No</span>\n                    </span>\n                  </div>\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Employee Type: </label>\n                  <div className=\"d-flex\">\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"employeeType\"\n                        checked={newTestCreate?.employee_demographics?.employeeType == \"Staff\"}\n                        onChange={(e) =>\n                          setTestCreate({\n                            ...newTestCreate,\n                            employee_demographics: {\n                              ...newTestCreate.employee_demographics,\n                              employeeType: e.target.checked && \"Staff\",\n                            },\n                          })\n                        }\n                      />\n                      <span className=\"radioButton\">Staff</span>\n                    </span>\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"employeeType\"\n                        checked={newTestCreate?.employee_demographics?.employeeType == \"Guest\"}\n                        onChange={(e) =>\n                          setTestCreate({\n                            ...newTestCreate,\n                            employee_demographics: {\n                              ...newTestCreate.employee_demographics,\n                              employeeType: e.target.checked && \"Guest\",\n                            },\n                          })\n                        }\n                      />\n                      <span className=\"radioButton\">Guest</span>\n                    </span>\n                  </div>\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">White Glove: </label>\n                  <div className=\"d-flex\">\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"whiteGlove\"\n                        checked={newTestCreate?.employee_demographics?.whiteGlove}\n                        onChange={(e) =>\n                          setTestCreate({\n                            ...newTestCreate,\n                            employee_demographics: {\n                              ...newTestCreate.employee_demographics,\n                              whiteGlove: e.target.checked && true,\n                            },\n                          })\n                        }\n                      />\n                      <span className=\"radioButton\">Yes</span>\n                    </span>\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"whiteGlove\"\n                        checked={!newTestCreate?.employee_demographics?.whiteGlove}\n                        onChange={(e) =>\n                          setTestCreate({\n                            ...newTestCreate,\n                            employee_demographics: {\n                              ...newTestCreate.employee_demographics,\n                              whiteGlove: e.target.checked && false,\n                            },\n                          })\n                        }\n                      />\n                      <span className=\"radioButton\">No</span>\n                    </span>\n                  </div>\n                </div>\n              </>\n            )}\n\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Result: </label>\n              {CONFIG.isWhiteLabel ? (\n                <Select\n                  className=\"w-100 siteSelector\"\n                  options={resultTypes}\n                  blurInputOnSelect={true}\n                  defaultValue={null}\n                  menuPlacement=\"auto\"\n                  value={newTestCreate.result ? { value: newTestCreate.result, label: newTestCreate.result } : null}\n                  placeholder=\"Select Result\"\n                  onChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      result: e.value,\n                      status: \"Processed\",\n                    })\n                  }\n                />\n              ) : (\n                <div className=\"d-flex justify-content-between w-100\">\n                  <span className=\"radioBox-wrapper\">\n                    <input\n                      type=\"radio\"\n                      className=\"radioButton\"\n                      name=\"result\"\n                      value=\"Positive\"\n                      checked={newTestCreate?.result == \"Positive\"}\n                      onChange={(e) =>\n                        setTestCreate({\n                          ...newTestCreate,\n                          result: e.target.value,\n                          status: \"Pending\",\n                        })\n                      }\n                    />\n                    <span className=\"radioButton\">Positive</span>\n                  </span>\n                  <span className=\"radioBox-wrapper\">\n                    <input\n                      type=\"radio\"\n                      className=\"radioButton\"\n                      name=\"result\"\n                      value=\"Negative\"\n                      checked={newTestCreate?.result == \"Negative\"}\n                      onChange={(e) =>\n                        setTestCreate({\n                          ...newTestCreate,\n                          result: e.target.value,\n                          status: \"Processed\",\n                        })\n                      }\n                    />\n                    <span className=\"radioButton\">Negative</span>\n                  </span>\n                  <span className=\"radioBox-wrapper\">\n                    <input\n                      type=\"radio\"\n                      className=\"radioButton\"\n                      name=\"result\"\n                      value={UN_RESULT}\n                      checked={newTestCreate?.result == UN_RESULT}\n                      onChange={(e) =>\n                        setTestCreate({\n                          ...newTestCreate,\n                          result: e.target.value,\n                          status: \"Processed\",\n                        })\n                      }\n                    />\n                    <span className=\"radioButton\">{UN_RESULT}</span>\n                  </span>\n                  <span className=\"radioBox-wrapper\" style={{ display: \"flex\" }}>\n                    <input\n                      type=\"radio\"\n                      className=\"radioButton\"\n                      name=\"result\"\n                      value=\"Inconclusive\"\n                      checked={newTestCreate?.result == \"Inconclusive\"}\n                      onChange={(e) =>\n                        setTestCreate({\n                          ...newTestCreate,\n                          result: e.target.value,\n                          status: \"Processed\",\n                        })\n                      }\n                    />\n                    <span className=\"radioButton\">Inconclusive</span>\n                  </span>\n                </div>\n              )}\n            </div>\n\n            {isNew === false && (\n              <>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Tester </label>\n                  <Select\n                    className=\"w-100 siteSelector\"\n                    options={usersData}\n                    blurInputOnSelect={true}\n                    defaultValue={null}\n                    menuPlacement=\"auto\"\n                    //value={getSelectedTester()}\n                    placeholder=\"Select Tester\"\n                    value={\n                      onSelectedTester.value\n                        ? {\n                            label: onSelectedTester.label,\n                            value: onSelectedTester.value,\n                          }\n                        : null\n                    }\n                    onChange={(e) => getSelectedTester(e)}\n\n                    // onChange={(e) =>\n                    //   setTestCreate({\n                    //     ...newTestCreate,\n                    //     createdBy: e.value,\n                    //     tester_name: e.label,\n                    //     testerPhone: e.phone_number,\n                    //   })\n                    // }\n                  />\n                </div>\n              </>\n            )}\n\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Clinical Comments: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"Clinical Comments\"\n                value={newTestCreate?.employee_demographics?.clinicalcomment}\n                onChange={(e) => {\n                  let val = e.target.value;\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      clinicalcomment: val,\n                    },\n                  });\n                }}\n              />\n            </div>\n\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Payer Information: </label>\n              <Select\n                className=\"w-100 siteSelector\"\n                options={INSURANCE_PROVIDER}\n                blurInputOnSelect={true}\n                defaultValue={null}\n                menuPlacement=\"auto\"\n                value={\n                  newTestCreate.employee_demographics?.insurance_name\n                    ? {\n                        label: newTestCreate.employee_demographics?.insurance_name,\n                        value: newTestCreate.employee_demographics?.insurance_number,\n                      }\n                    : \"\"\n                }\n                placeholder=\"Select Payer\"\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      insurance_name: e.label,\n                      insuranceCompanyCode: e.value,\n                    },\n                  })\n                }\n              />\n            </div>\n\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Insurance Number: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"Insurance Number\"\n                value={newTestCreate?.employee_demographics?.insurance_number}\n                onChange={(e) => {\n                  let val = e.target.value;\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      insurance_number: convertToUpper(val),\n                    },\n                  });\n                }}\n              />\n            </div>\n\n            {showPopOver && recordData.length > 1 && (\n              <EmployeeSearchRecord\n                data={recordData}\n                handleSelect={populate}\n                handleClose={() => {\n                  setShowPopOver(false), setSelectSearchData(null);\n                }}\n                setSelectSearchData={setSelectSearchData}\n                selectSearchdata={selectSearchdata}\n              />\n            )}\n          </div>\n        </Modal.Body>\n        <div className=\"px-4\" style={{ height: \"3vh\" }}>\n          {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n        </div>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleCloseCreateTest();\n            }}\n          >\n            Close\n          </Button>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            disabled={loading}\n            className=\"modalButtons\"\n            onClick={onHandleSave}\n          >\n            {isNew === false ? \"Update\" : \"Create\"}\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default TestModal;\n","export default __webpack_public_path__ + \"static/media/arial.e8b1471c.ttf\";","export default __webpack_public_path__ + \"static/media/arial_bold.83eae15c.ttf\";","import React, { useEffect, useState, useMemo } from \"react\";\nimport { Document, Page, Text, View, Image, StyleSheet, Font } from \"@react-pdf/renderer\";\nimport {\n  formatPhoneNumber,\n  formatZipCode,\n  formatDateOfBirthDOB,\n  formatDateMDY,\n  formatAddress,\n  patientInsuranceType,\n} from \"utils\";\nimport API from \"api\";\nimport bioMobileLogo from \"assets/img/biolab_mobile.png\";\nimport bioIncLogo from \"assets/img/safecamp_biolab_1.png\";\nimport discovery from \"assets/img/3eaf991b-b876-4897-8e39-47aef2247dcd.png\";\nimport ArialRegular from \"assets/fonts/arial.ttf\";\nimport ArialBold from \"assets/fonts/arial_bold.ttf\";\nimport tickIcon from \"assets/img/black-check-tick-icon.png\";\nimport { SYMPTOMS } from \"constant\";\nimport { getAMPM } from \"utils\";\nimport { formatPhone } from \"utils\";\nimport { convertToUpper } from \"utils\";\nimport { formatTimeFromDate } from \"utils\";\n\nFont.register({\n  family: \"Arial\",\n  fonts: [\n    { src: ArialRegular, fontWeight: \"normal\" },\n    { src: ArialBold, fontWeight: \"bold\" },\n  ],\n});\n\nfunction getImageUrl(site, lab) {\n  if (site) return bioIncLogo;\n\n  if (lab?.id === \"3eaf991b-b876-4897-8e39-47aef2247dcd\") {\n    return discovery;\n  }\n\n  return bioMobileLogo;\n}\n\nconst BioLabRequisitionPDF = ({ test, barcode, lab, signature, demographics, site }) => {\n  const [labInfo, setLabInfo] = useState();\n  const [clientInfo, setClientInfo] = useState();\n\n  const insuranceType = useMemo(() => {\n    return patientInsuranceType(test);\n  }, [test]);\n\n  const data = {\n    maintainAspectRatio: false,\n    responsive: false,\n    labels: [\"a\", \"b\", \"c\", \"d\"],\n    datasets: [\n      {\n        data: [300, 50, 100, 50],\n        backgroundColor: [\"red\", \"white\"],\n        hoverBackgroundColor: [\"red\", \"white\"],\n      },\n    ],\n  };\n\n  useEffect(() => {\n    setLabInfo(test.lab);\n    setClientInfo(test.client);\n  }, [test]);\n\n  const parseClientAddress = (client) => {};\n\n  const today = new Date();\n\n  const time =\n    today.getHours() > 12\n      ? `${today.getHours() - 12}:${today.getMinutes()} PM`\n      : `${today.getHours()}:${today.getMinutes()} AM`;\n\n  const formatIDNumber = () => {\n    const val = demographics?.idNumber || demographics?.id_number || \"00000\";\n    return /^[0]+$/.test(val) ? \"\" : val;\n  };\n\n  return (\n    <Document title={`${demographics?.firstName} ${demographics?.lastName}`}>\n      <Page size=\"A4\" style={styles.page}>\n        <View\n          style={{\n            alignItems: \"center\",\n            justifyContent: \"space-between\",\n            flexDirection: \"row\",\n            padding: 0,\n          }}\n        >\n          <Image style={{ width: \"150px\", height: \"30px\", left: 15 }} src={barcode} />\n          <Text\n            style={{\n              textAlign: \"right\",\n              fontSize: 12,\n              fontWeight: \"bold\",\n            }}\n          >\n            ACCESSION NO: {test.barcode}\n          </Text>\n        </View>\n\n        <View style={{ flex: 0.8, flexDirection: \"row\", borderWidth: 2, padding: 0, alignItems: \"\" }}>\n          <View style={{ flex: 1, top: 0, bottom: 0, position: \"relative\" }}>\n            <Text\n              style={{\n                backgroundColor: \"black\",\n                color: \"white\",\n                textAlign: \"center\",\n                fontSize: 14,\n                fontWeight: \"bold\",\n              }}\n            >\n              CLIENT INFORMATION\n            </Text>\n            <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"10 10\" }}>\n              {/* <View style={styles.infoCol}>\n                <Text style={styles.infoText}>CLIENT:</Text>\n                <Text style={{ ...styles.infoText, color: \"white\" }}>.</Text>\n                <Text style={styles.infoText}>TEL:</Text>\n                <Text style={styles.infoText}>FAX:</Text>\n                <Text style={styles.infoText}>PHYS:</Text>\n              </View> */}\n\n              {site ? (\n                <View>\n                  <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"2px\" }}>\n                    <Text style={styles.infoText}>CLIENT:</Text>\n                    <Text style={{ ...styles.infoText, paddingLeft: \"5px\" }}>\n                      {site?.practiceID ? `#${site.practiceID} - ${site?.name}` : site?.name || \"-\"}\n                    </Text>\n                  </View>\n                  <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"2px\" }}>\n                    <Text style={{ ...styles.infoText }}>{site?.street + \" \" + formatAddress(site) || \"\"}</Text>\n                  </View>\n                  <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"2px\" }}>\n                    <Text style={styles.infoText}>TEL:</Text>\n                    <Text style={{ ...styles.infoText, paddingLeft: \"5px\" }}>{`${formatPhone(\n                      site?.phone_number || \"\"\n                    )}`}</Text>\n                  </View>\n                  <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"2px\" }}>\n                    <Text style={styles.infoText}>FAX:</Text>\n                    <Text style={{ ...styles.infoText, paddingLeft: \"5px\" }}>{`${\n                      formatPhone(site?.fax_number) || \"-\"\n                    }`}</Text>\n                  </View>\n                  <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"2px\" }}>\n                    <Text style={styles.infoText}>PHYS:</Text>\n                    <Text style={{ ...styles.infoText, paddingLeft: \"5px\" }}>\n                      {site?.setting?.lab_director || labInfo?.lab_director || \"-\"}\n                    </Text>\n                  </View>\n                </View>\n              ) : (\n                <View>\n                  <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"2px\" }}>\n                    <Text style={styles.infoText}>CLIENT:</Text>\n                    <Text style={{ ...styles.infoText, paddingLeft: \"5px\" }}>{clientInfo?.name || \"-\"}</Text>\n                  </View>\n                  <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"2px\" }}>\n                    <Text style={{ ...styles.infoText }}>\n                      {clientInfo?.street + \" \" + formatAddress(clientInfo) || \"\"}\n                    </Text>\n                  </View>\n                  <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"2px\" }}>\n                    <Text style={styles.infoText}>TEL:</Text>\n                    <Text style={{ ...styles.infoText, paddingLeft: \"5px\" }}>{`${formatPhone(\n                      clientInfo?.phone_number || \"\"\n                    )}`}</Text>\n                  </View>\n                  <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"2px\" }}>\n                    <Text style={styles.infoText}>FAX:</Text>\n                    <Text style={{ ...styles.infoText, paddingLeft: \"5px\" }}>{`${\n                      formatPhone(clientInfo?.fax_number) || \"-\"\n                    }`}</Text>\n                  </View>\n                  <View style={{ flexDirection: \"row\", alignItems: \"center\", margin: \"2px\" }}>\n                    <Text style={styles.infoText}>PHYS:</Text>\n                    <Text style={{ ...styles.infoText, paddingLeft: \"5px\" }}>{labInfo?.lab_director || \"-\"}</Text>\n                  </View>\n                </View>\n              )}\n            </View>\n          </View>\n\n          <View style={{ ...styles.hr, height: 135 }} />\n          <View style={{ flex: 1 }}>\n            <Text\n              style={{\n                backgroundColor: \"black\",\n                color: \"white\",\n                textAlign: \"center\",\n                fontSize: 14,\n                fontWeight: \"bold\",\n              }}\n            >\n              LAB TEST REQUISITION\n            </Text>\n            <View style={{ textAlign: \"center\", padding: \"2px 5px 5px 5px\" }}>\n              <Image\n                style={{\n                  width: \"150px\",\n                  height: \"30px\",\n                  left: site ? 55 : 75,\n                  objectFit: \"contain\",\n                  textAlign: \"center\",\n                }}\n                src={getImageUrl(site, labInfo)}\n              />\n              {/* <Text style={{ fontWeight: \"bold\", fontSize: 30 }}>{labInfo?.name}</Text> */}\n              <Text style={{ fontSize: 12, margin: \"0px 2px\" }}>{`${labInfo?.street || \"\"} \\n ${\n                labInfo?.city_state_zip || \"\"\n              }`}</Text>\n            </View>\n            <View style={{ flexDirection: \"row\", alignItems: \"center\", justifyContent: \"center\", margin: \"2px 0px\" }}>\n              <View style={styles.infoCol}>\n                <Text style={styles.infoText}>TEL:</Text>\n              </View>\n              <View style={styles.infoCol}>\n                <Text style={styles.infoText}>{`${formatPhone(labInfo?.phone_number)}`}</Text>\n              </View>\n            </View>\n            <View style={{ flexDirection: \"row\", alignItems: \"center\", justifyContent: \"center\" }}>\n              <View style={styles.infoCol}>\n                <Text style={styles.infoText}>FAX:</Text>\n              </View>\n              <View style={styles.infoCol}>\n                <Text style={styles.infoText}>{`${formatPhone(labInfo?.fax_number)}`}</Text>\n              </View>\n            </View>\n            {labInfo && labInfo.logoSrc && (\n              <View style={{ textAlign: \"left\", padding: 10, position: \"absolute\", top: \"18px\" }}>\n                <Image style={{ width: \"50px\", height: \"50px\", top: 0, objectFit: \"contain\" }} src={labInfo.logoSrc} />\n              </View>\n            )}\n          </View>\n        </View>\n        <View style={{ flex: 1.2, flexDirection: \"row\", borderWidth: 2, padding: 0, alignItems: \"\" }}>\n          <View style={{ flex: 1, top: 0, bottom: 0, position: \"relative\" }}>\n            <Text\n              style={{\n                backgroundColor: \"black\",\n                color: \"white\",\n                textAlign: \"center\",\n                fontSize: 11,\n                fontWeight: \"bold\",\n              }}\n            >\n              PATIENT'S INFO (NAME MUST MATCH INSURANCE)\n            </Text>\n            <View style={{ flexDirection: \"row\", flex: 0.7, borderBottomWidth: 1 }}>\n              <View style={{ flex: 1 }}>\n                <Text style={{ ...styles.label, paddingLeft: \"5px\" }}>LAST NAME</Text>\n                <Text style={{ fontSize: 10, paddingLeft: \"5px\" }}>{demographics?.lastName}</Text>\n              </View>\n              <View style={{ flex: 1 }}>\n                <Text style={{ ...styles.label, paddingLeft: \"5px\" }}>First NAME</Text>\n                <Text style={{ fontSize: 10, paddingLeft: \"5px\" }}>{demographics?.firstName}</Text>\n              </View>\n            </View>\n            <View style={{ borderBottomWidth: 1, flex: 0.7 }}>\n              <Text style={{ ...styles.label, paddingLeft: \"5px\" }}>ADDRESS</Text>\n              <Text style={{ fontSize: 10, paddingLeft: \"5px\" }}>{demographics?.street || \"\"}</Text>\n            </View>\n            <View style={{ flexDirection: \"row\", flex: 0.7, borderBottomWidth: 1 }}>\n              <View style={{ flex: 1.7 }}>\n                <Text style={{ ...styles.label, paddingLeft: \"5px\" }}>CITY</Text>\n                <Text style={{ fontSize: 10, paddingLeft: \"5px\" }}>{demographics?.city || \"\"}</Text>\n              </View>\n              <View style={{ flex: 0.5, borderLeft: \"1px solid black\" }}>\n                <Text style={{ ...styles.label, textAlign: \"center\" }}>STATE</Text>\n                <Text style={{ fontSize: 10, textAlign: \"center\" }}>{demographics?.state || \"\"}</Text>\n              </View>\n              <View style={{ flex: 0.9, borderLeft: \"1px solid black\" }}>\n                <Text style={{ ...styles.label, textAlign: \"center\" }}>ZIP</Text>\n                <Text style={{ fontSize: 10, textAlign: \"center\" }}>{demographics?.zip || \"\"}</Text>\n              </View>\n            </View>\n            <View style={{ flexDirection: \"row\", flex: 2 }}>\n              <View style={{ flex: 1, borderRightWidth: 1 }}>\n                <Text style={{ backgroundColor: \"black\", color: \"white\", textAlign: \"center\", ...styles.label }}>\n                  BILLING\n                </Text>\n                <View style={{ flex: 1, padding: \"0px 10px\", textAlign: \"center\" }}>\n                  <View style={styles.billingList}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.CLIENT && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>CLIENT</Text>\n                  </View>\n                  <View style={styles.billingList}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }} />\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>HRSA</Text>\n                  </View>\n                  <View style={styles.billingList}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.INSURANCE && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>INSURANCE</Text>\n                  </View>\n                  <View style={styles.billingList}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.MEDICADE && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>MEDI-CAL</Text>\n                  </View>\n                  <View style={styles.billingList}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.MEDICARE && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>MEDICARE</Text>\n                  </View>\n                  <View style={styles.billingList}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.PATIENT && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>PATIENT</Text>\n                  </View>\n                  <View style={styles.billingList}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.CASH && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>CASH/CHECK</Text>\n                  </View>\n                </View>\n              </View>\n              <View style={{ flex: 2 }}>\n                <View style={{ borderBottomWidth: 1, flex: 1 }}>\n                  <Text style={{ ...styles.label, fontWeight: \"bold\" }}>INSURANCE COMPANY</Text>\n                  <Text style={{ fontSize: 10 }}>{demographics?.insurance_name}</Text>\n                </View>\n                <View style={{ borderBottomWidth: 1, flex: 1 }}>\n                  <Text style={{ ...styles.label, fontWeight: \"bold\" }}>SUBSCRIBER ID #</Text>\n                  <Text style={{ fontSize: 10, textAlign: \"right\" }}>{insuranceType.INSURANCE}</Text>\n                </View>\n                <View style={{ borderBottomWidth: 1, flex: 1 }}>\n                  <Text style={{ ...styles.label, fontWeight: \"bold\" }}>MEDICAL #</Text>\n                  <Text style={{ fontSize: 10, textAlign: \"right\" }}>{insuranceType.MEDICADE}</Text>\n                </View>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ ...styles.label, fontWeight: \"bold\" }}>MEDICARE #</Text>\n                  <Text style={{ fontSize: 10, textAlign: \"right\" }}>{insuranceType.MEDICARE}</Text>\n                </View>\n              </View>\n            </View>\n          </View>\n          <View style={{ ...styles.hr, height: 200 }} />\n          <View style={{ flex: 1 }}>\n            <Text\n              style={{\n                backgroundColor: \"black\",\n                color: \"white\",\n                textAlign: \"center\",\n                fontSize: 11,\n                fontWeight: \"bold\",\n              }}\n            >\n              ICD-10 CODES (REQUIRED)\n            </Text>\n            <View style={{ flexDirection: \"row\", flex: 0.7, borderBottomWidth: 1 }}>\n              <View style={{ width: \"33%\", textAlign: \"center\", borderRight: \"1px solid black\" }}>\n                <View style={{ flex: 1, padding: \"2px\", justifyContent: \"center\" }}>\n                  <Text style={{ ...styles.label, textAlign: \"center\" }}>Z20.822</Text>\n                </View>\n              </View>\n              <View style={{ width: \"33%\", textAlign: \"center\", borderRight: \"1px solid black\" }}>\n                <Text></Text>\n              </View>\n              <View style={{ width: \"33%\", textAlign: \"center\" }}>\n                <Text></Text>\n              </View>\n            </View>\n            <View style={{ flexDirection: \"row\", flex: 0.7, borderBottomWidth: 1 }}>\n              <View style={{ width: \"33%\", textAlign: \"center\", borderRight: \"1px solid black\" }}>\n                <Text></Text>\n              </View>\n              <View style={{ width: \"33%\", textAlign: \"center\", borderRight: \"1px solid black\" }}>\n                <Text></Text>\n              </View>\n              <View style={{ width: \"33%\", textAlign: \"center\" }}>\n                <Text></Text>\n              </View>\n            </View>\n            <View style={{ flexDirection: \"row\", flex: 0.7, borderBottomWidth: 1 }}>\n              <View style={{ flex: 1, textAlign: \"center\" }}>\n                <Text style={styles.label}>DATE OF BIRTH</Text>\n                <Text style={{ fontSize: 10 }}>{formatDateOfBirthDOB(demographics?.dob)}</Text>\n              </View>\n              <View style={{ flex: 0.5, textAlign: \"center\", borderLeftWidth: 1 }}>\n                <Text style={styles.label}>SEX</Text>\n                <Text style={{ fontSize: 10 }}>{demographics?.sex}</Text>\n              </View>\n              <View style={{ flex: 1, textAlign: \"center\", borderLeftWidth: 1 }}>\n                <Text style={styles.label}>DATE COLLECTED</Text>\n                <Text style={{ fontSize: 10 }}>{formatDateMDY(test.createdAt)}</Text>\n              </View>\n              <View style={{ flex: 1, textAlign: \"left\", borderLeftWidth: 1 }}>\n                <Text style={styles.label}>TIME COLLECTED</Text>\n\n                <View\n                  style={{\n                    flexDirection: \"row\",\n                    textAlign: \"right\",\n                    alignItems: \"center\",\n                    justifyContent: \"space-between\",\n                  }}\n                >\n                  <Text style={{ ...styles.field }}>{formatTimeFromDate(test?.createdAt)}</Text>\n                  <View>\n                    <View\n                      style={{\n                        flexDirection: \"row\",\n                        textAlign: \"right\",\n                        alignItems: \"center\",\n                        justifyContent: \"center\",\n                      }}\n                    >\n                      <View style={{ borderWidth: 1, height: 8, width: 8 }}>\n                        {getAMPM(test?.createdAt) === \"AM\" && (\n                          <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ ...styles.label, paddingLeft: \"3px\" }}>AM</Text>\n                    </View>\n                    <View\n                      style={{\n                        flexDirection: \"row\",\n                        textAlign: \"right\",\n                        alignItems: \"center\",\n                        justifyContent: \"center\",\n                      }}\n                    >\n                      <View style={{ borderWidth: 1, height: 8, width: 8, marginTop: \"2px\" }}>\n                        {getAMPM(test?.createdAt) === \"PM\" && (\n                          <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ ...styles.label, paddingLeft: \"3px\" }}>PM</Text>\n                    </View>\n                  </View>\n                </View>\n              </View>\n            </View>\n            <View style={{ flex: 2 }}>\n              <View style={{ flex: 1, borderBottomWidth: 1, flexDirection: \"row\" }}>\n                <View style={{ flex: 2 }}>\n                  <Text style={styles.label}>PATIENT'S PHONE#</Text>\n                  <Text style={{ fontSize: 10 }}>{formatPhone(test.phoneNumber)}</Text>\n                </View>\n                <View style={{ flex: 1, borderLeftWidth: 1 }}>\n                  <View\n                    style={{\n                      flexDirection: \"row\",\n                      flex: 1,\n                      alignItems: \"center\",\n                      padding: \"2px\",\n                    }}\n                  >\n                    <View style={{ borderWidth: 1, height: 8, width: 12 }} />\n                    <Text style={{ ...styles.label, paddingLeft: \"3px\" }}>TRAVEL</Text>\n                  </View>\n                  <View\n                    style={{\n                      flexDirection: \"row\",\n                      flex: 1,\n                      alignItems: \"center\",\n                      padding: \"2px\",\n                    }}\n                  >\n                    <View style={{ borderWidth: 1, height: 8, width: 12 }} />\n                    <Text style={{ ...styles.label, paddingLeft: \"3px\" }}>VENIPUNCTURE</Text>\n                  </View>\n                </View>\n              </View>\n              <View style={{ flex: 1, borderBottomWidth: 1, flexDirection: \"row\" }}>\n                <View style={{ flex: 3 }}></View>\n                <View style={{ borderLeftWidth: 1, padding: \"0 2px\" }}>\n                  <Text style={{ ...styles.label }}>COLLECTED BY</Text>\n                  <Text style={{ ...styles.field }}>{test.tester_name || \"\"}</Text>\n                </View>\n              </View>\n              <View style={{ flex: 1, borderBottomWidth: 1, flexDirection: \"row\" }}>\n                <View style={{ flex: 2 }}></View>\n                <View style={{ flex: 1, borderWidth: 1, borderLeftWidth: 2 }}>\n                  <View\n                    style={{\n                      flexDirection: \"row\",\n                      flex: 1,\n                      alignItems: \"center\",\n                      textAlign: \"center\",\n                      justifyContent: \"center\",\n                      rowGap: \"10px\",\n                      padding: \"2px\",\n                    }}\n                  >\n                    <View\n                      style={{\n                        borderWidth: 2,\n                        height: 10,\n                        width: 14,\n                        fontWeight: \"bold\",\n                        paddingHorizontal: 2,\n                      }}\n                    >\n                      {demographics.stat && (\n                        <Image src={tickIcon} style={{ height: 8, width: 8, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ ...styles.label, paddingLeft: \"3px\" }}>STAT RESULTS</Text>\n                  </View>\n                </View>\n              </View>\n              <View style={{ flex: 1 }}></View>\n            </View>\n          </View>\n        </View>\n\n        <View style={{ flex: 3, borderWidth: 2, borderColor: \"black\" }}>\n          <Text\n            style={{ backgroundColor: \"black\", color: \"white\", textAlign: \"center\", fontSize: 10, padding: \"5px 0px\" }}\n          ></Text>\n          <View style={{ flexDirection: \"row\", flex: 2 }}>\n            <View style={{ flex: 1, paddingHorizontal: 20 }}>\n              {/* {labInfo?.referredDoctor?.name && (\n                <>\n                  <View style={{ borderBottomWidth: 1, borderBottomStyle: \"dashed\", marginVertical: 10 }} />\n                  <View style={{ flexDirection: \"row\" }}>\n                    <View style={{ borderWidth: 3, height: 16, width: 20 }} />\n                    <Text style={{ fontSize: 11, marginLeft: 2 }}>Referred By: {labInfo?.referredDoctor?.name} </Text>\n                  </View>\n                </>\n              )} */}\n              <View style={{ borderBottomWidth: 1, borderBottomStyle: \"dashed\", marginVertical: 10 }} />\n              <View style={{ flexDirection: \"row\" }}>\n                <View style={{ borderWidth: 2, height: 16, width: 20 }}>\n                  <Image src={tickIcon} style={{ height: 12, width: 12, marginHorizontal: 2, textAlign: \"center\" }} />\n                </View>\n                <Text style={{ fontSize: 12, marginLeft: 2, fontWeight: \"bold\", paddingLeft: \"5px\" }}>\n                  7060 - COVID BY PCR SWAB\n                </Text>\n              </View>\n              <View style={{ flexDirection: \"row\", marginLeft: 30, marginTop: 5 }}>\n                <View style={{ borderWidth: 2, height: 16, width: 20 }}>\n                  {demographics?.swabtype?.toLowerCase() === SYMPTOMS.nasal && (\n                    <Image src={tickIcon} style={{ height: 12, width: 12, marginHorizontal: 2, textAlign: \"center\" }} />\n                  )}\n                </View>\n                <Text style={{ fontSize: 12, marginRight: 30, fontWeight: \"bold\", paddingLeft: \"5px\" }}>NASAL</Text>\n                <View style={{ borderWidth: 2, height: 16, width: 20 }}>\n                  {(demographics?.swabtype?.toLowerCase() === SYMPTOMS.oral || !demographics?.swabtype) && (\n                    <Image src={tickIcon} style={{ height: 12, width: 12, marginHorizontal: 2, textAlign: \"center\" }} />\n                  )}\n                </View>\n                <Text style={{ fontSize: 12, marginRight: 30, fontWeight: \"bold\", paddingLeft: \"5px\" }}>ORAL</Text>\n              </View>\n              <View style={{ borderBottomWidth: 1, borderBottomStyle: \"dashed\", marginVertical: 10 }} />\n\n              <View style={{ borderBottomWidth: 1, borderBottomStyle: \"dashed\", marginVertical: 10 }} />\n              <Text style={{ fontSize: 7, lineHeight: 1, fontWeight: \"bold\" }}>\n                *NEGATIVE results do not rule out SARS-CoV-2 infection, patricularly in those who have been in contact\n                with the virus. Follow-up testing with a molecular diagnostic should be considered to rule out infection\n                in these individuals.\n              </Text>\n              {/* <Text style={{ fontSize: 7, lineHeight: 2, fontWeight: \"bold\" }}>\n                *Results from antibody testing should not be used as the solebasis to diagnose or exclude SARS-CoV-2\n                infection or inform infection status.\n              </Text> */}\n              <Text style={{ fontSize: 7, lineHeight: 1, fontWeight: \"bold\" }}>\n                *Positive results may be due to past or present infection with non-SARS-CoV-2 corona virus strains, such\n                as HKU1, NL63, OC43, or 229E.\n              </Text>\n              <View style={{ alignSelf: \"flex-end\" }}>\n                <Text style={{ fontSize: 8, marginTop: 5, textAlign: \"center\", fontWeight: \"bold\" }}>\n                  *This test is FDA EUA cleared, but not FDA approved.*\n                </Text>\n              </View>\n              <View style={{ flex: 2, marginTop: 3, marginBottom: 8, borderWidth: 2, paddingLeft: 5, paddingRight: 5 }}>\n                <Text style={styles.label}>Clinical Note:</Text>\n                <Text style={{ textAlign: \"left\", fontSize: 8, marginTop: 3, marginBottom: 3 }}>\n                  {demographics?.clinicalcomment ? demographics?.clinicalcomment : \"\"}\n                </Text>\n              </View>\n            </View>\n            <View style={{ flex: 1, paddingHorizontal: 20, paddingVertical: 10 }}>\n              {/* <Text style={{ fontSize: 6, lineHeight: 2 }}>\n                *PLEASE NOTE: Standing orders will expire 12 months from the date issued unless otherwise specified on\n                the requistion.*\n              </Text> */}\n              <View style={{ flex: 0.3, flexDirection: \"row\", borderWidth: 2 }}>\n                <View style={{ flex: 1 }}>\n                  <Text style={styles.label}>PASSPORT # (IF APPLICABLE)</Text>\n                  <Text style={{ textAlign: \"left\", fontSize: 10, paddingHorizontal: 5 }}>{`${formatIDNumber()}`}</Text>\n                </View>\n              </View>\n              <View style={{ flex: 3, borderWidth: 2, marginTop: 10 }}>\n                <Text style={{ textAlign: \"center\", fontSize: 9, borderBottomWidth: 2, fontWeight: \"bold\" }}>\n                  HAVING SYMPTOMS? (PLEASE MARK ALL THAT APPLY)\n                </Text>\n                <View style={{ flex: 1 }}>\n                  <Text style={{ ...styles.label, padding: \"3px 1px\" }}>ARE YOU AN ESSENTIAL WORKER?</Text>\n                  <View\n                    style={{\n                      flexDirection: \"row\",\n                      padding: \"0 5px\",\n                      alignItems: \"center\",\n                      justifyContent: \"flex-start\",\n                    }}\n                  >\n                    <View\n                      style={{\n                        flexDirection: \"row\",\n                        textAlign: \"right\",\n                        alignItems: \"center\",\n                        justifyContent: \"center\",\n                      }}\n                    >\n                      <View style={{ borderWidth: 1, height: 8, width: 8 }}>\n                        {demographics?.worker?.toLowerCase() === SYMPTOMS.yes && (\n                          <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ fontSize: 10, paddingLeft: \"5px\" }}>YES</Text>\n                    </View>\n                    <View\n                      style={{\n                        flexDirection: \"row\",\n                        textAlign: \"right\",\n                        alignItems: \"center\",\n                        justifyContent: \"center\",\n                        marginLeft: \"10px\",\n                      }}\n                    >\n                      <View style={{ borderWidth: 1, height: 8, width: 8 }}>\n                        {demographics?.worker?.toLowerCase() === SYMPTOMS.no && (\n                          <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ fontSize: 10, paddingLeft: \"5px\" }}>NO</Text>\n                    </View>\n                  </View>\n                </View>\n                <View style={{ flex: 1, flexDirection: \"row\" }}>\n                  <View style={{ flex: 1 }}>\n                    <Text style={{ ...styles.label, padding: \"3px 1px\" }}>POSSIBLE EXPOSURE?</Text>\n                    <View\n                      style={{\n                        flexDirection: \"row\",\n                        alignItems: \"center\",\n                        padding: \"0 5px\",\n                        justifyContent: \"flex-start\",\n                      }}\n                    >\n                      <View\n                        style={{\n                          flexDirection: \"row\",\n                          textAlign: \"right\",\n                          alignItems: \"center\",\n                          justifyContent: \"center\",\n                        }}\n                      >\n                        <View style={{ borderWidth: 1, height: 8, width: 8 }}>\n                          {demographics?.possibleexposure?.toLowerCase() === SYMPTOMS.yes && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 10, paddingLeft: \"5px\" }}>YES</Text>\n                      </View>\n                      <View\n                        style={{\n                          flexDirection: \"row\",\n                          textAlign: \"right\",\n                          alignItems: \"center\",\n                          justifyContent: \"center\",\n                          marginLeft: \"10px\",\n                        }}\n                      >\n                        <View style={{ borderWidth: 1, height: 8, width: 8 }}>\n                          {demographics?.possibleexposure?.toLowerCase() === SYMPTOMS.no && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 10, paddingLeft: \"5px\" }}>NO</Text>\n                      </View>\n                    </View>\n                  </View>\n                  <View style={{ flex: 1 }}>\n                    <Text style={{ ...styles.label, padding: \"3px 1px\" }}>CONFIRMED EXPOSURE?</Text>\n                    <View style={{ flexDirection: \"row\", alignItems: \"center\", justifyContent: \"space-evenly\" }}>\n                      <View\n                        style={{\n                          flexDirection: \"row\",\n                          textAlign: \"right\",\n                          alignItems: \"center\",\n                          justifyContent: \"center\",\n                        }}\n                      >\n                        <View style={{ borderWidth: 1, height: 8, width: 8 }}>\n                          {demographics?.confirmedexposure?.toLowerCase() === SYMPTOMS.yes && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 10, paddingLeft: \"5px\" }}>YES</Text>\n                      </View>\n                      <View\n                        style={{\n                          flexDirection: \"row\",\n                          textAlign: \"right\",\n                          alignItems: \"center\",\n                          justifyContent: \"center\",\n                          marginLeft: \"10px\",\n                        }}\n                      >\n                        <View style={{ borderWidth: 1, height: 8, width: 8 }}>\n                          {demographics?.confirmedexposure?.toLowerCase() === SYMPTOMS.no && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 10, paddingLeft: \"5px\" }}>NO</Text>\n                      </View>\n                    </View>\n                  </View>\n                </View>\n                <View style={{ flex: 4 }}>\n                  <Text style={{ ...styles.label, padding: \"5px 1px\" }}>PLEASE MARK ALL THAT APPLY:</Text>\n                  <View style={{ flex: 1, flexDirection: \"row\" }}>\n                    <View style={{ flex: 1, padding: \"0px 5px\", textAlign: \"center\" }}>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.fever) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>FEVER / CHILLS</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.cough) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>COUGH</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.headache) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>HEADACHE</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.fatigue) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>FATIGUE</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.soreThroat) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>SORE THROAT</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.diarrhea) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>DIARRHEA</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.other) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>OTHER:</Text>\n                      </View>\n                    </View>\n                    <View style={{ flex: 2, padding: \"0px 5px\", textAlign: \"center\" }}>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.shortnessOfBreath) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>SHORTNESS OF BREATH</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.muscelBodyAches) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>MUSCLE / BODY ACHES</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.lossOfTaste) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>NEW LOSS OF TASTE / SMELL</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.congestion) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>CONGESTION / RUNNY NOSE</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.nausea) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>NAUSEA / VOMITING</Text>\n                      </View>\n                      <View style={styles.billingList}>\n                        <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                          {demographics?.symptoms?.includes(SYMPTOMS.noSymptoms) && (\n                            <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                          )}\n                        </View>\n                        <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>NO SYMPTOMS / ASYMPTOMATIC</Text>\n                      </View>\n                      <View style={{ marginTop: \"10px\" }}>\n                        <View style={{ marginBottom: \"15px\", borderBottom: \"1px solid black\", width: \"100%\" }}>\n                          {demographics?.othercomment && (\n                            <Text style={{ fontSize: 7, paddingLeft: \"5px\" }}>{demographics?.othercomment}</Text>\n                          )}\n                        </View>\n                        {/* <View style={{ marginBottom: \"10px\", borderBottom: \"1px solid black\", width: \"100%\" }} /> */}\n                      </View>\n                    </View>\n                  </View>\n                </View>\n              </View>\n            </View>\n          </View>\n          <View style={{ flex: 0.3, flexDirection: \"row\", paddingHorizontal: 40, alignItems: \"center\" }}>\n            <Text style={{ fontSize: 14, fontWeight: \"bold\" }}>EMAIL:</Text>\n            <View\n              style={{\n                flex: 1,\n                borderWidth: 1,\n                height: 31,\n                marginHorizontal: 10,\n                borderBottom: 0,\n                marginTop: 10,\n              }}\n            >\n              <Text style={{ textAlign: \"letf\", padding: \"5px\", fontSize: 12 }}>{`${test?.email || \"\"}`}</Text>\n            </View>\n          </View>\n          <View\n            style={{\n              borderWidth: 1,\n              marginHorizontal: 10,\n              marginBottom: 20,\n              flex: 1,\n              justifyContent: \"space-evenly\",\n            }}\n          >\n            <Text style={{ fontSize: 6, padding: \"0 3px\", fontWeight: \"bold\" }}>\n              IF THE INSURANCE DOES NOT PAY IN FULL, I AGREE TO BE RESPONSIBLE FOR THE PAYMENT. I AUTHORIZE THE RELEASE\n              OF MEDICAL INFORMATION RELATED TO THE SERVICE DESCRIBED HEREIN AND AUTHORIZE PAYMENT TO BE DIRECTED TO\n              {` ${convertToUpper(labInfo?.name)}` || \"BIOLOGICAL LABORATORY, INC\"}.\n            </Text>\n            <Text style={{ fontSize: 6, padding: \"0 3px\", fontWeight: \"bold\" }}>\n              BY SIGNING BELOW, I HEREBY ACKNOWLEDGE THAT I HAVE COMPLETELY READ AND FULLY UNDERSTAND ALL THE\n              INFORMATION CONTAINED ON THIS FORM.\n            </Text>\n            <View style={{ flexDirection: \"row\", borderTopWidth: 1 }}>\n              <Text style={{ flex: 1, fontSize: 14, fontWeight: \"bold\" }}>**PATIENT SIGNATURE:</Text>\n              <Text style={{ flex: 1, fontSize: 14, fontWeight: \"bold\" }}>**DATE: </Text>\n            </View>\n            <View style={{ flexDirection: \"row\" }}>\n              <View style={{ flex: 1 }}>\n                {signature ? (\n                  <Image\n                    style={{\n                      height: 40,\n                      textAlign: \"center\",\n                      borderBottomWidth: 2,\n                      marginHorizontal: 10,\n                    }}\n                    source={{\n                      uri: signature,\n                      headers: { Pragma: \"no-cache\", \"Cache-Control\": \"no-cache\" },\n                    }}\n                  />\n                ) : (\n                  <Text\n                    style={{\n                      borderBottomWidth: 2,\n                      marginHorizontal: 10,\n                    }}\n                  ></Text>\n                )}\n              </View>\n              <View style={{ flex: 1 }}>\n                <Text\n                  style={{ flex: 1, fontSize: 14, textAlign: \"center\", borderBottomWidth: 2, marginHorizontal: 10 }}\n                >\n                  {`${new Date(test.createdAt).toDateString()} ${new Date(test.createdAt).toLocaleString(\"en-US\", {\n                    hour: \"2-digit\",\n                    minute: \"2-digit\",\n                    hour12: true,\n                  })}`}\n                </Text>\n              </View>\n            </View>\n          </View>\n        </View>\n      </Page>\n    </Document>\n  );\n};\n\nconst styles = StyleSheet.create({\n  page: {\n    flex: 1,\n    backgroundColor: \"white\",\n    paddingVertical: 10,\n    paddingHorizontal: 10,\n    fontFamily: \"Arial\", // Use the Arial font for the entire document\n  },\n  infoText: {\n    fontSize: 12,\n  },\n  patientInfo: {\n    flexDirection: \"row\",\n    justifyContent: \"space-around\",\n  },\n  infoCol: {\n    flexDirection: \"column\",\n    justifyContent: \"space-evenly\",\n  },\n  hr: {\n    borderLeftColor: \"black\",\n    borderLeftWidth: 1,\n    // width: \"100%\",\n  },\n  address: {\n    marginLeft: 50,\n    marginVertical: 20,\n  },\n  label: {\n    fontSize: 8,\n    fontWeight: \"bold\",\n  },\n  field: {\n    fontSize: 8,\n  },\n  billingList: {\n    flex: 1,\n    flexDirection: \"row\",\n    alignItems: \"center\",\n  },\n});\n\nexport default BioLabRequisitionPDF;\n","import React, { useState, useEffect, useMemo } from \"react\";\nimport { Document, Page, Text, View, StyleSheet, Image, Font } from \"@react-pdf/renderer\";\nimport {\n  getDemoGraphics,\n  getAge,\n  formatDateOfBirthDOB,\n  formatDateMDY,\n  formatPDFName,\n  toTitleCase,\n  isLabImageExist,\n} from \"utils\";\nimport { TEST_TYPE_DISCLAIMER_KEY } from \"constant\";\nimport { logoImage } from \"constant\";\nimport qrImage from \"assets/img/patient_portal.png\";\nimport ArialRegular from \"assets/fonts/arial.ttf\";\nimport ArialBold from \"assets/fonts/arial_bold.ttf\";\nimport { formatTimeFromDate, formatAddress } from \"utils\";\nimport { RESULTS_COLOR } from \"constant\";\nimport api from \"api\";\nimport { formatPhone } from \"utils\";\nimport moment from \"moment\";\nimport { isResultInRange } from \"utils\";\nimport { analyzeResultValue } from \"utils\";\nimport { parseTestResult } from \"utils\";\nimport { showAlphaResult } from \"utils\";\nimport { showTestResult } from \"utils\";\nimport { infectionResultBasedUponRange } from \"utils\";\nimport { parseTestUnit } from \"utils\";\nimport { generateTagLineQualitativeWithPanleTests } from \"utils\";\n\nFont.register({\n  family: \"Arial\",\n  fonts: [\n    { src: ArialRegular, fontWeight: \"normal\" },\n    { src: ArialBold, fontWeight: \"bold\" },\n  ],\n});\n\nconst parseSrNoObjectRecviedDate = (test) => {\n  try {\n    const arr = JSON.parse(test.sr_no);\n    let dateOfReceive = arr[0]?.date;\n    return dateOfReceive;\n  } catch (error) {\n    return moment(test.createdAt).toISOString();\n  }\n};\n\nconst BiolabPdf = ({ test, testsLab, parseTestResultForPDF, employeeID, site }) => {\n  const [clientInfo, setClientInfo] = useState();\n  let demos = getDemoGraphics(test);\n  const [disclaimerText, setDisclaimerText] = useState(\"\");\n\n  const { resultDetails, employee_demographics, testType } = test;\n\n  const isQualtative = testType?.typeOfTest === \"Qualitative\" ? true : false;\n\n  const { testTypeID } = employee_demographics;\n\n  const fetchDisclaimer = async () => {\n    try {\n      const result = await api.getTestTypesByID(testTypeID);\n      setDisclaimerText(result?.custom_notes || \"\");\n    } catch (error) {\n      console.error(\"Error fetching disclaimer:\", error);\n    }\n  };\n\n  useEffect(() => {\n    fetchDisclaimer();\n  }, [testTypeID]);\n\n  useEffect(() => {\n    if (test?.clientID) {\n      getClientByID(test);\n    }\n  }, [test]);\n\n  const getClientByID = async (test) => {\n    let clientModal = await api.getClientById(test?.clientID);\n    setClientInfo(clientModal);\n  };\n\n  const today = new Date();\n\n  const time =\n    today.getHours() > 12\n      ? `${today.getHours() - 12}:${today.getMinutes()} PM`\n      : `${today.getHours()}:${today.getMinutes()} AM`;\n\n  const getLabDisclaimer = useMemo(() => {\n    if (testsLab) {\n      const disclaimerKey = TEST_TYPE_DISCLAIMER_KEY[test.test_type.replace(/(:|\\s+)/g, \"_\")] || \"testing_notes\";\n      const notes = testsLab[disclaimerKey];\n      if (notes) return notes;\n    }\n    return \"N/A\";\n  }, [test, testsLab]);\n\n  const testTypeLabel = () => {\n    const { test_type } = test;\n    if (test_type === \"RapidFlu\" || test_type === \"Rapid Flu\") return \"2022 - INFLUENZA A/B - Accula\";\n    if (test_type === \"PCR\") return \"COVID-19 MOLECULAR RT-PCR\";\n    return test_type;\n  };\n  const baseTestTypeLabel = () => {\n    const { test_type } = test;\n    if (test_type === \"RapidFlu\" || test_type === \"Rapid Flu\") return \"2022 - INFLUENZA A/B - Accula\";\n    if (test_type === \"PCR\") `2019-nCoV`;\n    return \"\";\n  };\n\n  console.log(\"TEst\", test);\n  return (\n    <Document title={`${demos.firstName} ${demos.lastName}`}>\n      <Page size=\"A4\" style={styles.page}>\n        <View style={{ ...styles.flexRow, flex: 0.8 }}>\n          <Image\n            style={{ width: \"220px\", opacity: 1 }}\n            // src={isLabImageExist(testsLab) ? require(`assets/img/${testsLab?.id}.png`).default : logoImage}\n            src={logoImage}\n          />\n          <View style={{ ...styles.flexRow }}>\n            <View style={{ display: \"flex\", alignItems: \"flex-start\", fontSize: 11 }}>\n              <Text style={{ textTransform: \"uppercase\" }}>{testsLab?.street || \"\"}</Text>\n              <Text style={{ textTransform: \"uppercase\" }}>{testsLab?.city_state_zip || \"\"}</Text>\n              <Text>Tel: {formatPhone(testsLab?.phone_number) || \"\"}</Text>\n              <Text>Fax: {formatPhone(testsLab?.fax_number)}</Text>\n            </View>\n            <Image src={qrImage} style={styles.qrCode} />\n          </View>\n        </View>\n        <View style={{ border: \"1px solid black\", position: \"relative\", flex: 5 }}>\n          <View style={{ ...styles.flexRow, lineHeight: 1.5 }}>\n            <View style={{ width: \"50%\", padding: \"15px 20px\", borderRight: 1, borderColor: \"black\", fontSize: 10 }}>\n              <View style={{ display: \"flex\", flexDirection: \"row\" }}>\n                <Text>Acc:</Text>\n                <View style={{ marginLeft: 5 }}>\n                  <Text style={{ ...styles.textUppercase, ...styles.bold, color: \"blue\" }}>\n                    {site?.name || clientInfo?.name || \"\"}\n                  </Text>\n                  <Text style={{ textTransform: \"uppercase\" }}>{site?.street || clientInfo?.street || \"\"}</Text>\n                  <Text style={{ textTransform: \"uppercase\" }}>\n                    {site ? formatAddress(site) : formatAddress(clientInfo)}\n                  </Text>\n                  <Text>{site ? formatPhone(site?.phone_number || \"\") : formatPhone(clientInfo?.phone_number)}</Text>\n                </View>\n              </View>\n              <View style={{ display: \"flex\", marginTop: 10, alignItems: \"center\", flexDirection: \"row\" }}>\n                <Text>Phys:</Text>\n                <Text style={{ ...styles.textUppercase, ...styles.bold, marginLeft: 5 }}>\n                  {site?.setting?.lab_director || testsLab?.lab_director || \"-\"}\n                </Text>\n              </View>\n              <View style={{ display: \"flex\", alignItems: \"center\", flexDirection: \"row\" }}>\n                <Text>CLIA#</Text>\n                <Text style={{ ...styles.textUppercase, ...styles.bold, marginLeft: 5 }}>\n                  {testsLab?.clia_number || \"-\"}\n                </Text>\n              </View>\n            </View>\n            <View style={{ width: \"50%\", ...styles.flexRow, fontSize: 10, justifyContent: \"space-between\" }}>\n              <View style={{ flex: 2, width: \"70%\", padding: 10, paddingLeft: 20 }}>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>Patient:</Text>\n                  <Text style={{ color: \"blue\", fontWeight: \"bold\" }}>{formatPDFName(demos)}</Text>\n                </View>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>DOB:</Text>\n                  <Text>{formatDateOfBirthDOB(demos.dob)}</Text>\n                </View>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>Phone:</Text>\n                  <Text>{formatPhone(test.phoneNumber)}</Text>\n                </View>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>ID#:</Text>\n                  <Text>{demos.idNumber || test.empID || \"\"}</Text>\n                </View>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>Route#:</Text>\n                  <Text>-</Text>\n                </View>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>Fasting:</Text>\n                  <Text>{demos?.fasting ? \"Yes\" : \"No\"}</Text>\n                </View>\n              </View>\n              <View style={{ flex: 1.2, width: \"30%\", padding: 10, paddingRight: 20 }}>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>&nbsp;</Text>\n                  <Text>&nbsp;</Text>\n                </View>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>Age:</Text>\n                  <Text>{`${getAge(demos.dob)} Years`}</Text>\n                </View>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>Sex:</Text>\n                  <Text>{demos?.sex}</Text>\n                </View>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>Room#:</Text>\n                  <Text>{demos?.street2}</Text>\n                </View>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60 }}>Page:</Text>\n                  <Text>1</Text>\n                </View>\n              </View>\n            </View>\n          </View>\n          <View style={{ ...styles.hr }} />\n          <View style={{ ...styles.flexRow, fontSize: 10, flexDirection: \"row\", fontSize: 10, lineHeight: 1.5 }}>\n            <View style={{ width: \"25%\", padding: 10, paddingBottom: 10, paddingTop: 5, flex: 1 }}>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>Acc:</Text>\n                <Text style={{ ...styles.bold }}>{test.barcode}</Text>\n              </View>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>Chart#:</Text>\n                <Text>-</Text>\n              </View>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>First reported on:</Text>\n                <Text style={{ paddingLeft: 10 }}></Text>\n              </View>\n            </View>\n            <View style={{ width: \"25%\", padding: 10, paddingBottom: 10, paddingTop: 5, flex: 1 }}>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>Coll. Date:</Text>\n                <Text style={{ paddingLeft: 10 }}>{formatDateMDY(test.createdAt)}</Text>\n              </View>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>Coll. Time:</Text>\n                <Text style={{ paddingLeft: 10 }}>{formatTimeFromDate(test.createdAt)}</Text>\n              </View>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>{formatDateMDY(test.resultDateTime)}</Text>\n              </View>\n            </View>\n            <View style={{ width: \"25%\", padding: 10, paddingBottom: 10, paddingTop: 5, flex: 1 }}>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>Recv. Date:</Text>\n                <Text style={{ paddingLeft: 10 }}>{formatDateMDY(parseSrNoObjectRecviedDate(test))}</Text>\n              </View>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>Recv. Time:</Text>\n                <Text style={{ paddingLeft: 10 }}>{formatTimeFromDate(parseSrNoObjectRecviedDate(test))}</Text>\n              </View>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>Final Report date:</Text>\n                <Text style={{ paddingLeft: 10 }}></Text>\n              </View>\n            </View>\n\n            <View style={{ width: \"25%\", padding: 10, paddingBottom: 10, paddingTop: 5, flex: 1 }}>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>Print Date:</Text>\n                <Text style={{ paddingLeft: 10 }}>{formatDateMDY(test.resultDateTime)}</Text>\n              </View>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>Print Time:</Text>\n                <Text style={{ paddingLeft: 10 }}>{formatTimeFromDate(test.resultDateTime)}</Text>\n              </View>\n              <View style={styles.flexRow}>\n                <Text style={{ minWidth: 60 }}>{formatDateMDY(test.resultDateTime)}</Text>\n              </View>\n            </View>\n          </View>\n          {resultDetails && (\n            <View\n              style={{\n                ...styles.flexRow,\n                fontSize: 10,\n                flexDirection: \"row\",\n                fontSize: 10,\n                border: 1,\n                backgroundColor: \"lightgray\",\n                marginBottom: \"5px\",\n              }}\n            >\n              <View style={{ width: \"100%\", padding: 10, paddingBottom: 5, paddingTop: 5, flex: 1 }}>\n                <View style={styles.flexRow}>\n                  <Text style={{ minWidth: 60, fontWeight: \"bold\", fontSize: \"12px\" }}>{test.test_type || \"\"}</Text>\n                  <Text style={{ paddingLeft: 10 }}></Text>\n                </View>\n              </View>\n            </View>\n          )}\n          <View style={{ ...styles.flexRow, border: 1, backgroundColor: \"lightgray\" }}>\n            <View style={{ flex: 1.4, padding: 5, borderRight: 1, borderColor: \"black\" }}>\n              <Text style={{ ...styles.bold, textAlign: \"center\" }}>Test Name</Text>\n            </View>\n            <View style={{ flex: 1, padding: 5, borderRight: 1, borderColor: \"black\" }}>\n              <Text style={{ ...styles.bold, textAlign: \"center\" }}>Result</Text>\n            </View>\n            {/* <View style={{ flex: 1, padding: 5, borderRight: 1, borderColor: \"black\" }}>\n              <Text style={{ ...styles.bold, textAlign: \"center\" }}>Out of Range</Text>\n            </View> */}\n            <View style={{ flex: 1, padding: 5, borderRight: 1, borderColor: \"black\" }}>\n              <Text style={{ ...styles.bold, textAlign: \"center\" }}>Reference Range</Text>\n              {/* <Text style={{ ...styles.bold, textAlign: \"center\" }}>Normal Range</Text> */}\n            </View>\n            <View style={{ flex: 0.5, padding: 5 }}>\n              <Text style={{ ...styles.bold, textAlign: \"center\" }}>Units</Text>\n            </View>\n          </View>\n          {resultDetails ? (\n            resultDetails.map((item, index) => {\n              const { color, label, fontWeight, orginalResult, resRange } = analyzeResultValue(\n                { minValue: item.minValue || item.minValueM, maxValue: item.maxValue || item.maxValueM },\n                item.testResult,\n                item.refInterval,\n                item.ranges\n              );\n\n              const unitToShow = parseTestUnit(item.units);\n\n              return (\n                <>\n                  <View\n                    style={{ ...styles.flexRow, ...styles.bold, paddingHorizontal: 10, fontSize: 10, marginTop: \"3px\" }}\n                    key={index}\n                  >\n                    <Text style={{ flex: 1.4, textAlign: \"left\" }}>\n                      {toTitleCase(item?.label) || toTitleCase(item?.name) || \"\"}\n                    </Text>\n                    <Text\n                      style={{\n                        ...styles.bold,\n                        flex: 1,\n                        // textAlign: \"center\",\n                        textTransform: \"uppercase\",\n                        color:\n                          item?.resultType === \"alpha\" && showAlphaResult(item, resRange) !== \"Not Detected\"\n                            ? \"red\"\n                            : color,\n                      }}\n                    >\n                      {/* {isResultInRange(item.refInterval, item.testResult)\n                      ? `${parseTestResult(item.testResult)}   ${label}`\n                      : \"\"} */}\n                      {/* {`${parseTestResult(item.testResult)}   ${label}`} */}\n\n                      {isQualtative\n                        ? showTestResult(item, isQualtative)\n                        : `${parseTestResult(item.testResult)}   ${label}`}\n                    </Text>\n                    {/* <Text\n                    style={{\n                      ...styles.bold, \n                      flex: 1,\n                      textAlign: \"center\",\n                      textTransform: \"uppercase\",\n                      color,\n                    }}\n                  >\n                    {!isResultInRange(item.refInterval, item.testResult)\n                      ? `${parseTestResult(item.testResult)}   ${label}`\n                      : \"\"}\n                  </Text> */}\n                    <Text style={{ flex: 1, textAlign: \"center\", textTransform: \"uppercase\" }}>\n                      {item.resultType === \"alpha\" ? \"Not Detected\" : item.refInterval}\n                    </Text>\n                    <Text style={{ flex: 0.5, textAlign: \"center\" }}>{unitToShow}</Text>\n                  </View>\n                  {isQualtative && parseTestResult(item.testResult) === \"Detected\" && (\n                    <View\n                      style={{\n                        fontSize: 8,\n                        marginTop: \"5px\",\n                        marginLeft: \"40px\",\n                      }}\n                      key={index}\n                    >\n                      <Text style={{ textTransform: \"uppercase\" }}>\n                        {`Calculated Colony Forming Units per mL ${unitToShow} ${generateTagLineQualitativeWithPanleTests(\n                          { panel: item }\n                        )}`}\n                      </Text>\n                      {}\n                      <Text style={{ textTransform: \"uppercase\" }}>\n                        {`Probability of Infection: ${infectionResultBasedUponRange({\n                          resultValue: item.resultValue,\n                          ranges: item?.ranges?.[0] ?? \"\",\n                        })}`}\n                      </Text>\n                    </View>\n                  )}\n                </>\n              );\n            })\n          ) : (\n            <>\n              <Text style={{ padding: \"5px 10px\", fontSize: 10, fontWeight: \"bold\" }}>Report Status: FINAL</Text>\n              <Text style={{ padding: \"0px 10px\", fontSize: 10, fontWeight: \"bold\" }}>\n                Source: {toTitleCase(demos?.swabtype || \"Oral\")}\n              </Text>\n\n              {demos.comment && (\n                <View style={{ flexDirection: \"row\", paddingHorizontal: 10 }}>\n                  <Text style={{ fontSize: 10, flex: 1, fontWeight: \"bold\" }}>Comment: </Text>\n                  <Text style={{ fontSize: 10, flex: 6 }}>{demos.comment}</Text>\n                </View>\n              )}\n\n              <Text style={{ ...styles.textUppercase, ...styles.bold, color: \"blue\", padding: \"5px 10px\" }}>\n                {baseTestTypeLabel()}\n              </Text>\n\n              <View style={{ ...styles.flexRow, ...styles.bold, paddingHorizontal: 10, fontSize: 10 }}>\n                <Text style={{ flex: 1.4, textAlign: \"left\" }}>{testTypeLabel()}</Text>\n\n                <Text\n                  style={{\n                    ...styles.bold,\n                    color: RESULTS_COLOR[test.result?.toLowerCase()],\n                    flex: 1,\n                    textAlign: \"center\",\n                    textTransform: \"uppercase\",\n                  }}\n                >\n                  {parseTestResultForPDF(test)}\n                </Text>\n                <Text style={{ flex: 1, textAlign: \"center\", textTransform: \"uppercase\" }}>Not Detected</Text>\n                <Text style={{ flex: 0.5, textAlign: \"center\" }}>{testType?.units || \"\"}</Text>\n              </View>\n            </>\n          )}\n          <View style={{ marginLeft: \"120px\", marginTop: 15 }}>\n            {testsLab?.invalid_notes && test.result && test.result.toLowerCase() === \"invalid\" && (\n              <Text\n                style={{\n                  ...styles.infoText,\n                  fontFamily: \"Helvetica-Bold\",\n                  paddingHorizontal: 40,\n                  marginBottom: \"5px\",\n                  fontSize: 10,\n                }}\n              >\n                {testsLab?.invalid_notes}\n              </Text>\n            )}\n            {testsLab?.indeterminate_notes && test.result && test.result.toLowerCase() === \"indeterminate\" && (\n              <Text\n                style={{\n                  ...styles.infoText,\n                  fontFamily: \"Helvetica-Bold\",\n                  paddingHorizontal: 40,\n                  marginBottom: \"5px\",\n                  fontSize: 10,\n                }}\n              >\n                {testsLab?.indeterminate_notes}\n              </Text>\n            )}\n            <Text style={{ ...styles.infoText, paddingHorizontal: 40, fontSize: 9 }}>\n              {disclaimerText || getLabDisclaimer}\n            </Text>\n          </View>\n          {/* {test.result?.toLowerCase() !== \"negative\" && test.result !== \"Not Detected\" && !resultDetails && (\n            <>\n              <Text\n                style={{\n                  padding: 10,\n                  color: \"blue\",\n                  ...styles.bold,\n                  fontSize: 11,\n                }}\n              >\n                **********************************************OUT OF RANGE\n                SUMMARY*******************************************\n              </Text>\n              <View style={{ ...styles.flexRow, paddingHorizontal: 10, fontSize: 10 }}>\n                <Text style={{ flex: 1.4, textAlign: \"center\" }}>{testTypeLabel()}</Text>\n                <Text\n                  style={{\n                    ...styles.bold,\n                    color: RESULTS_COLOR[test.result?.toLowerCase()],\n                    flex: 1,\n                    textAlign: \"center\",\n                    textTransform: \"uppercase\",\n                  }}\n                >\n                  {test.result?.toLowerCase() === \"negative\" && parseTestResultForPDF(test)}\n                </Text>\n                <Text\n                  style={{\n                    ...styles.bold,\n                    color: RESULTS_COLOR[test.result?.toLowerCase()],\n                    flex: 1,\n                    textAlign: \"center\",\n                    textTransform: \"uppercase\",\n                  }}\n                >\n                  {test.result?.toLowerCase() !== \"negative\" && parseTestResultForPDF(test)}\n                </Text>\n                <Text style={{ flex: 1, textAlign: \"center\", textTransform: \"uppercase\" }}>Not Detected</Text>\n                <Text style={{ flex: 0.5, textAlign: \"center\" }}></Text>\n              </View>\n            </> */}\n\n          <View style={styles.container}>\n            <View style={styles.line} />\n            <Text style={styles.text}>end of report</Text>\n            <View style={styles.line} />\n          </View>\n          <View\n            style={{\n              position: \"absolute\",\n              bottom: \"10\",\n              left: \"10\",\n              width: \"100%\",\n            }}\n            fixed\n          >\n            <View style={{ flexDirection: \"row\", alignItems: \"center\", fontSize: 11 }}>\n              <Text>Laboratory Director: </Text>\n              <Text style={{ ...styles.bold, textTransform: \"uppercase\" }}>{testsLab?.lab_director || \"\"}</Text>\n            </View>\n          </View>\n        </View>\n      </Page>\n    </Document>\n  );\n};\n\nconst styles = StyleSheet.create({\n  page: {\n    flex: 1,\n    backgroundColor: \"white\",\n    paddingHorizontal: 20,\n    paddingTop: 20,\n    paddingBottom: 20,\n    fontSize: 12,\n    fontFamily: \"Arial\", // Use the Arial font for the entire document\n  },\n  qrCode: {\n    width: 70,\n    marginTop: 5,\n    marginLeft: 15,\n  },\n  bold: {\n    fontWeight: \"bold\",\n  },\n  flexRow: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n  },\n  flexRow1: {\n    display: \"flex\",\n    marginLeft: \"20px\",\n  },\n\n  flexCol: {\n    display: \"flex\",\n    flexDirection: \"column\",\n  },\n  infoText: {\n    fontSize: 11,\n  },\n  infoTextRightBorder: {\n    fontSize: 11,\n    fontStyle: \"bold\",\n  },\n  italicText: {\n    fontSize: 11,\n    fontStyle: \"italic\",\n  },\n  pageNumbers: {\n    position: \"absolute\",\n    fontSize: 9,\n    bottom: 15,\n    right: 22,\n  },\n  patientInfo: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n  },\n  infoHeader: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    borderRightWidth: 1,\n    borderRightColor: \"black\",\n    borderLeftWidth: 1,\n    borderLeftColor: \"black\",\n  },\n  infoCol: {\n    flexDirection: \"column\",\n    justifyContent: \"space-around\",\n  },\n  hr: {\n    borderBottomColor: \"black\",\n    borderBottomWidth: 1,\n    width: \"100%\",\n  },\n  hrTwo: {\n    borderBottomColor: \"black\",\n    borderBottomWidth: 2,\n    width: \"100%\",\n  },\n  address: {\n    // marginLeft: 50,\n    marginVertical: 20,\n  },\n  borderBottom: {\n    borderBottom: 1,\n    borderColor: \"black\",\n  },\n  waterMark: {\n    opacity: 0.05,\n    fontSize: \"70px\",\n    color: \"black\",\n    background: \"#ccc\",\n    position: \"absolute\",\n    cursor: \"default\",\n    top: \"45%\",\n    left: \"30%\",\n    transform: \"Translate(-50%, -50%)\",\n  },\n  container: {\n    width: \"60%\",\n    marginHorizontal: \"auto\",\n    marginTop: 5,\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"center\",\n  },\n  line: {\n    borderBottomWidth: 1,\n    borderBottomColor: \"black\",\n    display: \"inline-block\",\n    width: \"40%\",\n    flex: 1,\n  },\n  text: {\n    textTransform: \"uppercase\",\n    textAlign: \"center\",\n    fontSize: 11,\n    flex: 1,\n  },\n  textUppercase: {\n    textTransform: \"uppercase\",\n  },\n});\n\nexport default BiolabPdf;\n","import React, { useState, useEffect, useMemo } from \"react\";\nimport { Document, Page, Text, View, StyleSheet, Image, Font } from \"@react-pdf/renderer\";\nimport {\n  getDemoGraphics,\n  formatDateOfBirthDOB,\n  formatReportDate,\n  formatDateMDY,\n  formatPDFName,\n  toTitleCase,\n  isLabImageExist,\n  analyzeResultValue,\n  formatPhone,\n} from \"utils\";\nimport { logoImage, GENDER_TEXT, TEST_TYPE_DISCLAIMER_KEY } from \"constant\";\nimport qrImage from \"assets/img/patient_portal.png\";\nimport ArialRegular from \"assets/fonts/arial.ttf\";\nimport ArialBold from \"assets/fonts/arial_bold.ttf\";\nimport api from \"api\";\n\nimport moment from \"moment\";\nimport { getRangeName } from \"utils\";\nimport { RESULT_COLOR } from \"constant\";\nimport { showAlphaResult } from \"utils\";\nimport { showTestResult } from \"utils\";\nimport { parseTestResult } from \"utils\";\nimport { infectionResultBasedUponRange } from \"utils\";\n\n// import { fontWeight } from \"html2canvas/dist/types/css/property-descriptors/font-weight\";\n\nFont.register({\n  family: \"Arial\",\n  fonts: [\n    { src: ArialRegular, fontWeight: \"normal\" },\n    { src: ArialBold, fontWeight: \"bold\" },\n  ],\n});\n\nconst parseSrNoObjectRecviedDate = (test) => {\n  try {\n    const arr = JSON.parse(test.sr_no);\n    let dateOfReceive = arr[0]?.date;\n    return dateOfReceive;\n  } catch (error) {\n    return moment(test.createdAt).toISOString();\n  }\n};\n\nconst AltalabPdf = ({ test, testsLab, parseTestResultForPDF, employeeID, site }) => {\n  const { resultDetails, test_type, employee_demographics, testType } = test;\n  console.log(\"🚀 ~ AltalabPdf ~ test:\", test)\n  console.log(\"🚀 ~ AltalabPdf ~ resultDetails:\", resultDetails)\n\n  const isQualtative = testType?.typeOfTest === \"Qualitative\" ? true : false;\n\n  const { testTypeID } = employee_demographics;\n\n  const [disclaimerText, setDisclaimerText] = useState(\"\");\n\n  const [clientInfo, setClientInfo] = useState();\n\n  let demos = getDemoGraphics(test);\n\n  const isPCR = resultDetails && resultDetails.find((item) => item.label === \"PCR\");\n\n  const fetchDisclaimer = async () => {\n    try {\n      const result = await api.getTestTypesByID(testTypeID);\n\n      setDisclaimerText(result?.custom_notes || \"\");\n    } catch (error) {\n      console.error(\"Error fetching disclaimer:\", error);\n    }\n  };\n\n  useEffect(() => {\n    fetchDisclaimer();\n  }, [testTypeID]);\n\n  useEffect(() => {\n    if (test?.clientID) {\n      getClientByID(test);\n    }\n  }, [test]);\n\n  const getClientByID = async (test) => {\n    let clientModal = await api.getClientById(test?.clientID);\n    setClientInfo(clientModal);\n  };\n\n  const today = new Date();\n\n  const time =\n    today.getHours() > 12\n      ? `${today.getHours() - 12}:${today.getMinutes()} PM`\n      : `${today.getHours()}:${today.getMinutes()} AM`;\n\n  const getLabDisclaimer = useMemo(() => {\n    if (testsLab) {\n      const disclaimerKey = TEST_TYPE_DISCLAIMER_KEY[test.test_type?.replace(/(:|\\s+)/g, \"_\")] || \"testing_notes\";\n      const notes = testsLab[disclaimerKey];\n      if (notes) return notes;\n    }\n    return \"N/A\";\n  }, [test, testsLab]);\n\n  const testTypeLabel = () => {\n    const { test_type } = test;\n    if (test_type === \"RapidFlu\" || test_type === \"Rapid Flu\") return \"2022 - INFLUENZA A/B - Accula\";\n    if (test_type === \"PCR\") return \"COVID-19 MOLECULAR RT-PCR\";\n    return test_type;\n  };\n\n  const baseTestTypeLabel = () => {\n    const { test_type } = test;\n    if (test_type === \"RapidFlu\" || test_type === \"Rapid Flu\") return \"2022 - INFLUENZA A/B - Accula\";\n    if (test_type === \"PCR\") `2019-nCoV`;\n    return \"\";\n  };\n\n  const testHeaderStyles = {\n    margin: \"0\",\n    backgroundColor: \"#3500CD\",\n    fontWeight: \"bold\",\n    color: \"white\",\n    fontSize: \"11px\",\n    textAlign: \"start\",\n    paddingLeft: \"9px\",\n    paddingRight: \"9px\",\n    paddingTop: \"2px\",\n  };\n\n  const baseCellStyle = {\n    fontSize: \"10px\",\n    fontWeight: \"normal\",\n    textAlign: \"start\",\n  };\n\n  const sarcCellStyle = {\n    ...baseCellStyle,\n    fontSize: \"11px\",\n    paddingLeft: \"10px\",\n  };\n\n  const testCell1Style = {\n    ...baseCellStyle,\n    paddingLeft: \"30px\",\n  };\n\n  const testCell2Style = {\n    ...baseCellStyle,\n    paddingLeft: \"9px\",\n  };\n  const testCell2StyleBold = {\n    ...baseCellStyle,\n    paddingLeft: \"9px\",\n    fontWeight: \"bold\",\n    color: \"red\",\n  };\n\n  const testCell2PCRStyle = {\n    ...baseCellStyle,\n    paddingLeft: \"9px\",\n    fontWeight: \"bold\",\n    color: \"red\",\n  };\n\n  const testCell3Style = {\n    ...baseCellStyle,\n    paddingLeft: \"20px\",\n  };\n\n  const mainTestNameStyle = {\n    fontSize: \"11px\",\n    margin: \"0px\",\n    backgroundColor: \"#C8C8C8\",\n    fontWeight: \"bold\",\n    paddingLeft: \"9px\",\n    paddingRight: \"9px\",\n    paddingTop: \"2px\",\n    textTransform: \"uppercase\",\n  };\n\n  const mainTestHeaderStyle = {\n    fontSize: \"11px\",\n    margin: \"0px\",\n    backgroundColor: \"#3500CD\",\n    color: \"white\",\n    fontWeight: \"bold\",\n    paddingLeft: \"9px\",\n    paddingRight: \"9px\",\n    paddingTop: \"2px\",\n  };\n\n  const testRowMainViewStyle = { flexDirection: \"row\", justifyContent: \"space-between\", marginTop: \"3px\" };\n\n  const testRowInnerViewStyle = { width: \"32.33%\" };\n  const testRowInnerViewTestHeaderStyle = { width: \"100\" };\n\n  const testRowInnerViewStyleResult = {\n    width: \"32.33%\",\n    display: \"flex\",\n    justifyContent: \"space-start\",\n    flexDirection: \"row\",\n  };\n\n  const {\n    color: pcrColor,\n    fontWeight: pcrFontWeight,\n    orginalResult: pcrOriginalResult,\n  } = analyzeResultValue(null, isPCR?.testResult, isPCR?.refInterval);\n\n  return (\n    <Document title={`${demos.firstName} ${demos.lastName}`}>\n      <Page size=\"A4\" style={styles.page} scale={30.0}>\n        <View style={{ flexDirection: \"row\", justifyContent: \"space-between\" }}>\n          <Image\n            style={{ width: \"250px\", height: \"60px\", opacity: 1, marginRight: \"9px\" }}\n            src={isLabImageExist(testsLab) ? require(`assets/img/alta.png`).default : logoImage}\n          />\n          <View style={{ flexDirection: \"row\" }}>\n            <View\n              style={{\n                width: \"100%\",\n                border: \"1px solid #000\",\n                height: \"55px\",\n                marginTop: \"9px\",\n                padding: \"9px\",\n                fontSize: \"11px\",\n                fontWeight: \"600\",\n              }}\n            >\n              <Text>\n                {testsLab?.street || \"\"}, {testsLab?.city_state_zip || \"\"}\n              </Text>\n              <View style={{ display: \"flex\", flexDirection: \"column\", lineHeight: \"1.2\" }}>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ width: \"50%\" }}>Phone: {formatPhone(testsLab?.phone_number) || \"\"}</Text>\n                  <Text style={{ width: \"50%\" }}>Fax: {formatPhone(testsLab?.fax_number)}</Text>\n                </View>\n                <View style={{ flexDirection: \"row\", justifyContent: \"space-between\" }}>\n                  <Text style={{ width: \"50%\" }}>CLIA #: {testsLab?.clia_number || \"\"}</Text>\n                  <Text style={{ width: \"50%\" }}>Director: {testsLab?.lab_director || \"\"}</Text>\n                </View>\n              </View>\n            </View>\n            <View style={{ marginLeft: \"10px\" }}>\n              <Image style={{ width: \"70px\", opacity: 1 }} src={qrImage} />\n            </View>\n          </View>\n        </View>\n\n        <View style={{ marginTop: \"20px\" }}>\n          <Text\n            style={{\n              fontSize: \"16px\",\n              marginTop: \"5px\",\n              marginBottom: \"5px\",\n              textTransform: \"uppercase\",\n              fontWeight: \"bold\",\n              textAlign: \"center\",\n            }}\n          >\n            Laboratory Report\n          </Text>\n          <View style={{ flexDirection: \"row\", justifyContent: \"space-between\" }}>\n            <View style={{ border: \"1px solid #000\", width: \"32.33%\" }}>\n              <Text\n                style={{\n                  margin: \"0\",\n                  fontWeight: \"bold\",\n                  backgroundColor: \"#3500CD\",\n                  color: \"white\",\n                  fontSize: \"11px\",\n                  textAlign: \"center\",\n                  paddingTop: \"2px\",\n                }}\n              >\n                PATIENT\n              </Text>\n              <View style={{ padding: \"7px\", margin: \"0\" }}>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"45px\", minWidth: \"45px\" }}>Name:</Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 45px)\" }}>\n                    {formatPDFName(demos)}\n                  </Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"45px\", minWidth: \"45px\" }}>\n                    Address:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 45px)\" }}>\n                    {demos.street}\n                    {\"\\n\"}\n                    {demos.state}, {demos.zip}\n                  </Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"45px\", minWidth: \"45px\" }}>Phone:</Text>\n                  <Text style={{ fontSize: \"10px\", fontWeight: \"bold\", width: \"calc(100% - 45px)\" }}>\n                    {formatPhone(demos?.phoneNumber) || \"\"}\n                  </Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"45px\", minWidth: \"45px\" }}>DOB:</Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 45px)\" }}>\n                    {formatDateOfBirthDOB(demos.dob)}\n                  </Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"45px\", minWidth: \"45px\" }}>\n                    Gender:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 45px)\" }}>\n                    {GENDER_TEXT[demos?.sex || \"X\"]}\n                  </Text>\n                </View>\n              </View>\n            </View>\n            <View style={{ border: \"1px solid #000\", width: \"32.33%\" }}>\n              <Text\n                style={{\n                  margin: \"0\",\n                  backgroundColor: \"#3500CD\",\n                  color: \"white\",\n                  fontSize: \"11px\",\n                  fontWeight: \"bold\",\n                  textAlign: \"center\",\n                  paddingTop: \"2px\",\n                }}\n              >\n                SPECIMEN\n              </Text>\n              <View style={{ padding: \"7px\", margin: \"0\" }}>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"70px\", minWidth: \"70px\" }}>\n                    Specimen Type:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 70px)\" }}>\n                    {toTitleCase(demos?.swabtype || \"\")}\n                  </Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"70px\", minWidth: \"70px\" }}>\n                    Collection Date:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 70px)\" }}>\n                    {formatDateMDY(test.createdAt)}\n                  </Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"70px\", minWidth: \"70px\" }}>\n                    Received Date:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 70px)\" }}>\n                    {formatReportDate(parseSrNoObjectRecviedDate(test))}\n                  </Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"70px\", minWidth: \"70px\" }}>\n                    Reported Date:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 70px)\" }}>\n                    {formatReportDate(test.resultDateTime)}\n                  </Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"70px\", minWidth: \"70px\" }}>&nbsp;</Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 70px)\" }}>&nbsp;</Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"70px\", minWidth: \"70px\" }}>\n                    Accession #:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 70px)\" }}>\n                    {test.barcode}\n                  </Text>\n                </View>\n              </View>\n            </View>\n            <View style={{ border: \"1px solid #000\", width: \"32.33%\" }}>\n              <Text\n                style={{\n                  margin: \"0\",\n                  backgroundColor: \"#3500CD\",\n                  color: \"white\",\n                  fontSize: \"11px\",\n                  fontWeight: \"bold\",\n                  textAlign: \"center\",\n                  paddingTop: \"2px\",\n                }}\n              >\n                CLIENT INFORMATION\n              </Text>\n              <View style={{ padding: \"7px\", margin: \"0\" }}>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"45px\", minWidth: \"45px\" }}>\n                    Client:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 45px)\" }}>{site?.name}</Text>\n                </View>\n\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"45px\", minWidth: \"45px\" }}>\n                    Client ID:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 45px)\" }}>\n                    {site?.practiceID}\n                  </Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"45px\", minWidth: \"45px\" }}>\n                    Provider:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 45px)\" }}>NANCY BARR</Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"45px\", minWidth: \"45px\" }}>\n                    Address:\n                  </Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 45px)\" }}>\n                    {site?.street}\n                    {\"\\n\"}\n                    {site?.city} {site?.state}, {site?.zipcode}\n                  </Text>\n                </View>\n                <View style={{ flexDirection: \"row\" }}>\n                  <Text style={{ fontWeight: \"normal\", fontSize: \"9px\", width: \"45px\", minWidth: \"45px\" }}>Phone:</Text>\n                  <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 45px)\" }}>\n                    {formatPhone(site?.phone_number) || \"\"}\n                  </Text>\n                </View>\n              </View>\n            </View>\n          </View>\n        </View>\n\n        {resultDetails && test_type !== \"PCR\" && (\n          <View style={{ marginTop: \"9px\", width: \"100%\" }}>\n            {test?.testType?.type !== \"panel\" && (\n              <View style={testRowMainViewStyle}>\n                <View style={testRowInnerViewStyle}>\n                  <Text style={testHeaderStyles}>Test Name</Text>\n                </View>\n                <View style={testRowInnerViewStyle}>\n                  <Text style={testHeaderStyles}>Result</Text>\n                </View>\n                <View style={testRowInnerViewStyle}>\n                  <Text style={testHeaderStyles}>Reference Range</Text>\n                </View>\n              </View>\n            )}\n\n            {resultDetails &&\n              resultDetails.length > 0 &&\n              resultDetails.map((item, index) => {\n                const { color, label, fontWeight, orginalResult, resRange } = analyzeResultValue(\n                  { minValue: item.minValue || item.minValueM, maxValue: item.maxValue || item.maxValueM },\n                  item.testResult,\n                  item.refInterval,\n                  item.ranges\n                );\n                \n                if (item.panelName) {\n                  return <Text style={{ ...mainTestNameStyle, marginTop: \"10px\" }}>{item.panelName || \"\"}</Text>;\n                }\n\n                if (item.testName && !item.showEmptyRow) {\n                  return (\n                    <>\n                      <Text style={{ ...mainTestHeaderStyle, marginTop: \"10px\" }}>{item.testName || \"\"}</Text>\n\n                      <View style={testRowMainViewStyle}>\n                        <View style={testRowInnerViewStyle}>\n                          <Text style={testHeaderStyles}>Test Name</Text>\n                        </View>\n                        <View style={testRowInnerViewStyle}>\n                          <Text style={testHeaderStyles}>Result</Text>\n                        </View>\n                        <View style={testRowInnerViewStyle}>\n                          <Text style={testHeaderStyles}>Reference Range</Text>\n                        </View>\n                      </View>\n\n                      <View style={testRowMainViewStyle} key={`testDet_${index}`}>\n                        <View style={testRowInnerViewStyle}>\n                          <Text style={{ ...testCell1Style, paddingLeft: item.testName ? \"10px\" : \"30px\" }}>\n                            {toTitleCase(item?.label) || toTitleCase(item?.name) || toTitleCase(item.testName) || \"\"}\n                          </Text>\n                        </View>\n                        <View style={testRowInnerViewStyleResult}>\n                          <View style={{ paddingLeft: \"5px\", flex: 1 }}>\n                            <Text\n                              style={{\n                                ...baseCellStyle,\n                                fontWeight,\n                                color:\n                                  item?.resultType === \"alpha\" && showAlphaResult(item, resRange) !== \"Not Detected\"\n                                    ? \"red\"\n                                    : color,\n                              }}\n                            >\n                              {/* {item.resultType === \"alpha\"\n                                ? showAlphaResult(item, resRange)\n                                : `${showTestResult(item, isQualtative)}`} */}\n\n                                {\n                                  showAlphaResult(item, resRange)\n                                }\n                            </Text>\n                          </View>\n                          {/* <View style={{ paddingRight: \"9px\", flex: 1 }}>\n                          <Text style={{ ...baseCellStyle, fontWeight, color }}>{label}</Text>\n                          </View> */}\n                        </View>\n                        <View style={testRowInnerViewStyle}>\n                          <Text style={testCell3Style}>{item?.refInterval || \"\"}</Text>\n                        </View>\n                      </View>\n\n                      {(item?.typeOfTest === \"Qualitative\" ) &&\n                        parseTestResult(item.testResult) === \"Detected\" && (\n                          <View\n                            style={{\n                              fontSize: 8,\n                              marginTop: \"5px\",\n                              marginLeft: \"40px\",\n                            }}\n                            key={index}\n                          >\n                            <Text style={{ textTransform: \"uppercase\" }}>\n                              {`Calculated Colony Forming Units per mL ${item?.units?.label || \"\"} ${\n                                item?.additionalInfo?.resultDescription || \"\"\n                              }`}\n                            </Text>\n\n                            <Text style={{ textTransform: \"uppercase\" }}>\n                              {`Probability of Infection: ${infectionResultBasedUponRange({\n                                resultValue: item.resultValue,\n                                ranges: item.ranges[0],\n                              })}`}\n                            </Text>\n                          </View>\n                        )}\n                    </>\n                  );\n                }\n\n                if (item.testName) {\n                  return (\n                    <>\n                      <Text style={{ ...mainTestHeaderStyle, marginTop: \"10px\" }}>{item.testName || \"\"}</Text>\n\n                      <View style={testRowMainViewStyle}>\n                        <View style={testRowInnerViewStyle}>\n                          <Text style={testHeaderStyles}>Test Name</Text>\n                        </View>\n                        <View style={testRowInnerViewStyle}>\n                          <Text style={testHeaderStyles}>Result</Text>\n                        </View>\n                        <View style={testRowInnerViewStyle}>\n                          <Text style={testHeaderStyles}>Reference Range</Text>\n                        </View>\n                      </View>\n                    </>\n                  );\n                }\n\n                if (!item.showEmptyRow) {\n                  return (\n                    <>\n                      <View style={testRowMainViewStyle} key={`testDet_${index}`}>\n                        <View style={testRowInnerViewStyle}>\n                          <Text style={{ ...testCell1Style, paddingLeft: item.testName ? \"10px\" : \"30px\" }}>\n                            {toTitleCase(item?.label) || toTitleCase(item?.name) || toTitleCase(item.testName) || \"\"}\n                          </Text>\n                        </View>\n                        <View style={testRowInnerViewStyleResult}>\n                          <View style={{ paddingLeft: \"5px\", flex: 1 }}>\n                            <Text\n                              style={{\n                                ...baseCellStyle,\n                                fontWeight,\n                                color:\n                                  item?.resultType === \"alpha\" && showAlphaResult(item, resRange) !== \"Not Detected\"\n                                    ? \"red\"\n                                    : color,\n                              }}\n                            >\n                              {item.resultType === \"alpha\"\n                                ? showAlphaResult(item, resRange)\n                                : `${showTestResult(item, isQualtative)}`}\n                            </Text>\n                          </View>\n                          {/* <View style={{ paddingRight: \"9px\", flex: 1 }}>\n                          <Text style={{ ...baseCellStyle, fontWeight, color }}>{label}</Text>\n                          </View> */}\n                        </View>\n                        <View style={testRowInnerViewStyle}>\n                          <Text style={testCell3Style}>{item?.refInterval || \"\"}</Text>\n                        </View>\n                      </View>\n\n                      {(item?.resultType === \"alpha\" || isQualtative) &&\n                        parseTestResult(item.testResult) === \"Detected\" && (\n                          <View\n                            style={{\n                              fontSize: 8,\n                              marginTop: \"5px\",\n                              marginLeft: \"40px\",\n                            }}\n                            key={index}\n                          >\n                            <Text style={{ textTransform: \"uppercase\" }}>\n                              {`Calculated Colony Forming Units per mL ${item?.units?.label || \"\"} ${\n                                item?.additionalInfo?.resultDescription || \"\"\n                              }`}\n                            </Text>\n\n                            <Text style={{ textTransform: \"uppercase\" }}>\n                              {`Probability of Infection: ${infectionResultBasedUponRange({\n                                resultValue: item?.resultValue,\n                                ranges: item?.ranges[0],\n                              })}`}\n                            </Text>\n                          </View>\n                        )}\n                    </>\n                  );\n                }\n              })}\n          </View>\n        )}\n\n        {!resultDetails && test_type !== \"PCR\" && (\n          <View style={{ marginTop: \"9px\", width: \"100%\" }}>\n            <View style={testRowMainViewStyle}>\n              <View style={testRowInnerViewStyle}>\n                <Text style={testHeaderStyles}>Test Name</Text>\n              </View>\n              <View style={testRowInnerViewStyle}>\n                <Text style={testHeaderStyles}>Result</Text>\n              </View>\n              <View style={testRowInnerViewStyle}>\n                <Text style={testHeaderStyles}>Reference Range</Text>\n              </View>\n            </View>\n\n            <View style={testRowMainViewStyle}>\n              <View style={testRowInnerViewStyle}>\n                <Text style={testCell1Style}>{test_type}</Text>\n              </View>\n              <View style={testRowInnerViewStyleResult}>\n                <View style={{ paddingLeft: \"9px\", flex: 1 }}>\n                  <Text\n                    style={{\n                      ...baseCellStyle,\n\n                      fontWeight: \"bold\",\n                      color: RESULT_COLOR[test.result.toLowerCase()] || \"blue\",\n                    }}\n                  >\n                    {test.result.toUpperCase()}\n                  </Text>\n                </View>\n                {/* <View style={{ paddingRight: \"9px\", flex: 1 }}>\n                  <Text style={{ ...baseCellStyle, fontWeight, color }}>{label}</Text>\n                </View> */}\n              </View>\n              <View style={testRowInnerViewStyle}>\n                <Text style={testCell3Style}>NEGATIVE</Text>\n              </View>\n            </View>\n          </View>\n        )}\n\n        {(test_type === \"PCR\" || isPCR) && (\n          <View style={{ marginTop: \"9px\", width: \"100%\" }}>\n            <Text style={mainTestNameStyle}> SARS-CoV-2 (COVID-19)</Text>\n            <View style={testRowMainViewStyle}>\n              <View style={testRowInnerViewStyle}>\n                <Text style={testHeaderStyles}>Test Name</Text>\n              </View>\n              <View style={testRowInnerViewStyle}>\n                <Text style={testHeaderStyles}>Result</Text>\n              </View>\n              <View style={testRowInnerViewStyle}>\n                <Text style={testHeaderStyles}>Reference Range</Text>\n              </View>\n            </View>\n\n            <View style={testRowMainViewStyle}>\n              <View style={testRowInnerViewStyle}>\n                <Text style={sarcCellStyle}>SARS-CoV-2 (COVID-19) RT-PCR</Text>\n              </View>\n            </View>\n\n            <View style={testRowMainViewStyle}>\n              <View style={testRowInnerViewStyle}>\n                <Text style={testCell1Style}>SARS-CoV-2 (COVID-19) PCR</Text>\n              </View>\n              <View style={testRowInnerViewStyle}>\n                <Text\n                  style={\n                    isPCR\n                      ? { ...testCell2PCRStyle, fontWeight: pcrFontWeight, color: pcrColor }\n                      : test.result === \"Positive\"\n                      ? testCell2StyleBold\n                      : testCell2Style\n                  }\n                >\n                  {isPCR ? pcrOriginalResult : test.result.toUpperCase()}\n                </Text>\n              </View>\n              <View style={testRowInnerViewStyle}>\n                <Text style={testCell3Style}>NEGATIVE</Text>\n              </View>\n            </View>\n          </View>\n        )}\n\n        <View style={{ maxWidth: \"440px\", marginLeft: \"auto\", marginRight: \"auto\", paddingTop: \"9px\" }}>\n          <Text style={{ fontSize: \"11px\", lineHeight: \"1.2\" }}>{disclaimerText || getLabDisclaimer}</Text>\n\n          <Text style={{ maxWidth: \"320px\", marginLeft: \"auto\", marginRight: \"auto\", paddingTop: \"20px\" }}>\n            Fact Sheet for providers https://www.fda.gov/media/136599/download Fact Sheet for patients\n            https://www.fda.gov/media/136600/download\n          </Text>\n        </View>\n      </Page>\n    </Document>\n  );\n};\n\nconst styles = StyleSheet.create({\n  page: {\n    flex: 1,\n    backgroundColor: \"white\",\n    paddingHorizontal: 20,\n    paddingTop: 20,\n    paddingBottom: 20,\n    fontSize: 12,\n    fontFamily: \"Arial\", // Use the Arial font for the entire document\n  },\n  qrCode: {\n    width: 70,\n    marginTop: 5,\n    marginLeft: 15,\n  },\n  bold: {\n    fontWeight: \"bold\",\n  },\n  flexRow: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n  },\n  flexCol: {\n    display: \"flex\",\n    flexDirection: \"column\",\n  },\n  infoText: {\n    fontSize: 11,\n  },\n  infoTextRightBorder: {\n    fontSize: 11,\n    fontStyle: \"bold\",\n  },\n  italicText: {\n    fontSize: 11,\n    fontStyle: \"italic\",\n  },\n  pageNumbers: {\n    position: \"absolute\",\n    fontSize: 9,\n    bottom: 15,\n    right: 22,\n  },\n  patientInfo: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n  },\n  infoHeader: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    borderRightWidth: 1,\n    borderRightColor: \"black\",\n    borderLeftWidth: 1,\n    borderLeftColor: \"black\",\n  },\n  infoCol: {\n    flexDirection: \"column\",\n    justifyContent: \"space-around\",\n  },\n  hr: {\n    borderBottomColor: \"black\",\n    borderBottomWidth: 1,\n    width: \"100%\",\n  },\n  hrTwo: {\n    borderBottomColor: \"black\",\n    borderBottomWidth: 2,\n    width: \"100%\",\n  },\n  address: {\n    // marginLeft: 50,\n    marginVertical: 20,\n  },\n  borderBottom: {\n    borderBottom: 1,\n    borderColor: \"black\",\n  },\n  waterMark: {\n    opacity: 0.05,\n    fontSize: \"70px\",\n    color: \"black\",\n    background: \"#ccc\",\n    position: \"absolute\",\n    cursor: \"default\",\n    top: \"45%\",\n    left: \"30%\",\n    transform: \"Translate(-50%, -50%)\",\n  },\n  container: {\n    width: \"60%\",\n    marginHorizontal: \"auto\",\n    marginTop: 5,\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"center\",\n  },\n  line: {\n    borderBottomWidth: 1,\n    borderBottomColor: \"black\",\n    display: \"inline-block\",\n    width: \"40%\",\n    flex: 1,\n  },\n  text: {\n    textTransform: \"uppercase\",\n    textAlign: \"center\",\n    fontSize: 11,\n    flex: 1,\n  },\n  textUppercase: {\n    textTransform: \"uppercase\",\n  },\n});\n\nexport default AltalabPdf;\n","import { Document, Image, Page, StyleSheet, Text, View } from \"@react-pdf/renderer\";\nimport logo from \"../assets/img/3eaf991b-b876-4897-8e39-47aef2247dcd.png\";\nimport phoneIcon from \"../assets/img/phone-svgrepo-com.png\";\nimport envelopeIcon from \"../assets/img/envelope-mail-mobile-ui-svgrepo-com.png\";\nimport globeIcon from \"../assets/img/globe-alt-svgrepo-com.png\";\nimport addressIcon from \"../assets/img/marker-pin-01-svgrepo-com.png\";\nimport { formatPhone, getDemoGraphics, getAge, formatDateOfBirthDOB, formatOrderDate } from \"utils\";\nimport moment from \"moment\";\nimport { formatTestForLabReport, formatTestNewDiscovery } from \"utils\";\nimport { TYPE_OF_TEST } from \"constant\";\nimport { customIsJsonString } from \"util/customLodash\";\n\nconst LabReportSisterPirerrePdf = ({ test, testsLab, site }) => {\n  const { resultDetails, test_type, employee_demographics, testType, lab } = test;\n\n  const { clia_number } = lab;\n\n  let demos = getDemoGraphics(test);\n\n  const sampleDetail = formatTestForLabReport(resultDetails || []);\n\n  const parseSrNoObjectRecviedDate = (test) => {\n    try {\n      const arr = JSON.parse(test.sr_no);\n      let dateOfReceive = arr[0]?.date;\n      return dateOfReceive;\n    } catch (error) {\n      return moment(test.createdAt).toISOString();\n    }\n  };\n\n  const newDiscoveryPathogen = formatTestNewDiscovery({\n    results: resultDetails,\n    type: testType?.type,\n    code: testType?.code,\n  });\n\n  const showTestResult = (testResult) => {\n    if (customIsJsonString(testResult)) {\n      return JSON.parse(testResult).value;\n    }\n    return testResult;\n  };\n\n  return (\n    <Document title={`${demos.firstName} ${demos.lastName}`}>\n      <Page size=\"A4\" style={styles.body}>\n        <View style={[styles.header]}>\n          <View style={styles.headerTop}>\n            <Image src={logo} style={styles.logo} />\n            <View style={styles.contactInfo}>\n              <View style={[styles.flexVerticalenter, { marginBottom: 2 }]}>\n                <Image src={phoneIcon} style={styles.contactInfoIcons} />\n                <Text>{formatPhone(test?.lab?.phone_number)}</Text>\n              </View>\n              <View style={[styles.flexVerticalenter, { marginBottom: 2 }]}>\n                <Image src={envelopeIcon} style={styles.contactInfoIcons} />\n                <Text>{test?.lab?.contact_email}</Text>\n              </View>\n              <View style={[styles.flexVerticalenter]}>\n                <Image src={globeIcon} style={styles.contactInfoIcons} />\n                <Text>www.newdiscoverylabs.com</Text>\n              </View>\n            </View>\n            <View style={[styles.formTitle, { fontFamily: \"Helvetica-Bold\" }]}>\n              <Text>LABORATORY REPORT</Text>\n            </View>\n          </View>\n          <View style={styles.headerBottom}>\n            <View style={styles.address}>\n              <Image src={addressIcon} style={styles.contactInfoIcons} />\n              <Text>{`${test?.lab?.street || \"\"}, ${test?.lab?.city_state_zip || \"\"}`}</Text>\n            </View>\n            <View style={[styles.flex, styles.itemsCenter, styles.flex1]}>\n              <View style={styles.licInfo}>\n                <Text style={styles.mx8}>|</Text>\n                <Text>Laboratory Director: {test?.site?.setting?.lab_director || test?.lab?.lab_director || \"-\"}</Text>\n              </View>\n              <View style={styles.licInfo}>\n                <Text>\n                  {\" \"}\n                  <Text style={styles.mx8}>|</Text> CLIA ID: {clia_number || \"\"}\n                </Text>\n              </View>\n            </View>\n          </View>\n        </View>\n        <View style={styles.px5}>\n          <View style={{ ...styles.headingBg, ...styles.mb15 }}>\n            <Text style={styles.cardContent}>PATIENT INFORMATION</Text>\n          </View>\n          <View style={[styles.flex, { alignItems: \"stretch\" }]}>\n            <View style={[styles.flex1, styles.mr10]}>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>patient name:</Text>\n                <View style={styles.inputField}>\n                  <Text>{`${demos.firstName} ${demos.lastName}`}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>dob:</Text>\n                <View style={styles.inputField}>\n                  <Text>{formatDateOfBirthDOB(demos.dob)}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>gender:</Text>\n                <View style={styles.inputField}>\n                  <Text>{demos?.sex}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>provider:</Text>\n                <View style={styles.inputField}>\n                  <Text>{test?.order?.provider?.ref_name || \"\"}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>provider NPi:</Text>\n                <View style={styles.inputField}>\n                  <Text>{test?.order?.provider?.ref_npi || \"\"}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>account:</Text>\n                <View style={styles.inputField}>\n                  <Text>{test?.site?.name || \"\"}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup, , styles.borderBottomBlack]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>status:</Text>\n                <View style={styles.inputField}>\n                  <Text>&nbsp;</Text>\n                </View>\n              </View>\n            </View>\n            <View style={[styles.w50]}>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>Coder code:</Text>\n                <View style={styles.inputField}>\n                  <Text>&nbsp;</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>Accession:</Text>\n                <View style={styles.inputField}>\n                  <Text>{test?.barcode}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>date collected:</Text>\n                <View style={styles.inputField}>\n                  <Text>{formatOrderDate(test.createdAt)}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>date received:</Text>\n                <View style={styles.inputField}>\n                  <Text>{formatOrderDate(parseSrNoObjectRecviedDate(test))}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>date reported:</Text>\n                <View style={styles.inputField}>\n                  <Text>{formatOrderDate(test?.resultDateTime)}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup]}>\n                <Text style={[styles.textUppercase, styles.inputLabel]}>Sample type:</Text>\n                <View style={styles.inputField}>\n                  <Text>{demos?.swabtype}</Text>\n                </View>\n              </View>\n              <View style={[styles.inputGroup, styles.borderBottomBlack]}>\n                {/* <Text style={[styles.textUppercase, styles.inputLabel]}></Text> */}\n                <View style={styles.inputField}>\n                  <Text></Text>\n                </View>\n              </View>\n            </View>\n          </View>\n\n          {newDiscoveryPathogen && (\n            <View style={[styles.section, styles.formWrapper, { marginTop: 15 }]}>\n              <View style={{ ...styles.headingBg }}>\n                <Text style={styles.cardContent}>MOLECULAR TEST RESULTS</Text>\n              </View>\n\n              <View>\n                <View style={[styles.flex, styles.borderBottomBlack, , styles.borderTop1]}>\n                  <View style={[styles.flex1]}>\n                    <View style={[styles.inputGroup, styles.borderNone, styles.borderRight1, styles.borderBottomBlack]}>\n                      <Text style={[styles.textUppercase, styles.inputLabel, styles.bgTransparent]}>Test name:</Text>\n                      <View style={styles.inputField}>\n                        <Text style={{ fontSize: 8 }}>{newDiscoveryPathogen.testName}</Text>\n                      </View>\n                    </View>\n                  </View>\n                  <View style={[styles.w50]}>\n                    <View style={[styles.inputGroup, styles.borderNone, styles.borderBottomBlack]}>\n                      <Text style={[styles.textUppercase, styles.inputLabel, styles.bgTransparent]}>Code:</Text>\n                      <View style={styles.inputField}>\n                        <Text style={{ fontSize: 8 }}>{newDiscoveryPathogen?.code || \"\"}</Text>\n                      </View>\n                    </View>\n                  </View>\n                </View>\n\n                {newDiscoveryPathogen.pathogenisTests.length > 0 && (\n                  <>\n                    <View style={[styles.flex, styles.headingBgSubtest, styles.borderBottom]}>\n                      <View style={[styles.flex1]}>\n                        <View>\n                          <Text style={[styles.textUppercase]}>PATHOGENS TESTED</Text>\n                        </View>\n                      </View>\n\n                      <View style={[styles.w50]}>\n                        <View>\n                          <Text style={[styles.textUppercase]}>QUALITATIVE RESULTS</Text>\n                        </View>\n                      </View>\n                    </View>\n                    {newDiscoveryPathogen.pathogenisTests.map((item, index) => (\n                      <View style={[styles.flex]}>\n                        <View style={[styles.flex1]}>\n                          <View style={styles.testField}>\n                            <Text style={[styles.textUppercase]}>{item.name}</Text>\n                          </View>\n                        </View>\n\n                        <View style={[styles.w50]}>\n                          <View style={styles.testField}>\n                            <Text style={[styles.textUppercase]}>{item.parsedResult}</Text>\n                          </View>\n                        </View>\n                      </View>\n                    ))}\n                  </>\n                )}\n\n                {newDiscoveryPathogen.antibioticTests.length > 0 && (\n                  <>\n                    <View style={[styles.flex, styles.headingBgSubtest, styles.borderBottom, styles.borderTop]}>\n                      <View style={[styles.flex1]}>\n                        <View>\n                          <Text style={[styles.textUppercase]}>ANTIBIOTIC-RESISTANT GENES</Text>\n                        </View>\n                      </View>\n\n                      <View style={[styles.w50]}>\n                        <View>\n                          <Text style={[styles.textUppercase]}>QUALITATIVE RESULTS</Text>\n                        </View>\n                      </View>\n                    </View>\n\n                    {newDiscoveryPathogen.antibioticTests.map((item, index) => (\n                      <View style={[styles.flex]}>\n                        <View style={[styles.flex1]}>\n                          <View style={styles.testField}>\n                            <Text style={[styles.textUppercase]}>{item.name}</Text>\n                          </View>\n                        </View>\n\n                        <View style={[styles.w50]}>\n                          <View style={styles.testField}>\n                            <Text style={[styles.textUppercase]}>{item.parsedResult}</Text>\n                          </View>\n                        </View>\n                      </View>\n                    ))}\n                  </>\n                )}\n              </View>\n            </View>\n          )}\n\n          {!newDiscoveryPathogen && (\n            <>\n              <View style={[styles.section, styles.formWrapper, { marginTop: 15 }]}>\n                <View style={{ ...styles.headingBg }}>\n                  <Text style={styles.cardContent}>TEST RESULTS</Text>\n                </View>\n\n                {sampleDetail &&\n                  test?.testType?.type === \"panel\" &&\n                  sampleDetail.map((item) => {\n                    return (\n                      <View>\n                        <View style={[styles.flex, styles.borderBottomBlack, , styles.borderTop1]}>\n                          <View style={[styles.flex1]}>\n                            <View\n                              style={[\n                                styles.inputGroup,\n                                styles.borderNone,\n                                styles.borderRight1,\n                                styles.borderBottomBlack,\n                              ]}\n                            >\n                              <Text style={[styles.textUppercase, styles.inputLabel, styles.bgTransparent]}>\n                                Test name:\n                              </Text>\n                              <View style={styles.inputField}>\n                                <Text style={{ fontSize: 8 }}>{item.testName}</Text>\n                              </View>\n                            </View>\n                          </View>\n                          <View style={[styles.w50]}>\n                            <View style={[styles.inputGroup, styles.borderNone, styles.borderBottomBlack]}>\n                              <Text style={[styles.textUppercase, styles.inputLabel, styles.bgTransparent]}>Code:</Text>\n                              <View style={styles.inputField}>\n                                <Text style={{ fontSize: 8 }}>&nbsp;</Text>\n                              </View>\n                            </View>\n                          </View>\n                        </View>\n\n                        <View style={[styles.flex]}>\n                          <View style={[styles.flex1, styles.bgDarkGray]}>\n                            <View style={[styles.borderBottomBlack]}>\n                              <View\n                                style={[\n                                  styles.inputGroup,\n                                  styles.borderNone,\n                                  styles.borderRight1,\n                                  styles.borderBottomBlack,\n                                ]}\n                              >\n                                <Text\n                                  style={[\n                                    styles.textUppercase,\n                                    styles.inputLabel,\n                                    styles.bgTransparent,\n                                    { fontSize: 10, fontFamily: \"Helvetica-Bold\" },\n                                  ]}\n                                >\n                                  TARGET/ANALYTE\n                                </Text>\n                              </View>\n                            </View>\n                            <View style={[styles.formWrapper, styles.px5, styles.py5]}>\n                              {item.targetRange.map((trItem) => {\n                                return <Text style={{ fontSize: 8 }}>{trItem?.name || \"\"}</Text>;\n                              })}\n                            </View>\n                          </View>\n                          <View style={[styles.w50, styles.bgDarkGray]}>\n                            <View style={[styles.borderBottomBlack]}>\n                              <View style={[styles.inputGroup, styles.borderNone, styles.borderBottomBlack]}>\n                                <Text\n                                  style={[\n                                    styles.textUppercase,\n                                    styles.inputLabel,\n                                    styles.bgTransparent,\n                                    { fontSize: 10, fontFamily: \"Helvetica-Bold\" },\n                                  ]}\n                                >\n                                  RESULTS\n                                </Text>\n                              </View>\n                            </View>\n                            <View style={[styles.formWrapper, styles.px5, styles.py5]}>\n                              {/* <Text style={{ fontSize: 8 }}>{}</Text>\n                               */}\n                              {item.targetRange.map((trItem) => {\n                                return <Text style={{ fontSize: 8 }}>{showTestResult(trItem.testResult)}</Text>;\n                              })}\n                            </View>\n                          </View>\n                        </View>\n                      </View>\n                    );\n                  })}\n\n                {resultDetails &&\n                  test?.testType?.type !== \"panel\" &&\n                  resultDetails?.map((item) => {\n                    return (\n                      <View>\n                        <View style={[styles.flex, styles.borderBottomBlack, , styles.borderTop1]}>\n                          <View style={[styles.flex1]}>\n                            <View\n                              style={[\n                                styles.inputGroup,\n                                styles.borderNone,\n                                styles.borderRight1,\n                                styles.borderBottomBlack,\n                              ]}\n                            >\n                              <Text style={[styles.textUppercase, styles.inputLabel, styles.bgTransparent]}>\n                                Test name:\n                              </Text>\n                              <View style={styles.inputField}>\n                                <Text style={{ fontSize: 8 }}>{item.name}</Text>\n                              </View>\n                            </View>\n                          </View>\n                          <View style={[styles.w50]}>\n                            <View style={[styles.inputGroup, styles.borderNone, styles.borderBottomBlack]}>\n                              <Text style={[styles.textUppercase, styles.inputLabel, styles.bgTransparent]}>Code:</Text>\n                              <View style={styles.inputField}>\n                                <Text style={{ fontSize: 8 }}>&nbsp;</Text>\n                              </View>\n                            </View>\n                          </View>\n                        </View>\n\n                        <View style={[styles.flex]}>\n                          <View style={[styles.flex1, styles.bgDarkGray]}>\n                            <View style={[styles.borderBottomBlack]}>\n                              <View\n                                style={[\n                                  styles.inputGroup,\n                                  styles.borderNone,\n                                  styles.borderRight1,\n                                  styles.borderBottomBlack,\n                                ]}\n                              >\n                                <Text\n                                  style={[\n                                    styles.textUppercase,\n                                    styles.inputLabel,\n                                    styles.bgTransparent,\n                                    { fontSize: 10, fontFamily: \"Helvetica-Bold\" },\n                                  ]}\n                                >\n                                  TARGET/ANALYTE\n                                </Text>\n                              </View>\n                            </View>\n                            <View style={[styles.formWrapper, styles.px5, styles.py5]}>\n                              <Text style={{ fontSize: 8 }}>{item?.name || \"\"}</Text>\n                            </View>\n                          </View>\n                          <View style={[styles.w50, styles.bgDarkGray]}>\n                            <View style={[styles.borderBottomBlack]}>\n                              <View style={[styles.inputGroup, styles.borderNone, styles.borderBottomBlack]}>\n                                <Text\n                                  style={[\n                                    styles.textUppercase,\n                                    styles.inputLabel,\n                                    styles.bgTransparent,\n                                    { fontSize: 10, fontFamily: \"Helvetica-Bold\" },\n                                  ]}\n                                >\n                                  RESULTS\n                                </Text>\n                              </View>\n                            </View>\n                            <View style={[styles.formWrapper, styles.px5, styles.py5]}>\n                              <Text style={{ fontSize: 8 }}>{showTestResult(item.testResult)}</Text>\n                            </View>\n                          </View>\n                        </View>\n                      </View>\n                    );\n                  })}\n\n                {!resultDetails && (\n                  <View>\n                    <View style={[styles.flex, styles.borderBottomBlack, , styles.borderTop1]}>\n                      <View style={[styles.flex1]}>\n                        <View\n                          style={[styles.inputGroup, styles.borderNone, styles.borderRight1, styles.borderBottomBlack]}\n                        >\n                          <Text style={[styles.textUppercase, styles.inputLabel, styles.bgTransparent]}>\n                            Test name:\n                          </Text>\n                          <View style={styles.inputField}>\n                            <Text style={{ fontSize: 8 }}>{test?.testType?.name || \"\"}</Text>\n                          </View>\n                        </View>\n                      </View>\n                      <View style={[styles.w50]}>\n                        <View style={[styles.inputGroup, styles.borderNone, styles.borderBottomBlack]}>\n                          <Text style={[styles.textUppercase, styles.inputLabel, styles.bgTransparent]}>Code:</Text>\n                          <View style={styles.inputField}>\n                            <Text style={{ fontSize: 8 }}>&nbsp;</Text>\n                          </View>\n                        </View>\n                      </View>\n                    </View>\n\n                    <View style={[styles.flex]}>\n                      <View style={[styles.flex1, styles.bgDarkGray]}>\n                        <View style={[styles.borderBottomBlack]}>\n                          <View\n                            style={[\n                              styles.inputGroup,\n                              styles.borderNone,\n                              styles.borderRight1,\n                              styles.borderBottomBlack,\n                            ]}\n                          >\n                            <Text\n                              style={[\n                                styles.textUppercase,\n                                styles.inputLabel,\n                                styles.bgTransparent,\n                                { fontSize: 10, fontFamily: \"Helvetica-Bold\" },\n                              ]}\n                            >\n                              TARGET/ANALYTE\n                            </Text>\n                          </View>\n                        </View>\n                        <View style={[styles.formWrapper, styles.px5, styles.py5]}>\n                          {<Text style={{ fontSize: 8 }}>{test?.test_type || \"\"}</Text>}\n                        </View>\n                      </View>\n                      <View style={[styles.w50, styles.bgDarkGray]}>\n                        <View style={[styles.borderBottomBlack]}>\n                          <View style={[styles.inputGroup, styles.borderNone, styles.borderBottomBlack]}>\n                            <Text\n                              style={[\n                                styles.textUppercase,\n                                styles.inputLabel,\n                                styles.bgTransparent,\n                                { fontSize: 10, fontFamily: \"Helvetica-Bold\" },\n                              ]}\n                            >\n                              RESULTS\n                            </Text>\n                          </View>\n                        </View>\n                        <View style={[styles.formWrapper, styles.px5, styles.py5]}>\n                          {/* <Text style={{ fontSize: 8 }}>{}</Text>\n                           */}\n                          <Text style={{ fontSize: 8 }}>{test?.result || \"\"}</Text>\n                        </View>\n                      </View>\n                    </View>\n                  </View>\n                )}\n              </View>\n            </>\n          )}\n\n          <View>\n            <View style={[styles.flex, styles.headingBgSubtest, styles.commentSection]}>\n              <View style={[styles.flex1]}>\n                <View>\n                  <Text style={[styles.textUppercase]}>Comments</Text>\n                </View>\n              </View>\n            </View>\n\n            <View style={[styles.flex, styles.minHeight100]}>\n              <View style={[styles.flex1]}>\n                <View style={styles.testField}>\n                  <Text style={[styles.textUppercase]}> {employee_demographics?.comments || \"\"}</Text>\n                </View>\n              </View>\n            </View>\n          </View>\n\n          {newDiscoveryPathogen && (\n            <View style={{ flexDirection: \"column\", marginTop: 10, marginBottom: 40 }}>\n              <Text>Test results must be evaluated with clinical symptoms to diagnose disease.</Text>\n              <Text>\n                Methodology statement: Real-time PCR assays are designed to detect pathogens with clinical significance\n                and analytical sensitivity and specificity greater than 99%\n              </Text>\n              <Text>\n                Limitations: While these assays are very sensitive and specific, theoretically these assays could detect\n                pathogens not listed, resulting in a false positive. In addition, while these assays are very specific,\n                there may be target pathogen sequences with unknown sequence variability which may not be detected,\n                resulting in a false negative result.\n              </Text>\n              <Text style={{ fontSize: 8, marginTop: \"10px\" }}>\n                <Text style={{ fontFamily: \"Helvetica-Bold\", fontSize: 10 }}>Disclaimer:</Text>\n                Laboratory Developed Test (LTD). This test was developed and its performance characteristics determined\n                by New Discovery Laboratories. It has not been cleared or approved by the U.S. Food and Drug\n                Administration. The FDA has determined that such clearance or approval is not necessary. This test is\n                used for clinical purposes. It should not be regarded as investigational or for research. This\n                laboratory is certified under the Clinical Laboratory Improvement Amendments of 1988 (CLIA-88) as\n                qualified to perform high complexity clinical laboratory testing.{\" \"}\n              </Text>\n            </View>\n          )}\n\n          {!newDiscoveryPathogen && (\n            <View style={{ flexDirection: \"column\", marginTop: 15, marginBottom: 40 }}>\n              <Text style={{ fontSize: 8 }}>\n                <Text style={{ fontFamily: \"Helvetica-Bold\" }}>Disclaimer:</Text>\n                Test results must be evaluated with clinical symptoms to diagnose disease\n              </Text>\n              <Text style={{ fontSize: 8 }}>\n                All assays are FDA approved and/or cleared, unless specified otherwise.\n              </Text>\n            </View>\n          )}\n\n          <View style={styles.flex}>\n            <View style={[styles.flex1, styles.mr10]}>\n              <View\n                style={[\n                  styles.bgDarkGray,\n                  styles.borderBottomBlack,\n                  { paddingHorizontal: \"5px\", paddingVertical: \"10px\" },\n                ]}\n              >\n                <Text style={{ fontSize: 8 }}>{`${demos?.firstName} ${demos?.lastName}`}</Text>\n              </View>\n              <Text style={[styles.textUppercase, { fontSize: 8, paddingTop: 3 }]}>patient name:</Text>\n            </View>\n            <View style={[styles.w50]}>\n              <View\n                style={[\n                  styles.bgDarkGray,\n                  styles.borderBottomBlack,\n                  { paddingHorizontal: \"5px\", paddingVertical: \"10px\" },\n                ]}\n              >\n                <Text style={{ fontSize: 8 }}>{test?.barcode}</Text>\n              </View>\n              <Text style={[styles.textUppercase, { fontSize: 8, paddingTop: 3 }]}>accession:</Text>\n            </View>\n          </View>\n\n          <View style={{ paddingTop: 5 }}>\n            <View style={[styles.flex, styles.justifyBetween]}>\n              <Text style={{ fontSize: 6, color: \"#141958\" }}>© New Discovery Laboratories</Text>\n              <Text style={{ fontSize: 6, color: \"#141958\" }}>VERSION 1.0.3</Text>\n            </View>\n          </View>\n        </View>\n      </Page>\n    </Document>\n  );\n};\n\nconst styles = StyleSheet.create({\n  body: {\n    // padding: 10,\n    margin: 0,\n    padding: 0,\n    fontSize: 10,\n    lineHeight: 1.3,\n  },\n\n  // reusable style\n  borderNone: {\n    border: 0,\n  },\n  borderBottomBlack: {\n    borderBottom: 1,\n    borderBottomColor: \"#333\",\n    borderBottomStyle: \"solid\",\n  },\n\n  borderRight1: {\n    borderRight: 1,\n    borderRightColor: \"#333\",\n    borderRightStyle: \"solid\",\n  },\n  borderTop1: {\n    borderTop: 1,\n    borderTopColor: \"#333\",\n    borderTopStyle: \"solid\",\n  },\n  flex: {\n    display: \"flex\",\n    flexDirection: \"row\",\n  },\n  flexVerticalenter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n  },\n  itemsStart: {\n    alignItems: \"flex-start\",\n  },\n  itemsCenter: {\n    alignItems: \"center\",\n  },\n  itemsEnd: {\n    alignItems: \"flex-end\",\n  },\n  justifyStart: {\n    justifyContent: \"flex-start\",\n  },\n  justifyCenter: {\n    justifyContent: \"center\",\n  },\n  justifyBetween: {\n    justifyContent: \"space-between\",\n  },\n  justifyEnd: {\n    justifyContent: \"flex-end\",\n  },\n  flex1: {\n    flex: 1,\n  },\n  flex40: {\n    flex: \"0 0 40%\",\n  },\n  px5: {\n    paddingHorizontal: 5,\n  },\n  py5: {\n    paddingVertical: 5,\n  },\n  w50: {\n    width: \"50%\",\n  },\n  w30: {\n    width: \"30%\",\n  },\n  w40: {\n    width: \"40%\",\n  },\n  w20: {\n    width: \"20%\",\n  },\n  w80: {\n    width: \"80%\",\n  },\n  w100: {\n    width: \"100%\",\n  },\n  mb3: {\n    marginBottom: 3,\n  },\n  mb4: {\n    marginBottom: 4,\n  },\n  mb10: {\n    marginBottom: 10,\n  },\n  mb15: {\n    marginBottom: 15,\n  },\n  mb44: {\n    marginBottom: 34,\n  },\n  mb50: {\n    marginBottom: 50,\n  },\n  pt8: {\n    paddingTop: 8,\n  },\n  mr5: {\n    marginRight: 5,\n  },\n  mr10: {\n    marginRight: 10,\n  },\n  p5: {\n    padding: 5,\n  },\n  mx8: {\n    marginHorizontal: 8,\n  },\n  text10: {\n    fontSize: 10,\n  },\n  text12: {\n    fontSize: 12,\n  },\n  textPrimary: {\n    color: \"#02247b\",\n  },\n  bgWhite: {\n    backgroundColor: \"#fff\",\n  },\n  bgBlue600: {\n    backgroundColor: \"#e6f9ff\",\n  },\n  bgTransparent: {\n    backgroundColor: \"transparent\",\n  },\n\n  textUppercase: {\n    textTransform: \"uppercase\",\n  },\n  bgDarkGray: {\n    backgroundColor: \"#f1f3ff\",\n  },\n  // other styles\n  header: {\n    padding: 10,\n    textAlign: \"center\",\n  },\n  headerTop: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n  },\n  logo: {\n    width: 160,\n  },\n  contactInfo: {\n    textAlign: \"left\",\n    fontSize: 10,\n    color: \"#02247b\",\n    lineHeight: 1,\n    marginBottom: 0,\n  },\n  contactInfoIcons: {\n    width: 12,\n    objectFit: \"contain\",\n    marginRight: 5,\n    marginBottom: 0,\n  },\n  formTitle: {\n    margin: 0,\n    color: \"#141958\",\n    fontSize: 18,\n    fontWeight: \"bold\",\n  },\n  headerBottom: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"flex-start\",\n    paddingTop: 10,\n  },\n  address: {\n    width: 245,\n    fontSize: 10,\n    fontWeight: \"700\",\n    color: \"#141958\",\n    letterSpacing: 1,\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"flex-start\",\n    marginRight: 8,\n  },\n  licInfo: {\n    fontSize: 10,\n    color: \"#141958\",\n    fontWeight: \"700\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n  },\n  formWrapper: {\n    backgroundColor: \"#e6f8fd\",\n  },\n\n  section: {\n    borderWidth: 1,\n    borderStyle: \"solid\",\n    borderColor: \"#333\",\n  },\n\n  headingBg: {\n    backgroundColor: \"#02247b\",\n    paddingVertical: 4,\n    paddingHorizontal: 10,\n    color: \"#fff\",\n    width: \"100%\",\n    textAlign: \"center\",\n    flexDirection: \"row\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n  },\n\n  headingBgSubtest: {\n    backgroundColor: \"#f1f3ff\",\n    paddingVertical: 4,\n    paddingHorizontal: 10,\n    color: \"#000000\",\n    width: \"100%\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n  },\n\n  minHeight100: {\n    minHeight: \"100px\",\n    backgroundColor: \"#e6f8fd\",\n    border: \"1px solid black\",\n  },\n\n  commentSection: {\n    borderLeft: \"1px solid Black\",\n    borderRight: \"1px solid Black\",\n  },\n\n  borderBottom: {\n    borderBottom: \"1px solid black\",\n  },\n  borderTop: {\n    borderTop: \"1px solid black\",\n  },\n\n  cardContent: {\n    fontSize: 10,\n    fontWeight: \"700\",\n    textAlign: \"center\",\n  },\n  inputGroup: {\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"row\",\n    borderStyle: \"solid\",\n    borderColor: \"#333\",\n    borderWidth: 1,\n    boxSizing: \"border-box\",\n    borderBottom: 0,\n  },\n  inputLabel: {\n    fontSize: 8,\n    padding: \"6px 5px\",\n    color: \"#141958\",\n    fontWeight: \"bold\",\n    backgroundColor: \"#fff\",\n    width: \"auto\",\n  },\n\n  inputField: {\n    width: \"100%\",\n    fontSize: 8,\n    padding: \"6px 5px\",\n    backgroundColor: \"transparent\",\n    overflow: \"hidden\",\n    flexGrow: 1,\n  },\n\n  testField: {\n    width: \"100%\",\n    fontSize: 8,\n    padding: \"3px 5px\",\n    backgroundColor: \"transparent\",\n    overflow: \"hidden\",\n    flexGrow: 1,\n  },\n\n  labelSpan: {\n    fontSize: 6,\n    fontWeight: \"normal\",\n  },\n});\n\nexport default LabReportSisterPirerrePdf;\n","import React, { useContext, useMemo } from \"react\";\nimport { Button, Container, Row, Col, Card } from \"react-bootstrap\";\nimport { PDFViewer } from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport BiolabPdf from \"components/BiolabPdf\";\nimport AltaPdf from \"components/AltaPdf\";\nimport { AppContext } from \"../../context/app-context\";\nimport API from \"api\";\nimport { CONFIG, LAB_ID } from \"constant\";\nimport { parseTestResultForPDF } from \"utils\";\nimport LabReportSisterPirerrePdf from \"components/LabReportSisterPierrePdf\";\nimport { isLocalhost } from \"utils\";\n\nconst PDFLayout = (props) => {\n  const { testPdf, testsLab, setShowPdf } = props;\n  const appContext = useContext(AppContext);\n\n  const loadPDF = () => {\n    // const LAB_ID_TEST = \"b63c398e-dc3f-412c-871e-ad89a94ddb0e\";\n    const LAB_ID_TEST = \"b63c398e-dc3f-412c-871e-ad89a94ddb00\";\n\n    const { labID, site } = testPdf;\n\n    if (isLocalhost()) {\n      return (\n        <LabReportSisterPirerrePdf\n          test={testPdf}\n          testsLab={testsLab}\n          parseTestResultForPDF={appContext?.parseTestResultForPDF || parseTestResultForPDF}\n          site={site}\n        />\n      );\n    }\n\n    if (!CONFIG.isWhiteLabel || !labID) {\n      return (\n        <PDF\n          test={testPdf}\n          testsLab={testsLab}\n          parseTestResultForPDF={appContext?.parseTestResultForPDF || parseTestResultForPDF}\n        />\n      );\n    }\n\n    if (labID === LAB_ID.alta || labID === LAB_ID.caliber || labID === LAB_ID_TEST) {\n      return (\n        <AltaPdf\n          test={testPdf}\n          testsLab={testsLab}\n          parseTestResultForPDF={appContext?.parseTestResultForPDF || parseTestResultForPDF}\n          site={site}\n        />\n      );\n    }\n    if (labID === LAB_ID.seroclinix) {\n      return (\n        <SerolinixPdf\n          test={testPdf}\n          testsLab={testsLab}\n          parseTestResultForPDF={appContext?.parseTestResultForPDF || parseTestResultForPDF}\n          site={site}\n        />\n      );\n    }\n\n    if (labID === LAB_ID.discovery) {\n      return (\n        <LabReportSisterPirerrePdf\n          test={testPdf}\n          testsLab={testsLab}\n          parseTestResultForPDF={appContext?.parseTestResultForPDF || parseTestResultForPDF}\n          site={site}\n        />\n      );\n    }\n\n    // return (\n    //   <LabReportPrattPdf\n    //     test={testPdf}\n    //     testsLab={testsLab}\n    //     parseTestResultForPDF={appContext?.parseTestResultForPDF || parseTestResultForPDF}\n    //     site={site?.resultTemplate === \"covid\" ? site : null}\n    //   />\n    // );\n\n    return (\n      <BiolabPdf\n        test={testPdf}\n        testsLab={testsLab}\n        parseTestResultForPDF={appContext?.parseTestResultForPDF || parseTestResultForPDF}\n        site={site?.resultTemplate === \"covid\" ? site : null}\n      />\n    );\n  };\n\n  return (\n    <Container fluid>\n      <Row>\n        <Col md=\"12\">\n          <Card className=\"strpied-tabled-with-hover\" style={{ padding: 20, marginLeft: \"auto\", marginRight: \"auto\" }}>\n            <Card.Header>\n              <Row style={{ alignItems: \"center\" }}>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Test Results - {testPdf ? testPdf.name : \"\"}\n                </Card.Title>\n                <Button\n                  style={{\n                    marginTop: 10,\n                  }}\n                  className=\"createButtons\"\n                  onClick={() => setShowPdf(false)}\n                >\n                  Close\n                </Button>\n              </Row>\n            </Card.Header>\n            <Card.Body className=\"pdfContainer px-0\">\n              <PDFViewer className=\"pdfView\">{loadPDF()}</PDFViewer>\n            </Card.Body>\n          </Card>\n        </Col>\n      </Row>\n    </Container>\n  );\n};\n\nexport default PDFLayout;\n","import React from \"react\";\n\nconst RadioButton = (props) => {\n  const { id, label, name, checked, handleRadioButtonChange, value, disabled, cssClass } = props;\n  return (\n    <div className={`radio-button-wrapper ${cssClass ?? \"\"}`}>\n      <input\n        value={value}\n        type=\"radio\"\n        name={name}\n        id={id}\n        disabled={disabled}\n        checked={checked}\n        onChange={(e) => handleRadioButtonChange(e)}\n      />\n      <label className=\"mb-0\" htmlFor={id}>\n        {label}\n      </label>\n    </div>\n  );\n};\n\nexport default RadioButton;\n","import React from \"react\";\nimport RadioButton from \"../RadioButton/RadioButton\";\n\nconst RadioInput = (props) => {\n  const { options, label, input, handleRadioButtonChange, disabled } = props;\n  return (\n    <div className=\"form-group-wrapper mt-3\">\n      {label && <label className=\"status\">{label}</label>}\n      <div className=\"d-flex column-gap-50 align-items-center\">\n        {options.map((m, index) => (\n          <RadioButton\n            id={m.id}\n            label={m.label}\n            disabled={disabled}\n            name={m.name}\n            checked={input === m.value}\n            value={m.value}\n            handleRadioButtonChange={handleRadioButtonChange}\n            key={`radio_${index}`}\n          />\n        ))}\n      </div>\n    </div>\n  );\n};\n\nexport default RadioInput;\n","import React, { useState } from \"react\";\nimport Styles from \"./FilledCheckBox.module.css\";\n\nconst FilledCheckBox = (props) => {\n  const { id, label, isChecked, handleChange, disabled, cssClass } = props;\n\n  return (\n    <div className={cssClass ? cssClass : `${Styles.filledCheckBox}  `}>\n      <input\n        id={id}\n        className={`${Styles.checkbox}`}\n        type=\"checkbox\"\n        checked={isChecked}\n        onChange={handleChange}\n        disabled={disabled}\n      />\n      <label htmlFor={id} className={`${Styles.customLabel}`}>\n        <span className={`checkbox ${isChecked ? \"checkbox--active\" : \"\"}`} />\n        <span>{label}</span>\n      </label>\n    </div>\n  );\n};\nexport default FilledCheckBox;\n","import React from \"react\";\nimport FilledCheckBox from \"components/CheckBox/FilledCheckBox/FilledCheckBox\";\n\nconst CheckBoxInput = (props) => {\n  const { options, label, input, handleButtonChange, disabled, cssClass = \"\" } = props;\n  const handleChange = (e, m) => {\n    let arr = input?.split(\",\");\n    if (e.target.checked) {\n      arr.push(m.value);\n    } else {\n      arr = arr.filter((f) => f !== m.value);\n    }\n    arr = arr.filter(Boolean);\n    handleButtonChange(arr.length > 0 ? arr.join(\",\") : \"\");\n  };\n  return (\n    <>\n      <div className=\"form-group-wrapper mt-3\">\n        {label && <label className=\"status\">{label}</label>}\n        <div className=\"py-1 checkbox-list\">\n          {options.map((m, ind) => (\n            <FilledCheckBox\n              label={m.label}\n              disabled={disabled}\n              id={m.id}\n              isChecked={input?.includes(m.value)}\n              handleChange={(e) => handleChange(e, m)}\n              cssClass={cssClass}\n              key={ind}\n            />\n          ))}\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default CheckBoxInput;\n","import React, { useEffect, useState, useContext, useMemo } from \"react\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport editIcon from \"../assets/img/edit-icon.svg\";\nimport profileImageDefault from \"../assets/img/default_profile.png\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\n// react-bootstrap components\nimport { Button, Card, Form, Container, Row, Col, Modal } from \"react-bootstrap\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport API from \"api\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport Select from \"react-select\";\nimport { AppContext } from \"../context/app-context\";\nimport { PDFViewer } from \"@react-pdf/renderer\";\nimport RequisitionPDF from \"components/RequisitionPDF\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport QrCodeDownloadIcon from \"assets/img/qr-code-rounded.svg\";\nimport { Bounce } from \"react-activity\";\nimport {\n  TEST_TYPE_VALUE,\n  countryListAllIsoData,\n  IMAGE_UPLOAD_TYPE,\n  PROFILE_IMAGE_PATH,\n  TEST_EMPTY_OBJECT,\n  RESULT_COLOR,\n  externalTypesOptions,\n} from \"constant\";\nimport {\n  getDemoGraphics,\n  formatZip,\n  formatTest,\n  isValidPhone,\n  setPhoneNo,\n  formatPhoneNumber,\n  formatDateOfBirthDOB,\n  phoneFormatter,\n  formatQuaratineDisplayDate,\n  parseTestType,\n  FormatAWSDate,\n  isValidName,\n  isValidPhoneWithCode,\n  isValidIdNum,\n  getValidName,\n  convertToLower,\n  isValidZipCode,\n  validSpace,\n  convertToUpper,\n  getPhoneNo,\n  isValidEmail,\n  connectedIDByURL,\n  ChangeObject,\n  formatPhoneWithOutSpaces,\n  qrResponseJOSN,\n} from \"../utils\";\nimport \"react-activity/dist/Bounce.css\";\nimport { Storage } from \"aws-amplify\";\nimport ImageView from \"components/Image/ImageView\";\nimport ReactPDF from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport moment from \"moment\";\nimport QuarantineModal from \"components/Modal/QuarantineModal\";\nimport EditTestDetailsModal from \"components/Modal/EditTestDetailsModal\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport \"react-tabs/style/react-tabs.css\";\nimport Loader from \"../components/Loader/Loader\";\nimport TestModal from \"components/Modal/TestModal\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport { stringConstant } from \"constant\";\nimport { CONFIG } from \"constant\";\nimport { QRCode } from \"react-qrcode-logo\";\nimport gqApi from \"./GraphQL/gqApi\";\nimport BioLabRequisitionPDF from \"components/BioLabRequisitionPDF\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport RadioInput from \"components/RadioInput/RadioInput\";\nimport { SYMPTOMS_OPT } from \"constant\";\nimport CheckBoxInput from \"components/CheckBoxInput/CheckBoxInput\";\nimport { UN_RESULT } from \"constant\";\n\nfunction Test(props) {\n  const location = useLocation();\n  const history = useHistory();\n  const { state } = location;\n  const [test, setTest] = useState();\n  const [site, setSite] = useState();\n  const [lab, setLab] = useState();\n  const [siteContactPhone, setSiteContactPhone] = useState();\n  const [demographics, setDemographics] = useState();\n  const [showAlert, setShowAlert] = useState(false);\n  const [modalShow, setModalShow] = useState(false);\n  const [releaseTo, setReleaseTo] = useState([]);\n  const [showPDF, setShowPDF] = useState();\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdfResult, setShowPdfResult] = useState(false);\n  const [signature, setSignature] = useState();\n  const [loading, setLoading] = useState(false);\n  const [hippaConsent, setHippaConsent] = useState(false);\n  const [showImages, setShowImages] = useState(null);\n  const [showSubmitAlert, setShowSubmitAlert] = useState(false);\n  const [editButton, setEditButton] = useState(true);\n  const [editInfo, setEditInfo] = useState();\n  const [Employee, setEmployee] = useState({});\n  const [error, setError] = useState(\"\");\n  const [openQuarantined, setOpenQuaratined] = useState(false);\n  const [allowToEditQuarantine, setAllowToEditQuarantine] = useState(false);\n  const [openDataChangeConfirmation, setOpenDataChangeConfirmation] = useState(false);\n  const [changeBarcodeConfirmation, setChangeBarcodeConfirmation] = useState(false);\n  const [patternConsent, setPatternConsent] = useState(false);\n  const [phoneError, setPhoneError] = useState(\"\");\n  const [vaccinationImage, setVaccinationImage] = useState(\"\");\n  const [externalTestImage, setExternalTestImage] = useState(\"\");\n  const [showResult, setShowResult] = useState(false);\n  const [changeData, setchangeData] = useState({});\n  const [changeDataCheck, setchangeDataCheck] = useState(true);\n  const appContext = useContext(AppContext);\n  const [profileImage, setProfileImage] = useState(profileImageDefault);\n  const [openTestDetail, setOpenTestDetail] = useState(false);\n  const [users, setUsers] = useState([]);\n  //\n  const [openCreator, setOpenCreator] = useState(false);\n  const [newTestCreate, setTestCreate] = useState(_.cloneDeep(TEST_EMPTY_OBJECT));\n  const [selectedTest, setSelectedTest] = useState(test);\n  const [labs, setLabs] = useState([]);\n  const [resultTypes, setResultTypes] = useState([]);\n\n  const hideAlert = () => {\n    props.history.push(\"/admin/pendingrelease\");\n    setShowAlert(false);\n  };\n\n  const handleCloseTestDetail = () => {\n    setOpenTestDetail(false);\n  };\n\n  const handleSaveTestDetail = async (test) => {\n    try {\n      setLoading(true);\n      const testData = await API.updateTestData(test);\n      setDemographics(getDemoGraphics(testData));\n      setEditInfo(testData);\n      setTest(testData);\n      setEmployee(getDemoGraphics(testData));\n      setEditButton(true);\n      switch (location?.state?.type) {\n        case \"pendingRelease\":\n          appContext.resetPendingTests();\n          break;\n        case \"inconclusiveTest\":\n          appContext.resetInvalidTests();\n          break;\n      }\n      appContext.showSuccessMessage(\"Test updated Successfully\");\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error:-\", err.message);\n    }\n  };\n\n  const getUserFromLocalDB = async () => {\n    let getUserDAta = await API.getUserFromLocalDB();\n    setUsers(getUserDAta);\n  };\n\n  const usersData = useMemo(() => {\n    if (!users) return;\n    return users\n      .filter((u) => u.roles?.includes(\"Tester\") || u.roles?.includes(\"Admin\"))\n      .map((u) => {\n        return {\n          value: u.userID,\n          label: `${u.firstName} ${u.lastName}`,\n          phone_number: u.phone_number?.replace(/ /g, \"\"),\n        };\n      });\n  }, [users]);\n\n  const getSelectedTester = (onChangeTesterData) => {\n    setTestCreate({\n      ...newTestCreate,\n      createdBy: onChangeTesterData.value,\n      tester_name: onChangeTesterData.label,\n      testerPhone: onChangeTesterData.phone_number,\n    });\n  };\n\n  const getSiteOptions = useMemo(() => {\n    if (!newTestCreate.clientID) return [];\n    return appContext.sites\n      ?.filter((s) => s.clientID === newTestCreate.clientID)\n      .map((l) => {\n        return { value: l.id, label: l.name };\n      });\n  }, [newTestCreate.clientID]);\n\n  const triggerNewData = (data) => {\n    const {\n      match: { params },\n      location: { state },\n    } = props;\n    if (data.id === state?.test?.id || data.id === params.testId) {\n      if (!editButton) {\n        setchangeData(data);\n        setOpenDataChangeConfirmation(true);\n      } else {\n        setEditInfo(data);\n        setDemographics(getDemoGraphics(data));\n        setEmployee(getDemoGraphics(data));\n        setTest(data);\n      }\n    } else {\n      return;\n    }\n  };\n\n  const downloadQRCode = () => {\n    const canvas = document.getElementById(\"qr-gen-view\");\n    const pngUrl = canvas.toDataURL(\"image/png\").replace(\"image/png\", \"image/octet-stream\");\n    let downloadLink = document.createElement(\"a\");\n    downloadLink.href = pngUrl;\n    downloadLink.download = Employee ? `${Employee.firstName} ${Employee.lastName}.png` : `QRCode.png`;\n    document.body.appendChild(downloadLink);\n    downloadLink.click();\n    document.body.removeChild(downloadLink);\n  };\n\n  // SETTING UP LISTNER\n  useEffect(() => {\n    console.log(\" SETTING UP LISTNER\");\n    if (changeDataCheck && appContext?.testObject && appContext.testObject?.opType === \"UPDATE\") {\n      triggerNewData(appContext.testObject.element);\n    }\n  }, [appContext?.testObject]);\n\n  useEffect(() => {\n    getUserFromLocalDB();\n  }, []);\n\n  useEffect(() => {\n    if (appContext?.clients?.length > 0) {\n      const client = appContext.clients.find((f) => f.id === CONFIG.clientID);\n      if (client && client.resultTypes) {\n        setResultTypes([\n          ...(client.resultTypes.results.map((m) => ({ value: m, label: m })) || []),\n          { value: UN_RESULT, label: UN_RESULT },\n        ]);\n      }\n    }\n  }, [appContext.clients]);\n\n  useEffect(() => {\n    if (appContext.labs instanceof Array) {\n      setLabs(appContext.labs);\n    } else if (appContext.labs instanceof Object) {\n      setLabs([appContext.labs]);\n    }\n    setSite(appContext.sites);\n  }, [appContext.sites, appContext.labs]);\n\n  // SETTING UP LISTNER\n  useEffect(() => {\n    if (changeDataCheck && appContext?.eventObject && appContext.eventObject?.opType === \"UPDATE\") {\n      triggerNewData(appContext.eventObject.element);\n    }\n  }, [appContext?.eventObject]);\n\n  const parseSrNoObjectRecviedDate = (test) => {\n    try {\n      const arr = JSON.parse(test.sr_no);\n      let dateOfReceive = arr[0]?.date;\n      if (dateOfReceive && formatDOB(dateOfReceive) === formatDOB(test.createdAt)) {\n        dateOfReceive = moment(arr[0]?.date).add(\"30\", \"minutes\").toISOString();\n      }\n      return dateOfReceive;\n    } catch (error) {\n      return null;\n    }\n  };\n\n  const handleDataChangeConfirm = async (isConfirm) => {\n    if (isConfirm) {\n      setOpenDataChangeConfirmation(false);\n      setEditInfo(changeData);\n      setDemographics(getDemoGraphics(changeData));\n      setEmployee(getDemoGraphics(changeData));\n      setTestCreate(changeData);\n      setTest(changeData);\n    } else {\n      setOpenDataChangeConfirmation(false);\n    }\n  };\n\n  const handleChangeBarcodeNo = async (isConfirm) => {\n    console.log(\"isConfirm\", isConfirm);\n    setChangeBarcodeConfirmation(false);\n    if (isConfirm) {\n      const res = await gqApi.validateAccessionNo(newTestCreate);\n\n      if (!res) {\n        appContext.showErrorMessage(`Accession No. ${newTestCreate.barcode} is already assigned. Please use the other`);\n      } else {\n        handleSave(true);\n      }\n    } else {\n      handleSave(false);\n    }\n  };\n\n  const getTest = async (id) => {\n    try {\n      setLoading(true);\n      const model = await API.getRecordById(id, \"test\");\n      setEditInfo(model[0]);\n      setDemographics(getDemoGraphics(model[0]));\n      setEmployee(getDemoGraphics(model[0]));\n      setTest(model[0]);\n      setSelectedTest(model[0]);\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Error:-\", err.message);\n    }\n  };\n\n  const {\n    match: { params },\n  } = props;\n\n  useEffect(async () => {\n    setLoading(true);\n    const {\n      match: { params },\n      location: { state },\n    } = props;\n\n    if (state?.test?.id) {\n      getTest(state?.test?.id);\n    } else {\n      if (params.testId) {\n        getTest(params.testId);\n      } else {\n        //If location state is undefined then check the local stoarge for the test state and getTest from its id\n        // let storagedata = JSON.parse(localStorage.getItem(\"state\"));\n        // if(storagedata != \"\"){\n        //   await getTest(storagedata?.test?.id);\n        //   localStorage.removeItem(\"state\");\n        // }\n        let testID = connectedIDByURL(window.location.pathname);\n        console.log(\"testID From getConnectedID: \", testID);\n        if (testID?.testID != \"\") {\n          await getTest(testID.testID);\n        }\n      }\n    }\n  }, []);\n\n  useEffect(() => {\n    if (appContext.user) setAllowToEditQuarantine(appContext.user.isSite() || appContext.user.isClient());\n  }, [appContext.user]);\n\n  const getFileFromStorage = async (file, setImage) => {\n    if (file) {\n      try {\n        const path = await Storage.get(file);\n        setImage(path);\n        console.log(\"path\", path);\n        return true;\n      } catch {\n        console.log(\"Image loading fail\");\n      }\n    } else {\n      return false;\n    }\n  };\n\n  useEffect(async () => {\n    if (test?.employeeID) {\n      setLoading(true);\n      let models = await API.getRecordById(test.employeeID, \"employee\");\n      let vacinatedFilePath = models[0]?.vaccinationCardImage;\n      let externalTestFilePath = models[0]?.externalTestImage;\n      let profileImageFilePath = models[0]?.profileImage;\n      let autoRelease = models[0]?.autoRelease || models[0]?.autoRelease == \"1\" ? true : false;\n      // console.log(\"autoRelease\", autoRelease);\n      setEmployee({\n        ...Employee,\n        vaccinationCardImage: vacinatedFilePath,\n        externalTestImage: externalTestFilePath,\n        autoRelease,\n      });\n      if (externalTestFilePath) {\n        let getExternalTestImage = await API.getFileExternalStorage(externalTestFilePath);\n        setExternalTestImage(getExternalTestImage);\n      }\n\n      if (profileImageFilePath) {\n        let getProfileImage = await API.getFileProfileStorage(profileImageFilePath);\n        setProfileImage(getProfileImage);\n      }\n\n      if (vacinatedFilePath) {\n        let getVacinationCardImage = await API.getFileExternalStorage(vacinatedFilePath);\n        setVaccinationImage(getVacinationCardImage);\n      }\n      setLoading(false);\n    }\n  }, [test?.employeeID]);\n\n  useEffect(() => {\n    if (editInfo && editInfo.employee_demographics) {\n      const emp = getDemoGraphics(editInfo);\n      const list = countryListAllIsoData.find((f) => f.name === emp.country) || { code: \"US\" };\n      setEmployee(emp);\n      setTestCreate({ ...editInfo, employee_demographics: emp });\n      setDemographics({ ...emp, isoCode: list.code });\n    }\n  }, [editInfo]);\n\n  useEffect(() => {\n    const getSite = async (id) => {\n      const model = await API.findSiteByID(id);\n      model.length > 0 && setSite(model[0]);\n    };\n\n    // console.log(\"pendingRelease\", appContext.pendingTests);\n    const getSignature = async (test) => {\n      /* const hippaRecord = await API.findHippaConsent(test.employeeID, test.siteID);\n      console.log(\"Hippa Record\", hippaRecord);\n      const isHippaConsent = true; */\n      const imgObject = [];\n\n      try {\n        const siteID = test.baseSiteID || test.siteID;\n        const fileName = `${siteID}&&${test.employeeID}&&sig.png`;\n        const sigt = await Storage.get(fileName);\n        setSignature(sigt);\n        imgObject.push({ title: \"HIPAA Consent\", isHIPPA: true, imgSrc: sigt });\n\n        const sig = await Storage.get(`${test.employeeID}&&${siteID}&&ins-f.jpeg`);\n        if (sig) imgObject.push({ title: \"Insurance Card Front\", isHIPPA: false, imgSrc: sig });\n        const sig1 = await Storage.get(`${test.employeeID}&&${siteID}&&ins-b.jpeg`);\n        if (sig1) imgObject.push({ title: \"Insurance Card Back\", isHIPPA: false, imgSrc: sig1 });\n      } catch (error) {\n        console.log(\"Image Error\", error);\n      }\n\n      if (imgObject.length > 0) {\n        setShowImages(imgObject);\n      }\n      setHippaConsent(true);\n    };\n\n    if (test) {\n      setSite(getSite(test.siteID));\n      //appContext.getLab(test).then((resp) => setLab(resp));\n      getSignature(test);\n    }\n\n    setLoading(false);\n  }, [test]);\n\n  useEffect(() => {\n    site && setSiteContactPhone(site.contact_phone);\n  }, [site]);\n\n  function calculate_age(dob) {\n    const val = formatDateOfBirthDOB(dob);\n    const years = moment().diff(val, \"years\", false);\n    return years;\n  }\n\n  const captalizeFirst = (string) => {\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  };\n\n  const formatIDNo = () => {\n    if (calculate_age(demographics?.dob) < 18) {\n      const id = demographics?.idNumber;\n      if (id && id.length > 5) {\n        return `${id.substring(0, 3)}-${id.substring(3, 5)}-${id.substring(5)}`;\n      }\n      if (id && id.length > 3) {\n        return `${id.substring(0, 3)}-${id.substring(3)}`;\n      }\n      return demographics?.idNumber;\n    }\n    return demographics?.idNumber;\n  };\n\n  const showSubmitButton = () => {\n    if (!test) return true;\n    const st = test.status.toLowerCase();\n    if (st === \"new\") return true;\n    if (st === \"pending\" && !test.result) return true;\n    return false;\n  };\n  const ImageUpload = async (fileName, image) => {\n    if (image instanceof Object) {\n      await Storage.put(fileName, image);\n      return fileName;\n    } else {\n      return \"\";\n    }\n  };\n\n  const displayPdf = async (test) => {\n    if (!test.result) return;\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdfResult(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const handleSave = async (isConfirm) => {\n    let phoneNo = \"\";\n    let countryCode = \"\";\n    if (!Employee) return;\n    if (!Employee.firstName) {\n      setError(\"First name is required\");\n      return;\n    }\n    if (!isValidName(Employee.firstName)) {\n      setError(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!Employee.lastName) {\n      setError(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(Employee.lastName)) {\n      setError(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n\n    if (!Employee.email) {\n      setError(\"Email name is required\");\n      return;\n    }\n    if (!isValidEmail(Employee.email)) {\n      setError(\"Invalid Email\");\n      return;\n    }\n\n    if (!Employee.phoneNumber) {\n      setError(\"Phone name is required\");\n      return;\n    }\n\n    // FOR PHONE CHECK COUTRY CODE FOR INTERNATIONAL RECORD VERIFICATION\n    const phone = formatPhoneNumberIntl(Employee.phoneNumber);\n    const phoneArr = phone.split(\" \");\n    // check Country code exist\n\n    if (phoneArr[0].includes(\"+\")) {\n      let [cc, pNo] = getPhoneNo(Employee.phoneNumber, phoneArr[0]);\n      phoneNo = pNo;\n      countryCode = cc;\n    } else {\n      phoneNo = Employee.phoneNumber;\n      countryCode = Employee.countryCode ? Employee.countryCode : \"+1\";\n    }\n\n    if (phoneError || !isValidPhoneWithCode(`${countryCode}${phoneNo}`)) {\n      setError(\"Invalid Phone Number\");\n      return;\n    }\n    if (!Employee.dob) {\n      setError(\"DOB is required\");\n      return;\n    }\n    if (Employee.dob === \"Invalid date\") {\n      setError(\"Invalid Date of Birth\");\n      return;\n    }\n    // if (!isValidZipCode(demographics.isoCode || \"US\", Employee.zip)) {\n    //   setError(\"Invalid Postal Code\");\n    //   return;\n    // }\n    if (!Employee.idNumber) {\n      setError(`${calculate_age(Employee.dob) < 18 ? \"SSN\" : \"ID Number\"} is required`);\n      return;\n    }\n    if (!isValidIdNum(Employee.idNumber)) {\n      setError(`Invalid ${calculate_age(Employee.dob) < 18 ? \"SSN\" : \"ID Number\"} must contains at least 5 characters`);\n      return;\n    }\n\n    if (!newTestCreate.clientID) {\n      setError(\"Client is required\");\n      return;\n    }\n    if (!newTestCreate.siteID) {\n      setError(\"Site is required\");\n      return;\n    }\n\n    if (!newTestCreate.labID) {\n      setError(\"Lab is required\");\n      return;\n    }\n\n    if (!newTestCreate.test_type || newTestCreate.test_type == \"\" || newTestCreate.test_type == \"undefined\") {\n      setError(\"Test Type is required\");\n      return;\n    }\n\n    if (newTestCreate.barcode && newTestCreate.barcode.length !== 10) {\n      setError(\"Barcode is Invalid e.g. (YYMMDD0001)\");\n      return;\n    }\n    if (\n      newTestCreate.createdAt &&\n      newTestCreate.resultDateTime &&\n      moment(newTestCreate.resultDateTime).isBefore(moment(newTestCreate.createdAt))\n    ) {\n      setError(\"Result date time should be after date collected\");\n      return;\n    }\n    if (\n      newTestCreate.createdAt &&\n      newTestCreate.receivedDate &&\n      moment(newTestCreate.receivedDate).isBefore(moment(newTestCreate.createdAt))\n    ) {\n      setError(\"Received date time should be after date collected\");\n      return;\n    }\n    setLoading(true);\n    setchangeDataCheck(false);\n    const testModal = await API.getRecordById(test.id, \"test\");\n    const testVersionNo = testModal[0]._version;\n    const models = await API.getRecordById(test.employeeID, \"employee\");\n    const versionNo = models[0]?._version || null;\n    const fileName = `${Employee.mdID ? Employee.mdID : test.employeeID}/${test.employeeID}-${\n      Employee.phoneNumber\n    }-${moment().toISOString()}`;\n\n    // console.log(\"vaccinationImage\", vaccinationImage);\n    // console.log(\"externalTestImage\", externalTestImage);\n    // Vacination Image\n    let vaccinationFileName = \"\";\n    if (typeof vaccinationImage === \"object\") {\n      vaccinationFileName = await API.saveFileExternalStorage(\n        phoneNo,\n        test.employeeID,\n        IMAGE_UPLOAD_TYPE.VacinationCard,\n        vaccinationImage\n      );\n    }\n\n    // External Test Image\n    let externalImageFileName = \"\";\n    if (typeof externalTestImage === \"object\") {\n      externalImageFileName = await API.saveFileExternalStorage(\n        phoneNo,\n        test.employeeID,\n        IMAGE_UPLOAD_TYPE.ExternalTest,\n        externalTestImage\n      );\n    }\n\n    const emp = {\n      ...Employee,\n      countryCode: countryCode,\n      vaccinationCardImage: vaccinationFileName ? vaccinationFileName : Employee.vaccinationCardImage,\n      externalTestImage: externalImageFileName ? externalImageFileName : Employee.externalTestImage,\n      _version: versionNo,\n      updatedBy: appContext.user.sub,\n      updatedByName: appContext.user.name,\n      phoneNumber: phoneNo,\n    };\n\n    if (Employee?.autoRelease) {\n      const pendingTestList = appContext.pendingTests?.filter((f) => f.employeeID === test.employeeID);\n      // console.log(\"pendingTestList\", pendingTestList);\n      const paramsData = [];\n      pendingTestList.forEach((element) => {\n        paramsData.push({\n          id: element.id,\n          status: \"Processed\",\n          timerStatus: \"Processed\",\n          sequenceNo: element.sequenceNo,\n          invalidResultStatus: 1,\n        });\n      });\n      try {\n        await GQAPI.releaseTest(paramsData);\n      } catch (err) {\n        console.log(\"Error:-\", err.message);\n      }\n    }\n    try {\n      if (isConfirm && newTestCreate.barcode !== editInfo.barcode) {\n        await GQAPI.addTestLogs({\n          ids: [{ id: test.id, sequenceNo: test.sequenceNo }],\n          oldValue: editInfo.barcode,\n          newValue: newTestCreate.barcode,\n          userID: appContext.user?.sub,\n          userName: appContext.user?.name,\n          slug: \"AccessionNoChanged\",\n        });\n      }\n      const newTestObj = { ...newTestCreate, ...(!isConfirm && { barcode: editInfo.barcode }) };\n      if (newTestCreate.result === UN_RESULT && CONFIG.isWhiteLabel) {\n        Object.assign(newTestObj, { result: \"\", status: \"Pending\" });\n      }\n\n      const res = ChangeObject(emp, demographics, newTestObj, testModal[0]);\n      let logs = null;\n\n      if (Object.keys(res).length > 0) {\n        const ids = [{ id: test.id, sequenceNo: test.sequenceNo }];\n        logs = {\n          ids: ids,\n          changeObject: res,\n          userID: appContext.user?.sub,\n          userName: appContext.user?.name,\n          slug: \"Test Updated\",\n        };\n      }\n\n      if (newTestObj.receivedDate) {\n        const srNo = JSON.parse(newTestObj.sr_no);\n        srNo[1].date = moment(newTestObj.receivedDate).toISOString();\n        console.log(\"srNo\", srNo);\n        newTestObj.sr_no = JSON.stringify(srNo);\n      }\n\n      const obj = {\n        ...newTestObj,\n        employee_demographics: emp,\n        _version: testVersionNo,\n        createdAt: moment(newTestObj.createdAt).toISOString(),\n      };\n      const updateTest = await API.updateCompleteCrewInfo({ crew: obj, user: appContext.user, isConfirm: isConfirm });\n      if (logs) await GQAPI.addTestLogs(logs);\n\n      setDemographics(getDemoGraphics(updateTest));\n      setEditInfo(updateTest);\n      setTest(updateTest);\n      setEmployee(getDemoGraphics(updateTest));\n      setTestCreate(updateTest);\n      setEditButton(true);\n      switch (location?.state?.type) {\n        case \"pendingRelease\":\n          appContext.resetPendingTests();\n          break;\n        case \"inconclusiveTest\":\n          appContext.resetInvalidTests();\n          break;\n      }\n      appContext.showSuccessMessage(\"Test updated Successfully\");\n\n      const {\n        match: { params },\n      } = props;\n      if (params.employeeId) {\n        getTest(params.employeeId);\n      }\n      if (params.testId) {\n        getTest(params.testId);\n      }\n\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error in crew save\", err);\n      appContext.showErrorMessage(err.message);\n      setLoading(false);\n    }\n    setTimeout(() => {\n      setchangeDataCheck(true);\n    }, 60000);\n  };\n  const handleCancelButton = async () => {\n    // setEditButton(true);\n    // if (!Employee) return;\n    // setEmployee(getDemoGraphics(editInfo));\n\n    if (!Employee) {\n      setEditButton(true);\n      return;\n    }\n    let models = await API.getRecordById(test.employeeID, \"employee\");\n    let vacinatedFilePath = models[0]?.vaccinationCardImage;\n    let externalTestFilePath = models[0]?.externalTestImage;\n    let profileImageFilePath = models[0]?.profileImage;\n\n    if (!profileImageFilePath) {\n      setProfileImage(profileImageDefault);\n    }\n    if (!externalTestFilePath) {\n      setExternalTestImage(\"\");\n    }\n    if (!vacinatedFilePath) {\n      setVaccinationImage(\"\");\n    }\n    setEmployee(getDemoGraphics(editInfo));\n    setTestCreate(editInfo);\n\n    // const profile = await getFileFromStorage(Employee.profileImage, setProfileImage);\n\n    // let getExternalTestImage = await API.getFileExternalStorage(Employee.externalTestImage);\n    // if (!getExternalTestImage) setExternalTestImage(\"\");\n    // let getVacinationCardImage = await API.getFileExternalStorage(Employee.vaccinationImage);\n    // if (!getVacinationCardImage) setVaccinationImage(\"\");\n    setEditButton(true);\n  };\n  const emailTest = async (t) => {\n    setLoading(true);\n    const test = formatTest(t);\n    const params = [\n      {\n        id: test.id,\n        sequenceNo: test.sequenceNo,\n      },\n    ];\n    try {\n      setLoading(true);\n      await appContext.sendEmailToCrew(params, \"Email\");\n      appContext.showSuccessMessage(\"Email has been sent successfully\");\n      setLoading(false);\n    } catch (err) {\n      console.log(\"err\", err);\n      setLoading(false);\n    }\n    // appContext.getLab(test).then(async (resp) => {\n    //   ReactPDF.pdf(<PDF test={test} testsLab={resp} parseTestResultForPDF={appContext.parseTestResultForPDF} />)\n    //     .toBlob()\n    //     .then(async (data) => {\n    //       try {\n    //         const fileName = `${test.id}-result.pdf`;\n    //         await Storage.put(fileName, data);\n    //         await API.sendEmailToCrew([{ email: test.email, fileName: `public/${fileName}` }]);\n    //         await API.updateEmailStatus(test.id);\n    //         // send sms as well if email is sending first time\n    //         if (!test.emailSend && test.phoneNumber) {\n    //           let smsMessage = `Hello, your test results are in for your test with ${test?.site_name}, please log into Med Flow to review.`;\n    //           const siteObj = appContext.sites.find((s) => s.id === test.siteID);\n    //           if (siteObj && siteObj.messageResulted && result === \"negative\") {\n    //             smsMessage = siteObj.messageResulted;\n    //           } else if (siteObj && siteObj.messagePositive && result === \"positive\") {\n    //             smsMessage = siteObj.messagePositive;\n    //           }\n    //           await API.sendSMSNotification(setPhoneNo(test.phoneNumber), smsMessage);\n    //         }\n    //         setLoading(false);\n    //         appContext.showSuccessMessage(\"Email has been sent successfully\");\n    //       } catch (error) {\n    //         console.log(\"Error\");\n    //         setLoading(false);\n    //       }\n    //     });\n    // });\n  };\n\n  const handleSaveQuarantine = async (obj) => {\n    try {\n      await API.updateQuarantineData(test.id, obj.startDate, obj.endDate);\n      getTest(test.id);\n      window.location.reload();\n      appContext.showSuccessMessage(\"Quarantine dates changed successfully\");\n    } catch (err) {\n      appContext.showErrorMessage(err.message);\n    }\n  };\n\n  const isPatternTest = () =>\n    test && test.test_type === \"PCR\" && test.patternTestAnswer && test.patternTestAnswer.length > 5;\n\n  const downloadBlob = (blob, filename) => {\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement(\"a\");\n    a.href = url;\n    a.download = filename || \"download\";\n    const clickHandler = () => {\n      setTimeout(() => {\n        URL.revokeObjectURL(url);\n        a.removeEventListener(\"click\", clickHandler);\n      }, 150);\n    };\n    a.addEventListener(\"click\", clickHandler, false);\n    a.click();\n    return a;\n  };\n  const patternConsentFile = async () => {\n    if (!test) return \"\";\n    const siteID = test.baseSiteID || test.siteID;\n    const fileName = `${siteID}-${test.employeeID}-pattern.pdf`;\n    const result = await Storage.get(fileName, { download: true });\n    downloadBlob(result.Body, `${test.barcode}-pattern.pdf`);\n  };\n\n  const dataOfBirthParse = (dob) => {\n    if (dob && dob !== \"Invalid date\") {\n      return formatDateOfBirthDOB(dob);\n    }\n    return moment().format(\"MM/DD/YYYY\");\n  };\n\n  const handleCloseCreateTest = () => {\n    setTestCreate(_.cloneDeep(TEST_EMPTY_OBJECT));\n    setOpenCreator(false);\n  };\n\n  const updateTest = async (updatedTestData) => {\n    updatedTestData.id = test?.id;\n    updatedTestData._version = test?._version;\n    let testData = {\n      ...updatedTestData,\n      submittedByName: appContext?.user?.name,\n      createdBy: appContext?.user?.sub,\n      barcode: test?.barcode,\n    };\n\n    const updateTest = await API.updateTestDataV1(testData);\n\n    setLoading(false);\n\n    if (updateTest) {\n      appContext.showSuccessMessage(\"Test updated successfully\");\n      handleCloseCreateTest();\n    } else {\n      appContext.showErrorMessage(\"Test can't be updated\");\n    }\n  };\n\n  const handleOpenCreateTest = () => {\n    if (test) {\n      let selectedUser = test;\n      const emptyObjectKeys = Object.keys(TEST_EMPTY_OBJECT);\n      let newObjValue = { ...TEST_EMPTY_OBJECT };\n      for (const objKey of emptyObjectKeys) {\n        if (objKey == \"employee_demographics\") {\n          let demographicObj =\n            typeof selectedUser[objKey] === \"string\" ? JSON.parse(selectedUser[objKey]) : selectedUser[objKey];\n          newObjValue[objKey] = { ...demographicObj, phoneNumber: selectedUser[\"phoneNumber\"] };\n          if (selectedUser[\"dob\"]) {\n            newObjValue[objKey] = { ...demographicObj, dob: moment(selectedUser[\"dob\"]).format(\"MMDDYYYY\") };\n          }\n        } else {\n          newObjValue[objKey] = selectedUser[objKey];\n        }\n      }\n      setTestCreate(newObjValue);\n    }\n    setOpenCreator(true);\n  };\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setEmployee({ ...Employee, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zipcode: val.zipcode,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setEmployee({ ...Employee, ...addressObj });\n    }\n  };\n\n  return showPdfResult ? (\n    <PDFLayout setShowPdf={setShowPdfResult} testPdf={testPdf} testsLab={testsLab} />\n  ) : showPDF ? (\n    <Container fluid>\n      <Row>\n        <Col md=\"12\">\n          <Card style={{ padding: 20, marginLeft: \"auto\", marginRight: \"auto\" }} className=\"strpied-tabled-with-hover\">\n            <Card.Header>\n              <Row style={{ alignItems: \"center\" }}>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bolder\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Requisition Form - {demographics?.firstName} {demographics?.lastName}\n                </Card.Title>\n                <Button style={{ marginLeft: \"auto\", marginRight: \"auto\" }} onClick={() => setShowPDF(false)}>\n                  Close\n                </Button>\n              </Row>\n            </Card.Header>\n            <Card.Body className=\"table-full-width table-responsive px-0\">\n              <PDFViewer className=\"pdfWrapper\">\n                <BioLabRequisitionPDF test={test} lab={lab} signature={signature} demographics={demographics} />\n                {/* <SitePDF site={pdf} client={client} /> */}\n              </PDFViewer>\n            </Card.Body>\n          </Card>\n        </Col>\n      </Row>\n    </Container>\n  ) : !loading ? (\n    <>\n      <Container fluid className=\"profile-container\">\n        <SweetAlert show={showAlert} success title=\"Success\" onConfirm={hideAlert}>\n          Test Released\n        </SweetAlert>\n        <SweetAlert\n          show={showSubmitAlert}\n          success\n          title=\"Success\"\n          onConfirm={() => {\n            window.history.back();\n            setShowSubmitAlert(false);\n          }}\n        >\n          Test Submitted Successfully.\n        </SweetAlert>\n        <Row className=\"crew-member-profile\">\n          <Col md=\"12\">\n            <Card className=\"member-profile-card\">\n              <Card.Header className=\"d-flex align-items-center justify-content-between\">\n                <Card.Title as=\"h4\" className=\"w-100 d-flex justify-content-between mb-0\">\n                  <div>\n                    Test Details\n                    {calculate_age(demographics?.dob) < 18 ? <span className=\"crew-minor-text\">- Minor</span> : null}\n                    {CONFIG.isWhiteLabel\n                      ? ` - ${newTestCreate?.barcode || \"\"}`\n                      : newTestCreate.sequenceNo\n                      ? ` - ${newTestCreate.sequenceNo}`\n                      : \"\"}\n                  </div>\n                  {newTestCreate.barcode && (\n                    <>\n                      <div className=\"d-flex justify-content-between align-items-center position-relative  w-25\">\n                        <div className=\"d-flex align-items-center qr-code-download w-75\">\n                          {/* <i className=\"fas fa-download\"></i> */}\n                          <span className=\"mx-2\">Patient QR Code:</span>\n                          <img\n                            src={QrCodeDownloadIcon}\n                            alt=\"qr-code-download\"\n                            className=\"cursor-pointer\"\n                            width=\"30\"\n                            onClick={downloadQRCode}\n                          />\n\n                          <span style={{ display: \"none\" }}>\n                            <QRCode\n                              id=\"qr-gen-view\"\n                              ecLevel={\"H\"}\n                              value={JSON.stringify(qrResponseJOSN(Employee, Employee?.id) || \"\")}\n                              enableCORS={true}\n                              size=\"250\"\n                              logoHeight={\"70\"}\n                              logoWidth={\"70\"}\n                              fgColor={\"#000\"}\n                              bgColor={\"#fff\"}\n                            />\n                          </span>\n                        </div>\n\n                        <span className=\"cursor-pointer\" onClick={() => history.goBack()}>\n                          Go Back\n                        </span>\n                      </div>\n                    </>\n                  )}\n                </Card.Title>\n              </Card.Header>\n              <Card.Body className=\"pt-3 pb-3\">\n                <Form className=\"crew-member-profile\">\n                  <Row>\n                    <Col md=\"6\">\n                      <div className=\"testAdmin createClientsWrapper\">\n                        <div className=\"first-last-name-wrapper\">\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">First Name</label>\n                            <Form.Control\n                              readOnly={editButton}\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setEmployee({ ...Employee, firstName: e.target.value })}\n                              value={Employee?.firstName}\n                              defaultValue={demographics?.firstName}\n                              placeholder={`${!editButton ? \"Enter First Name \" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Last Name</label>\n                            <Form.Control\n                              readOnly={editButton}\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setEmployee({ ...Employee, lastName: e.target.value })}\n                              value={Employee?.lastName}\n                              defaultValue={demographics?.lastName}\n                              placeholder={`${!editButton ? \"Enter Last Name \" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </div>\n                        <div className=\"first-last-name-wrapper\">\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Date of Birth</label>\n                            {editButton ? (\n                              <Form.Control\n                                readOnly={editButton}\n                                value={formatDateOfBirthDOB(Employee?.dob)}\n                                defaultValue={formatDateOfBirthDOB(demographics?.dob)}\n                                placeholder=\"Date of Birth\"\n                                type=\"text\"\n                              />\n                            ) : (\n                              <div>\n                                <SingleDatePicker\n                                  onApply={(event, picker) => {\n                                    setEmployee({ ...Employee, dob: moment(picker.startDate).format(\"YYYY-MM-DD\") });\n                                  }}\n                                  value={dataOfBirthParse(Employee?.dob)}\n                                  startDate={dataOfBirthParse(Employee?.dob)}\n                                />\n                              </div>\n                            )}\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Phone Number</label>\n                            {editButton ? (\n                              <Form.Control\n                                className={`${!editButton ? \"modalInput underlinedText\" : \"underlinedText\"}`}\n                                onMouseOver={(e) => {\n                                  editButton ? (e.target.style.cursor = \"pointer\") : (e.target.style.cursor = \"auto\");\n                                  e.target.style.textDecoration = \"underline\";\n                                }}\n                                onClick={() =>\n                                  editButton\n                                    ? Employee?.phoneNumber && window.open(`tel:+1${Employee.phoneNumber}`)\n                                    : false\n                                }\n                                onChange={(e) => setEmployee({ ...Employee, phoneNumber: setPhoneNo(e.target.value) })}\n                                readOnly\n                                maxLength={15}\n                                value={formatPhoneNumber(Employee?.phoneNumber, Employee?.countryCode || \"+1\")}\n                                defaultValue={formatPhoneNumber(Employee?.phoneNumber, Employee?.countryCode || \"+1\")}\n                                placeholder={`${!editButton ? \"Enter Phone Number \" : \"\"}`}\n                                type=\"text\"\n                              />\n                            ) : (\n                              <PhoneNoInput\n                                error={setPhoneError}\n                                handleChange={(e) => {\n                                  setEmployee({ ...Employee, phoneNumber: e });\n                                }}\n                                value={formatPhoneWithOutSpaces(Employee?.phoneNumber, Employee?.countryCode || \"+1\")}\n                                cssCode={\"crewPhoneInput w-100\"}\n                              />\n                            )}\n                          </Form.Group>\n                        </div>\n                        <Form.Group className=\"form-group-wrapper\">\n                          <label className=\"modalLineHeaders mt-0 text-capitalize\">Email Address</label>\n                          <Form.Control\n                            className={`${!editButton ? \"modalInput underlinedText\" : \"underlinedText\"}`}\n                            onMouseOver={(e) => {\n                              editButton ? (e.target.style.cursor = \"pointer\") : (e.target.style.cursor = \"auto\");\n                              e.target.style.textDecoration = \"underline\";\n                            }}\n                            onClick={() =>\n                              editButton ? Employee?.email && window.open(`mailto:${Employee.email}`) : false\n                            }\n                            onChange={(e) => setEmployee({ ...Employee, email: e.target.value })}\n                            value={Employee?.email}\n                            readOnly={editButton}\n                            defaultValue={test?.email}\n                            placeholder={`${!editButton ? \"Enter Email \" : \"\"}`}\n                            type=\"email\"\n                          />\n                        </Form.Group>\n                        <div className=\"first-last-name-wrapper\">\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"mt-0 modalLineHeaders text-capitalize\">Address</label>\n                            {/* <Form.Control\n                            className={`${!editButton ? \"modalInput\" : \"\"}`}\n                            onChange={(e) => setEmployee({ ...Employee, street: e.target.value })}\n                            readOnly={editButton}\n                            value={Employee?.street}\n                            defaultValue={demographics?.street}\n                            placeholder={`${!editButton ? \"Enter Address  \" : \"\"}`}\n                            type=\"text\"\n                          /> */}\n                            <AutoCompleteAddress\n                              readOnly={editButton}\n                              value={Employee?.street}\n                              handleChange={handleUpdateAddress}\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"mt-0 modalLineHeaders text-capitalize\">Address 2</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              readOnly={editButton}\n                              onChange={(e) => setEmployee({ ...Employee, street2: e.target.value })}\n                              value={Employee?.street2 || \"\"}\n                              defaultValue={demographics?.street2 || \"\"}\n                              placeholder={`${!editButton ? \"Enter Address 2 \" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </div>\n                        <div className=\"first-last-name-wrapper\">\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders\">Barcode</label>\n                            {editButton ? (\n                              <input\n                                className=\"modalInput w-100\"\n                                readOnly={editButton}\n                                placeholder=\"Barcode\"\n                                value={newTestCreate?.barcode}\n                                onChange={(e) => {\n                                  setTestCreate({\n                                    ...newTestCreate,\n                                    barcode: e.target.value,\n                                  });\n                                }}\n                              />\n                            ) : (\n                              <div className=\"merged-input-container\">\n                                <input\n                                  className=\"merged-input\"\n                                  style={{ width: \"22%\" }}\n                                  readOnly\n                                  value={newTestCreate?.barcode?.slice(0, 6)}\n                                />\n                                <input\n                                  className=\"merged-input\"\n                                  style={{ width: \"78%\" }}\n                                  readOnly={test?.result}\n                                  placeholder=\"Barcode\"\n                                  value={newTestCreate?.barcode.slice(6)}\n                                  maxLength={\"4\"}\n                                  onChange={(e) => {\n                                    setTestCreate({\n                                      ...newTestCreate,\n                                      barcode: `${newTestCreate?.barcode?.slice(0, 6)}${e.target.value.replace(\n                                        /[^0-9]/g,\n                                        \"\"\n                                      )}`,\n                                    });\n                                  }}\n                                />\n                              </div>\n                            )}\n                          </div>\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders\">Test Type </label>\n                            <Select\n                              className=\"w-100 siteSelector\"\n                              options={externalTypesOptions}\n                              blurInputOnSelect={true}\n                              isDisabled={editButton}\n                              defaultValue={null}\n                              menuPlacement=\"auto\"\n                              placeholder=\"Test Type\"\n                              value={\n                                newTestCreate.test_type\n                                  ? externalTypesOptions.find((f) => f.value === newTestCreate.test_type)\n                                  : null\n                              }\n                              onChange={(e) => setTestCreate({ ...newTestCreate, test_type: e.value })}\n                            />\n                          </div>\n                        </div>\n                        <div className=\"first-last-name-wrapper\">\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Date Collected</label>\n                            <Form.Control\n                              type=\"datetime-local\"\n                              readOnly={editButton}\n                              placeholder=\"Date Collected\"\n                              value={\n                                newTestCreate?.createdAt\n                                  ? moment(newTestCreate?.createdAt).format(\"YYYY-MM-DDTHH:mm\")\n                                  : \"\"\n                              }\n                              onChange={(e) => setTestCreate({ ...newTestCreate, createdAt: e.target.value })}\n                            />\n                          </Form.Group>\n\n                          {parseSrNoObjectRecviedDate(test) && (\n                            <Form.Group className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders mt-0 text-capitalize\">Date Received</label>\n                              <Form.Control\n                                type=\"datetime-local\"\n                                readOnly={editButton}\n                                placeholder=\"Date Received\"\n                                value={moment(newTestCreate.receivedDate || parseSrNoObjectRecviedDate(test)).format(\n                                  \"YYYY-MM-DDTHH:mm\"\n                                )}\n                                onChange={(e) => setTestCreate({ ...newTestCreate, receivedDate: e.target.value })}\n                              />\n                            </Form.Group>\n                          )}\n                        </div>\n                        <div className=\"first-last-name-wrapper\">\n                          {newTestCreate.result && (\n                            <Form.Group className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders mt-0 text-capitalize\">Result Date</label>\n                              <Form.Control\n                                type=\"datetime-local\"\n                                readOnly={editButton}\n                                placeholder=\"Result Date\"\n                                value={\n                                  newTestCreate?.result\n                                    ? newTestCreate?.resultDateTime\n                                      ? moment(newTestCreate?.resultDateTime).format(\"YYYY-MM-DDTHH:mm\")\n                                      : newTestCreate?.resultDate\n                                      ? moment(newTestCreate?.resultDate).format(\"YYYY-MM-DDTHH:mm\")\n                                      : moment(newTestCreate?.updatedAt).format(\"YYYY-MM-DDTHH:mm\")\n                                    : \"\"\n                                }\n                                onChange={(e) => setTestCreate({ ...newTestCreate, resultDateTime: e.target.value })}\n                              />\n                            </Form.Group>\n                          )}\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders\">Resulted By</label>\n                            <input\n                              className=\"modalInput\"\n                              readOnly={editButton}\n                              placeholder=\"Resulted By\"\n                              style={{\n                                width: \"100%\",\n                              }}\n                              value={newTestCreate?.StampByName}\n                              onChange={(e) => {\n                                setTestCreate({\n                                  ...newTestCreate,\n                                  StampByName: e.target.value,\n                                });\n                              }}\n                            />\n                          </div>\n                        </div>\n                        <div className=\"first-last-name-wrapper\">\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders\">Tester </label>\n                            <Select\n                              className=\"w-100 siteSelector\"\n                              options={usersData}\n                              isDisabled={editButton}\n                              blurInputOnSelect={true}\n                              defaultValue={null}\n                              menuPlacement=\"auto\"\n                              //value={getSelectedTester()}\n                              placeholder=\"Select Tester\"\n                              value={\n                                newTestCreate.createdBy\n                                  ? usersData.find((f) => f.value === newTestCreate.createdBy)\n                                  : newTestCreate.tester_name\n                                  ? { label: newTestCreate.tester_name, value: newTestCreate.tester_name }\n                                  : null\n                              }\n                              onChange={(e) => getSelectedTester(e)}\n                            />\n                          </div>\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders\">{stringConstant.site}</label>\n                            <Select\n                              className=\"w-100 siteSelector\"\n                              options={getSiteOptions}\n                              blurInputOnSelect={true}\n                              isDisabled={editButton}\n                              defaultValue={null}\n                              menuPlacement=\"auto\"\n                              placeholder={`Select ${stringConstant.site}`}\n                              value={\n                                newTestCreate.siteID\n                                  ? {\n                                      label: newTestCreate.site_name,\n                                      value: newTestCreate.siteID,\n                                    }\n                                  : null\n                              }\n                              onChange={(e) => setTestCreate({ ...newTestCreate, siteID: e.value, site_name: e.label })}\n                            />\n                          </div>\n                        </div>\n\n                        <div className=\"first-last-name-wrapper\">\n                          {test?.scanByTesterName && (\n                            <div className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders\">Scan By Tester</label>\n                              <span className=\"vaccination-status pl-3\">{test?.scanByTesterName}</span>\n                            </div>\n                          )}\n                          {test?.scanByLabUserName && (\n                            <div className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders\">Scan By Lab</label>\n                              <span className=\"vaccination-status pl-3\">{test?.scanByLabUserName}</span>\n                            </div>\n                          )}\n                        </div>\n                      </div>\n                    </Col>\n                    <Col md=\"6\">\n                      <div className=\"testAdmin createClientsWrapper\">\n                        <div className=\"first-last-name-wrapper\">\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"mt-0 modalLineHeaders text-capitalize\">City</label>\n                            <Form.Control\n                              readOnly={editButton}\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setEmployee({ ...Employee, city: e.target.value })}\n                              value={Employee?.city}\n                              defaultValue={demographics?.city}\n                              placeholder={`${!editButton ? \"Enter City\" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">State</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              readOnly={editButton}\n                              onChange={(e) => setEmployee({ ...Employee, state: e.target.value })}\n                              value={Employee?.state}\n                              defaultValue={demographics?.state}\n                              maxLength={35}\n                              placeholder={`${!editButton ? \"Enter Country\" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </div>\n                        <div className=\"first-last-name-wrapper\">\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Postal Code</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setEmployee({ ...Employee, zip: e.target.value })}\n                              readOnly={editButton}\n                              value={Employee?.isoCode === \"US\" ? formatZip(Employee?.zip) : Employee?.zip}\n                              defaultValue={Employee?.isoCode === \"US\" ? formatZip(Employee?.zip) : Employee?.zip}\n                              placeholder={`${!editButton ? \"Enter Postal Code \" : \"\"}`}\n                              maxLength={10}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Insurance Carrier</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              readOnly={editButton}\n                              onChange={(e) => setEmployee({ ...Employee, insurance_name: e.target.value })}\n                              value={Employee?.insurance_name}\n                              defaultValue={demographics?.insurance_name}\n                              placeholder={`${!editButton ? \"Enter Insurance Carrier\" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </div>\n                        <div className=\"first-last-name-wrapper\">\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Insurance ID</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              readOnly={editButton}\n                              onChange={(e) => setEmployee({ ...Employee, insurance_number: e.target.value })}\n                              value={Employee?.insurance_number}\n                              defaultValue={demographics?.insurance_number}\n                              placeholder={`${!editButton ? \"Enter Insurance Id\" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\" readOnly={editButton} plaintext>\n                            {calculate_age(demographics?.dob) > 18 ? (\n                              <label className=\"modalLineHeaders mt-0 text-capitalize\">ID Number</label>\n                            ) : (\n                              <label>SSN</label>\n                            )}\n                            <Form.Control\n                              readOnly={editButton}\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              value={Employee?.idNumber}\n                              onChange={(e) => setEmployee({ ...Employee, idNumber: e.target.value })}\n                              defaultValue={formatIDNo()}\n                              placeholder=\"ID Number\"\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </div>\n                        <div className=\"first-last-name-wrapper\">\n                          {labs.length > 1 && (\n                            <div className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders\">Lab </label>\n                              <Select\n                                className=\"w-100 siteSelector\"\n                                options={labs?.map((l) => {\n                                  return { value: l.id, label: l.name };\n                                })}\n                                blurInputOnSelect={true}\n                                defaultValue={null}\n                                isDisabled={editButton}\n                                menuPlacement=\"auto\"\n                                placeholder=\"Select Lab\"\n                                value={\n                                  newTestCreate.labID\n                                    ? {\n                                        label: newTestCreate.labName,\n                                        value: newTestCreate.labID,\n                                      }\n                                    : null\n                                }\n                                onChange={(e) => setTestCreate({ ...newTestCreate, labID: e.value, labName: e.label })}\n                              />\n                            </div>\n                          )}\n                          {appContext?.clients.length > 1 && (\n                            <div className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders\">Client </label>\n                              <Select\n                                className=\"w-100 siteSelector\"\n                                options={appContext.clients?.map((l) => {\n                                  return { value: l.id, label: l.name };\n                                })}\n                                blurInputOnSelect={true}\n                                defaultValue={null}\n                                isDisabled={editButton}\n                                menuPlacement=\"auto\"\n                                value={\n                                  newTestCreate.clientID\n                                    ? {\n                                        label: newTestCreate.clientName,\n                                        value: newTestCreate.clientID,\n                                      }\n                                    : null\n                                }\n                                placeholder=\"Select Client\"\n                                onChange={(e) =>\n                                  setTestCreate({\n                                    ...newTestCreate,\n                                    clientID: e.value,\n                                    clientName: e.label,\n                                    siteID: null,\n                                    site_name: null,\n                                  })\n                                }\n                              />\n                            </div>\n                          )}\n                        </div>\n                        <div className=\"first-last-name-wrapper\">\n                          {/* <div className=\"form-group-wrapper\">\n                            <label className=\"text-capitalize mt-0 modalLineHeaders\">Vaccination Status</label> <br />\n                            {editButton ? (\n                              <span className=\"vaccination-status pl-3\">{Employee?.isVaccinated ? \"Yes\" : \"No\"}</span>\n                            ) : (\n                              <div className=\"form-group-wrapper d-flex flex-basis-1 max-w-100 pl-3 testProfilePt\">\n                                <div className=\"radioBox-wrapper\">\n                                  <input\n                                    className=\"radioButton\"\n                                    type=\"radio\"\n                                    defaultChecked={Employee?.isVaccinated}\n                                    name=\"isVaccinated\"\n                                    onChange={(e) =>\n                                      setEmployee({ ...Employee, isVaccinated: e.target.checked && true })\n                                    }\n                                  />\n                                  <span className=\"radioButton\">Yes</span>\n                                </div>\n                                <div className=\"radioBox-wrapper\">\n                                  <input\n                                    className=\"radioButton\"\n                                    type=\"radio\"\n                                    defaultChecked={!Employee?.isVaccinated}\n                                    name=\"isVaccinated\"\n                                    onChange={(e) =>\n                                      setEmployee({ ...Employee, isVaccinated: e.target.checked && false })\n                                    }\n                                  />\n                                  <span className=\"radioButton\">No</span>\n                                </div>\n                              </div>\n                            )}\n                          </div> */}\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"text-capitalize mt-0 modalLineHeaders\">HIPAA Consent</label> <br />\n                            <span className=\"vaccination-status pl-3\">{hippaConsent ? \"True\" : \"False\"}</span>\n                          </div>\n                        </div>\n\n                        {/* <div className=\"first-last-name-wrapper\">\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders\">White Glove</label>\n                            {editButton ? (\n                              <span className=\"vaccination-status pl-3\">{Employee?.whiteGlove ? \"True\" : \"False\"}</span>\n                            ) : (\n                              <div className=\"d-flex pl-3 testProfilePt form-group-wrapper\">\n                                <span className=\"radioBox-wrapper\">\n                                  <input\n                                    type=\"radio\"\n                                    className=\"radioButton\"\n                                    name=\"whiteGlove\"\n                                    checked={Employee?.whiteGlove}\n                                    onChange={(e) =>\n                                      setEmployee({\n                                        ...Employee,\n                                        whiteGlove: e.target.checked && true,\n                                      })\n                                    }\n                                  />\n                                  <span className=\"radioButton\">Yes</span>\n                                </span>\n                                <span className=\"radioBox-wrapper\">\n                                  <input\n                                    type=\"radio\"\n                                    className=\"radioButton\"\n                                    name=\"whiteGlove\"\n                                    checked={!Employee?.whiteGlove}\n                                    onChange={(e) =>\n                                      setEmployee({\n                                        ...Employee,\n                                        whiteGlove: e.target.checked && false,\n                                      })\n                                    }\n                                  />\n                                  <span className=\"radioButton\">No</span>\n                                </span>\n                              </div>\n                            )}\n                          </div>\n\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders\">Tester Designation: </label>\n                            {editButton ? (\n                              <span className=\"vaccination-status pl-3\">\n                                {Employee?.employeeType ? Employee?.employeeType : \"\"}\n                              </span>\n                            ) : (\n                              <div className=\"d-flex pl-3 testProfilePt form-group-wrapper\">\n                                <span className=\"radioBox-wrapper\">\n                                  <input\n                                    type=\"radio\"\n                                    className=\"radioButton\"\n                                    name=\"employeeType\"\n                                    checked={Employee?.employeeType == \"Staff\"}\n                                    onChange={(e) =>\n                                      setEmployee({\n                                        ...Employee,\n                                        employeeType: e.target.checked && \"Staff\",\n                                      })\n                                    }\n                                  />\n                                  <span className=\"radioButton\">Staff</span>\n                                </span>\n                                <span className=\"radioBox-wrapper\">\n                                  <input\n                                    type=\"radio\"\n                                    className=\"radioButton\"\n                                    name=\"employeeType\"\n                                    checked={Employee?.employeeType == \"Guest\"}\n                                    onChange={(e) =>\n                                      setEmployee({\n                                        ...Employee,\n                                        employeeType: e.target.checked && \"Guest\",\n                                      })\n                                    }\n                                  />\n                                  <span className=\"radioButton\">Guest</span>\n                                </span>\n                              </div>\n                            )}\n                          </div>\n                        </div> */}\n                        <div className=\"first-last-name-wrapper\">\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders\">Result</label>\n                            {editButton ? (\n                              <span\n                                className=\"vaccination-status pl-3 cursor-pointer\"\n                                style={{\n                                  color: RESULT_COLOR[newTestCreate.result?.toLowerCase()],\n                                }}\n                                onClick={() => newTestCreate.result && displayPdf(newTestCreate)}\n                              >\n                                {newTestCreate?.result || \"-\"}\n                              </span>\n                            ) : (\n                              <>\n                                {CONFIG.isWhiteLabel ? (\n                                  <Select\n                                    className=\"w-100 siteSelector\"\n                                    options={resultTypes}\n                                    blurInputOnSelect={true}\n                                    defaultValue={null}\n                                    menuPlacement=\"auto\"\n                                    value={\n                                      newTestCreate.result\n                                        ? { value: newTestCreate.result, label: newTestCreate.result }\n                                        : null\n                                    }\n                                    placeholder=\"Select Result\"\n                                    onChange={(e) =>\n                                      setTestCreate({\n                                        ...newTestCreate,\n                                        result: e.value,\n                                        status: \"Processed\",\n                                      })\n                                    }\n                                  />\n                                ) : (\n                                  <div className=\"d-flex  flex-wrap  pl-3 testProfilePt\">\n                                    <span className=\"radioBox-wrapper mb-1\">\n                                      <input\n                                        type=\"radio\"\n                                        className=\"radioButton\"\n                                        name=\"result\"\n                                        value=\"Positive\"\n                                        checked={newTestCreate?.result == \"Positive\"}\n                                        onChange={(e) =>\n                                          setTestCreate({\n                                            ...newTestCreate,\n                                            result: e.target.value,\n                                            status: \"Pending\",\n                                          })\n                                        }\n                                      />\n                                      <span className=\"radioButton\">Positive</span>\n                                    </span>\n                                    <span className=\"radioBox-wrapper mb-1\">\n                                      <input\n                                        type=\"radio\"\n                                        className=\"radioButton\"\n                                        name=\"result\"\n                                        value=\"Negative\"\n                                        checked={newTestCreate?.result == \"Negative\"}\n                                        onChange={(e) =>\n                                          setTestCreate({\n                                            ...newTestCreate,\n                                            result: e.target.value,\n                                            status: \"Processed\",\n                                          })\n                                        }\n                                      />\n                                      <span className=\"radioButton\">Negative</span>\n                                    </span>\n                                    <span className=\"radioBox-wrapper mb-1\">\n                                      <input\n                                        type=\"radio\"\n                                        className=\"radioButton\"\n                                        name=\"result\"\n                                        value={UN_RESULT}\n                                        checked={newTestCreate?.result == UN_RESULT}\n                                        onChange={(e) =>\n                                          setTestCreate({\n                                            ...newTestCreate,\n                                            result: e.target.value,\n                                            status: \"Processed\",\n                                          })\n                                        }\n                                      />\n                                      <span className=\"radioButton\">{UN_RESULT}</span>\n                                    </span>\n                                    <span className=\"radioBox-wrapper mb-1\" style={{ display: \"flex\" }}>\n                                      <input\n                                        type=\"radio\"\n                                        className=\"radioButton\"\n                                        name=\"result\"\n                                        value=\"Inconclusive\"\n                                        checked={newTestCreate?.result == \"Inconclusive\"}\n                                        onChange={(e) =>\n                                          setTestCreate({\n                                            ...newTestCreate,\n                                            result: e.target.value,\n                                            status: \"Processed\",\n                                          })\n                                        }\n                                      />\n                                      <span className=\"radioButton\">Inconclusive</span>\n                                    </span>\n                                  </div>\n                                )}\n                              </>\n                            )}\n                          </div>\n                          {appContext.user[\"custom:role\"] === \"Admins\" && (\n                            <>\n                              {!CONFIG.isWhiteLabel && (\n                                <div className=\"first-last-name-wrapper\">\n                                  <div className=\"form-group-wrapper\">\n                                    <label className=\"text-capitalize mt-0 modalLineHeaders\">Pattern Testing</label>{\" \"}\n                                    <br />\n                                    <span className=\"vaccination-status pl-3\">\n                                      {isPatternTest() ? \"True\" : \"False\"}\n                                    </span>\n                                  </div>\n                                </div>\n                              )}\n                              {isPatternTest() && (\n                                <div className=\"form-group-wrapper\">\n                                  <label className=\"vaccination-status-name\">Pattern Consent</label> <br />\n                                  <span\n                                    className=\"vaccination-status linkedText\"\n                                    onClick={() => {\n                                      patternConsentFile();\n                                    }}\n                                  >\n                                    Download\n                                  </span>\n                                </div>\n                              )}\n                            </>\n                          )}\n                        </div>\n\n                        <div className=\"first-last-name-wrapper\">\n                          {/* {newTestCreate.result && (\n                            <Form.Group className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders mt-0 text-capitalize\">Result Date</label>\n                              <Form.Control\n                                type=\"datetime-local\"\n                                readOnly={editButton}\n                                placeholder=\"Date of Birth\"\n                                value={\n                                  newTestCreate?.result\n                                    ? newTestCreate?.resultDateTime\n                                      ? moment(newTestCreate?.resultDateTime).format(\"YYYY-MM-DDTHH:mm\")\n                                      : newTestCreate?.resultDate\n                                      ? moment(newTestCreate?.resultDate).format(\"YYYY-MM-DDTHH:mm\")\n                                      : moment(newTestCreate?.updatedAt).format(\"YYYY-MM-DDTHH:mm\")\n                                    : \"\"\n                                }\n                                onChange={(e) => setTestCreate({ ...newTestCreate, resultDateTime: e.target.value })}\n                              />\n                            </Form.Group>\n                          )} */}\n                        </div>\n\n                        <div className=\"first-last-name-wrapper\">\n                          {allowToEditQuarantine && (\n                            <>\n                              <div className=\"form-group-wrapper\">\n                                <label className=\"text-capitalize mt-0 modalLineHeaders\">Quarantined Start</label>{\" \"}\n                                <br />\n                                <span className=\"vaccination-status pl-3\">\n                                  {formatQuaratineDisplayDate(test?.quarantinedStart)}\n                                </span>\n                              </div>\n                              <div className=\"form-group-wrapper\">\n                                <label className=\"text-capitalize mt-0 modalLineHeaders\">Quarantined End</label> <br />\n                                <span className=\"vaccination-status pl-3\">\n                                  {formatQuaratineDisplayDate(test?.quarantinedEnd)}\n                                </span>\n                              </div>\n                            </>\n                          )}\n                        </div>\n                      </div>\n                    </Col>\n                  </Row>\n                  {/* <Row>\n                    <Col md=\"12\" className=\"testAdmin createClientsWrapper\">\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"mt-0 modalLineHeaders text-capitalize\">Notes</label>\n                        <textarea defaultValue=\"\" placeholder=\"\" className=\"w-100 textAreaWrapper\" rows=\"5\" />\n                      </Form.Group>\n                    </Col>\n                  </Row> */}\n                  {test && (\n                    <div className=\"text-right w-100\">\n                      {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n                      {location.state?.pendingRelease && test?.result !== \"negative\" && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          variant=\"primary\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          onClick={async () => {\n                            // const result = await API.releaseTest(test);\n                            // if (result) {\n                            //   setShowAlert(true);\n                            // }\n                            setModalShow(true);\n                          }}\n                        >\n                          Release Test Results\n                        </Button>\n                      )}\n                      {location?.state?.pendingRelease && (\n                        <>\n                          <Button\n                            className=\"profileButton btn-fill createButtons\"\n                            style={{\n                              marginRight: 10,\n                              marginTop: 10,\n                            }}\n                            variant=\"secondary\"\n                            onClick={async () => {\n                              setLoading(true);\n                              if (test?.result.toLowerCase() === \"positive\") {\n                                const result = await API.sendSMSNotification(\n                                  test.phoneNumber,\n                                  \"Hello, can you please report back to your testing site for further information regarding your test.\"\n                                );\n                                if (result) {\n                                  appContext.showSuccessMessage(\n                                    \"The crew member has been sent a text message to be retested.\"\n                                  );\n                                }\n                                setLoading(false);\n                              } else {\n                                const params = [\n                                  {\n                                    id: test.id,\n                                    phoneNumber: test.phoneNumber,\n                                    email: test.email,\n                                    test_type: TEST_TYPE_VALUE[test.test_type],\n                                    site_name: test.site_name,\n                                    firstName: Employee.firstName,\n                                    siteID: test.siteID,\n                                    lastName: Employee.lastName,\n                                    userName: appContext.user.name,\n                                    type: \"invalid\",\n                                  },\n                                ];\n                                try {\n                                  await GQAPI.sendSmsToCrews(params);\n                                  appContext.showSuccessMessage(\n                                    \"The crew member has been sent a message to be retested.\"\n                                  );\n                                  setLoading(false);\n                                } catch (err) {\n                                  console.log(err.message);\n                                  appContext.showErrorMessage(err.message);\n                                  setLoading(false);\n                                }\n                              }\n                            }}\n                          >\n                            Retest\n                          </Button>\n                          <Button\n                            className=\"profileButton btn-fill createButtons\"\n                            style={{\n                              marginRight: 10,\n                              marginTop: 10,\n                            }}\n                            disabled={!test?.sequenceNo}\n                            variant=\"primary\"\n                            onClick={async () => setShowPDF(true)}\n                          >\n                            Requisition Form\n                          </Button>\n                        </>\n                      )}\n                      {location?.state?.unprocessed && (\n                        <>\n                          {showSubmitButton() && (\n                            <Button\n                              className=\"profileButton btn-fill createButtons\"\n                              style={{\n                                marginRight: 10,\n                                marginTop: 10,\n                              }}\n                              variant=\"primary\"\n                              onClick={async () => {\n                                await API.submitUnprocessedTests(\n                                  [test],\n                                  appContext.user,\n                                  CONFIG.isLive ? \"LIVE\" : \"DEV\"\n                                );\n                                setShowSubmitAlert(true);\n                                await appContext.resetUnprocessedTests();\n                              }}\n                            >\n                              Submit Test\n                            </Button>\n                          )}\n\n                          <Button\n                            className=\"profileButton btn-fill createButtons\"\n                            style={{\n                              marginRight: 10,\n                              marginTop: 10,\n                            }}\n                            variant=\"secondary\"\n                            onClick={async () => {\n                              if (test?.createdAt) {\n                                setShowPDF(true);\n                              }\n                            }}\n                          >\n                            Requisition Form\n                          </Button>\n                        </>\n                      )}\n                      {location.state?.labPortal && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"primary\"\n                          onClick={async () => {\n                            if (test?.createdAt) {\n                              setShowPDF(true);\n                            }\n                          }}\n                        >\n                          Requisition Form\n                        </Button>\n                      )}\n                      {location?.state?.admin && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"secondary\"\n                          onClick={async () => {\n                            if (test?.createdAt) {\n                              setShowPDF(true);\n                            }\n                          }}\n                        >\n                          Requisition Form\n                        </Button>\n                      )}\n                      {test?.result && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"primary\"\n                          onClick={async () => emailTest(test)}\n                        >\n                          Resend Results\n                        </Button>\n                      )}\n\n                      {(test?.result === \"Positive\" || test?.result === \"Fail\") && allowToEditQuarantine && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"secondary\"\n                          onClick={() => setOpenQuaratined(true)}\n                        >\n                          Quarantined\n                        </Button>\n                      )}\n\n                      {editButton && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"primary\"\n                          onClick={() => {\n                            setEditButton(false);\n                          }}\n                        >\n                          Edit Info\n                        </Button>\n                      )}\n                      {!editButton && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"secondary\"\n                          onClick={() => {\n                            if (newTestCreate.barcode !== editInfo.barcode) {\n                              setChangeBarcodeConfirmation(true);\n                            } else {\n                              handleSave();\n                            }\n                          }}\n                        >\n                          Save\n                        </Button>\n                      )}\n                      {!editButton && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"primary\"\n                          onClick={handleCancelButton}\n                        >\n                          Cancel\n                        </Button>\n                      )}\n                    </div>\n                  )}\n                  <div className=\"clearfix\" />\n                </Form>\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n      </Container>\n      <Modal\n        show={modalShow}\n        // style={{ transform: \"translate(0, -30%)\" }}\n        animation={true}\n        onHide={() => setModalShow(false)}\n        centered\n        size={\"md\"}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title id=\"contained-modal-title-vcenter\">Release Test Results</Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n          <p>Select all that apply: </p>\n          <div className=\"checkboxRow\">\n            <label className=\"checkboxLabel\">\n              <input\n                disabled={!siteContactPhone}\n                value=\"site\"\n                onChange={(e) => {\n                  if (e.target.checked) {\n                    setReleaseTo({\n                      ...releaseTo,\n                      [e.target.value]: siteContactPhone,\n                    });\n                  } else {\n                    const newReleaseTo = releaseTo;\n                    delete newReleaseTo[e.target.value];\n                    setReleaseTo(newReleaseTo);\n                  }\n                }}\n                className=\"releaseCheckbox\"\n                type=\"checkbox\"\n              />\n              Health and Safety Officer\n            </label>\n            <label>\n              <input\n                value=\"crew\"\n                onChange={(e) => {\n                  if (e.target.checked) {\n                    setReleaseTo({\n                      ...releaseTo,\n                      [e.target.value]: setPhoneNo(test?.phoneNumber),\n                    });\n                  } else {\n                    const newReleaseTo = releaseTo;\n                    delete newReleaseTo[e.target.value];\n                    setReleaseTo(newReleaseTo);\n                  }\n                }}\n                className=\"releaseCheckbox\"\n                type=\"checkbox\"\n              />\n              Crew Member\n            </label>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button className=\"modalButtons\" variant=\"secondary\" onClick={() => setModalShow(false)}>\n            Cancel\n          </Button>\n          <Button\n            className=\"modalButtons\"\n            variant=\"primary\"\n            onClick={async () => {\n              if (releaseTo.length === 0) return;\n              setLoading(true);\n              const params = [];\n              params.push({\n                id: test.id,\n                status: \"Processed\",\n                timerStatus: \"Processed\",\n                sequenceNo: test.sequenceNo,\n                invalidResultStatus: 1,\n              });\n              const ids = [{ id: test.id, sequenceNo: test.sequenceNo }];\n              await GQAPI.releaseTest(params);\n              if (releaseTo.crew) {\n                await GQAPI.sendEmailToPendingRelease(params);\n              }\n\n              const logs = {\n                ids: ids,\n                userID: appContext.user?.sub,\n                userName: appContext.user?.name,\n                slug: test.result.toLowerCase() !== \"positive\" ? \"Inconclusive Release\" : \"Pending Release\",\n              };\n\n              await GQAPI.addTestLogs(logs);\n\n              releaseTo.site &&\n                (await API.sendSMSNotification(\n                  releaseTo.site,\n                  `Hello, there was a positive (${TEST_TYPE_VALUE[test.test_type]}) test result for ${\n                    site.name\n                  }. please login to your Health & Safety Portal to review.`\n                ));\n\n              await appContext.resetPendingTests([test.id]);\n              props.history.push(\"/admin/pendingrelease\");\n              appContext.showSuccessMessage(`Success! You have released test`);\n              setLoading(false);\n            }}\n          >\n            Release Results\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      {openQuarantined && (\n        <QuarantineModal test={test} handleSave={handleSaveQuarantine} handleClose={() => setOpenQuaratined(false)} />\n      )}\n\n      {/* {openTestDetail && (\n        // <EditTestDetailsModal\n        //   testDetails={{\n        //     ...test,\n        //     createdAt: moment(test.createdAt).format(\"YYYY-MM-DDTHH:mm\"),\n        //     employee_demographics: getDemoGraphics(test),\n        //   }}\n        //   users={users}\n        //   handleSave={handleSaveTestDetail}\n        //   handleClose={() => handleCloseTestDetail(false)}\n        // />\n      )} */}\n\n      {openCreator && (\n        <TestModal\n          newTestCreate={newTestCreate}\n          handleCloseCreateTest={handleCloseCreateTest}\n          createTest={updateTest}\n          setTestCreate={setTestCreate}\n          clients={appContext.clients}\n          sites={appContext.sites}\n          labs={appContext.labs}\n          isNew={false}\n          users={users}\n        />\n      )}\n\n      {openDataChangeConfirmation && (\n        <ConfirmationModal\n          show={openDataChangeConfirmation}\n          title=\"Test Update Alert\"\n          message={`New Changes occures, are you want to update your edit info!`}\n          handleConfirm={handleDataChangeConfirm}\n        />\n      )}\n      {changeBarcodeConfirmation && (\n        <ConfirmationModal\n          show={changeBarcodeConfirmation}\n          title={`Change ${stringConstant.barcode} Confirmation`}\n          message={`Are you sure you want to edit the ${stringConstant.barcode}. from ${editInfo.barcode} to ${newTestCreate.barcode} for this test?`}\n          handleConfirm={handleChangeBarcodeNo}\n          isPreRegister={true}\n          handleClose={() => setChangeBarcodeConfirmation(false)}\n        />\n      )}\n    </>\n  ) : (\n    <Loader />\n  );\n}\n\nexport default Test;\n","import React, { useState, useRef } from \"react\";\nimport { Storage } from \"aws-amplify\";\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n  DropdownButton,\n  Dropdown,\n  Modal,\n} from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { Bounce } from \"react-activity\";\nimport \"../../src/tableStyling.css\";\nimport Loader from \"../components/Loader/Loader\";\n\nconst Hipaa = (props) => {\n  const { openHipaa, handleClose, client, resetClients, type = \"client\" } = props;\n\n  const [consentForm, setConsentForm] = useState(\"\");\n  const [toUpdate, setToUpdate] = useState({});\n  const [showAlert, setShowAlert] = useState(false);\n  const [savable, setSavable] = useState(false);\n  const [isEdited, setEdited] = useState(true);\n  const [originalForm, setOriginalForm] = useState(\"\");\n  const [fullscreen, setFullscreen] = useState(true);\n  const [error, setError] = useState(\"\");\n  const [showFileUpload, setShowFileUpload] = useState(client.hippaFile ? true : false);\n  const [fileName, setFileName] = useState(client.hippaFile || \"\");\n  const [filePath, setFilePath] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const inputFile = useRef();\n\n  const getFileFromStorage = async (file) => {\n    const path = await Storage.get(file);\n    setLoading(false);\n    setFilePath(path);\n  };\n\n  useEffect(() => {\n    const file = client.hippaFile || \"\";\n    setShowFileUpload(file ? true : false);\n    setFileName(file);\n    getFileFromStorage(file);\n  }, [client]);\n\n  useEffect(() => {\n    // fetchClients();\n    setConsentForm(client.hippa);\n    setToUpdate({ id: client.id });\n    setOriginalForm(client.hippa);\n    // return setConsentForm('');\n  }, [openHipaa]);\n\n  useEffect(() => {\n    onEditForm();\n  }, [consentForm]);\n\n  useEffect(() => {\n    setSavable(Object.keys(toUpdate).length > 0);\n  }, [consentForm]);\n\n  // not in use anymore? remove next release after confirmation\n  // const fetchClients = async () => {\n  //   const models = await API.getClients();\n  //   setClients(models);\n  // };\n\n  const updateClient = async () => {\n    try {\n      if (consentForm.length > 7000) {\n        setError(\"Text size is too large please upload as pdf\");\n        setConsentForm(\"\");\n        setShowFileUpload(true);\n        return;\n      }\n      if (type === \"site\") {\n        await API.updateSiteHippa(toUpdate.id, consentForm, fileName, type);\n      } else {\n        await API.updateClientsHippa(toUpdate.id, consentForm, fileName, type);\n      }\n      resetClients();\n      setShowAlert(true);\n    } catch (error) {\n      console.log(error);\n      alert(\"Failed to update\");\n    }\n  };\n\n  const onEditForm = () => {\n    if (consentForm == originalForm) {\n      setEdited(false);\n    } else {\n      setEdited(true);\n    }\n  };\n\n  const onChangeForm = (e) => {\n    setConsentForm(e.target.value);\n    onEditForm();\n  };\n\n  const hideAlert = () => {\n    setToUpdate({});\n    setConsentForm(\"\");\n    setShowAlert(false);\n    handleClose();\n  };\n\n  const onChangeFile = async (event) => {\n    if (event.currentTarget.files && event.currentTarget.files.length > 0) {\n      setEdited(true);\n      setLoading(true);\n      const file = event.currentTarget.files[0];\n      const fname = `${client.id}-hippa.pdf`;\n      const response = await Storage.put(fname, file);\n      setConsentForm(\"\");\n      setFileName(fname);\n      getFileFromStorage(fname);\n    }\n  };\n\n  const handleRemoveFile = () => {\n    setFileName(\"\");\n    setEdited(true);\n  };\n\n  const handleUploadClick = () => {\n    if (inputFile.current) {\n      inputFile.current.click();\n    }\n  };\n\n  return (\n    <>\n      <Modal\n        show={openHipaa}\n        // style={{ transform: \"translate(0, -30%)\" }}\n    \n        animation={true}\n        fullscreen={fullscreen}\n        onHide={() => {\n          handleClose();\n        }}\n        dialogClassName=\"hipaaDialogue\"\n      >\n        <SweetAlert show={showAlert} success title=\"Success\" onConfirm={hideAlert}>\n          HIPAA guidelines successfully updated!\n        </SweetAlert>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            HIPAA Guidelines and Consent Form\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body className=\"hipaaBody\">\n          {/* <Row>\n            <h4>HIPAA Guidelines and Consent Form</h4>\n          </Row> */}\n          {/* <Row style={{ marginTop: 15, marginBottom: 15 }}> */}\n          {/* <DropdownButton\n              title={toUpdate.name ? toUpdate.name : \"Choose client to update\"}\n            > */}\n          {/* {clients.map((client) => (\n                <Dropdown.Item\n                  key={client.id}\n                  onClick={() => {\n                    setToUpdate({ id: client.id, name: client.name });\n                    setConsentForm(client.hippa);\n                  }}\n                >\n                  {client.name}\n                </Dropdown.Item>\n              ))}\n            </DropdownButton> */}\n          {/* </Row> */}\n\n          <textarea value={consentForm} onChange={onChangeForm} className=\"hipaaTextArea\" />\n          {showFileUpload && (\n            <div className=\"d-flex justify-content-start\">\n              <input\n                ref={inputFile}\n                type=\"file\"\n                accept=\"application/pdf\"\n                onChange={(e) => onChangeFile(e)}\n                style={{ display: \"none\" }}\n              />\n              <Button onClick={handleUploadClick} size=\"sm\" className=\"modalButtons uploadFileHippa\" variant=\"primary\">\n                Upload File\n              </Button>\n              {fileName && (\n                <>\n                  <div className=\"d-flex align-items-center\">\n                    <span className=\"fileNameHippa\">{fileName}</span>\n                    <div\n                      className=\"btn-sm btn btn-outline-danger\"\n                      style={{ margin: \"0 15px\" }}\n                      onClick={handleRemoveFile}\n                    >\n                      Remove\n                    </div>\n                  </div>\n                  <a href={filePath} download className=\"btn btn-sm btn-outline-primary\">\n                    Download\n                  </a>\n                </>\n              )}\n            </div>\n          )}\n          {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n        </Modal.Body>\n        <Modal.Footer className=\"justify-content-end\">\n          <Row className=\"gap-3\">\n            <Button onClick={() => handleClose()} className=\"modalButtons\" variant=\"secondary\">\n              Close\n            </Button>\n            {savable && (\n              <Button onClick={() => updateClient()} className=\"modalButtons\" disabled={!isEdited} variant=\"primary\">\n                Save\n              </Button>\n            )}\n          </Row>\n        </Modal.Footer>\n        {loading && <Loader />}\n      </Modal>\n    </>\n  );\n};\n\nexport default Hipaa;\n","import { stringConstant } from \"constant\";\n\nexport const filterMapping = {\n  // Demographic Information\n  \"First Name\": \"Demographic\",\n  \"Last Name\": \"Demographic\",\n  \"FirstName\": \"Demographic\",\n  \"LastName\": \"Demographic\",\n  \"Date of Birth\": \"Demographic\",\n  \"Gender\": \"Demographic\",\n  \"Email\": \"Demographic\",\n  \"Phone\": \"Demographic\",\n  \"ID Number\": \"Demographic\",\n  \"City\": \"Demographic\",\n  \"Street\": \"Demographic\",\n  \"Vaccinated\": \"Demographic\",\n  \"isVaccinated\": \"Demographic\",\n\n  // Contact Information\n  \"Contact Name\": \"Contact Information\",\n  \"Primary Contact\": \"Contact Information\",\n  \"Contact Phone\": \"Contact Information\",\n  \"Contact Email\": \"Contact Information\",\n\n  // Test Information\n  \"Test Type\": \"Test Information\",\n  \"Tester\": \"Test Information\",\n  \"Test Status\": \"Test Information\",\n  \"Status\": \"Test Information\",\n  \"Result\": \"Test Information\",\n  \"Associated\": \"Test Information\",\n  \"Quarantined\": \"Test Information\",\n  \"Result Sent\": \"Test Information\",\n  \"External Test\": \"Test Information\",\n  \"External Test Admit\": \"Test Information\",\n  \"Pattern Testing\": \"Test Information\",\n  \"Automate Rapid Test\": \"Test Information\",\n  \"Antigen\": \"Test Information\",\n  \"Molecular\": \"Test Information\",\n  \"Accula\": \"Test Information\",\n  \"BarCodes\": \"Test Information\",\n  \"Result Type\": \"Test Information\",\n  \"White Label\": \"Test Information\",\n  \"False Positive\": \"Test Information\",\n  \"Status Step\": \"Test Information\",\n  \"Show Status\": \"Test Information\",\n  \"Ord Status\": \"Test Information\",\n  \"White Glove\": \"Test Information\",\n  \"Pattern\": \"Test Information\",\n  \"Transition Status\": \"Test Information\",\n\n  // Administrative Details\n  \"Accession No\": \"Administrative\",\n  \"Barcode\": \"Administrative\",\n  \"Role\": \"Administrative\",\n  \"ReferenceID\": \"Administrative\",\n  \"Reason\": \"Administrative\",\n  \"Pre-Registration\": \"Administrative\",\n  \"HR Registration\": \"Administrative\",\n  \"Print Labels\": \"Administrative\",\n  \"Send Quantity\": \"Administrative\",\n  \"Order Status\": \"Administrative\",\n  \"Eligibility Status\": \"Administrative\",\n  \"Capcity\": \"Administrative\",\n  \"Capacity\": \"Administrative\",\n  \"Cancelled Reason\": \"Administrative\",\n  \"Date Created\": \"Administrative\",\n  \"Date End\": \"Administrative\",\n  \"Submitted to H&S\": \"Administrative\",\n  \"Shipment\": \"Administrative\",\n  \"Eligibility\": \"Administrative\",\n  \"Last Updated\": \"Administrative\",\n\n  // Medical Details\n  \"Referring Physician\": \"Medical Details\",\n  \"NPI\": \"Medical Details\",\n  \"Insurance Company\": \"Medical Details\",\n  \"Custody Status\": \"Medical Details\",\n\n  // Insurance Details\n  \"Insurance Info\": \"Insurance Details\",\n  \"Insurance Card\": \"Insurance Details\",\n  \"Vaccination Card\": \"Insurance Details\",\n  \"Vaccination Admit\": \"Insurance Details\",\n  \"Send Insurance\": \"Insurance Details\",\n  \"Vaccination Type\": \"Insurance Details\",\n  \"Payer\": \"Insurance Details\",\n  \"Primary Payer\": \"Insurance Details\",\n  \"Additional Payer\": \"Insurance Details\",\n  \"Additional Payer Number\": \"Insurance Details\",\n  \"Additional Member ID\": \"Insurance Details\",\n  \"Primary Payer Number\": \"Insurance Details\",\n  \"Member ID\": \"Insurance Details\",\n  \"Ins Name\": \"Insurance Details\",\n  \"Ins Alias\": \"Insurance Details\",\n  \"Electronic Claims\": \"Insurance Details\",\n  \"Electronic Eligibility\": \"Insurance Details\",\n  \"Electronic ERA\": \"Insurance Details\",\n\n  // User Details\n  \"Crew ID\": \"User Details\",\n  \"Crew Id\": \"User Details\",\n  \"Name\": \"User Details\",\n  \"Panel Name\": \"User Details\",\n  \"Arkstone Status\": \"User Details\",\n  \"Release Status\": \"User Details\",\n\n  // Others\n  \"Note\": \"Others\",\n\n  // Dynamic Keys (Assuming string constants are defined elsewhere)\n  [stringConstant.sequenceNo]: \"Administrative\",\n  [stringConstant.show]: \"Administrative\",\n};\n\n\n\n","export const selectedProvider = (state) => state.providers;\n\nexport const providerList = (state) => state.providers.providers;\n\nexport const providerOptionList = (state) => state.providers?.providers;\n\nexport const openCreatorProviderSelector = (state) => state.providers.openCreator;\n\nexport const newUserProviderSelector = (state) => state.providers.newUser;\n","import React from \"react\";\n\nconst SwitchToggle = (props) => {\n  const { id, name, handleToogleChange, handleChange, checked, disabled } = props;\n  return (\n    <label className=\"switch\">\n      <input\n        type=\"checkbox\"\n        id={id}\n        name={name}\n        onChange={handleToogleChange ?? handleChange}\n        checked={checked}\n        disabled={disabled}\n      />\n      <span className={`slider round ${disabled ? \"disabled\" : \"\"}`} />\n    </label>\n  );\n};\nexport default SwitchToggle;\n","import React from \"react\";\nimport { Tabs, TabList, Tab, TabPanel } from \"react-tabs\";\nimport \"react-tabs/style/react-tabs.css\";\nimport { InputGroup } from \"react-bootstrap\";\n\nconst renderFilters = ({\n  categories,\n  triggerFilter,\n  setFilter,\n  filterContent,\n  isGrouped,\n  filterTerms,\n  setFilterTabIndex,\n  filterTabIndex,\n  setTriggerFilter\n}) => {\n  if (isGrouped) {\n    return (\n      <Tabs className=\"custom-filter-tabs\" selectedIndex={filterTabIndex} onSelect={(index) => setFilterTabIndex(index)}>\n        <TabList>\n          {Object.keys(categories).map((category) => (\n            <Tab key={category}>{category}</Tab>\n          ))}\n        </TabList>\n        {Object.entries(categories).map(([category, filters]) => (\n          <TabPanel key={category}>\n            <div className=\"mt-t custom-filters-wrapper\" style={{ background: \"#fff\" }}>\n              {filters.map((filterTerm) => (\n                <InputGroup key={filterTerm} className=\"mb-3\">\n                  {triggerFilter && (setFilter((prev) => ({ ...prev, [filterTerm]: \"\" })), setTriggerFilter(false))}\n                  <InputGroup.Text style={{ width: \"175px\" }}>{filterTerm}</InputGroup.Text>\n                  {filterContent(filterTerm)}\n                </InputGroup>\n              ))}\n            </div>\n          </TabPanel>\n        ))}\n      </Tabs>\n    );\n  }\n\n  return (\n    <div className=\"mt-t custom-filters-wrapper\">\n      {filterTerms.map((filterTerm) => (\n        <InputGroup key={filterTerm} className=\"mb-3\">\n          {triggerFilter && (setFilter((prev) => ({ ...prev, [filterTerm]: \"\" })), setTriggerFilter(false))}\n          <InputGroup.Text style={{ width: \"175px\" }}>{filterTerm}</InputGroup.Text>\n          {filterContent(filterTerm)}\n        </InputGroup>\n      ))}\n    </div>\n  );\n};\n\nexport default renderFilters;","export const selectedLocation = (state) => state.locations;\nexport const selectLoading = (state) => state.locations.loading;\nexport const selectError = (state) => state.locations.error;\nexport const locationsSelectors = (state) => state.locations.locations;\nexport const refLabsSelectors = (state) => state.locations.refLabs;\nexport const showLocationTestModalSelectors = (state) => state.locations.showLocationTestModal;\nexport const showPrinterSettingsModalSelectors = (state) => state.locations.showPrinterSettings;\nexport const showBarcodeSettingsModalSelectors = (state) => state.locations.showBarcodeSettings;\n","export default __webpack_public_path__ + \"static/media/Filter-icon.ee05f61b.svg\";","export default __webpack_public_path__ + \"static/media/Select-All-Icon.5ef49e56.svg\";","export default __webpack_public_path__ + \"static/media/filter.1ce58299.svg\";","export default __webpack_public_path__ + \"static/media/Delete-Icon.f8046c8a.svg\";","export default __webpack_public_path__ + \"static/media/window.14ca5b78.svg\";","export default __webpack_public_path__ + \"static/media/Create-Employee-icon.60f3eb1d.svg\";","export default __webpack_public_path__ + \"static/media/bin.f1403532.svg\";","export default __webpack_public_path__ + \"static/media/addUser.21285bde.svg\";","export default __webpack_public_path__ + \"static/media/Load-Crew-Icon.3fe9b2a0.svg\";","export default __webpack_public_path__ + \"static/media/UserInfo.28553c61.svg\";","export default __webpack_public_path__ + \"static/media/Export-Excel-Icon.5e1ad90d.svg\";","export default __webpack_public_path__ + \"static/media/downloadXLS.b1201d84.svg\";","export default __webpack_public_path__ + \"static/media/Personalize-Icon.a083ac66.svg\";","export default __webpack_public_path__ + \"static/media/viewUser.f48639c8.svg\";","export default __webpack_public_path__ + \"static/media/Test-Now-icon.e586bbe5.svg\";","export default __webpack_public_path__ + \"static/media/testUser.f7b2a4e6.svg\";","export default __webpack_public_path__ + \"static/media/Assign-Zone-Icon.dea186a8.svg\";","export default __webpack_public_path__ + \"static/media/pinUser.63ae00ec.svg\";","export default __webpack_public_path__ + \"static/media/Remove-Zone-Icon.64549a79.svg\";","export default __webpack_public_path__ + \"static/media/pinCross.42ba1e00.svg\";","export default __webpack_public_path__ + \"static/media/Acknowl-Positive-icon.02cd625a.svg\";","export default __webpack_public_path__ + \"static/media/tickMark.d5839e3e.svg\";","export default __webpack_public_path__ + \"static/media/Send-Email-Icon.c47a64ef.svg\";","export default __webpack_public_path__ + \"static/media/message.e11f2cbc.svg\";","export default __webpack_public_path__ + \"static/media/Send-QR-Icon.9b73cdc5.svg\";","export default __webpack_public_path__ + \"static/media/qr.91ff4323.svg\";","export default __webpack_public_path__ + \"static/media/groupByDepartment.2d2a46cd.svg\";","export default __webpack_public_path__ + \"static/media/groupByZone.91667b5f.svg\";","export default __webpack_public_path__ + \"static/media/endQuarantine.9a0e9ba4.svg\";","export default __webpack_public_path__ + \"static/media/create.c854fc70.svg\";","export default __webpack_public_path__ + \"static/media/saveIcon.bc2b6764.svg\";","export default __webpack_public_path__ + \"static/media/createBlue.128cd6c3.svg\";","export default __webpack_public_path__ + \"static/media/import.19e14840.svg\";","export default __webpack_public_path__ + \"static/media/download.9a2620ed.svg\";","export default __webpack_public_path__ + \"static/media/generalCallTime.78d6ca96.svg\";","export default __webpack_public_path__ + \"static/media/Show-All-Icon.d3ee58cc.svg\";","export default __webpack_public_path__ + \"static/media/show-archive.e3122a08.svg\";","export default __webpack_public_path__ + \"static/media/calendar-icon.ec8069cb.svg\";","export default __webpack_public_path__ + \"static/media/restore-trash.7e8a2a73.svg\";","export default __webpack_public_path__ + \"static/media/printer.eadc62b5.svg\";","export default __webpack_public_path__ + \"static/media/lab.f280c0a4.svg\";","export default __webpack_public_path__ + \"static/media/submit.8e4bbdaf.svg\";","export default __webpack_public_path__ + \"static/media/negative.023045df.svg\";","export default __webpack_public_path__ + \"static/media/results.70234da0.svg\";","export default __webpack_public_path__ + \"static/media/pdf-file.e91da5d0.svg\";","export default __webpack_public_path__ + \"static/media/qr_Icon.cc664935.svg\";","export default __webpack_public_path__ + \"static/media/edit-icon-blue.bc7b6f64.svg\";","export default __webpack_public_path__ + \"static/media/calendar-date.46da7998.svg\";","export default __webpack_public_path__ + \"static/media/downArrow.1a194102.svg\";","export default __webpack_public_path__ + \"static/media/rightArrow.585c81bc.svg\";","import React from \"react\";\nimport filterIcon from \"../assets/img/Filter-icon.svg\";\nimport filterGreyIcon from \"../assets/img/filter.svg\";\nimport selectAllIcon from \"../assets/img/Select-All-Icon.svg\";\nimport selectAllGreyIcon from \"../assets/img/window.svg\";\nimport binIcon from \"../assets/img/Delete-Icon.svg\";\nimport binGreyIcon from \"../assets/img/bin.svg\";\nimport addUserGreyIcon from \"../assets/img/addUser.svg\";\nimport addUserIcon from \"../assets/img/Create-Employee-icon.svg\";\nimport loadCrewGreyIcon from \"../assets/img/UserInfo.svg\";\nimport loadCrewIcon from \"../assets/img/Load-Crew-Icon.svg\";\nimport XLSGreyIcon from \"../assets/img/downloadXLS.svg\";\nimport XLSIcon from \"../assets/img/Export-Excel-Icon.svg\";\nimport personalizeGreyIcon from \"../assets/img/viewUser.svg\";\nimport personalizeIcon from \"../assets/img/Personalize-Icon.svg\";\nimport testNowGreyIcon from \"../assets/img/testUser.svg\";\nimport testNowIcon from \"../assets/img/Test-Now-icon.svg\";\nimport assignZoneGreyIcon from \"../assets/img/pinUser.svg\";\nimport assignZoneIcon from \"../assets/img/Assign-Zone-Icon.svg\";\nimport removeZoneGreyIcon from \"../assets/img/pinCross.svg\";\nimport removeZoneIcon from \"../assets/img/Remove-Zone-Icon.svg\";\nimport acknowledgedPositiveGreyIcon from \"../assets/img/tickMark.svg\";\nimport acknowledgedPositiveIcon from \"../assets/img/Acknowl-Positive-icon.svg\";\nimport messageGreyIcon from \"../assets/img/message.svg\";\nimport messageIcon from \"../assets/img/Send-Email-Icon.svg\";\nimport qrGreyIcon from \"../assets/img/qr.svg\";\nimport qrIcon from \"../assets/img/Send-QR-Icon.svg\";\nimport groupByDepartmentIcon from \"../assets/img/groupByDepartment.svg\";\nimport groupByZoneIcon from \"../assets/img/groupByZone.svg\";\nimport endQuarantineIcon from \"../assets/img/endQuarantine.svg\";\nimport createIcon from \"../assets/img/create.svg\";\nimport saveIcon from \"../assets/img/saveIcon.svg\";\nimport createIconBlue from \"../assets/img/createBlue.svg\";\nimport importIcon from \"../assets/img/import.svg\";\nimport downloadIcon from \"../assets/img/download.svg\";\nimport generalCallTimeIcon from \"../assets/img/generalCallTime.svg\";\nimport employeeIcon from \"../assets/img/employee-icon.png\";\nimport checkEligibilityIcon from \"../assets/img/Show-All-Icon.svg\";\nimport showArchiveIcon from \"../assets/img/show-archive.svg\";\nimport calendarIcon from \"../assets/img/calendar-icon.svg\";\nimport createEmployeeIcon from \"../assets/img/Create-Employee-icon.svg\";\nimport restoreIcon from \"../assets/img/restore-trash.svg\";\nimport printerIcon from \"../assets/img/printer.svg\";\nimport labIcon from \"../assets/img/lab.svg\";\nimport submitIcon from \"../assets/img/submit.svg\";\nimport minusIcon from \"../assets/img/negative.svg\";\nimport resultsIcon from \"../assets/img/results.svg\";\nimport pdfIcon from \"../assets/img/pdf-file.svg\";\nimport preload from \"../assets/img/submit.svg\";\nimport importTestsIcon from \"../assets/img/import.svg\";\nimport qr_Icon from \"../assets/img/qr_Icon.svg\";\nimport dw_Icon from \"../assets/img/download.svg\";\nimport cancel_Icon from \"../assets/img/reject-icon.png\";\nimport comment_Icon from \"../assets/img/comment.png\";\nimport editIconBlue from \"../assets/img/edit-icon-blue.svg\";\nimport calendarDateIcon from \"../assets/img/calendar-date.svg\";\nimport rangeIcon from \"../assets/img/range.png\";\nimport downArrow from \"../assets/img/downArrow.svg\";\nimport rightArrow from \"../assets/img/rightArrow.svg\";\nimport roles from \"../assets/img/roles.png\";\nimport report from \"../assets/img/report.png\";\nimport viewreport from \"../assets/img/viewreport.png\";\n\n\nconst Icon = (props) => {\n  const {\n    handleClick,\n    label,\n    iconType,\n    disabled,\n    title,\n    style,\n    containerClass = \"header-btns\",\n    innerClass = \"header-btn-img\",\n    imageClass = \"\",\n  } = props;\n\n  const ICONS = {\n    filter: filterIcon,\n    selectAllIcon: selectAllIcon,\n    binIcon: binIcon,\n    addUserIcon: addUserIcon,\n    loadCrewIcon: loadCrewIcon,\n    XLSIcon: XLSIcon,\n    personalizeIcon: personalizeIcon,\n    testNowIcon: testNowIcon,\n    assignZoneIcon: assignZoneIcon,\n    removeZoneIcon: removeZoneIcon,\n    acknowledgedPositiveIcon: acknowledgedPositiveIcon,\n    messageIcon: messageIcon,\n    qrIcon: qrIcon,\n    groupByDepartmentIcon: groupByDepartmentIcon,\n    groupByZoneIcon: groupByZoneIcon,\n    endQuarantineIcon: endQuarantineIcon,\n    createIcon: createIcon,\n    saveIcon: saveIcon,\n    createIconBlue: createIconBlue,\n    importIcon: importIcon,\n    downloadIcon: downloadIcon,\n    generalCallTimeIcon: generalCallTimeIcon,\n    createEmployeeIcon: createEmployeeIcon,\n    checkEligibilityIcon: checkEligibilityIcon,\n    showArchiveIcon: showArchiveIcon,\n    calendarIcon: calendarIcon,\n    restoreIcon: restoreIcon,\n    printerIcon: printerIcon,\n    labIcon: labIcon,\n    submitIcon: submitIcon,\n    minusIcon: minusIcon,\n    resultsIcon: resultsIcon,\n    preload: preload,\n    rangeIcon:rangeIcon,\n    downArrow,\n    rightArrow,\n    roles,\n    pdfIcon,\n    importTests: importTestsIcon,\n    qr_Icon: qr_Icon,\n    dw_Icon,\n    cancel_Icon,\n    comment_Icon,\n    editIconBlue,\n    calendarDateIcon,\n    reportIcon : report,\n    viewreport : viewreport\n  };\n\n  const DISABLED_ICON = {\n    filter: filterGreyIcon,\n    selectAllIcon: selectAllGreyIcon,\n    binIcon: binGreyIcon,\n    addUserIcon: addUserGreyIcon,\n    loadCrewIcon: loadCrewGreyIcon,\n    XLSIcon: XLSGreyIcon,\n    personalizeIcon: personalizeGreyIcon,\n    testNowIcon: testNowGreyIcon,\n    assignZoneIcon: assignZoneGreyIcon,\n    removeZoneIcon: removeZoneGreyIcon,\n    acknowledgedPositiveIcon: acknowledgedPositiveGreyIcon,\n    messageIcon: messageGreyIcon,\n    qrIcon: qrGreyIcon,\n    endQuarantineIcon: endQuarantineIcon,\n    createIcon: createIcon,\n    saveIcon: saveIcon,\n    importIcon: importIcon,\n    downloadIcon: downloadIcon,\n    generalCallTimeIcon: generalCallTimeIcon,\n  };\n\n  return (\n    <div className={containerClass} title={title} onClick={() => !disabled && handleClick && handleClick()}>\n      <div className={innerClass}>\n        <img\n          className={imageClass}\n          src={ICONS[iconType]}\n          alt={`${iconType}`}\n          style={{\n            opacity: disabled ? \"0.5\" : \"\",\n          }}\n        />\n      </div>\n      <div className=\"header-btn-labels mx-auto ellipsis\">{label}</div>\n    </div>\n  );\n};\n\nexport default Icon;\n","import React, { useEffect, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\n\nconst CreateOptions = ({ handleClose, title, label, handleSaveChange, selectedValue, placeholder }) => {\n  const [option, setOption] = useState(\"\");\n\n  useEffect(() => {\n    if (selectedValue) {\n      setOption(selectedValue);\n    }\n  }, [selectedValue]);\n\n  return (\n    <Modal\n      show\n      animation={true}\n      onHide={() => handleClose()}\n      backdrop=\"static\"\n      centered\n      size={\"md\"}\n      keyboard={true}\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {title}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"row mb-3\">\n          <div className=\"col-lg-12 col-12 mb-3\">\n            <label className=\"modalLineHeaders mt-0\">{label}:</label>\n            <input\n              value={option}\n              className=\"modalInput\"\n              placeholder={placeholder}\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setOption(e.target.value)}\n            />\n          </div>\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"headerButton\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={() => handleSaveChange(option)}>\n          Save\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default CreateOptions;\n","import React, { forwardRef } from \"react\";\n\nconst ImagePlaceHolder = forwardRef((props, ref) => {\n  const { handleFileChange } = props;\n\n  const handleDragOver = (e) => {\n    e.preventDefault(); // Prevent the default browser behavior\n    e.dataTransfer.dropEffect = \"copy\"; // Indicate a copy action\n  };\n\n  const handleDrop = (e) => {\n    e.preventDefault(); // Prevent the default browser behavior\n    const file = e.dataTransfer.files[0]; // Get the first dropped file\n    if (file) {\n      handleFileChange(file); // Pass the file to the parent handler\n    }\n  };\n\n  const handleChange = (e) => {\n    const file = e.target.files[0]; // Get the first selected file\n    if (file) {\n      handleFileChange(file); // Pass the file to the parent handler\n    }\n  };\n\n  return (\n    <div\n      className=\"w-100\"\n      onDragOver={handleDragOver} // Handle drag over at the container level\n      onDrop={handleDrop} // Handle drop at the container level\n    >\n      <label className=\"custum-file-upload\" htmlFor=\"file\">\n        <div className=\"icon\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"\" viewBox=\"0 0 24 24\">\n            <path\n              fill=\"\"\n              d=\"M10 1C9.73478 1 9.48043 1.10536 9.29289 1.29289L3.29289 7.29289C3.10536 7.48043 3 7.73478 3 8V20C3 21.6569 4.34315 23 6 23H7C7.55228 23 8 22.5523 8 22C8 21.4477 7.55228 21 7 21H6C5.44772 21 5 20.5523 5 20V9H10C10.5523 9 11 8.55228 11 8V3H18C18.5523 3 19 3.44772 19 4V9C19 9.55228 19.4477 10 20 10C20.5523 10 21 9.55228 21 9V4C21 2.34315 19.6569 1 18 1H10ZM9 7H6.41421L9 4.41421V7ZM14 15.5C14 14.1193 15.1193 13 16.5 13C17.8807 13 19 14.1193 19 15.5V16V17H20C21.1046 17 22 17.8954 22 19C22 20.1046 21.1046 21 20 21H13C11.8954 21 11 20.1046 11 19C11 17.8954 11.8954 17 13 17H14V16V15.5ZM16.5 11C14.142 11 12.2076 12.8136 12.0156 15.122C10.2825 15.5606 9 17.1305 9 19C9 21.2091 10.7909 23 13 23H20C22.2091 23 24 21.2091 24 19C24 17.1305 22.7175 15.5606 20.9844 15.122C20.7924 12.8136 18.858 11 16.5 11Z\"\n              clipRule=\"evenodd\"\n              fillRule=\"evenodd\"\n            ></path>\n          </svg>\n        </div>\n        <div className=\"text\">\n          <span>Drag & Drop or Click to Select a File</span>\n        </div>\n        <input\n          onChange={handleChange}\n          type=\"file\"\n          id=\"file\"\n          ref={ref}\n          style={{ display: \"none\" }} // Hide the default input\n        />\n      </label>\n    </div>\n  );\n});\n\nexport default ImagePlaceHolder;\n","import AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport moment from \"moment\";\nimport { useEffect, useState } from \"react\";\nimport Form from \"react-bootstrap/Form\";\nimport DatePicker from \"react-date-picker\";\nimport Select from \"react-select\";\nimport styles from \"./InputStyle.module.css\";\nimport { useSelector } from \"react-redux\";\nimport { selectLab } from \"store/features/authentication/authenticationSelectors\";\n\nconst InputField = (props) => {\n  const {\n    label,\n    type,\n    placeholder,\n    handleChange,\n    labelStyle,\n    inputStyle,\n    value,\n    maxlength,\n    groupWrapper,\n    disabled,\n    index,\n    errorList,\n    options,\n    isClearable,\n    getOptionValue,\n    getOptionLabel,\n    componentOptions,\n    onInputChange,\n    required,\n    customStyle = {},\n    hideSelectedOptions = false,\n    isFutureDateAllowed,\n    pattern = \"\",\n    isMulti = false,\n  } = props;\n  const [error, setError] = useState(false);\n\n  useEffect(() => {\n    if (errorList && errorList.length > 0) {\n      const res = errorList?.includes(index);\n      setError(res);\n    }\n  }, [errorList]);\n\n  useEffect(() => {\n    if (options && options.length === 1 && type === \"dropDown\") {\n      handleChange(options[0]);\n    }\n  }, []);\n\n  const labData = useSelector(selectLab);\n\n  const countryVal = {\n    label: labData?.country || \"US\",\n    value: labData?.country || \"US\",\n  };\n\n  const getInPutFields = (inputType) => {\n    switch (inputType) {\n      case \"phone\":\n        return (\n          <PhoneNoInput\n            handleChange={handleChange}\n            value={value || \"\"}\n            disabled={disabled}\n            cssCode={`${inputStyle} w-100 ${error && \"errorField\"}`}\n          />\n        );\n      case \"address\":\n        return (\n          <AutoCompleteAddress\n            cssClass={`${styles.inputStyling} ${inputStyle} ${disabled ? \"disabledAddressBar\" : \"\"} ${\n              error && \"errorField\"\n            }`}\n            value={value || \"\"}\n            readOnly={disabled}\n            handleChange={(e, flag) => handleChange(e, flag)}\n          />\n        );\n      case \"datePicker\":\n        return (\n          <DatePicker\n            className={`${inputStyle} ${error && \"errorField\"}`}\n            openCalendarOnFocus={false}\n            dayPlaceholder=\"dd\"\n            monthPlaceholder=\"mm\"\n            yearPlaceholder=\"yyyy\"\n            format=\"MM/dd/y\"\n            onChange={(e) => handleChange(e)}\n            disabled={disabled}\n            value={value && new Date(value) != \"Invalid Date\" ? moment(value, \"YYYY-MM-DD\").toDate() : null}\n            maxDate={!isFutureDateAllowed && new Date()}\n            minDate={new Date(\"1900-01-01\")}\n          />\n        );\n      case \"dropDown\":\n        return (\n          <Select\n            styles={customStyle}\n            options={options}\n            className={`${inputStyle || \"\"} ${error && \"errorField\"}`}\n            blurInputOnSelect={true}\n            hideSelectedOptions={hideSelectedOptions}\n            isClearable={isClearable}\n            getOptionValue={getOptionValue}\n            getOptionLabel={getOptionLabel}\n            menuPlacement=\"auto\"\n            placeholder={placeholder}\n            isDisabled={disabled}\n            isMulti={isMulti}\n            value={label === \"Country\" ? value || countryVal : value}\n            onChange={(e) => handleChange(e)}\n            components={componentOptions}\n            onInputChange={onInputChange}\n          />\n        );\n      default:\n        return (\n          <Form.Control\n            type={inputType}\n            maxLength={maxlength}\n            pattern={pattern}\n            value={value || \"\"}\n            placeholder={placeholder}\n            disabled={disabled}\n            onChange={(e) => handleChange(e)}\n            className={`${styles.inputStyling} ${inputStyle} ${error ? \"errorField\" : \"\"}`}\n          />\n        );\n    }\n  };\n  return (\n    <Form.Group className={`${groupWrapper ? groupWrapper : \"form-group-wrapper \"}`}>\n      {label ? (\n        <Form.Label className={`${styles.inputLabel} ${labelStyle}`}>\n          {`${label} `} {required ? <span className=\"fw-bold fs-6 maroon\">*</span> : null}\n        </Form.Label>\n      ) : (\n        \"\"\n      )}\n\n      {getInPutFields(type)}\n    </Form.Group>\n  );\n};\n\nexport default InputField;\n","import React, { useContext, useEffect, useRef, useState } from \"react\";\nimport api from \"api\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport { AppContext } from \"context/app-context\";\nimport ImagePlaceHolder from \"components/ImagePlaceHolder\";\nimport InputField from \"components/InputField/InputField\";\nimport { SPECIMEN_CONTAINER_TYPE } from \"constant\";\nimport { capitalizeLetter } from \"../../../utils\";\nimport { CONFIG } from \"constant\";\nimport Loader from \"components/Loader/Loader\";\n\nconst SpecimanContainerModal = ({ handleClose, handleSaveChange, handelUpdate, selectedValue, modalTitle }) => {\n  const [selectedFile, setSelectedFile] = useState(null);\n  const fileRef = useRef(null);\n  const appContext = useContext(AppContext);\n  const [loading, setLoading] = useState(false);\n  const [option, setOption] = useState({});\n\n  const [specimenImage, setSpecimenImage] = useState(\"\");\n\n  useEffect(async () => {\n    if (selectedValue) {\n      setOption(selectedValue);\n      try {\n        if (selectedValue.image) {\n          const imageToRender = await api.getImageFile(selectedValue.image);\n          setSpecimenImage(imageToRender);\n        }\n      } catch (err) {\n        console.log(err);\n      }\n    }\n  }, [selectedValue]);\n  const handleFileChange = (selectedFile) => {\n    if (!selectedFile) return; \n    \n    const validExtensions = [\"jpg\", \"jpeg\", \"png\"];\n    const fileExtension = selectedFile.name.split('.').pop().toLowerCase();\n  \n    if (!validExtensions.includes(fileExtension)) {\n      appContext.showErrorMessage(\"Please upload a JPEG or PNG file\");\n      return;\n    }\n  \n    setSelectedFile(selectedFile); \n    const previewURL = URL.createObjectURL(selectedFile);\n    setSpecimenImage(previewURL); \n  };\n  \n  \n  const handleSave = async () => {\n    setLoading(true);\n    if (!option.name) {\n      appContext.showErrorMessage(\"Enter Container Name\");\n      setLoading(false);\n\n      return;\n    }\n    if (!option.type) {\n      appContext.showErrorMessage(\"Select Container Type\");\n      setLoading(false);\n\n      return;\n    }\n    try {\n      let imagePath;\n      if (selectedFile) {\n        imagePath = await api.saveImageFile({id:CONFIG.clientID, file:selectedFile});\n      }\n      handleSaveChange({\n        ...option,\n        image: imagePath || selectedValue?.image || \"\",\n        name: capitalizeLetter(option.name),\n        type: capitalizeLetter(option.type),\n      });\n    } catch (err) {\n      console.log(\"Error in Uploading image:\", err);\n    }\n    setLoading(false);\n  };\n  const onRemoveImage = async () => {\n    if (!selectedValue.image) {\n      setSpecimenImage(null);\n      return;\n    }\n    await api.deleteImageFile(selectedValue.image);\n    setSpecimenImage(null);\n    handelUpdate({\n      ...option,\n      image: \"\",\n      name: capitalizeLetter(option.name),\n      type: capitalizeLetter(option.type),\n    });\n  };\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => handleClose()}\n        backdrop=\"static\"\n        centered\n        size={\"md\"}\n        keyboard={true}\n        className=\"second-modal\"\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {modalTitle}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body style={{ paddingTop: 0 }}>\n          {loading && <Loader />}\n          <div className=\"row mb-3\">\n            <div className=\"col-lg-12 col-12 mb-3\">\n              <label className=\"modalLineHeaders mt-0\">\n                Name<span style={{ color: \"red\" }}>*</span>\n              </label>\n              <input\n                type=\"text\"\n                value={option.name}\n                className=\"modalInput\"\n                placeholder=\"Enter Container Name\"\n                style={{\n                  width: \"100%\",\n                }}\n                onChange={(e) => {\n                  setOption({ ...option, name: e.target.value });\n                }}\n              />\n\n              <div className=\"col-lg-12 col-12 mt-3\">\n                <label>\n                  Type<span style={{ color: \"red\" }}>*</span>\n                </label>\n                <InputField\n                  type=\"dropDown\"\n                  groupWrapper=\"w-100\"\n                  options={SPECIMEN_CONTAINER_TYPE}\n                  labelStyle=\"text-capitalize\"\n                  value={SPECIMEN_CONTAINER_TYPE.find((opt) => opt.value === option.type) || null}\n                  index=\"Name\"\n                  isClearable={true}\n                  placeholder=\"Select Container Type:\"\n                  handleChange={(selectedOption) => {\n                    setOption({ ...option, type: selectedOption?.value });\n                  }}\n                />\n              </div>\n              <div className=\"col-lg-12 col-12 mt-3\">\n                {specimenImage ? (\n                  <div\n                    className=\"w-100 relative\"\n                    style={{\n                      objectFit: \"contain\",\n                      overflow: \"hidden\",\n                      border: \"1px solid #a19fa0\",\n                      borderRadius: \"5px\",\n                      boxShadow : \"1px 1px rgb(212, 212, 212)\"\n                    }}\n                  >\n                    {specimenImage && (\n                      <button onClick={() => onRemoveImage()} className=\"cancel-btn\">\n                        ×\n                      </button>\n                    )}\n                    <img src={specimenImage} className=\"w-100\" height={300} />\n                  </div>\n                ) : (\n                  <ImagePlaceHolder setSelectedFile = {setSelectedFile} ref={fileRef} handleFileChange={handleFileChange} />\n                )}\n              </div>\n            </div>\n          </div>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button variant=\"secondary\" className=\"headerButton\" onClick={() => handleClose()}>\n            Close\n          </Button>\n          <Button variant=\"primary\" className=\"headerButton\" onClick={handleSave}>\n            {selectedValue?.name || selectedValue?.type || selectedValue?.image ? \"Update\" : \"Save\"}\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default SpecimanContainerModal;\n","const CONSTANTS = {\n  GENERAL: \"GENERAL\",\n  SHOW_CONFIRM_MODAL: \"show_confirm_modal\",\n};\n\nexport default CONSTANTS;\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { showConfirmationModal } from \"./generalAction\";\nimport CONSTANTS from \"./generalConstant\";\nimport api from \"../../../api\";\n\nexport const updateTestNames = createAsyncThunk(CONSTANTS.UPDATE_TEST_NAME, async (param, { dispatch }) => {\n  const apiData = await api.updateTestNames(param);\n  return {};\n});\n\nconst generalSlice = createSlice({\n  name: CONSTANTS.GENERAL,\n  initialState: {\n    loader: false,\n    error: null,\n    testPrint: null,\n    message: {\n      text: \"\",\n      mode: \"\",\n      title: \"\",\n    },\n    confirmationModal: {\n      showModal: false,\n      message: \"\",\n      title: \"\",\n      onConfirm: null,\n    },\n    selectedDevice: false,\n    archivedData: {\n      archivedList: [],\n      personalization: [],\n      modalTitle: \"\",\n    },\n    questionTableModal: {\n      rows: [],\n      columns: [],\n      modalTitle: \"\",\n      customStyles: {},\n    },\n    answerAdditionalQuestion: [],\n    showQuestionaireTable: false,\n  },\n  reducers: {\n    setArchivedList: (state, action) => {\n      state.archivedData.archivedList = action.payload.archivedList || [];\n      state.archivedData.personalization = action.payload.personalization || [];\n      state.archivedData.modalTitle = action.payload.modalTitle\n        ? `${action.payload.modalTitle} Archived Status`\n        : \"Patient Archived Status\";\n    },\n    setQuestionTableModal: (state, action) => {\n      const combinedRows = [...state.questionTableModal.rows, ...action.payload.rows];\n\n      const rowMap = new Map();\n      for (const row of combinedRows) {\n        rowMap.set(row.id, row);\n      }\n\n      const uniqueRows = Array.from(rowMap.values());\n\n      state.questionTableModal = {\n        rows: action.payload?.rows?.length === 0 ? [] : uniqueRows,\n        columns: action.payload.columns,\n        modalTitle: action.payload.modalTitle,\n        customStyles: action.payload.customStyles,\n      };\n    },\n    setShowQuestionaireTable: (state, action) => {\n      state.showQuestionaireTable = action.payload.showQuestionaireTable;\n    },\n\n    setAnswerAdditionalQuestion: (state, action) => {\n      const combined = [...state.answerAdditionalQuestion, ...action.payload?.answerAdditionalQuestion];\n\n      const itemMap = new Map();\n      combined.forEach((item) => {\n        itemMap.set(item.id, item);\n      });\n\n      const uniqueItems = Array.from(itemMap.values());\n\n      state.answerAdditionalQuestion = action.payload?.answerAdditionalQuestion?.length === 0 ? [] : uniqueItems;\n    },\n    setAnswerAdditionalQuestionUpdate: (state, action) => {\n      state.answerAdditionalQuestion = action.payload.answerList;\n      state.questionTableModal.rows = action.payload.answerList.map((item) => {\n        return { ...item, selectedValue: item?.answer || \"\",title:item?.questions ||\"\", type:\"radio\" } \n      });\n      state.questionTableModal.columns = action.payload.columns\n\n\n    },\n\n    setLoader: (state, action) => {\n      state.loader = Boolean(action.payload);\n    },\n    setTestPrintView: (state, action) => {\n      state.testPrint = action.payload;\n    },\n    setSelectedDevice: (state, action) => {\n      state.selectedDevice = action.payload;\n    },\n    showMessage: (state, action) => {\n      state.message = {\n        text: action.payload?.text || \"\",\n        mode: action.payload?.mode || \"\",\n        title: action.payload?.title || \"\",\n      };\n    },\n    setClearConfirmation: (state, action) => {\n      state.confirmationModal = {\n        showModal: false,\n        message: \"\",\n        title: \"\",\n        onConfirm: null,\n      };\n    },\n    setError: (state, action) => {\n      state.error = action.payload || null;\n    },\n  },\n  extraReducers: (builder) => {\n    builder.addCase(showConfirmationModal.fulfilled, (state, action) => {\n      state.confirmationModal = action.payload;\n    });\n  },\n});\n\nexport const {\n  setLoader,\n  showMessage,\n  setError,\n  setTestPrintView,\n  setSelectedDevice,\n  setClearConfirmation,\n  setArchivedList,\n  setQuestionTableModal,\n  setShowQuestionaireTable,\n  setAnswerAdditionalQuestion,\n  setAnswerAdditionalQuestionUpdate,\n} = generalSlice.actions;\n\nexport default generalSlice.reducer;\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { toTitleCase } from \"utils\";\nimport CONSTANTS from \"./generalConstant\";\nimport { showMessage } from \"./generalSlice\";\n\nconst { SHOW_CONFIRM_MODAL } = CONSTANTS;\n\nexport const setMessage =\n  (text = \"\", mode = \"\", title= \"\") =>\n  (dispatch) => {\n    dispatch(showMessage({ text : toTitleCase(text), mode, title }));\n  };\n\nexport const showConfirmationModal = createAsyncThunk(SHOW_CONFIRM_MODAL, (confirmationModalData) => {\n  return confirmationModalData;\n});\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../../api\";\nimport { TEST_DICTIONARY, GENERAL_SETTINGS_FETCH, SHOW_ASSOCIATED_PANEL } from \"./testDictionaryConstant\";\nimport { setMessage } from \"../general/generalAction\";\nimport { MESSAGE_MODES } from \"constant\";\n\n// Async thunk to fetch all clients\nexport const fetchGeneralSettings = createAsyncThunk(GENERAL_SETTINGS_FETCH, async () => {\n  const response = await api.getAllGeneralSetting();\n  return response;\n});\n\n// export const showTestAssociatePanel = createAsyncThunk(SHOW_ASSOCIATED_PANEL, async (id) => {\n//   const response = await api.getTestTypesByID(id);\n//   return response;\n// });\n\nexport const showTestAssociatePanel = createAsyncThunk(SHOW_ASSOCIATED_PANEL, async (id, { dispatch }) => {\n  const testResult = await api.getTestTypesByID(id);\n\n  if (testResult && testResult.targetRanges && testResult.targetRanges.length > 0) {\n    return testResult;\n  } else {\n    dispatch(setMessage(\"No associated panel link with this test.\", MESSAGE_MODES.error));\n  }\n});\n\nconst generalSettingsSlice = createSlice({\n  name: TEST_DICTIONARY,\n  initialState: {\n    settings: [],\n    associatedPanelData: null,\n  },\n  reducers: {\n    emptyAssociatedPanel: (state, action) => {\n      state.associatedPanelData = null;\n    },\n  },\n  extraReducers: (builder) => {\n    builder.addCase(fetchGeneralSettings.fulfilled, (state, action) => {\n      state.settings = action.payload;\n    });\n    builder.addCase(showTestAssociatePanel.fulfilled, (state, action) => {\n      state.associatedPanelData = action.payload;\n    });\n  },\n});\nexport const { emptyAssociatedPanel } = generalSettingsSlice.actions;\n\nexport default generalSettingsSlice.reducer;\n","export const TEST_DICTIONARY = \"TestDictionary\";\n\nexport const GENERAL_SETTINGS_FETCH = \"generalSettings\";\n\nexport const SHOW_ASSOCIATED_PANEL = \"showAssociatedPanels\";\n","import api from \"api\";\nimport { AppContext } from \"context/app-context\";\nimport { useContext } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { generalSettings } from \"store/features/testDictionary/testDictionarySelectors\";\nimport { fetchGeneralSettings } from \"store/features/testDictionary/testDictionarySlice\";\nimport { TEST_SETTING_TYPES } from \"../../constant\";\n\nconst useOptions = (settingType) => {\n  const dispatch = useDispatch();\n  const appContext = useContext(AppContext);\n\n  const generalSettingsData = useSelector(generalSettings);\n\n  const handleOption = async (optionName, id = null) => {\n    try {\n      let response;\n      if (settingType === TEST_SETTING_TYPES.TEST_LABEL) {\n\n        if (id) {\n          response = await api.updateTestLabel(optionName, id);\n        } else {\n          response = await api.createTestLabel(optionName);\n        }\n      }\n      else if (settingType === TEST_SETTING_TYPES.INSTRUMENT) {\n        if (id) {\n          response = await api.updateInstrument(optionName, id);\n        } else {\n          response = await api.createInstrument(optionName);\n        }\n      }\n      else if(settingType === TEST_SETTING_TYPES.SPECIMEN_CONTAINER)\n      {\n        if(id)\n        {\n          response = await api.updateSpecimanContainer(optionName, id);\n        }\n        else \n        {\n          response = await api.createSpecimanContainer(optionName); \n        }\n      }\n      else {\n        if (!id) {\n\n          const alreadyExist = generalSettingsData.some((item) => {\n            const label = item.label ? item?.label.toLowerCase().trim() : \"\";\n            const type = item.settingType ? item.settingType.toLowerCase().trim() : \"\";\n\n            if (settingType === \"source\") {\n              return label === optionName?.source?.toLowerCase().trim();\n            }\n\n            if (settingType === \"cancelled\") {\n              return label === optionName?.label?.toLowerCase().trim();\n            } else {\n              return label === optionName.toLowerCase().trim() && type === settingType.toLowerCase().trim();\n            }\n          });\n\n          if (alreadyExist) {\n            appContext.showErrorMessage(`This ${settingType} already exist.`);\n            return;\n          }\n        }\n\n        const action = id ? api.updateOptions : api.createOption;\n        response = await action(settingType, optionName, id, {\n          sub: appContext?.user?.sub,\n          name: appContext?.user?.name,\n        });\n      }\n\n      if (response && response.id) {\n        dispatch(fetchGeneralSettings());\n      }\n    } catch (error) {\n      console.error(`Error ${id ? \"updating\" : \"adding\"} ${settingType}:`, error);\n    }\n  };\n\n  const handleDelete = async (id) => {\n    const response = await api.deleteOption(id);\n    if (response && response.id) {\n      dispatch(fetchGeneralSettings());\n    }\n  };\n\n  return {\n    addOption: (optionName) => handleOption(optionName),\n    updateOption: (optionName, id) => handleOption(optionName, id),\n    deleteOption: (id) => handleDelete(id),\n  };\n};\n\nexport default useOptions;\n","import React, { useEffect, useState } from \"react\";\nimport Select from \"react-select\";\nimport api from \"api\";\nimport Icon from \"components/Icon\";\nimport CreateOptions from \"../TestUnitSelector/CreateOptions\";\nimport { ReactSelectCustomContainer } from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\nimport { TEST_SETTING_TYPES } from \"constant\";\nimport SpecimanContainerModal from \"../SpecimanContainer/SpecimanContainerModal\";\n\nimport saveOptions from \"../../TestTypeSetting/useOptions\";\n\nexport const useOptions = (settingType) => {\n  const [options, setOptions] = useState([]);\n\n  const getOptions = async () => {\n    try {\n      let optionList = await api.getGeneralSetting(settingType);\n      setOptions(optionList);\n    } catch (error) {\n      console.error(`Error fetching ${settingType}:`, error);\n    }\n  };\n\n  const addOption = async (optionName) => {\n    if (settingType === TEST_SETTING_TYPES.ROLE) {\n      if (optionName.toLowerCase().includes(\"admin\")) {\n        return;\n      }\n      const isExist = options.some((item) => item.label.toLowerCase() === optionName.toLowerCase());\n      if (!isExist) {\n        await api.createRolesOption(settingType, optionName);\n      }\n      getOptions();\n    } else {\n      try {\n        const isExist = options.some((item) => item.label.toLowerCase() === optionName.toLowerCase());\n        if (!isExist) {\n          await api.createOption(settingType, optionName);\n        }\n        getOptions();\n      } catch (error) {\n        console.error(`Error adding ${settingType}:`, error);\n      }\n    }\n  };\n\n  const addSpecimenOption = async (value) => {\n    await api.createSpecimanContainer(value);\n    await getOptions();\n  };\n\n  useEffect(() => {\n    getOptions();\n  }, [settingType]);\n\n  return { options, addOption, addSpecimenOption };\n};\n\nconst TestTypeSelect = ({\n  settingType,\n  onChange,\n  value,\n  tabIndex = 1,\n  label = \"Units\",\n  className = \"\",\n  title = \"Create New Unit\",\n  placeholder = \"Select Units\",\n  updateMainTest,\n  required = false,\n  isMulti = false,\n  defaultValue = null,\n  defaultOptions = null,\n  showAddIcon = true,\n  showNumberSelected = false,\n  mainClass = \"test-component-element\",\n}) => {\n  const { options, addOption, addSpecimenOption } = useOptions(settingType);\nconst [loading,setLoading] = useState(false);\n  const { addOption: saveAllOptions } = saveOptions(settingType);\n\n  const [showCreateOptionModal, setShowCreateOptionModal] = useState(false);\n\n  const handelAddOption = async (value) => {\n    if (settingType === TEST_SETTING_TYPES.SPECIMEN_CONTAINER) {\n      addSpecimenOption(value);\n      setShowCreateOptionModal(false);\n    } else {\n      addOption(value);\n      updateMainTest && updateMainTest(value);\n      setShowCreateOptionModal(false);\n    }\n  };\n\n  return (\n    <div className={mainClass}>\n      <div className=\"selector-label-container\">\n        {label && (\n          <p className=\"test-type-input-label\">\n            {label}\n            {required && <span style={{ color: \"red\" }}>*</span>}\n          </p>\n        )}\n        {showAddIcon && (\n          <Icon\n            iconType={\"createIconBlue\"}\n            containerClass={\"ms-2 cursor-pointer\"}\n            innerClass={\"test-selector-add-icon\"}\n            handleClick={() => setShowCreateOptionModal(true)}\n          />\n        )}\n      </div>\n      <div className=\"d-flex align-items-center\">\n        <Select\n          className={`w-100 ${className}`}\n          options={defaultOptions ? defaultOptions : options}\n          blurInputOnSelect={true}\n          menuPlacement={\"auto\"}\n          defaultValue={defaultValue}\n          value={value}\n          placeholder={placeholder}\n          onChange={onChange}\n          tabIndex={tabIndex}\n          isMulti={isMulti}\n          // components={{ ValueContainer: ReactSelectCustomContainer }}\n          components={showNumberSelected ? { ValueContainer: ReactSelectCustomContainer } : undefined}\n        />\n      </div>\n\n      {showCreateOptionModal && settingType !== TEST_SETTING_TYPES.SPECIMEN_CONTAINER && (\n        <CreateOptions\n          handleClose={() => setShowCreateOptionModal(false)}\n          title={title}\n          label={label}\n          handleSaveChange={handelAddOption}\n          placeholder={placeholder}\n        />\n      )}\n\n      {showCreateOptionModal && settingType === TEST_SETTING_TYPES.SPECIMEN_CONTAINER && (\n        <SpecimanContainerModal\n          modalTitle={\"Specimen Container\"}\n          handleClose={() => setShowCreateOptionModal(false)}\n          handleSaveChange={handelAddOption}\n          selectedValue={null}\n        />\n      )}\n    </div>\n  );\n};\n\nexport default TestTypeSelect;\n","export const insurnaceSelector = (state) => state.insurances;\nexport const payerSelector = (state) => state.insurances.payerList;\n\nexport const selectedInsurnaceSelector = (state) => state.insurances.selectedInsurance;\nexport const selectInsuranceModalSelector = (state) => state.insurances.openInsruModal;\nexport const totalInsurancesRecordsSelector = (state) => state.insurances.totalInsurancesRecords;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport { FormControl } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport {\n  RESULT_SENT_OPTIONS,\n  GENDER_OPTIONS,\n  FILTER_SHOW_STATUS,\n  FILTER_TEST_STATUS,\n  TEST_TYPE_OPTIONS,\n  ORDER_CANCELLED_RESASON_OPT,\n  INSURANCE_PROVIDER,\n  EMPLOYEE_STATUS,\n  NETWORK_STATUS,\n  VACCINATED_OPTIONS,\n  CAPACITY_OPTIONS,\n  TRANSITION_STATUS_OPT,\n  stringConstant,\n  BATCH_OPTIONS,\n  CUSTODY_OPT,\n  ORDER_STATUS_OPT,\n  ELIGIBILITY_STATUS,\n  CONFIG,\n  RESULT_SETTINGS_OPT,\n  archstone_STATUS_OPT,\n  RELEASE_STATUS_OPTION,\n  BATCH_OPTIONS_COMPLETED_TEST,\n  RESULT_EMAILED_OPTION,\n  ORDER_STATUS_DROPDOWN,\n  NPI_TYPE_OPTIONS,\n  OPTION_YES_NO,\n} from \"constant\";\nimport {\n  ReactSelectCustomContainer,\n  Option,\n  customStyles,\n} from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\nimport { filterMapping } from \"filterMappingConstant\";\n\nimport moment from \"moment\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\n\nimport { AppContext } from \"context/app-context\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\n\nimport api from \"api\";\nimport { useMemo } from \"react\";\n\nimport { providerOptionList, selectedProvider } from \"store/features/providers/providersSelectors\";\nimport { useSelector } from \"react-redux\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport \"react-tabs/style/react-tabs.css\";\nimport renderFilters from \"./RenderFilter\";\nimport { createFilterMapping, createFilterMappingWithoutGroup } from \"utils\";\nimport { refLabsSelectors } from \"store/features/locations/locationsSelectors\";\nimport { customUniqBy } from \"../util/customLodash\";\nimport { useOptions } from \"views/TestTypeSetting/TestTypeComponent/TestTypeSelect\";\nimport { TEST_SETTING_TYPES } from \"constant\";\nimport { payerSelector } from \"store/features/insurances/insuranceSelectors\";\n\nconst Filter = ({\n  filterTerms,\n  setFilter,\n  filter,\n  isUsersTable,\n  triggerFilter,\n  setTriggerFilter,\n  handleClearFilter,\n  personalisationData,\n  isGrouped = false,\n  setFilterTabIndex,\n  filterTabIndex,\n  filterTab = null,\n}) => {\n  const payerList = useSelector(payerSelector);\n  const [clearFilter, setClearFilter] = useState(false);\n\n  const [testTypes, setTestTypes] = useState([]);\n\n  const [users, setUsers] = useState([]);\n\n  const appContext = useContext(AppContext);\n\n  // const providers = useSelector(providerOptionList);\n  const { providers, filteredProviders } = useSelector(selectedProvider);\n\n  const { options: DEPARTMENT_OPTIONS } = useOptions(TEST_SETTING_TYPES.DEPARTMENT);\n  const { options: SOURCE_OPTIONS } = useOptions(TEST_SETTING_TYPES.SOURCE);\n\n  const labLocations = useSelector(refLabsSelectors);\n\n  const providerOptionsForResult = useMemo(() => {\n    return providers.map((l) => {\n      return { ...l, value: l.name, label: l.name };\n    });\n  }, [providers]);\n\n  const siteOptions = () => {\n    if (stringConstant.show === \"Client\") {\n      return appContext.sites.map((m) => ({ value: m.id, label: m.name }));\n    }\n    return appContext.sites.map((m) => ({ value: m.id, label: m.name }));\n  };\n\n  const getLabOptions = useMemo(() => {\n    return labLocations.map((l) => {\n      return { ...l, value: l.name, label: l.name };\n    });\n  }, [labLocations]);\n\n  const getList = async () => {\n    const testAssayTypes = await api.getTestTypesForFilter();\n\n    setTestTypes(testAssayTypes);\n  };\n\n  const getUserFromLocalDB = async () => {\n    const systemUsers = appContext?.users || [];\n   \n    if (systemUsers?.length > 0) {\n      setUsers(systemUsers);\n    } else {\n      let getUserDAta = await api.getUserFromLocalDB(CONFIG.isWhiteLabel ? CONFIG.whiteLabelID : \"\");\n      setUsers(getUserDAta);\n    }\n  };\n\n  useEffect(() => {\n    getList();\n    getUserFromLocalDB();\n  }, []);\n\n  const usersData = useMemo(() => {\n    if (!users) return;\n    return users\n      .filter((u) => u.roles?.includes(\"Tester\") || u.roles?.includes(\"Admin\") || u.roles?.includes(\"Lab\"))\n      .map((u) => {\n        return {\n          value: u.userID,\n          label: `${u.firstName} ${u.lastName}`,\n          phone_number: u.phone_number?.replace(/ /g, \"\"),\n        };\n      });\n  }, [users]);\n\n  const filterAlias = (term) => {\n    if (personalisationData) {\n      const personaliseKey = personalisationData.find((f) => f.title === term);\n      if (personaliseKey?.filterKey || personaliseKey?.itemKey) {\n        return personaliseKey?.filterKey || personaliseKey?.itemKey;\n      }\n    }\n\n    switch (term) {\n      case \"Crew ID\":\n        return \"id\";\n      case \"Name\":\n        return \"name\";\n      case \"First Name\":\n        return \"firstName\";\n      case \"Last Name\":\n        return \"lastName\";\n      case \"FirstName\":\n        return \"first\";\n      case \"LastName\":\n        return \"last\";\n      case \"Phone\":\n        if (isUsersTable) {\n          return \"phone_number\";\n        } else {\n          return \"phoneNumber\";\n        }\n      // return \"phoneNumber\";\n      case \"Email\":\n        return \"email\";\n      case \"Accession No\":\n      case \"Barcode\":\n        return \"barcode\";\n      case \"Test Status\":\n      case \"Status\":\n        return \"status\";\n      case \"Referring Physician\":\n        return \"providerID\";\n      case \"Result\":\n        return \"result\";\n      // case \"Lab\":\n      //   return \"lab\";\n      case \"Role\":\n        return \"userRole\";\n      case \"Contact Name\":\n      case \"Primary Contact\":\n        return \"contact_name\";\n      case \"Contact Phone\":\n        return \"contact_phone\";\n      case \"Contact Email\":\n        return \"contact_email\";\n      case \"Test Type\":\n        return \"test_type\";\n      case \"Associated\":\n        return \"associated\";\n      case \"Tester\":\n        return \"tester_name\";\n      case \"Crew Id\":\n        return \"employeeID\";\n      case \"Quarantined\":\n        return \"isQuarantined\";\n      case `${stringConstant.sequenceNo}`:\n        return \"sequenceNo\";\n      case \"ReferenceID\":\n        return \"referenceID\";\n      case \"Result Sent\":\n        return \"emailSend\";\n      case \"Reason\":\n        return \"reason\";\n      case \"Insurance Info\":\n        return \"insurance_required\";\n      case \"Insurance Card\":\n        return \"sendInsuranceCard\";\n      case \"Vaccination Card\":\n        return \"vaccinationCard\";\n      case \"Vaccination Admit\":\n        return \"admit\";\n      case \"External Test\":\n        return \"externalTest\";\n      case \"External Test Admit\":\n        return \"externalTestAdmit\";\n      case \"Pattern Testing\":\n        return \"patternTesting\";\n      case \"Pre-Registration\":\n        return \"preRegistration\";\n      case \"HR Registration\":\n        return \"isHRPR\";\n      case \"Automate Rapid Test\":\n        return \"antigen\";\n      case \"Print Labels\":\n        return \"tubes_provided\";\n      case \"Antigen\":\n        return \"default_antigen\";\n      case \"Molecular\":\n        return \"default_molecular\";\n      case \"Accula\":\n        return \"default_other\";\n      case \"Send Insurance\":\n        return \"sendInsurance\";\n      case \"BarCodes\":\n        return \"barCodeProvided\";\n      case \"Result Type\":\n        return \"resultType\";\n      case \"White Label\":\n        return \"whiteLabel\";\n      case \"Gender\":\n        return \"sex\";\n      case \"ID Number\":\n        return \"id_number\";\n      case \"City\":\n        return \"city\";\n      case \"Vaccinated\":\n        return \"isVaccinated\";\n      case \"False Positive\":\n        return \"isFalsePositive\";\n      case \"Reference ID\":\n        return \"referenceID\";\n      case \"Shipment\":\n        return \"enableShipment\";\n      case \"Street\":\n        return \"street\";\n      case \"Send Quantity\":\n        return \"testSendQty\";\n      case \"Vaccination Type\":\n        return \"vaccinationType\";\n      case \"Status Step\":\n        return \"step\";\n      case \"Date of Birth\":\n        return \"dob\";\n      case \"Order Status\":\n        return \"orderStatus\";\n      case \"Eligibility Status\":\n        return \"eligibilityStatus\";\n      case \"Capcity\":\n        return \"capcity\";\n      case \"Cancelled Reason\":\n        return \"cancelledReason\";\n      case \"Show Status\":\n      case \"Ord Status\":\n        return \"status\";\n      case \"isVaccinated\":\n        return \"vaccinated\";\n      case \"White Glove\":\n        return \"whiteGlove\";\n      case \"Pattern\":\n        return \"pattern\";\n      case \"Capacity\":\n        return \"capacity\";\n      case \"Transition Status\":\n        return \"transitionStatus\";\n      case \"Date Created\":\n        return \"startDate\";\n      case \"Date End\":\n        return \"endDate\";\n      case \"Submitted to H&S\":\n        return \"batch\";\n      case `${stringConstant.show}`:\n        return \"siteID\";\n      case \"Custody Status\":\n        return \"pcrStatus\";\n      case \"Payer\":\n      case \"Primary Payer\":\n        return \"payerId\";\n      case \"Additional Payer\":\n        return \"secondaryInsurance\";\n      case \"Additional Payer Number\" || \"Additional Member ID\":\n        return \"secondaryInsuranceNumber\";\n      case \"Primary Payer Number\" || \"Member ID\":\n        return \"insurance_number\";\n      case \"Eligibility\":\n        return \"eligibilityStatus\";\n      case \"Ins Name\":\n        return \"Name\";\n      case \"Ins Alias\":\n        return \"shortName\";\n      case \"Electronic Claims\":\n        return \"eClaim\";\n      case \"Electronic Eligibility\":\n        return \"eEligibility\";\n      case \"Electronic ERA\":\n        return \"ERA\";\n      case \"NPI\":\n      case \"Insurance Company\":\n        return \"npi\";\n      case \"Note\":\n        return \"note\";\n      case \"Last Updated\":\n        return \"updatedAt\";\n      case \"Panel Name\":\n        return \"name\";\n      case \"Arkstone Status\":\n        return \"arkstoneStatus\";\n      case \"Release Status\":\n        return \"releaseStatus\";\n      default:\n        return term;\n    }\n  };\n\n  const lowerCaseKeys = (obj) => {\n    const keys = Object.keys(obj);\n    const newObj = {};\n    for (const key of keys) {\n      newObj[key.toLowerCase()] = obj[key];\n    }\n    return newObj;\n  };\n\n  const dateRangeMultiSelection = (filterTerm) => (\n    <DateRangePicker\n      onApply={(event, picker) => {\n        picker.element.val(picker.startDate.format(\"MM/DD/YYYY\") + \" - \" + picker.endDate.format(\"MM/DD/YYYY\"));\n        setFilter({\n          ...filter,\n          [filterAlias(filterTerm)]: { startDate: picker.startDate, endDate: picker.endDate },\n        });\n      }}\n      onCancel={(event, picker) => {\n        picker.element.val(\"\");\n        setFilter({\n          ...filter,\n          [filterAlias(filterTerm)]: {},\n        });\n      }}\n      initialSettings={\n        filter[filterAlias(filterTerm)]\n          ? filter[filterAlias(filterTerm)]\n          : {\n              drops: \"auto\",\n              autoUpdateInput: false,\n              locale: {\n                cancelLabel: \"Clear\",\n              },\n            }\n      }\n    >\n      <input type=\"text\" placeholder=\"Select Date Range\" readOnly className=\"dateRangeFilter\" defaultValue=\"\" />\n    </DateRangePicker>\n  );\n\n  const dateRangeSelection = (filterTerm) => (\n    <SingleDatePicker\n      onApply={(event, picker) => {\n        const date = moment(picker.startDate);\n        if (date.isValid()) {\n          setFilter({\n            ...filter,\n            [filterAlias(filterTerm)]: date.format(\"YYYY-MM-DD\"),\n          });\n        }\n      }}\n      onCancel={(event, picker) => {\n        picker.element.val(\"\");\n        setFilter({\n          ...filter,\n          [filterAlias(filterTerm)]: {},\n        });\n      }}\n      value={filter[filterAlias(filterTerm)]}\n      currentDate={true}\n    />\n  );\n\n  const getDropDown = (data, filterTerm) => {\n    const prevData = filter[filterAlias(filterTerm)];\n\n    const prevSelectedVal =\n      prevData !== undefined\n        ? data.filter((d) => {\n            return d.value === prevData || String(d.value).indexOf(String(prevData)) !== -1;\n          })\n        : null;\n\n    return (\n      <Select\n        styles={customStyles}\n        options={data}\n        blurInputOnSelect={true}\n        className=\"result-filter-width filterSelector\"\n        defaultValue={null}\n        menuPlacement=\"auto\"\n        value={\n          prevSelectedVal && Array.isArray(prevSelectedVal) && prevSelectedVal?.length > 0 ? prevSelectedVal[0] : null\n        }\n        isClearable\n        onChange={(selectedOption) => {\n          setFilter({\n            ...filter,\n            [filterAlias(filterTerm)]: selectedOption ? selectedOption.value : null,\n          });\n        }}\n\n        // onChange={(selectedOption) => {\n        //   if (selectedOption) {\n        //     setFilter({\n        //       ...filter,\n        //       [filterAlias(filterTerm)]: selectedOption.value,\n        //     });\n        //   } else {\n        //     setFilter({\n        //       ...filter,\n        //       [filterAlias(filterTerm)]: \"\",\n        //     });\n        //   }\n        // }}\n      />\n    );\n  };\n\n  const getCheckBox = (filterTerm) => (\n    <div className=\"filterSwitchButton\">\n      <label className=\"m-0\">{filterTerm}:</label>\n      <SwitchToggle\n        checked={filter[filterAlias(filterTerm)]}\n        handleChange={(e) =>\n          setFilter({\n            ...filter,\n            [filterAlias(filterTerm)]: e.target.checked,\n          })\n        }\n      />\n    </div>\n    // <CheckBoxButton\n    //   id={filterTerm}\n    //   value={filter[filterAlias(filterTerm)]}\n    //   name={filterTerm}\n    //   checked={filter[filterAlias(filterTerm)]}\n    //   label={filterTerm}\n    //   handleChange={(e) =>\n    //     setFilter({\n    //       ...filter,\n    //       [filterAlias(filterTerm)]: e.target.checked,\n    //     })\n    //   }\n    // />\n  );\n\n  // const getMultiDropDown = (data, filterTerm) => {\n  //   const prevData = filter[filterAlias(filterTerm)];\n  //   const prevSelectedVal = prevData ? data.filter((d) => prevData.indexOf(d.value) !== -1) : null;\n  //   return (\n  //     <Select\n  //       options={data}\n  //       blurInputOnSelect={true}\n  //       className=\"result-filter-width filterSelector\"\n  //       defaultValue={null}\n  //       menuPlacement=\"auto\"\n  //       isMulti\n  //       value={prevSelectedVal}\n  //       onChange={(e) => {\n  //         setFilter({\n  //           ...filter,\n  //           [filterAlias(filterTerm)]: e.map((t) => t.value),\n  //         });\n  //       }}\n  //     />\n  //   );\n  // };\n\n  const getMultiDropDown = (data, filterTerm, keyToReturn = \"value\") => {\n    const prevData = filter[filterAlias(filterTerm)];\n    const prevSelectedVal = prevData\n      ? customUniqBy(\n          data.filter((d) => prevData.includes(d.value) || prevData.includes(d.label)),\n          \"label\"\n        )\n      : null;\n\n    return (\n      <Select\n        options={data}\n        blurInputOnSelect={true}\n        className=\"result-filter-width filterSelector\"\n        styles={customStyles}\n        defaultValue={null}\n        menuPlacement=\"auto\"\n        isMulti\n        hideSelectedOptions={false}\n        components={{ Option, ValueContainer: ReactSelectCustomContainer }}\n        value={prevSelectedVal}\n        onChange={(e) => {\n          setFilter({\n            ...filter,\n            [filterAlias(filterTerm)]: e.map((t) => t[keyToReturn]),\n          });\n        }}\n      />\n    );\n  };\n\n  const filterContent = (filterTerm) => {\n    switch (filterTerm) {\n      case \"Result Sent\":\n        return getDropDown(RESULT_SENT_OPTIONS, filterTerm);\n      case \"Custody Status\":\n      case \"Cust Status\":\n        return getDropDown(CUSTODY_OPT, filterTerm);\n      case \"Submitted to H&S\":\n        return getDropDown(BATCH_OPTIONS, filterTerm);\n      case \"Gender\":\n        return getDropDown(GENDER_OPTIONS, filterTerm);\n      case \"NPI Type\":\n        return getDropDown(NPI_TYPE_OPTIONS, filterTerm);\n      case \"Date Of Birth\":\n      case \"DOB\":\n      case \"Order Date\":\n      case \"Date Received\":\n      case \"Date Sent\":\n      case \"Collected\":\n      case \"Date of Order\":\n      case \"Last Order\":\n        return dateRangeSelection(filterTerm);\n      case \"Collected Date\":\n      case \"Processed\":\n      case \"Test Date\":\n      case \"Last Updated\":\n      case \"Effective Date\":\n      case \"Retired Date\":\n      case \"Last Used\":\n      case \"Last Claim\":\n        return dateRangeMultiSelection(filterTerm);\n      case \"Test Type\":\n      case \"Test Name\":\n      case \"Test\":\n        return getMultiDropDown(testTypes, filterTerm);\n      case \"Tester\":\n      case \"Received By\":\n      case \"Released By\":\n      case \"Resulted By\":\n        return getMultiDropDown(usersData, filterTerm, filterTab === \"pendingResult\" ? \"label\" : \"value\");\n      case \"Collected By\":\n        return getMultiDropDown(usersData, filterTerm, \"label\");\n      case \"Show Status\":\n        return getDropDown(FILTER_SHOW_STATUS, filterTerm);\n      case \"Test Status\":\n        return getDropDown(FILTER_TEST_STATUS, filterTerm);\n      case \"Result Type\":\n        return getDropDown(TEST_TYPE_OPTIONS, filterTerm);\n      case \"Restated\":\n      case \"Pattern\":\n      case \"White Glove\":\n      case \"isVaccinated\":\n        return getDropDown(VACCINATED_OPTIONS, filterTerm);\n      case \"Capacity\":\n        return getDropDown(CAPACITY_OPTIONS, filterTerm);\n      case \"Department\":\n        return getDropDown(DEPARTMENT_OPTIONS, filterTerm);\n      case \"Source\":\n        return getMultiDropDown(SOURCE_OPTIONS, filterTerm);\n      case \"Transition Status\":\n        return getDropDown(TRANSITION_STATUS_OPT, filterTerm);\n      case \"Date Created\":\n        return dateRangeMultiSelection(filterTerm);\n      case \"Cancelled Reason\":\n        return getDropDown(ORDER_CANCELLED_RESASON_OPT, filterTerm);\n      case \"Ord Status\":\n        return getDropDown(ORDER_STATUS_OPT, filterTerm);\n      case \"Referring Physician\":\n        return getDropDown(providers, filterTerm);\n      case \"Refererring Physician\":\n        return getDropDown(providerOptionsForResult, filterTerm);\n      case \"Date End\":\n        return dateRangeMultiSelection(filterTerm);\n      case \"Eligibility\":\n      case \"Eligibility Status\":\n        return getDropDown(ELIGIBILITY_STATUS, filterTerm);\n      case `${stringConstant.show}`:\n      case \"External Client\":\n        return getDropDown(siteOptions(), filterTerm);\n      case \"Reference Lab\":\n        return getDropDown(getLabOptions, filterTerm);\n      case \"Status\":\n      case \"Active\":\n        return getDropDown(EMPLOYEE_STATUS, filterTerm);\n      case \"Network\":\n        return getDropDown(NETWORK_STATUS, filterTerm);\n      case \"Arkstone Status\":\n      case \"Arkstone\":\n        return getDropDown(archstone_STATUS_OPT, filterTerm);\n      case \"Release Status\":\n        return getDropDown(RELEASE_STATUS_OPTION, filterTerm);\n      case \"H&S\":\n        return getDropDown(BATCH_OPTIONS_COMPLETED_TEST, filterTerm);\n      case \"Electronic Claims\":\n      case \"Electronic Eligibility\":\n      case \"Electronic ERA\":\n        return getCheckBox(filterTerm);\n      case \"Payer\":\n      case \"Additional Payer\":\n      case \"Primary Payer\":\n        return getMultiDropDown(payerList, filterTerm);\n      case \"Result Emailed\":\n        return getDropDown(RESULT_EMAILED_OPTION, filterTerm);\n      case \"Order Status\":\n        return getDropDown(ORDER_STATUS_DROPDOWN, filterTerm);\n      case \"Billable\":\n        return getDropDown(OPTION_YES_NO, filterTerm);\n      case \"Result\":\n        return getDropDown(RESULT_SETTINGS_OPT, filterTerm);\n      // case \"Result\":\n      //   return getMultiDropDown(TEST_RESULT_OPTIONS, filterTerm);\n      default:\n        return (\n          <FormControl\n            onChange={(e) => {\n              setFilter({\n                ...filter,\n                [filterAlias(filterTerm)]: e.target.value.toLowerCase(),\n              });\n            }}\n            placeholder={`Enter ${filterTerm}`}\n            value={filter[filterAlias(filterTerm)]}\n          />\n\n          // <FormControl\n          //   onChange={(e) => {\n          //     setFilter({\n          //       ...filter,\n          //       [filterAlias(filterTerm)]: e.target.value.toLowerCase(),\n          //     });\n          //   }}\n          //   value={filter[filterAlias(filterTerm)]}\n          // />\n        );\n    }\n  };\n\n  const filterCategories = useMemo(() => {\n    if (personalisationData) {\n      return createFilterMapping(personalisationData, filterTab);\n    }\n    const categories = {};\n\n    filterTerms.forEach((term) => {\n      const category = filterMapping[term] || \"Others\";\n      if (!categories[category]) {\n        categories[category] = [];\n      }\n      categories[category].push(term);\n    });\n\n    return categories;\n  }, [filterTerms]);\n\n  return (\n    <div>\n      <div className=\"filterResetBtn\">\n        <span\n          onClick={() => {\n            Array.from(document.querySelectorAll(\"input\")).forEach((input) => (input.value = \"\"));\n            setFilter({});\n            if (handleClearFilter) handleClearFilter();\n          }}\n          className=\"linkedText textUnderLine\"\n        >\n          Clear Filter\n        </span>\n      </div>\n      <div style={{ background: \"white\" }}>\n        {renderFilters({\n          categories: filterCategories,\n          triggerFilter,\n          setFilter,\n          filterContent,\n          isGrouped,\n          filterTerms:\n            !isGrouped && personalisationData ? createFilterMappingWithoutGroup(personalisationData) : filterTerms,\n          setFilterTabIndex,\n          filterTabIndex,\n          setTriggerFilter\n        })}\n      </div>\n    </div>\n  );\n};\n\nexport default Filter;\n","import moment from \"moment\";\n\nconst oneYearAgo = () => {\n  const d = new Date();\n  d.setFullYear(d.getFullYear() - 1);\n  d.setHours(0, 0, 0, 0);\n  return d;\n};\n\nconst oneMonthAgo = () => {\n  const d = new Date();\n  const m = d.getMonth();\n  d.setMonth(d.getMonth() - 1);\n\n  if (d.getMonth() === m) d.setDate(0);\n  d.setHours(0, 0, 0, 0);\n  return d;\n};\n\nconst oneWeekAgo = () => {\n  const d = new Date();\n  d.setDate(d.getDate() - 7);\n  d.setHours(0, 0, 0, 0);\n  return d;\n};\n\nconst today = () => {\n  const d = new Date();\n  d.setHours(0, 0, 0, 0);\n  return d;\n};\n\nconst timeObject = {\n  \"All Tests\": new Date(\"March 1, 2021\"),\n  \"This Year\": oneYearAgo(),\n  \"This Month\": oneMonthAgo(),\n  \"This Week\": oneWeekAgo(),\n  Today: today(),\n};\n\nconst filterDate = (tests, timeFilter, title) => {\n  return tests.filter((test) => {\n    return new Date(test.createdAt) > timeFilter;\n  });\n};\n\nconst filterDates = (tests, timeFilter) => {\n  if (!tests) return [];\n  if (Object.keys(timeFilter).length === 0) return tests;\n  const { start, end } = timeFilter;\n  if (!start || !end) return;\n  const startDate = moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\");\n  const endDate = moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\");\n  return tests.filter((test) => {\n    if (Object.keys(timeFilter).length !== 0) {\n      const date = moment(test.createdAt);\n      return date.isBetween(startDate, endDate);\n    } else {\n      return new Date(test.createdAt);\n    }\n  });\n};\n\nexport const filterOptions = [\n  { value: \"All\", label: \"All\" },\n  { value: \"This Year\", label: \"This Year\" },\n  { value: \"This Month\", label: \"This Month\" },\n  { value: \"This Week\", label: \"This Week\" },\n  { value: \"Today\", label: \"Today\" },\n];\n\nexport default {\n  oneYearAgo,\n  oneMonthAgo,\n  oneWeekAgo,\n  today,\n  filterDate,\n  filterDates,\n  filterOptions,\n};\n","import React from \"react\";\nimport { Row, Col } from \"react-bootstrap\";\nimport moment from \"moment\";\n\nconst MFPagination = (props) => {\n  const { currentPage, totalPages, handleChangePage, totalSelected, showSelectedRecord, timeFilter } = props;\n\n  const showDateFilter = () => {\n    if (!timeFilter) return \"\";\n    if (timeFilter && Object.keys(timeFilter).length > 0) {\n      const { start, end } = timeFilter;\n      const startDate = moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\");\n      const endDate = moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\");\n      return `Date Filter: ${startDate.format(\"MM-DD-YYYY\")} - ${endDate.format(\"MM-DD-YYYY\")}`;\n    }\n    return \"Date Filter: All\";\n  };\n\n  return (\n    <Row className=\"pull-right mt-0\" style={{ borderWidth: 1 }}>\n      <Col md=\"5\" className=\"selectedTestsText\">\n          <span style={{ fontWeight: \"noraml\", color: \"black\" }}>\n              {showSelectedRecord && `Selected Test : ${totalSelected}`}\n          </span>\n          <span className=\"datefilter-label text-black\" style={{ fontWeight: \"noraml\" }}>\n              {showDateFilter()}\n          </span>\n      </Col>\n      <Col className=\"text-right paginationText-alignment\" md={{ span: 6, offset: 1 }} xl={{ span: 6, offset: 1 }}>\n        Page\n        <ul className=\"createButtons pr-0\" style={{ display: \"inline\" }}>\n          <i\n            className=\"fas fa-angle-left\"\n            style={{ color: \"#585858\" }}\n            onMouseOver={(e) => {\n              e.target.style.cursor = \"pointer\";\n              e.target.style.color = \"black\";\n            }}\n            onMouseLeave={(e) => (e.target.style.color = \"#585858\")}\n            onClick={() => {\n              currentPage !== 1 && handleChangePage(currentPage - 1);\n            }}\n          />\n          {currentPage} of {totalPages}\n          <i\n            className=\"fas fa-angle-right\"\n            style={{ color: \"#585858\" }}\n            onMouseOver={(e) => {\n              e.target.style.cursor = \"pointer\";\n              e.target.style.color = \"black\";\n            }}\n            onMouseLeave={(e) => (e.target.style.color = \"#585858\")}\n            onClick={() => {\n              currentPage !== totalPages && handleChangePage(currentPage + 1);\n            }}\n          />\n        </ul>\n      </Col>\n    </Row>\n  );\n};\n\nexport default MFPagination;\n","import React from \"react\";\n\nconst SortIcon = ({ sortName, sortBy, sortDescending, handleClick }) => {\n  return (\n    <div onClick={handleClick} className=\"cursor-pointer\">\n      {sortBy !== sortName ? (\n        <i className=\"fas fa-sort\"></i>\n      ) : sortDescending ? (\n        <i className=\"fas fa-sort-down\"></i>\n      ) : (\n        <i className=\"fas fa-sort-up\"></i>\n      )}\n    </div>\n  );\n};\n\nexport default SortIcon;\n","import React from \"react\";\nimport SortIcon from \"../../components/SortIcon\";\n\nconst HeaderItem = (props) => {\n  const {\n    ItemKey,\n    title,\n    flipSort,\n    aligned,\n    sortBy,\n    sortDescending,\n    cssClass,\n    customHeadForm,\n    minWidth,\n    width,\n    draggable,\n    innerDivWidth,\n    handleDrop,\n    handleDragStart,\n    headerStyle = \"\",\n  } = props;\n  return (\n    <th\n      className={`border-0 ${aligned ?? \"\"} ${cssClass ?? \"\"} ${customHeadForm ?? \"\"}`}\n      style={{\n        color: sortBy === ItemKey ? \"#A72632\" : \"grey\",\n        fontWeight: \"bold\",\n        maxWidth: width,\n        minWidth: minWidth,\n        width: width,\n      }}\n      draggable={draggable}\n      onDragStart={(e) => draggable && handleDragStart(e)}\n      onDragOver={(e) => draggable && e.preventDefault()}\n      onDrop={(e) => draggable && handleDrop(e)}\n    >\n      <div\n        className={`${aligned}`}\n        style={{\n          width: innerDivWidth,\n        }}\n      >\n        <span title={title} style={{ ...headerStyle }}>\n          {title}\n        </span>\n\n        {flipSort && (\n          <SortIcon\n            sortName={ItemKey}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n            handleClick={() => flipSort(ItemKey)}\n          />\n        )}\n      </div>\n    </th>\n  );\n};\n\nexport default HeaderItem;\n","import React from \"react\";\nimport Dropdown from \"react-bootstrap/Dropdown\";\nimport dotIcons from \"../../assets/img/dots.png\";\n\nconst DropdownMenu = (props) => {\n  const { options, handleDropDownOptions } = props;\n  return (\n    <>\n      <Dropdown className=\"custom-dropdown\">\n        <Dropdown.Toggle id=\"dropdown-basic\">\n          <img src={dotIcons} alt=\"more icon\" />\n        </Dropdown.Toggle>\n        <Dropdown.Menu>\n          {options.map((option, index) => (\n            <Dropdown.Item href={option.link} key={index} onClick={() => handleDropDownOptions(option.title)}>\n              {option.title}\n            </Dropdown.Item>\n          ))}\n        </Dropdown.Menu>\n      </Dropdown>\n    </>\n  );\n};\n\nexport default DropdownMenu;\n","import React from \"react\";\nimport Styles from \"components/CheckBox/ViewOnlyCheckBox.module.css\";\nconst ViewOnlyCheckBox = (props) => {\n  const { color, id, bgColor, checked, handleChange, item } = props;\n\n  const getColor = () => {\n    switch (bgColor) {\n      case \"red\":\n        return Styles.red;\n      case \"blue\":\n        return Styles.blue;\n      case \"yellow\":\n        return Styles.yellow;\n      case \"orange\":\n        return Styles.orange;\n      default:\n        return Styles.green;\n    }\n  };\n  return (\n    <div>\n      <input\n        id={id}\n        className={`${Styles.checkboxCustom}`}\n        onChange={handleChange}\n        name={id}\n        type=\"checkbox\"\n        value={checked}\n        checked={checked}\n      />\n      <label htmlFor={id} className={`mb-0 ${getColor()} ${Styles.checkboxCustomLabel}`} />\n    </div>\n  );\n};\n\nexport default ViewOnlyCheckBox;\n","import React, { useState, useContext, useMemo, useRef } from \"react\";\nimport { Button, Card, Table, Row, Col, Modal } from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport { Link } from \"react-router-dom\";\nimport { Bounce } from \"react-activity\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport \"react-activity/dist/Bounce.css\";\nimport Hipaa from \"views/Hipaa\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport { AppContext } from \"context/app-context\";\nimport { PAGE_LIMIT } from \"constant\";\nimport Select from \"react-select\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport {\n  changeSort,\n  isValidPhone,\n  formatPhoneNumber,\n  phoneFormatter,\n  parseBooleanValue,\n  calculateTdWidth,\n  sortingFilterInLC,\n} from \"utils\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport Loader from \"../../components/Loader/Loader\";\nimport Icon from \"components/Icon\";\nimport editIcon from \"../../assets/img/edit-icon.png\";\nimport Status from \"components/Status/Status\";\nimport DropdownMenu from \"components/DropdownMenu/DropdownMenu\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\n\nconst options = [\n  {\n    title: \"Edit\",\n  },\n  {\n    title: \"Delete\",\n  },\n  {\n    title: \"View/Update\",\n  },\n];\n\nconst ClientsView = () => {\n  const componentRef = useRef();\n  const mainWidth = useRef();\n  const [width, setWidth] = useState(0);\n  const [error, setError] = useState(\"\");\n  useEffect(() => {\n    console.log(\"width\", componentRef.current.offsetWidth);\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    console.log(\"width handle Resize\", componentRef.current.offsetWidth);\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  useEffect(() => handleResize(), [mainWidth]);\n\n  const tdWidth = calculateTdWidth(width - 100, 8);\n  const appContext = useContext(AppContext);\n\n  const [clientTests, setClientTests] = useState([]);\n  const [clients, setClients] = useState(appContext.clients);\n  const [filteredClients, setFilteredClients] = useState(appContext.clients);\n  const [openCreator, setOpenCreator] = useState(false);\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n  const [newClient, setNewClient] = useState({\n    isNew: true,\n    showOnSummaryScreen: false,\n    whiteLabel: false,\n    isArchive: false,\n  });\n  const [clientToDelete, setClientToDelete] = useState(\"\");\n  const [openHipaa, setOpenHipaa] = useState(false);\n  const [selectedClient, setSelectedClient] = useState({});\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [loading, setLoading] = useState();\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const { filterDates } = TimeFilter;\n\n  const searchTerms = [\"Name\", \"Contact Name\", \"Contact Email\", \"Contact Phone\", \"Result Type\", \"White Label\"];\n  const resultTypeOptions = [\n    { value: \"P/N\", label: \"P/N\" },\n    { value: \"P/F\", label: \"P/F\" },\n  ];\n  const handleClose = () => {\n    setOpenCreator(false);\n    setOpenDeleteConfirmation(false);\n    setOpenHipaa(false);\n    setSelectedClient({});\n  };\n\n  const createClient = async () => {\n    try {\n      setLoading(true);\n      const newest = await API.createClient(newClient);\n      setNewClient({ isNew: true, showOnSummaryScreen: false, whiteLabel: false, isArchive: false });\n      setLoading(true);\n      setTimeout(() => appContext.resetClients(), 3000);\n      appContext.showSuccessMessage(\"Client created successfully\");\n    } catch (error) {\n      console.log(\"this is the error\", error);\n      appContext.showErrorMessage(error.message);\n    }\n  };\n\n  const deleteClient = async (id) => {\n    try {\n      await API.deleteClient(id);\n      appContext.resetClients();\n      appContext.showSuccessMessage(\"Client removed successfully\");\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n  };\n\n  const updateClient = async () => {\n    try {\n      setLoading(true);\n      const update = await API.updateClient(newClient);\n      setNewClient({ isNew: true, showOnSummaryScreen: false, whiteLabel: false, isArchive: false });\n      appContext.resetClients();\n      appContext.showSuccessMessage(\"Client Updated successfully\");\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n    setLoading(false);\n  };\n\n  const clientsToMap = useMemo(() => {\n    const list = filterDates(filteredClients, timeFilter);\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredClients, currentPage, timeFilter]);\n\n  const parseSelectedOption = (id) => {\n    if (!id) return null;\n    const data = resultTypeOptions.find((f) => f.value === id);\n    if (data) return data.label;\n    return id;\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"resultType\") {\n          return obj[key] && parseSelectedOption(obj[key]).toLowerCase().includes(filters[key]);\n        }\n        if (key === \"whiteLabel\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n    // console.log(\"FROM NESTED FILTER\", models);\n    return models;\n  };\n\n  useEffect(() => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.clients.sortBy) {\n      setSortDescending(sortingFilters.clients.sortDescending);\n      setSortBy(sortingFilters.clients.sortBy);\n    }\n    loadClientSummary();\n  }, []);\n\n  useEffect(() => {\n    setLoading(true);\n    setClients(appContext.clients);\n    refreshSummary(appContext.clients, clientTests);\n    setLoading(false);\n  }, [appContext.clients]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"clients\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredClients,\n      setFilteredClients,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName,\n      appContext.getClientTests\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    setFilteredClients(filterDates(nestedFilter(clients, filter), timeFilter));\n  }, [filter]);\n\n  useEffect(() => {\n    refreshSummary(clients, clientTests);\n  }, [clientTests]);\n\n  const loadClientSummary = async () => {\n    const clientSummary = await API.getSummaryFromPG({ summary: \"client\" });\n    setClientTests(clientSummary.rows);\n  };\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(!sortDescending);\n  };\n\n  const refreshSummary = (data, summary) => {\n    if (data.length === 0) return;\n    if (summary.length === 0) {\n      setFilteredClients(data);\n      return;\n    }\n    const newList = data.map((c) => {\n      const obj = summary.find((x) => x.id === c.id);\n      return { ...c, totalTest: obj ? obj.totalTest : 0 };\n    });\n    setFilteredClients(newList);\n  };\n\n  const handleFilterChange = (event, picker) => setTimeFilter({ start: picker.startDate, end: picker.endDate });\n  const handleFilterCancel = (event, picker) => setTimeFilter({});\n  const handleChangePage = (page) => setCurrentPage(page);\n  const handleSave = () => {\n    if (!newClient.name) {\n      setError(\"Client name is required\");\n      return false;\n    }\n\n    if (!newClient.contact) {\n      setError(\"Client contact is required\");\n      return false;\n    }\n\n    if (!newClient.phone) {\n      setError(\"Client Phone is required\");\n      return false;\n    }\n\n    if (!newClient.email) {\n      setError(\"Client email is required\");\n      return false;\n    }\n\n    if (!newClient.resultType) {\n      setError(\"Please select the result type\");\n      return false;\n    }\n\n    if (!isValidPhone(newClient.phone)) {\n      setError(\"Invalid Phone Number\");\n      return false;\n    }\n\n    if (newClient.isNew) createClient();\n    else updateClient();\n\n    handleClose();\n  };\n  const getSelectedOption = (id) => {\n    if (!id) return null;\n    const data = resultTypeOptions.find((f) => f.value === id);\n    if (data) return data;\n    return { value: id, label: id };\n  };\n\n  const getTotalTest = (client) => {\n    if (!client.totalTest || client.totalTest === 0) {\n      return <>0</>;\n    }\n    return (\n      <Link\n        className=\"text-primary-black text-primary-black-hover cursor-pointer text-decoration-none\"\n        to={{\n          pathname: `/admin/shows`,\n          state: { name: client.name, term: \"Client\" },\n        }}\n      >\n        {client.totalTest}\n      </Link>\n    );\n  };\n\n  const handleDropDownOptions = (client, value) => {\n    switch (value) {\n      case \"Edit\":\n        setNewClient({\n          isNew: false,\n          id: client.id,\n          name: client.name,\n          contact: client.contact_name,\n          phone: client.contact_phone || client.phone_number,\n          fax_number: client.fax_number,\n          email: client.contact_email,\n          resultType: client.resultType,\n          showOnSummaryScreen: client.showOnSummaryScreen || false,\n          whiteLabel: client.whiteLabel,\n          whiteLabelPackage: client.whiteLabelPackage,\n          isArchive: client.isArchive,\n          street: client.street,\n          city: client.city,\n          state: client.state,\n          zipcode: client.zipcode,\n        });\n        setOpenCreator(true);\n        break;\n      case \"Delete\":\n        setOpenDeleteConfirmation(true), setClientToDelete(client.id);\n        break;\n      case \"View/Update\":\n        setSelectedClient(client);\n        setOpenHipaa(true);\n        break;\n      default:\n        break;\n    }\n  };\n\n  const TableRow = ({ client }) => {\n    return (\n      <tr className=\"trDataWrapper\">\n        <td className=\"icon\" style={{ width: \"50px\", minWidth: \"50px\", maxWidth: \"50px\" }}>\n          <ViewOnlyCheckBox bgColor=\"red\" id={client.id} />\n          {/* <img\n            src={editIcon}\n            alt=\"edit icon\"\n            width=\"16\"\n            className=\"cursor-pointer\"\n            id={client.id}\n            onClick={(e) => {\n              setNewClient({\n                isNew: false,\n                id: client.id,\n                name: client.name,\n                contact: client.contact_name,\n                phone: client.contact_phone || client.phone_number,\n                email: client.contact_email,\n                resultType: client.resultType,\n                showOnSummaryScreen: client.showOnSummaryScreen || false,\n                whiteLabel: client.whiteLabel,\n                whiteLabelPackage: client.whiteLabelPackage,\n                isArchive: client.isArchive,\n              });\n              setOpenCreator(true);\n            }}\n          /> */}\n        </td>\n\n        <td className=\"ellipsis\" title={client.name}>\n          {client.name}\n        </td>\n        <td className=\"ellipsis\" title={client.contact_name}>\n          {client.contact_name}\n        </td>\n        <td\n          className=\"ellipsis text-dark-danger cursor-pointer\"\n          onClick={() => client.contact_email && window.open(`mailto:${client.contact_email}`)}\n          title={client.contact_email}\n        >\n          {client.contact_email}\n        </td>\n        <td\n          className=\"ellipsis text-dark-danger cursor-pointer\"\n          onClick={() => client.contact_phone && window.open(`tel:+${client.contact_phone.replace(/\\D/g, \"\")}`)}\n          title={client.contact_phone && formatPhoneNumber(client.contact_phone)}\n        >\n          {(client.contact_phone || client.phone_number) &&\n            formatPhoneNumber(client.contact_phone || client.phone_number)}\n        </td>\n        <td className=\"ellipsis text-primary-black text-decoration-none\" style={{ textAlign: \"center\" }}>\n          {getTotalTest(client)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <span title={parseSelectedOption(client.resultType)}>{parseSelectedOption(client.resultType)}</span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <div className=\"star-icon-wrapper\" title={parseSelectedOption(client.whiteLabel)}>\n            <Status\n              type=\"circle\"\n              size=\"md\"\n              color={client.whiteLabel ? \"green\" : \"maroon\"}\n              tickIcon={client.whiteLabel}\n              crossIcon={!client.whiteLabel}\n            />\n          </div>\n        </td>\n        {/* <td>\n          <a\n            className=\"text-dark-danger text-dark-danger-hover text-decoration-none cursor-pointer\"\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n            onClick={() => {\n              setSelectedClient(client);\n              setOpenHipaa(true);\n            }}\n          >\n            View/Update\n          </a>\n        </td> */}\n\n        <td className=\"icon text-center\">\n          <DropdownMenu options={options} handleDropDownOptions={(e) => handleDropDownOptions(client, e)} />\n          {/* <i\n            className=\"fa fa-trash secondary-gray cursor-pointer\"\n            aria-hidden=\"true\"\n            id={client.id}\n            onClick={(e) => (setOpenDeleteConfirmation(true), setClientToDelete(e.target.id))}\n          /> */}\n        </td>\n      </tr>\n    );\n  };\n\n  console.log(\"Client\", newClient);\n\n  return (\n    <div className=\"container-fluid\">\n      {!loading ? (\n        <div className=\"shows-screen-parent\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                    </div>\n                    <Icon\n                      handleClick={() => setOpenCreator(true)}\n                      title={\"Create New Client\"}\n                      label={\"Create\"}\n                      iconType={\"createIcon\"}\n                    />\n                  </div>\n                  <div>{showFilter && <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} />}</div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"strpied-tabled-with-hover bg-transparent border-0\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md=\"6\">\n                      <Card.Title>\n                        <div className=\"\">\n                          Clients:\n                          <span className=\"ps-2\"> {clients.length}</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"6\">\n                      <MFPagination\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                      />\n                    </Col>\n\n                    {/* <div className=\"buttonHeader clientsButtonHeader justify-content-between mb-1\">\n                      <div className=\"clientsBtnWrapper\">\n                        <div className=\"buttonHeader clientsButtonHeader\">\n                          <Button className=\"headerButton mb-0\" onClick={() => setShowFilter(!showFilter)}>\n                            Filter\n                          </Button>\n                        </div>\n                      </div>\n                      <Button className=\"createButtons\" onClick={() => setOpenCreator(true)}>\n                        Create New Client\n                      </Button>\n                    </div>\n                    <div>\n                      {showFilter && <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} />}\n                    </div> */}\n                  </Row>\n                </Card.Header>\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                  <div className=\"table-responsive pendingReleaseTable\">\n                    <Table className=\"separate-border-tr\">\n                      <thead ref={componentRef}>\n                        <tr>\n                          <th></th>\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"name\"\n                            title=\"Name\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            cssClass=\"tdWidth12\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"contact_name\"\n                            title=\"Contact Name\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            cssClass=\"tdWidth12\"\n                          />\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"contact_email\"\n                            title=\"Contact's Email\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            cssClass=\"tdWidth18\"\n                          />\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"contact_phone\"\n                            title=\"Contact's Phone\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"totalTests\"\n                            title=\"Total Tests (YTD)\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"resultType\"\n                            title=\"Result Type\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"whiteLabel\"\n                            title=\"White Label\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n\n                          {/* <th style={{ width: tdWidth, minWidth: tdWidth, maxWidth: tdWidth }}>\n                            <span tile=\"Hippa\">Hippa</span>\n                          </th> */}\n                          <th className=\"text-center\">\n                            <span title=\"Actions\">Actions</span>\n                          </th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {clientsToMap.map((client, i) => {\n                          return <TableRow key={i} client={client} />;\n                        })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      ) : (\n        <Loader />\n      )}\n\n      <Modal\n        show={openCreator}\n        // style={{ transform: \"translate(0, -30%)\" }}\n        animation={true}\n        onHide={() => {\n          setNewClient({ isNew: true, showOnSummaryScreen: false, whiteLabel: false, isArchive: false });\n          handleClose();\n        }}\n        centered\n        size=\"xl\"\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {newClient.isNew ? \"Create Client\" : \"Update Client\"}\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0 }}>\n          <div className=\"createShowWrapper\">\n            <div className=\"createShowInner\">\n              <div className=\"createClientsWrapper\">\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Client Name: </label>\n                  <input\n                    value={newClient.name}\n                    className=\"modalInput\"\n                    placeholder=\"Client Name\"\n                    style={{ width: \"100%\" }}\n                    onChange={(e) => setNewClient({ ...newClient, name: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Contact Name: </label>\n                  <input\n                    value={newClient.contact}\n                    className=\"modalInput\"\n                    placeholder=\"Primary Contact Name\"\n                    style={{ width: \"100%\" }}\n                    onChange={(e) => setNewClient({ ...newClient, contact: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Phone #: </label>\n\n                  <PhoneNoInput\n                    value={newClient.phone}\n                    handleChange={(e) => setNewClient({ ...newClient, phone: e })}\n                    cssCode={\"w-100\"}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Fax #: </label>\n\n                  <PhoneNoInput\n                    value={newClient.fax_number}\n                    handleChange={(e) => setNewClient({ ...newClient, fax_number: e })}\n                    cssCode={\"w-100\"}\n                  />\n                </div>\n\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Email: </label>\n                  <input\n                    value={newClient.email}\n                    className=\"modalInput\"\n                    placeholder=\"Email\"\n                    style={{ width: \"100%\" }}\n                    onChange={(e) => setNewClient({ ...newClient, email: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Address: </label>\n                  <input\n                    className=\"modalInput\"\n                    id=\"street\"\n                    placeholder=\"Address\"\n                    value={newClient.street}\n                    onChange={(e) => setNewClient({ ...newClient, street: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">City: </label>\n                  <input\n                    id=\"city_state_zip\"\n                    style={{\n                      marginTop: 5,\n                    }}\n                    className=\"modalInput\"\n                    placeholder=\"City\"\n                    value={newClient.city}\n                    onChange={(e) => setNewClient({ ...newClient, city: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">State: </label>\n                  <input\n                    id=\"city_state_zip\"\n                    style={{\n                      marginTop: 5,\n                    }}\n                    className=\"modalInput\"\n                    placeholder=\"state\"\n                    value={newClient.state}\n                    onChange={(e) => setNewClient({ ...newClient, state: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Zip: </label>\n                  <input\n                    id=\"city_state_zip\"\n                    style={{\n                      marginTop: 5,\n                    }}\n                    className=\"modalInput\"\n                    placeholder=\"zip\"\n                    value={newClient.zipcode}\n                    onChange={(e) => setNewClient({ ...newClient, zipcode: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Result View Type: </label>\n                  <Select\n                    options={resultTypeOptions}\n                    blurInputOnSelect={true}\n                    defaultValue={null}\n                    menuPlacement=\"auto\"\n                    placeholder=\"Select\"\n                    value={getSelectedOption(newClient.resultType)}\n                    onChange={(e) => setNewClient({ ...newClient, resultType: e.value })}\n                    className=\"w-100 siteSelector\"\n                  />\n                </div>\n\n                {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n              </div>\n            </div>\n            <div className=\"createSettingsWrapper\">\n              {\" \"}\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Exclude from Summary: </label>\n                <div>\n                  <span className=\"labelYesNo\">{parseBooleanValue(newClient.showOnSummaryScreen || false)}</span>\n                  <input\n                    checked={newClient.showOnSummaryScreen}\n                    onChange={(e) =>\n                      setNewClient({ ...newClient, showOnSummaryScreen: !newClient.showOnSummaryScreen })\n                    }\n                    type=\"checkbox\"\n                  />\n                </div>\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Archive: </label>\n                <div>\n                  <span className=\"labelYesNo\">{parseBooleanValue(newClient.isArchive || false)}</span>\n                  <input\n                    checked={newClient.isArchive}\n                    onChange={(e) => setNewClient({ ...newClient, isArchive: !newClient.isArchive })}\n                    type=\"checkbox\"\n                  />\n                </div>\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">White Label: </label>\n                <div>\n                  <span className=\"labelYesNo\">{parseBooleanValue(newClient.whiteLabel || false)}</span>\n                  <input\n                    checked={newClient.whiteLabel}\n                    onChange={(e) => setNewClient({ ...newClient, whiteLabel: !newClient.whiteLabel })}\n                    type=\"checkbox\"\n                  />\n                </div>\n              </div>\n              {newClient.whiteLabel && (\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Package Name: </label>\n                  <input\n                    value={newClient.whiteLabelPackage}\n                    className=\"modalInput\"\n                    placeholder=\"Package Name\"\n                    style={{ width: \"100%\" }}\n                    onChange={(e) => setNewClient({ ...newClient, whiteLabelPackage: e.target.value })}\n                  />\n                </div>\n              )}\n            </div>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button\n            className=\"modalButtons\"\n            variant=\"secondary\"\n            onClick={() => {\n              setNewClient(\"\");\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleSave()}>\n            {newClient.isNew ? \"Create\" : \"Update\"}\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      <Modal\n        show={openDeleteConfirmation}\n        // style={{ transform: \"translate(0, -30%)\" }}\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Delete Client\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n          <Modal.Title id=\"contained-modal-title-vcenter\">Are you sure you want to delete this client?</Modal.Title>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button\n            variant=\"primary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Go back\n          </Button>\n          <Button\n            variant=\"danger\"\n            className=\"modalButtons\"\n            onClick={() => {\n              deleteClient(clientToDelete);\n              handleClose();\n            }}\n          >\n            Confirm\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      {selectedClient && (\n        <Hipaa\n          openHipaa={openHipaa}\n          handleClose={handleClose}\n          client={selectedClient}\n          resetClients={appContext.resetClients}\n        />\n      )}\n    </div>\n  );\n};\n\nexport default ClientsView;\n","import React, { useState } from \"react\";\nimport {\n  DropdownButton,\n  Dropdown,\n  InputGroup,\n  FormControl,\n} from \"react-bootstrap\";\nimport Select from \"react-select\";\n\nconst SearchBar = ({\n  searchTerms,\n  filter,\n  setSearchInput,\n  setSearchTerm,\n  searchTerm,\n  searchInput,\n  placeholder,\n  triggerFilter,\n  setTriggerFilter,\n}) => {\n  const normalizeTerm = (term) => {\n    let words = term.split(\"_\");\n    for (let i = 0; i < words.length; i++) {\n      words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1);\n    }\n    return words.join(\" \");\n  };\n\n  const handleChange = (e) => {\n    setSearchInput(e.target.value);\n    filter(searchTerm, e.target.value);\n  };\n\n  const handleDropChange = (selectedOption) => {\n    setSearchTerm(selectedOption);\n  };\n\n  const searchOptions = [\n    { value: \"lab\", label: \"Lab\" },\n    { value: \"name\", label: \"Name\" },\n    { value: \"contact_name\", label: \"Contact Name\" },\n    { value: \"contact_email\", label: \"Contact Email\" },\n    { value: \"contact_phone\", label: \"Contact Phone\" },\n  ];\n\n  return (\n    <div>\n      {triggerFilter &&\n        (setSearchInput(searchInput),\n        filter(searchTerm, searchInput),\n        setTriggerFilter(false))}\n      <InputGroup>\n        <Select\n          options={searchOptions}\n          blurInputOnSelect={true}\n          defaultValue={null}\n          menuPlacement=\"auto\"\n          placeholder=\"Search...\"\n          className=\"searchFilterButton\"\n          onChange={handleDropChange}\n        />\n        {/* <DropdownButton title={normalizeTerm(searchTerm)}>\n          {searchTerms.map((term) => (\n            <Dropdown.Item key={term} onClick={() => setSearchTerm(term)}>\n              {normalizeTerm(term)}\n            </Dropdown.Item>\n          ))}\n        </DropdownButton> */}\n        <FormControl\n          className=\"searchInput\"\n          placeholder={placeholder}\n          value={searchInput}\n          onChange={(e) => handleChange(e)}\n        />\n      </InputGroup>\n    </div>\n  );\n};\n\nexport default SearchBar;\n","import React, { useState, useEffect } from \"react\";\nimport { Modal, Button, Table } from \"react-bootstrap\";\nimport API from \"api\";\nimport { Importer, ImporterField } from \"react-csv-importer\";\nimport { parseBooleanValue } from \"../../utils\";\nimport \"react-csv-importer/dist/index.css\";\n\nconst LabBarCode = (props) => {\n  const importResult = [];\n  const [totalBarCode, setTotalBarCode] = useState([]);\n  const { id, handleClose } = props;\n\n  useEffect(() => {\n    getBarCode();\n  }, []);\n\n  const getBarCode = async () => {\n    const data = await API.getLabBarCodes(id);\n    setTotalBarCode(data);\n  };\n\n  return (\n    <Modal show animation={true} onHide={() => handleClose()} centered size={\"xl\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Lab Bar Codes {totalBarCode ? `(${totalBarCode.length})` : \"\"}\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"labsModalWrapper\">\n          <div className=\"form-group-wrapper d-block\">\n            <div className=\"table-responsive\">\n              <Table className=\"table-hover table-striped\">\n                <thead>\n                  <tr>\n                    <th\n                      className={`border-0 centered`}\n                      style={{\n                        color: \"grey\",\n                        fontWeight: \"bold\",\n                      }}\n                    >\n                      <div className=\"d-flex justify-content-start align-items-center\">\n                        <span>#</span>\n                      </div>\n                    </th>\n                    <th\n                      className={`border-0 centered`}\n                      style={{\n                        color: \"grey\",\n                        fontWeight: \"bold\",\n                      }}\n                    >\n                      <div className=\"d-flex justify-content-start align-items-center\">\n                        <span>Barcode</span>\n                      </div>\n                    </th>\n                    <th\n                      className={`border-0 centered`}\n                      style={{\n                        color: \"grey\",\n                        fontWeight: \"bold\",\n                      }}\n                    >\n                      <div className=\"d-flex justify-content-start align-items-center\">\n                        <span>Available</span>\n                      </div>\n                    </th>\n                  </tr>\n                </thead>\n                <tbody>\n                  {totalBarCode.map((barCode, index) => {\n                    return (\n                      <tr key={index}>\n                        <td style={{ textAlign: \"center\" }}>{index + 1}</td>\n                        <td style={{ textAlign: \"center\" }}>{barCode.barcode}</td>\n                        <td style={{ textAlign: \"center\" }}>{parseBooleanValue(barCode.available)}</td>\n                      </tr>\n                    );\n                  })}\n                </tbody>\n              </Table>\n            </div>\n          </div>\n          <div className=\"form-group-wrapper d-block uploadFilesArea\">\n            <Importer\n              chunkSize={10000} // optional, internal parsing chunk size in bytes\n              assumeNoHeaders={false} // optional, keeps \"data has headers\" checkbox off by default\n              restartable={false} // optional, lets user choose to upload another file when import is complete\n              delimiter=\" \"\n              processChunk={async (rows, { startIndex }) => {\n                importResult.push(rows);\n              }}\n              onClose={async ({ file, preview, fields, columnFields }) => {\n                const data = importResult.flat();\n                if (data.length > 0) {\n                  await API.updateLabBarCodes(data, id);\n                  handleClose();\n                }\n              }}\n            >\n              <ImporterField name=\"barcode\" label=\"Barcode\" />\n            </Importer>\n          </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"primary\" onClick={() => handleClose()}>\n          Close\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default LabBarCode;\n","import React, { useState, useEffect } from \"react\";\nimport API from \"api\";\n\nconst BarCodeAlert = (props) => {\n  const { id, labData, title } = props;\n  const [totalBarCode, setTotalBarCode] = useState(201);\n\n  useEffect(() => {\n    getBarCode();\n  }, []);\n\n  const getBarCode = async () => {\n    const data = await API.getLabBarCodes(id);\n    setTotalBarCode(data.length);\n  };\n\n  return (\n    <span style={{ color: \"red\", fontWeight: \"bold\" }}>\n      {totalBarCode < labData.barCodeAlertLimit ? <span title={title}>Alert</span> : \"\"}\n    </span>\n  );\n};\n\nexport default BarCodeAlert;\n","import React, { useState } from \"react\";\nimport { Button, Row, Modal } from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport \"../../src/tableStyling.css\";\n\nconst TextEditor = ({ text, handleSave, handleClose, type }) => {\n  const [consentForm, setConsentForm] = useState(text);\n\n  useEffect(() => {\n    setConsentForm(text);\n  }, [text]);\n\n  const onChangeForm = (e) => {\n    // setConsentForm(e.target.value);\n    setConsentForm(e.target.value.replace(/\\n/g, \"<br />\"));\n  };\n\n  return (\n    <Modal\n      show\n      animation={true}\n      className=\"paddingLeft-0\"\n      fullscreen\n      onHide={() => {\n        handleClose();\n      }}\n      dialogClassName=\"hipaaDialogue\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Result Disclaimer\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body className=\"hipaaBody\">\n        <textarea\n          // value={consentForm}\n          value={consentForm.replace(/<br \\/>/g, \"\\n\")}\n          onChange={onChangeForm}\n          className=\"hipaaTextArea\"\n        />\n      </Modal.Body>\n      <Modal.Footer>\n        <Button onClick={() => handleClose()} className=\"modalButtons\" variant=\"secondary\">\n          Close\n        </Button>\n        <Button\n          onClick={() => handleSave(consentForm, type)}\n          className=\"modalButtons\"\n          variant=\"primary\"\n          style={{\n            marginRight: \"20px\",\n          }}\n        >\n          Save\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default TextEditor;\n","import React, { useContext, useState, useMemo, useRef, useEffect } from \"react\";\nimport { Button, Card, Table, Row, Col, Modal, Form, OverlayTrigger, Alert } from \"react-bootstrap\";\nimport TextEditor from \"views/TextEditor\";\nimport { DISCLAIMER_TYPE } from \"constant\";\nimport { DISCLAIMER_KEYS } from \"constant\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport { parseBooleanValue, isValidPhone } from \"utils\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\nimport Loader from \"components/Loader/Loader\";\nimport API from \"api\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\n\nconst LabModal = (props) => {\n  const { lab, handleClose, image, appContext } = props;\n  const [newLab, setNewLab] = useState(lab);\n  const [selectedImage, setSelectedImage] = useState(image);\n  const [logo, setLogo] = useState(null);\n  const [showEditor, setShowEditor] = useState(null);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const inputFile = useRef();\n\n  useEffect(() => {\n    setNewLab(newLab);\n    setSelectedImage(image);\n  }, [lab]);\n\n  const handleImageClick = () => {\n    if (inputFile.current) {\n      inputFile.current.click();\n    }\n  };\n\n  const handleDisclaimerSave = (val, type) => {\n    setShowEditor(null);\n    setNewLab({ ...newLab, [DISCLAIMER_KEYS[type]]: val });\n  };\n\n  const handleSave = () => {\n    if (newLab.isNew) {\n      createLab();\n    } else {\n      updateLab();\n    }\n  };\n\n  const isValidToSave = async (obj, isNew) => {\n    if (!obj.name) {\n      setError(\"Lab name is required\");\n      return false;\n    }\n\n    if (!obj.contact) {\n      setError(\"Lab primary contact is required\");\n      return false;\n    }\n\n    if (!obj.email) {\n      setError(\"Lab email is required\");\n      return false;\n    }\n\n    if (!obj.phone) {\n      setError(\"Lab phone is required\");\n      return false;\n    }\n\n    if (!obj.street) {\n      setError(\"Lab address is required\");\n      return false;\n    }\n\n    if (!obj.city_state_zip) {\n      setError(\"Lab city/state/zip is required\");\n      return false;\n    }\n\n    if (!obj.lab_director) {\n      setError(\"Lab director name is required\");\n      return false;\n    }\n\n    if (!obj.clia_number) {\n      setError(\"Lab CLIA# is required\");\n      return false;\n    }\n\n    if (!obj.testing_notes) {\n      setError(\"Lab Disclaimer is required\");\n      return false;\n    }\n\n    if (!isValidPhone(obj.phone)) {\n      setError(\"Invalid Phone Number\");\n      return false;\n    }\n\n    if (obj.default_antigen) {\n      await API.resetDefaultLab(obj.id, \"default_antigen\");\n    }\n\n    if (obj.default_molecular) {\n      await API.resetDefaultLab(obj.id, \"default_molecular\");\n    }\n\n    if (obj.default_rapidflu) {\n      await API.resetDefaultLab(obj.id, \"default_rapidflu\");\n    }\n\n    if (obj.default_lucira) {\n      await API.resetDefaultLab(obj.id, \"default_lucira\");\n    }\n\n    if (obj.default_other) {\n      await API.resetDefaultLab(obj.id, \"default_other\");\n    }\n\n    return true;\n  };\n\n  const createLab = async () => {\n    const validInput = await isValidToSave(newLab, true);\n    if (!validInput) {\n      return;\n    }\n    handleClose();\n\n    try {\n      setLoading(true);\n      const newest = await API.createLab(newLab);\n      if (logo) {\n        const isLogoSave = await uploadLogo(newest.id);\n        if (isLogoSave) {\n          await API.updateLabLogo(newest.id, `labs/${newest.id}-logo.png`);\n        }\n      }\n      setLogo(null);\n      setNewLab({});\n      appContext.resetLabs();\n      appContext.showSuccessMessage(\"Lab created successfully.\");\n    } catch (error) {\n      console.log(error);\n      appContext.showErrorMessage(error.message);\n    }\n    setLoading(false);\n  };\n\n  const updateLab = async () => {\n    const validInput = await isValidToSave(newLab, false);\n    if (!validInput) {\n      return;\n    }\n\n    handleClose();\n    const obj = { ...newLab };\n    try {\n      setLoading(true);\n      if (logo) {\n        const isLogoSave = await uploadLogo(obj.id);\n        if (isLogoSave) Object.assign(obj, { logo: `labs/${obj.id}-logo.png` });\n      }\n      await API.updateLab(obj);\n      setLogo(null);\n      setNewLab({});\n      appContext.resetLabs();\n      appContext.showSuccessMessage(\"Lab update successfully\");\n    } catch (error) {\n      console.log(\"Error\", error);\n      appContext.showErrorMessage(error.message);\n    }\n    setLoading(false);\n  };\n\n  const onChangeImage = async (event) => {\n    if (event.currentTarget.files && event.currentTarget.files.length > 0) {\n      const file = event.currentTarget.files[0];\n      const isValid = await isValidImageHeightWidth(file);\n      if (!isValid) {\n        // setError(\"File resolution should be upto 1500px*500px and less then 1600px*600px\");\n        setError(\"File resolution should be min 1200px*400px\");\n        setLogo(\"\");\n        setSelectedImage(\"\");\n        return;\n      }\n      const message = isValidFile(file);\n      if (message.length > 0) {\n        setLogo();\n        setSelectedImage();\n        setError(message);\n        return;\n      }\n\n      setLogo(file);\n      setSelectedImage(URL.createObjectURL(file));\n    }\n  };\n\n  const isValidImageHeightWidth = (file) => {\n    return new Promise((resolve, reject) => {\n      const img = new Image();\n      img.src = window.URL.createObjectURL(file);\n      img.onload = () => {\n        console.log(\"Image \", img.width, img.height);\n        if (img.width >= 1200 && img.width <= 1600 && img.height >= 400 && img.height <= 600) {\n          resolve(true);\n        }\n        resolve(false);\n      };\n      img.onerror = () => resolve(false);\n    });\n  };\n\n  return (\n    <Modal className=\"createLabModal\" show={true} animation={true} onHide={handleClose} centered size=\"xl\">\n      <Modal.Header className=\"mb-0\" closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {newLab.isNew ? \"Create Lab\" : \"Update Lab\"}\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: \"0\", paddingBottom: \"0\" }}>\n        {loading && <Loader />}\n        <div className=\"createShowWrapper\">\n          <div className=\"createShowInner\">\n            <div className=\"createClientsWrapper\">\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Lab Name: </label>\n                <input\n                  id=\"labname\"\n                  className=\"labModalInput\"\n                  placeholder=\"Lab Name\"\n                  disabled={!newLab.isNew}\n                  value={newLab.name}\n                  onChange={(e) => setNewLab({ ...newLab, name: e.target.value })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Contact Name: </label>\n                <input\n                  id=\"contactname\"\n                  className=\"labModalInput\"\n                  placeholder=\"Primary Contact\"\n                  value={newLab.contact}\n                  onChange={(e) => setNewLab({ ...newLab, contact: e.target.value })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Email: </label>\n                <input\n                  id=\"contactemail\"\n                  className=\"labModalInput\"\n                  placeholder=\"Email\"\n                  value={newLab.email}\n                  onChange={(e) => setNewLab({ ...newLab, email: e.target.value })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Phone Number: </label>\n\n                <PhoneNoInput\n                  value={newLab.phone}\n                  handleChange={(e) => setNewLab({ ...newLab, phone: e })}\n                  cssCode={\"w-100\"}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Fax Number: </label>\n\n                <PhoneNoInput\n                  value={newLab.fax_number}\n                  handleChange={(e) => setNewLab({ ...newLab, fax_number: e })}\n                  cssCode={\"w-100\"}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Address: </label>\n                <input\n                  className=\"modalInput\"\n                  id=\"street\"\n                  placeholder=\"Address\"\n                  value={newLab.street}\n                  onChange={(e) => setNewLab({ ...newLab, street: e.target.value })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">City/State/Zip: </label>\n                <input\n                  id=\"city_state_zip\"\n                  style={{\n                    marginTop: 5,\n                  }}\n                  className=\"modalInput\"\n                  placeholder=\"City, State Zip\"\n                  value={newLab.city_state_zip}\n                  onChange={(e) => setNewLab({ ...newLab, city_state_zip: e.target.value })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Lab Director: </label>\n                <input\n                  id=\"lab_director\"\n                  className=\"labModalInput\"\n                  placeholder=\"Lab Director\"\n                  value={newLab.lab_director}\n                  onChange={(e) => setNewLab({ ...newLab, lab_director: e.target.value })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">CLIA #: </label>\n                <input\n                  id=\"clia_number\"\n                  className=\"labModalInput\"\n                  placeholder=\"CLIA Number\"\n                  value={newLab.clia_number}\n                  onChange={(e) => setNewLab({ ...newLab, clia_number: e.target.value })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Referred DOC: </label>\n                <input\n                  id=\"referredDoctor\"\n                  className=\"labModalInput\"\n                  placeholder=\"Doctor Name\"\n                  value={newLab?.referredDoctor?.name || \"\"}\n                  onChange={(e) => setNewLab({ ...newLab, referredDoctor: { name: e.target.value } })}\n                />\n              </div>\n\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Disclaimer: </label>\n                <div\n                  className=\"linkedText\"\n                  onClick={() => setShowEditor({ type: DISCLAIMER_TYPE.DISCLAIMER, message: newLab.testing_notes })}\n                >\n                  {newLab.isNew ? \"Edit Text\" : \"Update Text\"}\n                </div>\n                {showEditor && (\n                  <TextEditor\n                    text={showEditor.message ?? \"\"}\n                    handleSave={handleDisclaimerSave}\n                    handleClose={() => setShowEditor(null)}\n                    type={showEditor.type}\n                  />\n                )}\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Logo: </label>\n                <div className=\"inputFileWrapper\" onClick={handleImageClick}>\n                  {selectedImage && <img src={selectedImage} />}\n                  <input\n                    type=\"file\"\n                    ref={inputFile}\n                    accept=\"image/*\"\n                    onChange={(e) => onChangeImage(e)}\n                    style={{ display: \"none\" }}\n                  />\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"createSettingsWrapper\">\n            <div>\n              <div className=\"form-group-wrapper showsModal\">\n                <div className=\"w-100\">\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Print Labels</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.tubes_provided)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"tubes_provided\"\n                        bgColor=\"blue\"\n                        checked={newLab.tubes_provided}\n                        handleChange={(e) => {\n                          const val = !newLab.tubes_provided;\n                          if (val) {\n                            setNewLab({ ...newLab, tubes_provided: val });\n                          } else {\n                            if (!newLab.barCodeProvided) setNewLab({ ...newLab, tubes_provided: val });\n                          }\n                        }}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Default Antigen</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.default_antigen)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"default_antigen\"\n                        bgColor=\"blue\"\n                        checked={newLab.default_antigen}\n                        handleChange={(e) => setNewLab({ ...newLab, default_antigen: !newLab.default_antigen })}\n                      />\n                    </div>\n                  </div>\n\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Default Molecular</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.default_molecular)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"default_molecular\"\n                        bgColor=\"blue\"\n                        checked={newLab.default_molecular}\n                        handleChange={(e) => setNewLab({ ...newLab, default_molecular: !newLab.default_molecular })}\n                      />\n                    </div>\n                  </div>\n\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Default Accula</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.default_other)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"default_other\"\n                        bgColor=\"blue\"\n                        checked={newLab.default_other}\n                        handleChange={(e) => setNewLab({ ...newLab, default_other: !newLab.default_other })}\n                      />\n                    </div>\n                  </div>\n\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Default Rapid Flu</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.default_rapidflu)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"default_rapidflu\"\n                        bgColor=\"blue\"\n                        checked={newLab.default_rapidflu}\n                        handleChange={(e) => setNewLab({ ...newLab, default_rapidflu: !newLab.default_rapidflu })}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Default Lucira</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.default_lucira)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"default_lucira\"\n                        bgColor=\"blue\"\n                        checked={newLab.default_lucira}\n                        handleChange={(e) => setNewLab({ ...newLab, default_lucira: !newLab.default_lucira })}\n                      />\n                    </div>\n                  </div>\n\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Send Insurance Info</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.sendInsurance)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"sendInsurance\"\n                        bgColor=\"blue\"\n                        checked={newLab.sendInsurance}\n                        handleChange={(e) => setNewLab({ ...newLab, sendInsurance: !newLab.sendInsurance })}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Use Lab BC Numbers</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.barCodeProvided)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"barCodeProvided\"\n                        bgColor=\"blue\"\n                        checked={newLab.barCodeProvided}\n                        handleChange={(e) => {\n                          const val = !newLab.barCodeProvided;\n                          let limit = 0;\n                          if (val) {\n                            const barcodelabs = appContext.labs.filter((l) => l.barCodeProvided === true);\n                            if (barcodelabs.length > 0) limit = barcodelabs[0].barCodeAlertLimit || 0;\n                          }\n                          setNewLab({\n                            ...newLab,\n                            barCodeProvided: val,\n                            tubes_provided: val ? val : newLab.tubes_provided,\n                            barCodeAlertLimit: limit,\n                          });\n                        }}\n                      />\n                    </div>\n                  </div>\n\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Exclude from Summary</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.showOnSummaryScreen || false)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"showOnSummaryScreen\"\n                        bgColor=\"blue\"\n                        checked={newLab.showOnSummaryScreen}\n                        handleChange={(e) => setNewLab({ ...newLab, showOnSummaryScreen: !newLab.showOnSummaryScreen })}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Archive</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.isArchive)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"isArchive\"\n                        bgColor=\"blue\"\n                        checked={newLab.isArchive}\n                        handleChange={(e) => setNewLab({ ...newLab, isArchive: !newLab.isArchive })}\n                      />\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>White Label</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span className=\"labelYesNo\">{parseBooleanValue(newLab.whiteLabel)}</span>\n                      <ViewOnlyCheckBox\n                        id=\"whiteLabel\"\n                        bgColor=\"blue\"\n                        checked={newLab.whiteLabel}\n                        handleChange={(e) => setNewLab({ ...newLab, whiteLabel: !newLab.whiteLabel })}\n                      />\n                    </div>\n                  </div>\n\n                  {newLab.whiteLabel && appContext.isSuperAdmin() && (\n                    <>\n                      <div className=\"checkbox checkBoxWrapper\">\n                        <span style={{ marginRight: \"8px\" }}>App Package Name</span>\n                        <div className=\"d-flex justify-content-start align-items-center\">\n                          <input\n                            id=\"whitelabelpackage\"\n                            className=\"labModalInput\"\n                            placeholder=\"Package Name\"\n                            value={newLab.whiteLabelPackage}\n                            onChange={(e) => setNewLab({ ...newLab, whiteLabelPackage: e.target.value })}\n                          />\n                        </div>\n                      </div>\n                      <div className=\"checkbox checkBoxWrapper\">\n                        <span style={{ marginRight: \"8px\" }}>Postive Release Tab</span>\n                        <div className=\"d-flex justify-content-start align-items-center\">\n                          <span className=\"labelYesNo\">{parseInt(newLab.pendingRelease) === 1 ? \"Yes\" : \"No\"}</span>\n                          <ViewOnlyCheckBox\n                            id=\"pendingRelease\"\n                            bgColor=\"blue\"\n                            checked={parseInt(newLab.pendingRelease) === 1 ? true : false}\n                            handleChange={(e) => {\n                              setNewLab({ ...newLab, pendingRelease: 1 - newLab.pendingRelease });\n                            }}\n                          />\n                        </div>\n                      </div>\n                    </>\n                  )}\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Invalid Notes</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <div\n                        className=\"showDisclaimerText\"\n                        onClick={() =>\n                          setShowEditor({ type: DISCLAIMER_TYPE.INVALIDNOTES, message: newLab.invalid_notes })\n                        }\n                      >\n                        <span>Disclaimer</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Indeterminate Notes</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <div\n                        className=\"showDisclaimerText\"\n                        onClick={() =>\n                          setShowEditor({ type: DISCLAIMER_TYPE.INDERMINATENOTES, message: newLab.indeterminate_notes })\n                        }\n                      >\n                        <span>Disclaimer</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Antigen</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <div\n                        className=\"showDisclaimerText\"\n                        onClick={() => setShowEditor({ type: DISCLAIMER_TYPE.ANTIGEN, message: newLab.antigen_notes })}\n                      >\n                        <span>Disclaimer</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Molecular</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <div\n                        className=\"showDisclaimerText\"\n                        onClick={() =>\n                          setShowEditor({ type: DISCLAIMER_TYPE.MOLECULAR, message: newLab.molecular_notes })\n                        }\n                      >\n                        <span>Disclaimer</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Accula</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <div\n                        className=\"showDisclaimerText\"\n                        onClick={() => setShowEditor({ type: DISCLAIMER_TYPE.ACCULA, message: newLab.other_notes })}\n                      >\n                        <span>Disclaimer</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Lucira</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <div\n                        className=\"showDisclaimerText\"\n                        onClick={() => setShowEditor({ type: DISCLAIMER_TYPE.LUCIRA, message: newLab.lucira_notes })}\n                      >\n                        <span>Disclaimer</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Rapid Flu</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <div\n                        className=\"showDisclaimerText\"\n                        onClick={() =>\n                          setShowEditor({ type: DISCLAIMER_TYPE.RAPIDFLU, message: newLab.rapidflu_notes })\n                        }\n                      >\n                        <span>Disclaimer</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"checkbox checkBoxWrapper\">\n                    <span style={{ marginRight: \"8px\" }}>Custom</span>\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <div\n                        className=\"showDisclaimerText\"\n                        onClick={() => setShowEditor({ type: DISCLAIMER_TYPE.CUSTOM, message: newLab.custom_notes })}\n                      >\n                        <span>Disclaimer</span>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n      </Modal.Body>\n\n      <Modal.Footer style={{ borderTop: \"1px solid lightgrey\", paddingTop: \"15px\" }}>\n        <Button className=\"modalButtons\" style={{ marginRight: \"25px\" }} variant=\"secondary\" onClick={handleClose}>\n          Close\n        </Button>\n        <Button style={{ marginLeft: \"25px\" }} className=\"modalButtons\" variant=\"primary\" onClick={() => handleSave()}>\n          {newLab.isNew ? \"Create\" : \"Update\"}\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\nexport default LabModal;\n","import React, { useContext, useState, useMemo, useRef } from \"react\";\nimport { Button, Card, Table, Row, Col, Modal, Form, OverlayTrigger, Alert } from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport API from \"api\";\nimport SearchBar from \"components/SearchBar\";\nimport { Auth, Storage } from \"aws-amplify\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport $ from \"jquery\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\n\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport {\n  changeSort,\n  formatPhoneNumber,\n  isValidPhone,\n  phoneFormatter,\n  parseBooleanValue,\n  isValidFile,\n  calculateTdWidth,\n  sortingFilterInLC,\n} from \"utils\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport { PAGE_LIMIT } from \"constant\";\nimport LabBarCode from \"components/Modal/LabBarCode\";\nimport BarCodeAlert from \"components/Labs/BarCodeAlert\";\nimport TextEditor from \"views/TextEditor\";\n\nimport { AppContext } from \"context/app-context\";\nimport { DISCLAIMER_TYPE } from \"constant\";\nimport { DISCLAIMER_KEYS } from \"constant\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport Loader from \"../../components/Loader/Loader\";\nimport Icon from \"components/Icon\";\nimport editIcon from \"../../assets/img/edit-icon.png\";\nimport Status from \"components/Status/Status\";\nimport DropdownMenu from \"components/DropdownMenu/DropdownMenu\";\nimport LabModal from \"components/Labs/LabModal\";\n\nconst options = [\n  {\n    title: \"Edit\",\n  },\n  {\n    title: \"Delete\",\n  },\n  {\n    title: \"Launch Portal\",\n  },\n];\n\nconst LabsView = () => {\n  const mainRef = useRef();\n  const [width, setWidth] = useState(mainRef.current ? mainRef.current.offsetWidth : 0);\n\n  const handleResize = () => {\n    if (mainRef.current) setWidth(mainRef.current.offsetWidth);\n  };\n  useEffect(() => handleResize(), [mainRef, mainRef.current]);\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n  const tdWidth = calculateTdWidth(width - 110, 11);\n\n  const appContext = useContext(AppContext);\n  const [labTests, setLabTests] = useState([]);\n  const [labs, setLabs] = useState(appContext.labs ?? []);\n  const [filteredLabs, setFilteredLabs] = useState([]);\n  const [openCreator, setOpenCreator] = useState(false);\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n  const [labToDelete, setLabToDelete] = useState(\"\");\n  const [newLab, setNewLab] = useState({});\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [loading, setLoading] = useState(false);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [logo, setLogo] = useState(null);\n  const [showCSVImporter, setShowCSVImporter] = useState(false);\n  const [selectedImage, setSelectedImage] = useState(\"\");\n\n  const { filterDates } = TimeFilter;\n\n  const searchTerms = [\n    \"Name\",\n    \"Contact Name\",\n    \"Contact Email\",\n    \"Contact Phone\",\n    \"Print Labels\",\n    \"Antigen\",\n    \"Molecular\",\n    \"Accula\",\n    \"Send Insurance\",\n    \"BarCodes\",\n    \"White Label\",\n  ];\n  const [isShown, setIsShown] = useState(false);\n\n  const handleClose = () => {\n    setOpenCreator(false);\n    setOpenDeleteConfirmation(false);\n  };\n\n  useEffect(() => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.labs.sortBy) {\n      setSortDescending(sortingFilters.labs.sortDescending);\n      setSortBy(sortingFilters.labs.sortBy);\n    }\n    loadSummary();\n  }, []);\n\n  useEffect(() => {\n    setLabs(appContext.labs);\n    setFilteredLabs(appContext.labs);\n  }, [appContext.labs]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"labs\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredLabs,\n      setFilteredLabs,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName,\n      appContext.getLabTests\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    refreshSummary(labs, labTests);\n  }, [labTests]);\n\n  const loadSummary = async () => {\n    const summary = await API.getSummaryFromPG({ summary: \"lab\" });\n    setLabTests(summary.rows);\n  };\n\n  const openLab = (labID) => {\n    let url = `${window.location.origin}/lab/tests/${labID}`;\n    window.open(url);\n  };\n  const refreshSummary = (data, summary) => {\n    if (data.length === 0) return;\n    if (summary.length === 0) {\n      setFilteredLabs(data);\n      return;\n    }\n    const newList = data.map((c) => {\n      const obj = summary.find((x) => x.id === c.id);\n      return { ...c, totalTest: obj ? obj.totalTest : 0 };\n    });\n    setFilteredLabs(newList);\n  };\n\n  const deleteLab = async (id) => {\n    try {\n      await API.deleteLab(id);\n      appContext.resetLabs();\n      appContext.showSuccessMessage(\"Lab delete successfully\");\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n  };\n\n  const uploadLogo = async (id) => {\n    if (logo) {\n      try {\n        // const response = await Storage.put(`${id}-logo.png`, logo);\n        let fileName = `labs/${id}-logo.png`;\n        await Storage.put(fileName, logo, { bucket: \"medflow-images\" });\n        return true;\n      } catch (error) {\n        return false;\n      }\n    }\n    return false;\n  };\n\n  const filterLabs = (term, input) => {\n    setFilteredLabs(labs.filter((lab) => lab[term].toLowerCase().includes(input.toLowerCase())));\n  };\n\n  const labsToMap = useMemo(() => {\n    const list = filterDates(filteredLabs, timeFilter);\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredLabs, currentPage, timeFilter]);\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"tubes_provided\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"default_antigen\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"default_molecular\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"default_other\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"default_rapidflu\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"default_lucira\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"sendInsurance\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"barCodeProvided\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"whiteLabel\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n    // console.log(\"FROM NESTED FILTER\", models);\n    return models;\n  };\n\n  useEffect(() => {\n    setFilteredLabs(nestedFilter(labs, filter));\n  }, [filter]);\n\n  const handleFilterChange = (event, picker) => setTimeFilter({ start: picker.startDate, end: picker.endDate });\n  const handleFilterCancel = (event, picker) => setTimeFilter({});\n  const handleChangePage = (page) => setCurrentPage(page);\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const handleEditLab = async (lab) => {\n    setNewLab({\n      isNew: false,\n      id: lab.id,\n      name: lab.name,\n      contact: lab.contact_name,\n      phone: lab.contact_phone || lab.phone_number,\n      email: lab.contact_email,\n      fax_number: lab.fax_number,\n      street: lab.street,\n      city_state_zip: lab.city_state_zip,\n      lab_director: lab.lab_director,\n      clia_number: lab.clia_number,\n      referredDoctor: lab?.referredDoctor || null,\n      testing_notes: lab.testing_notes,\n      tubes_provided: lab.tubes_provided,\n      default_antigen: lab.default_antigen,\n      default_molecular: lab.default_molecular,\n      default_rapidflu: lab.default_rapidflu,\n      default_lucira: lab.default_lucira,\n      sendInsurance: lab.sendInsurance,\n      logo: lab.logo,\n      barCodeProvided: lab.barCodeProvided,\n      barCodeAlertLimit: lab.barCodeAlertLimit,\n      antigen_notes: lab.antigen_notes,\n      molecular_notes: lab.molecular_notes,\n      showOnSummaryScreen: lab.showOnSummaryScreen || false,\n      whiteLabel: lab.whiteLabel,\n      whiteLabelPackage: lab.whiteLabelPackage,\n      default_other: lab.default_other,\n      other_notes: lab.other_notes,\n      custom_notes: lab.custom_notes,\n      invalid_notes: lab.invalid_notes,\n      indeterminate_notes: lab.indeterminate_notes,\n      isArchive: lab.isArchive,\n      lucira_notes: lab.lucira_notes,\n      rapidflu_notes: lab.rapidflu_notes,\n      pendingRelease: parseInt(lab.pendingRelease) || 0,\n    });\n    if (lab.logo) {\n      try {\n        let imagePath = `${lab.logo}`;\n        const path = await Storage.get(imagePath, { bucket: \"medflow-images\" });\n        setSelectedImage(path);\n      } catch (error) {\n        console.log(\"Fail to load the logo\");\n      }\n    } else {\n      setSelectedImage(null);\n    }\n    setOpenCreator(true);\n  };\n\n  const getTotalTest = (lab) => {\n    if (!lab.totalTest || lab.totalTest === 0) {\n      return <>0</>;\n    }\n    return (\n      <Link\n        className=\"cursor-pointer text-primary-black text-decoration-none\"\n        to={{\n          pathname: `/admin/totaltests`,\n          state: { name: lab.name, term: \"Lab\", models: labs },\n        }}\n      >\n        {lab.totalTest}\n      </Link>\n    );\n  };\n\n  const getDefaultLabName = (data) => {\n    let defaultLab = [];\n\n    if (data.default_antigen) {\n      defaultLab.push(\"Antigen\");\n    }\n    if (data.default_lucira) {\n      defaultLab.push(\"Lucira\");\n    }\n    if (data.default_molecular) {\n      defaultLab.push(\"Molecular\");\n    }\n    if (data.default_other) {\n      defaultLab.push(\"Rapid PCR\");\n    }\n    if (data.default_rapidflu) {\n      defaultLab.push(\"Rapid Flu\");\n    }\n\n    return defaultLab;\n  };\n\n  const handleDropDownOptions = (lab, value) => {\n    switch (value) {\n      case \"Edit\":\n        handleEditLab(lab);\n        break;\n      case \"Delete\":\n        setOpenDeleteConfirmation(true);\n        setLabToDelete(lab.id);\n        break;\n      case \"Launch Portal\":\n        openLab(lab.id);\n      default:\n        break;\n    }\n  };\n\n  const TableRow = ({ lab }) => {\n    let defaultLabRoles = getDefaultLabName(lab);\n\n    return (\n      <tr key={lab.id} className=\"trDataWrapper\">\n        <td className=\"icon\" style={{ width: \"50px\", minWidth: \"50px\", maxWidth: \"50px\" }}>\n          <ViewOnlyCheckBox bgColor=\"red\" id={lab.id} />\n        </td>\n        <td className=\"ellipsis\" title={lab.name}>\n          {lab.name}\n        </td>\n        <td className=\"ellipsis\" title={lab.contact_name}>\n          {lab.contact_name}\n        </td>\n        <td\n          className=\"ellipsis text-dark-danger cursor-pointer\"\n          title={lab.contact_email}\n          onClick={() => lab.contact_email && window.open(`mailto:${lab.contact_email}`)}\n        >\n          {lab.contact_email}\n        </td>\n        <td\n          className=\"ellipsis text-dark-danger cursor-pointer\"\n          onClick={() => {\n            if (lab.contact_phone) {\n              window.open(`tel:+${lab.contact_phone.replace(/\\D/g, \"\")}`);\n            }\n            if (lab.phone_number) {\n              window.open(`tel:+${lab.phone_number.replace(/\\D/g, \"\")}`);\n            }\n          }}\n          title={formatPhoneNumber(lab.contact_phone || lab.phone_number)}\n        >\n          {formatPhoneNumber(lab.contact_phone || lab.phone_number)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {getTotalTest(lab)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <div className=\"star-icon-wrapper\">\n            <Status\n              type=\"circle\"\n              size=\"md\"\n              color={lab.tubes_provided ? \"green\" : \"maroon\"}\n              tickIcon={lab.tubes_provided}\n              crossIcon={!lab.tubes_provided}\n            />\n          </div>\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{ textAlign: \"center\", textOverflow: \"visible\" }}\n          title={defaultLabRoles.length > 1 ? defaultLabRoles.join(\", \") : defaultLabRoles}\n        >\n          {/* <span title={parseBooleanValue(lab.default_antigen)}>{parseBooleanValue(lab.default_antigen)}</span> */}\n          {/* <div className=\"star-icon-wrapper\">\n            <Status\n              type=\"circle\"\n              size=\"md\"\n              color={lab.default_antigen ? \"green\" : \"maroon\"}\n              tickIcon={lab.default_antigen}\n              crossIcon={!lab.default_antigen}\n            />\n          </div> */}\n\n          {defaultLabRoles && defaultLabRoles.length > 1\n            ? \"Multi\"\n            : defaultLabRoles.length == 1\n            ? defaultLabRoles\n            : \"-\"}\n        </td>\n        {/* <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <span title={parseBooleanValue(lab.default_antigen)}>{parseBooleanValue(lab.default_antigen)}</span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <span title={parseBooleanValue(lab.default_molecular)}>{parseBooleanValue(lab.default_molecular)}</span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <span title={parseBooleanValue(lab.default_other)}>{parseBooleanValue(lab.default_other)}</span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <span title={parseBooleanValue(lab.default_rapidflu)}>{parseBooleanValue(lab.default_rapidflu)}</span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <span title={parseBooleanValue(lab.default_lucira)}>{parseBooleanValue(lab.default_lucira)}</span>\n        </td> */}\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <span title={parseBooleanValue(lab.sendInsurance)}>\n            <div className=\"star-icon-wrapper\">\n              <Status\n                type=\"circle\"\n                size=\"md\"\n                color={lab.sendInsurance ? \"green\" : \"maroon\"}\n                tickIcon={lab.sendInsurance}\n                crossIcon={!lab.sendInsurance}\n              />\n            </div>\n          </span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <span>\n            {parseBooleanValue(lab.barCodeProvided) === \"Yes\" ? (\n              <div\n                onClick={() => {\n                  setShowCSVImporter(lab.id);\n                }}\n              >\n                <span style={{ textDecoration: \"underline\", color: \"#42cef5\", cursor: \"pointer\" }}>View</span> &nbsp;\n                <BarCodeAlert id={lab.id} labData={lab} title=\"Available barcode is below the limit\" />\n              </div>\n            ) : (\n              <div className=\"star-icon-wrapper\">\n                <Status type=\"circle\" size=\"md\" color=\"maroon\" crossIcon />\n              </div>\n            )}\n          </span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <span title={parseBooleanValue(lab.whiteLabel)} className=\"star-icon-wrapper\">\n            {/* {parseBooleanValue(lab.whiteLabel)} */}\n            <Status\n              type=\"circle\"\n              size=\"md\"\n              color={lab.sendInsurance ? \"green\" : \"maroon\"}\n              tickIcon={lab.sendInsurance}\n              crossIcon={!lab.sendInsurance}\n            />\n          </span>\n        </td>\n\n        {/* <td className=\"ellipsis\">\n          <Link\n            className=\"ellipsis text-dark-danger text-decoration-none text-dark-danger-hover\"\n            onClick={() => {\n              openLab(lab.id);\n            }}\n          >\n            Launch Portal\n          </Link>\n        </td> */}\n\n        <td className=\"icon text-center\" style={{ width: \"50px\", minWidth: \"50px\", maxWidth: \"50px\" }}>\n          <DropdownMenu options={options} handleDropDownOptions={(e) => handleDropDownOptions(lab, e)} />\n        </td>\n      </tr>\n    );\n  };\n\n  return (\n    <div className=\"container-fluid\">\n      {!loading ? (\n        <div className=\"shows-screen-parent\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                    </div>\n                    <Icon\n                      handleClick={() => (\n                        setOpenCreator(true),\n                        setNewLab({\n                          isNew: true,\n                          default_antigen: false,\n                          default_molecular: false,\n                          default_other: false,\n                          default_rapidflu: false,\n                          default_lucira: false,\n                          sendInsurance: false,\n                          barCodeProvided: false,\n                          whiteLabel: false,\n                          isArchive: false,\n                          pendingRelease: 0,\n                        }),\n                        setSelectedImage(null),\n                        setLogo(null)\n                      )}\n                      title={\"Create Lab\"}\n                      label={\"Create\"}\n                      iconType={\"createIcon\"}\n                    />\n                  </div>\n                  <div>{showFilter && <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} />}</div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"striped-tabled-with-hover bg-transparent mb-0\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md=\"8\">\n                      <Card.Title>\n                        <div className=\"\">\n                          Total Labs:\n                          <span className=\"ps-2\"> ({filteredLabs.length})</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"4\">\n                      <MFPagination\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                      />\n                    </Col>\n                  </Row>\n                </Card.Header>\n              </Card>\n              <Card className=\"striped-tabled-with-hover bg-transparent\">\n                {/* <Card.Header>\n                  <Row>\n                    <div className=\"clientsButtonHeader buttonHeader justify-content-between mb-1\">\n                      <div className=\"clientsButtonHeader buttonHeader\">\n                        <Button className=\"headerButton mb-0\" onClick={() => setShowFilter(!showFilter)}>\n                          Filter\n                        </Button>\n                      </div>\n                      <Button\n                        className=\"createButtons\"\n                        onClick={() => (\n                          setOpenCreator(true),\n                          setNewLab({\n                            isNew: true,\n                            default_antigen: false,\n                            default_molecular: false,\n                            default_other: false,\n                            default_rapidflu: false,\n                            default_lucira: false,\n                            sendInsurance: false,\n                            barCodeProvided: false,\n                            whiteLabel: false,\n                            isArchive: false,\n                            pendingRelease: 0,\n                          }),\n                          setSelectedImage(null),\n                          setLogo(null)\n                        )}\n                      >\n                        Create a Lab\n                      </Button>\n                    </div>\n                  </Row>\n                </Card.Header> */}\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                  <div className=\"table-responsive pendingReleaseTable\" ref={mainRef}>\n                    <Table className=\"separate-border-tr\">\n                      <thead>\n                        <tr>\n                          <th></th>\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"name\"\n                            title=\"Name\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"contact_name\"\n                            title=\"Contacts Name\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"contact_email\"\n                            title=\"Contacts's Email\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"contact_phone\"\n                            title=\"Contacts's Phone\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"totalTests\"\n                            title=\"Total Tests (YTD)\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"tubes_provided\"\n                            title=\"Print Labels\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"default_antigen\"\n                            title=\"Default Lab\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          {/* <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"default_antigen\"\n                            title=\"Antigen\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"default_molecular\"\n                            title=\"Molecular\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"default_other\"\n                            title=\"Accula\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"default_rapidflu\"\n                            title=\"Radif Flu\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"default_lucira\"\n                            title=\"Lucira\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          /> */}\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"sendInsurance\"\n                            title=\"Send Insurance\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"barCodeProvided\"\n                            title=\"BarCodes\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"whiteLabel\"\n                            title=\"White Label\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <th\n                            className=\"border-0 text-center text-grey\"\n                            style={{ fontWeight: \"bold\", width: tdWidth, minWidth: tdWidth, maxWidth: tdWidth }}\n                          >\n                            Actions\n                          </th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {labsToMap.map((lab) => {\n                          return <TableRow key={lab.id} lab={lab} />;\n                        })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      ) : (\n        <Loader />\n      )}\n\n      {openCreator && <LabModal lab={newLab} handleClose={handleClose} image={selectedImage} appContext={appContext} />}\n\n      <Modal\n        show={openDeleteConfirmation}\n        // style={{ transform: \"translate(0, -30%)\" }}\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        centered\n        size={\"md\"}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Delete LAB\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n          <Modal.Title id=\"contained-modal-title-vcenter\">Are you sure you want to delete this LAB?</Modal.Title>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button\n            className=\"modalButtons\"\n            variant=\"primary\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Go back\n          </Button>\n          <Button\n            className=\"modalButtons\"\n            variant=\"danger\"\n            onClick={() => {\n              deleteLab(labToDelete);\n              handleClose();\n            }}\n          >\n            Confirm\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      {showCSVImporter && <LabBarCode id={showCSVImporter} handleClose={() => setShowCSVImporter(null)} />}\n    </div>\n  );\n};\n\nexport default LabsView;\n","import React, { useRef } from \"react\";\nimport Select from \"react-select\";\nimport {MESSAGE_SEND_TYPE} from \"constant\";\nimport {Row, Col, } from \"react-bootstrap\";\n\nconst TEXT_FILED_OPTIONS = [\n  { label: \"First Name\", value: \"{firstName}\" },\n  { label: \"Last Name\", value: \"{lastName}\" },\n  { label: \"Test Type\", value: \"{testType}\" },\n];\n\nconst TextAreaEditor = (props) => {\n  const {message, name, handleChange, label, type } = props;\n  const textAreaRef = useRef();\n  \n\n  const insertAtCursor = (dropDownValue) => {\n    textAreaRef.current.focus;\n    console.log(\"textAreaREf\",textAreaRef, dropDownValue);  \n    let startPos = textAreaRef.current.selectionStart;\n      let endPos = textAreaRef.current.selectionEnd;\n      textAreaRef.current.value =\n        textAreaRef.current.value.substring(0, startPos) +\n        dropDownValue +\n        textAreaRef.current.value.substring(endPos, textAreaRef.current.value.length);\n        const newPos = endPos + dropDownValue.length;\n        textAreaRef.current.setSelectionRange(newPos,newPos);\n      textAreaRef.current.focus();\n      handleChange(textAreaRef.current.value, name, type);\n    // if (textAreaRef.current.selectionStart || textAreaRef.current.selectionStart === \"0\") {\n      \n    // } else {\n    //   handleChange(textAreaRef.current.value, name, type);\n    // }\n  };\n  return (\n    <div className=\"form-group-wrapper re-test\" >\n        <label className=\"modalLineHeaders\">\n          {/* <input\n              className=\"position-relative\"\n              style={{top: '3px'}}\n            checked={isSelected}\n            type=\"checkBox\"\n            onChange={(e) => handleChange(e.target.checked, message, name)}\n          ></input> */}\n        {`${label}:`}\n        </label>\n      <div className=\"w-100 d-flex flex-row-reverse g-10 textareaWrapper\">\n        <div className=\"d-flex align-items-center justify-content-around flex-column selectField col-sm-12\">\n        <Select\n          options={MESSAGE_SEND_TYPE}\n          blurInputOnSelect={true}\n          className=\"w-100 respInput\"\n          menuPlacement=\"auto\"\n          placeholder=\"Select message Type\"\n          value={MESSAGE_SEND_TYPE.find((f)=> f.value === type)}\n          onChange={(e)=>handleChange(message, name, e.value)}\n          />\n        <Select\n          value={{ label: \"Insert field\", value: \"none\" }}\n          options={TEXT_FILED_OPTIONS}\n          isDisabled={!type}\n          blurInputOnSelect={true}\n          menuPlacement=\"auto\"\n          className=\"w-100 ml-auto inputFieldMessage respInput\"\n          placeholder=\"Insert Field\"\n          onChange={(e) => insertAtCursor(e.value)}\n        />\n        </div>\n        <div className=\"selectTextarea w-100 mt-2 TextareaWrap\">\n        <textarea\n          placeholder={label}\n          className=\"textAreaWrapper respInput textAreaCustom\"\n          readOnly={!type}\n          ref={textAreaRef}\n          value={message}\n          onChange={(e) => handleChange(e.target.value, name, type)}\n        />\n        </div>\n      </div>\n    </div>\n  );\n};\nexport default TextAreaEditor;\n","import React from \"react\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport { formatPhoneNumber } from \"utils\";\n\nconst ContactInfo = (props) => {\n  const { show, moreInfo, handleClose } = props;\n\n  return (\n    <Modal\n      show={show}\n      // style={{ transform: \"translate(0, -30%)\" }}\n      animation={true}\n      onHide={() => handleClose()}\n      centered\n      size={\"md\"}\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {moreInfo.name}'s Contact Info\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n        <p>Contact Name: {moreInfo.contact}</p>\n        <p>\n          Contact Phone: <a href={`tel:${moreInfo.phone}`}>{formatPhoneNumber(moreInfo.phone, \"\", true)}</a>\n        </p>\n        <p>\n          Contact Email: <a href={`mailto:${moreInfo.email}`}>{moreInfo.email}</a>\n        </p>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" onClick={() => handleClose()}>\n          Close\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ContactInfo;\n","import React, {useState} from 'react'\nimport { Modal, Button, Card, Table, Row, Col } from \"react-bootstrap\";\nimport { externalTypesOptions , TEST_TYPE_VALUE} from \"constant\";\nimport Select from \"react-select\";\nimport ErrorMessage from \"components/Message/ErrorMessage\"\n\n\nconst TestTypeDurationModal = (props) => {\n   const { handleClose, handleSave, data}= props;\n   const [addHours, setAddHours] = useState(0 );\n   const [error, setError] = useState(\"\");\n   const [addTestType, setAddtestType] = useState('');\n   const [addGroup, setaddGroup] = useState(data);\n   console.log(data,addGroup);\n   const handleChange =()=>{\n        if(!addTestType.length>0){\n          setError(\"Select Test Type Please!\");\n          return;\n        }\n        if(addHours <= 0){\n          setError(\"Select Hours Positive Value Please!\");\n          return;\n        }\n        const findVal = addGroup.findIndex((c)=> c.testType === addTestType);\n        if(findVal !==-1){\n          const groupData = addGroup;\n            groupData.splice(findVal,1,{testType: addTestType, hours:addHours})\n           setaddGroup(groupData);\n        }else{\n         setaddGroup([...addGroup, {testType: addTestType, hours:addHours}])\n        }\n          setAddtestType('');\n          setAddHours(0);\n        }  \n        const handleSaveChange =()=>{\n            handleSave(JSON.stringify(addGroup));\n            handleClose();\n        }\n        const handleDelete=(index)=>{\n          const groupdata =[...addGroup];\n          groupdata.splice(index,1);\n          setaddGroup(groupdata);\n        }\n    const TableRow = ({ data, index }) => {\n        return (\n          <tr>\n            <td>{index + 1}</td>\n            <td>{TEST_TYPE_VALUE[data.testType]}</td>\n            <td>{`${data.hours}h`}</td>\n            <td><i className='fas fa-trash' style={{cursor: \"pointer\"}} onClick={()=>handleDelete(index)}/></td>\n          </tr>\n        );\n      };\n\n  return (\n      <> <Modal\n        show={true}\n        backdrop=\"static\"\n        className='externalTestModal'\n      onHide={() =>handleClose()}\n      centered\n      scrollable\n      size={\"lg\"}\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n         Test Type Setting\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n          <div className='formWrapper mt-2 mb-3 align-items-center'>\n            <label>Select Type: </label>\n            <Select\n              options={externalTypesOptions}\n              className=\"w-25 siteSelector\"\n              value={addTestType.length > 0 ? {value: addTestType, label: TEST_TYPE_VALUE[addTestType]}:null}\n              blurInputOnSelect={true}\n              defaultValue={null}\n              menuPlacement=\"bottom\"\n              placeholder=\"Select Type\"\n              onChange={(e)=>setAddtestType(e.value)}\n            />\n             <label>Duration:</label>\n             <input\n                    type=\"number\"\n                    className=\"w-25 modalInput\"\n                    value={addHours}\n                    placeholder=\"only hours\"\n                    style={{\n                      width: \"100%\",\n                    }}\n                    onChange={(e)=>setAddHours(e.target.value)}\n                  />\n            <Button onClick={() => handleChange()}>\n          Add\n        </Button>\n        </div>\n        <div style={{minHeight:\"3vh\"}}>\n        {error && (\n          <ErrorMessage error={error} handleChange={()=>setError('')}/>\n        )}\n        </div>\n        <Row>\n              <Col md=\"12\">\n                <Card className=\"strpied-tabled-with-hover modalHeight\">\n                  <Card.Body>\n                      <div className=\"form-group-wrapper d-block\">\n                        <div className=\"table-responsive\" style={{ overflow: \"hidden\" }}>\n                          <Table className=\"table-hover table-striped\">\n                            <thead>\n                              <tr>\n                                <th style={{ width: \"10%\" }}>SR#</th>\n                                <th>TEST TYPE</th>\n                                <th>DURATION</th>\n                              </tr>\n                            </thead>\n                            <tbody>\n                              {addGroup.length > 0 &&\n                                addGroup.map((data, index) => <TableRow data={data} key={index} index={index} />)}\n                            </tbody>\n                          </Table>\n                        </div>\n                      \n\n                      </div>\n                  </Card.Body>\n                </Card>\n              </Col>\n            </Row>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"mt-2\" onClick={() =>handleClose()}>\n          Close\n        </Button>\n        <Button className=\"mt-2\" onClick={handleSaveChange}>Save</Button>\n      </Modal.Footer>\n    </Modal>\n</>\n  )\n}\n\nexport default TestTypeDurationModal","import React, { useState, useEffect } from \"react\";\nimport { Button, Form, Modal } from \"react-bootstrap\";\nimport { SITE_STATUS_OPTIONS } from \"../../constant\";\nimport Select from \"react-select\";\n\nconst ChangeStatusModal = (props) => {\n  const { handleSave, handleClose, selectedStatus } = props;\n  const [result, setResult] = useState();\n  const [error, setError] = useState(\"\");\n  console.log(\"selectedStatus\", selectedStatus);\n\n  useEffect(() => {\n    let statusValue = selectedStatus === null ? 1 : selectedStatus;\n    setResult(SITE_STATUS_OPTIONS.find((s) => s.value === statusValue));\n  }, []);\n\n  useEffect(() => {\n    setTimeout(() => {\n      setError(\"\");\n    }, 4000);\n  }, [error]);\n\n  const onHandleSave = () => {\n    if (!result) {\n      setError(\"Please select the Status\");\n      return;\n    }\n    handleSave(result.value);\n    handleClose();\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Change Site Status\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Status:</label>\n            <Select\n              options={SITE_STATUS_OPTIONS}\n              blurInputOnSelect={true}\n              menuPlacement=\"auto\"\n              placeholder=\"Select a Status\"\n              className=\"w-100 roleSelector\"\n              value={result}\n              onChange={(e) => setResult({ label: e.label, value: e.value })}\n            />\n          </div>\n\n          {error.length > 0 && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            Save\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default ChangeStatusModal;\n","export default __webpack_public_path__ + \"static/media/logo.5741cbc7.jpg\";","const TDNameWithDetail = (props) => {\n  const { cssClass, title, label } = props;\n  return (\n    <td className=\"ellipsis w-TwelvePercent\">\n      {title || label ? (\n        <div className=\"d-flex flex-column w-100\">\n          <span className=\"fs-6 secondary-gray text-ellipsis\" title={title}>\n            {title}\n          </span>\n          <p className={`mb-0 fs-14 text-primary-black text-ellipsis ${cssClass}`} title={label}>\n            {label}\n          </p>\n        </div>\n      ) : (\n        <span className=\"fs-6 secondary-gray\">No details</span>\n      )}\n    </td>\n  );\n};\nexport default TDNameWithDetail;\n","export default __webpack_public_path__ + \"static/media/qr-code.cb463e71.svg\";","export default __webpack_public_path__ + \"static/media/qr-download.76f0c9e9.svg\";","import Status from \"components/Status/Status\";\nimport { getPreRegistrationLink } from \"constant\";\nimport { useState } from \"react\";\nimport { QRCode } from \"react-qrcode-logo\";\nimport QrCodeIcon from \"../../assets/img/qr-code.svg\";\nimport QrCodeDownloadIcon from \"../../assets/img/qr-download.svg\";\nimport logo from \"assets/img/logo.jpg\";\n\nconst TDPreRegisteration = (props) => {\n  const { item , handleCopyPRLink, downloadQRCode , currentURL} = props;\n  const [showCopyText, setShowCopyText] = useState(false);\n  //console.log('Props om TDR:::' , props);\n\n\n  const handleCopyPRLink1 = (id) => {\n    navigator.clipboard.writeText(getPreRegistrationLink(id));\n    setShowCopyText(true);\n    setTimeout(() => setShowCopyText(false), 2000);\n  };\n\n  return (\n    <td>\n      <div className=\"d-flex align-items-center justify-content-center\">\n        <div className=\"d-flex align-items-center text-primary-black fs-6\">\n          <div className=\"star-icon-wrapper\">\n            {/* <Status type=\"circle\" size=\"md\" color=\"maroon\" crossIcon /> */}\n            <Status\n              type=\"circle\"\n              size=\"md\"\n              color={item.preRegistration ? \"green\" : \"maroon\"}\n              tickIcon={item.preRegistration}\n              crossIcon={!item.preRegistration}\n            />\n          </div>\n          {/* <span className={`preRegisterationBullet ${cssClass}`}></span> {label} */}\n        </div>\n\n        { item.preRegistration && (\n                        <>\n                          <div className=\"d-flex justify-content-between align-items-center position-relative\">\n                            {showCopyText && <div className=\"copy-link-text\">Copy to clipboard!</div>}\n                            {/* <div className=\"fontFourteen\" style={{ paddingLeft: \"8px\" }}>\n                              QR Code\n                            </div> */}\n                            <div className=\"d-flex align-items-center justify-content-between qr-code-download\">\n                              <div onClick={() => handleCopyPRLink1(item.id)} style={{cursor: \"pointer\"}}>\n                              <img src={QrCodeIcon} alt=\"qr-code-icon\" width=\"25\" className=\"mx-2\" />\n                                {/* <i className=\"fas fa-copy\" /> */}\n                              </div>\n                              <div onClick={() => downloadQRCode(item.name)} style={{cursor: \"pointer\"}}>\n                                {/* <i className=\"fas fa-download\"></i> */}\n                                <img src={QrCodeDownloadIcon} alt=\"qr-code-download\" width=\"25\" />\n                              </div>\n                              <span style={{ display: \"none\" }}>\n                                <QRCode\n                                  id=\"qr-gen\"\n                                  ecLevel={\"H\"}\n                                  value={getPreRegistrationLink(item.id, currentURL)}\n                                  enableCORS={true}\n                                  logoImage={logo}\n                                  size=\"250\"\n                                  logoHeight={\"70\"}\n                                  logoWidth={\"70\"}\n                                  fgColor={\"#000\"}\n                                  bgColor={\"#fff\"}\n                                />\n                              </span>\n                            </div>\n                          </div>\n                     \n                        </>\n                      )}\n\n        {/* <img src={QrCodeIcon} alt=\"qr-code-icon\" width=\"25\" className=\"mx-2\" />\n        <img src={QrCodeDownloadIcon} alt=\"qr-code-download\" width=\"25\" /> */}\n      </div>\n    </td>\n  );\n};\nexport default TDPreRegisteration;\n","import ViewOnlyCheckBox from \"../CheckBox/ViewOnlyCheckBox\";\nimport TDNameWithDetail from \"./TDNameWithDetail\";\nimport TDPreRegisteration from \"./TDPreRegisteration\";\nimport editIcon from \"../../assets/img/edit-icon.png\";\nimport { TEST_TYPE_VALUE } from \"constant\";\nimport { formatPhoneNumber, openSite } from \"utils\";\nimport { siteStatus } from \"utils\";\nimport { Link } from \"react-router-dom\";\nimport DropdownMenu from \"components/DropdownMenu/DropdownMenu\";\nimport { remove } from \"lodash\";\nconst options = [\n  {\n    title: \"Edit\",\n  },\n  {\n    title: \"Delete\",\n  },\n  {\n    title: \"Launch Portal\",\n  },\n];\n\nconst TRData = (props) => {\n  const {\n    cssClass,\n    site,\n    item,\n    getName,\n    checkboxescehcked,\n    handleCheckBoxChange,\n    getMoreInfo,\n    getTotalTest,\n    handleDelete,\n    handleLaunchPortal,\n    handleEdit,\n    handleShowSettingsModal,\n    handleCopyPRLink,\n    downloadQRCode,\n    currentURL,\n  } = props;\n  let client = getMoreInfo(\"client\", item.clientID);\n  const handleDropDownOptions = (item, value) => {\n    switch (value) {\n      case \"Edit\":\n        handleEdit(item);\n        break;\n      case \"Delete\":\n        handleDelete(item.id);\n        break;\n      case \"Launch Portal\":\n        handleLaunchPortal(item.id);\n      default:\n        break;\n      // code block\n    }\n  };\n\n  return (\n    <tr className=\"trDataWrapper\">\n      <td>\n        <ViewOnlyCheckBox\n          bgColor=\"red\"\n          checked={checkboxescehcked.indexOf(item.id) !== -1}\n          id={item.id}\n          item={item}\n          handleChange={(e) => handleCheckBoxChange(e, item.id)}\n        />\n      </td>\n\n      <TDNameWithDetail title={item.clientID && getName(item.clientID)} label={item.name} cssClass=\"text-uppercase\" />\n      <TDNameWithDetail title={client.name} label={client.email} />\n      <TDNameWithDetail\n        title={item.contact_name}\n        label={formatPhoneNumber(item.contact_phone || item.phone_number)}\n        cssClass=\"text-uppercase\"\n      />\n      <td className=\"fs-6 text-primary-black text-center\">{getTotalTest(item)}</td>\n      <TDPreRegisteration\n        item={item}\n        handleCopyPRLink={handleCopyPRLink}\n        downloadQRCode={downloadQRCode}\n        currentURL={currentURL}\n      />\n      <td className={`fs-6 text-primary-black text-captilize text-center`}>\n        {TEST_TYPE_VALUE[item.orderKitType] || <span className=\"secondary-gray\">No Details</span>}\n      </td>\n      <td className=\"text-center\">\n        <span\n          className=\"badge bg-purple text-blue fs-14 rounded-1 cursor-pointer\"\n          onClick={() => handleShowSettingsModal(item)}\n        >\n          Settings\n        </span>\n      </td>\n      <td className=\"fs-14 text-dark-yellow text-center\">{siteStatus(item.status)}</td>\n      {/* <td className=\"text-center\">\n        <i className=\"fas fa-download cursor-pointer download-icon\" />\n      </td> */}\n      {/* <td className=\"fs-14 text-dark-danger text-center\">\n        <Link\n          className=\"ellipsis text-dark-danger text-decoration-none linkHoverDangerText\"\n          onClick={() => {\n            openSite(item?.id);\n          }}\n        >\n          Launch Portal\n        </Link>\n      </td> */}\n      <td className=\"cursor-pointer text-center\">\n        {/* <i className=\"fa fa-trash secondary-gray\"></i> */}\n        <DropdownMenu options={options} handleDropDownOptions={(e) => handleDropDownOptions(item, e)} />\n      </td>\n    </tr>\n  );\n};\nexport default TRData;\n","import React from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport moment from \"moment\";\nimport { toDate } from \"date-fns\";\nimport dateIcon from '../assets/img/calendar-icon.svg';\n\nconst FilterSelect = (props) => {\n  const { setTimeFilter } = props;\n  const handleFilterChange = (event, picker) => {\n    console.log(\"event:\", event);\n    console.log(\"picker\", picker);\n\n    if (picker?.chosenLabel === \"All\") {\n      setTimeFilter({});\n    } else {\n      setTimeFilter({ start: picker?.startDate, end: picker?.endDate });\n    }\n  };\n\n  const handleFilterCancel = () => setTimeFilter({});\n\n  return (\n    <DateRangePicker\n      initialSettings={{\n        startDate: moment().subtract(1, \"days\").startOf(\"day\"),\n        endDate: moment().endOf(\"day\"),\n        // showCustomRangeLabel: false,\n        // alwaysShowCalendars: true,\n        ranges: {\n          All: [moment().subtract(1, \"days\").startOf(\"day\"), moment().endOf(\"day\")],\n          Today: [moment().startOf(\"day\"), moment().endOf(\"day\")],\n          Yesterday: [moment().subtract(1, \"days\").startOf(\"day\"), moment().subtract(1, \"days\").endOf(\"day\")],\n          \"Last 7 Days\": [moment().subtract(6, \"days\").startOf(\"day\"), moment()],\n          \"Last 30 Days\": [moment().subtract(29, \"days\").startOf(\"day\"), moment()],\n          \"Last Month\": [\n            moment().subtract(1, \"month\").startOf(\"month\").startOf(\"day\"),\n            moment().subtract(1, \"month\").endOf(\"month\").endOf(\"day\"),\n          ],\n          \"This Year\": [moment().startOf(\"year\").utc(), moment().endOf(\"year\")],\n          \"Last Year\": [moment().subtract(1, \"year\").startOf(\"year\"), moment().subtract(1, \"year\").endOf(\"year\")],\n        },\n      }}\n      onApply={handleFilterChange}\n      onCancel={handleFilterCancel}\n    >\n      <button className=\"border-0 bg-white dateRangePickerWrapper header-btns d-block\">\n        <div className=\"header-btn-img\"><img src={dateIcon} alt=\"date\" /></div>\n        <div className=\"header-btn-labels mx-auto ellipsis\">Date</div>\n      </button>\n\n    </DateRangePicker>\n  );\n};\n\nexport default FilterSelect;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport HeaderItem from \"./HeaderItem\";\nimport { stringConstant, TEST_HEADER_TYPE, CONFIG } from \"../../constant\";\nimport { useLocation } from \"react-router\";\nimport { calculateTdWidth } from \"../../utils\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\n\nconst Header = (props) => {\n  const { type, flipSort, sortBy, sortDescending, cssClass, widthCol, handlePageChecked, page, checkedPage } = props;\n  const location = useLocation();\n\n  const componentRef = useRef();\n  const [width, setWidth] = useState(0);\n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    setWidth(componentRef.current.offsetWidth);\n  };\n\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  const calculateColumns = () => {\n    let col =\n      location.pathname === \"/admin/alltests\" ||\n      location.pathname === \"/admin/emailstatus\" ||\n      location.pathname === \"/admin/totaltests\"\n        ? 14\n        : 12;\n    if (type !== TEST_HEADER_TYPE.pending) col += 2;\n    if (type !== TEST_HEADER_TYPE.unprocessed) col += 2;\n\n    return col;\n  };\n\n  const tdWidth = calculateTdWidth(width - 60, calculateColumns());\n\n  return (\n    <thead ref={componentRef}>\n      <tr className={cssClass}>\n        <th style={{ width: `${widthCol || 50}px`, maxWidth: `${widthCol || 50}px` }}>\n          {handlePageChecked && (\n            <ViewOnlyCheckBox\n              bgColor=\"red\"\n              id={page}\n              checked={checkedPage.includes(page)}\n              handleChange={handlePageChecked}\n            />\n          )}\n        </th>\n        {type === TEST_HEADER_TYPE.pending && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"resultDate\"\n            title=\"Processed\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n          />\n        )}\n        {(type === TEST_HEADER_TYPE.completed || type === TEST_HEADER_TYPE.alltests) && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"resultDate\"\n            title=\"Processed\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n          />\n        )}\n        {type === TEST_HEADER_TYPE.unprocessed && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"createdAt\"\n            title=\"Collected\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n          />\n        )}\n        {type === TEST_HEADER_TYPE.expired && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"resultDate\"\n            title=\"Processed\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n          />\n        )}\n        <HeaderItem\n          width={tdWidth - 20}\n          ItemKey=\"firstName\"\n          title=\"First Name\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n        />\n        <HeaderItem\n          width={tdWidth - 20}\n          ItemKey=\"lastName\"\n          title=\"Last Name\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n        />\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"dob\"\n          title=\"DoB\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n        />\n        <HeaderItem\n          width={tdWidth + 40}\n          ItemKey=\"email\"\n          title=\"Email\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n        />\n        <HeaderItem\n          width={tdWidth + 20}\n          ItemKey=\"phoneNumber\"\n          title=\"Phone\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n        {!CONFIG.isWhiteLabel && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"clientID\"\n            title=\"Client\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n            aligned=\"centered\"\n          />\n        )}\n\n        {!CONFIG.isWhiteLabel && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"labID\"\n            title=\"Lab\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n            aligned=\"centered\"\n          />\n        )}\n\n        {type !== TEST_HEADER_TYPE.unprocessed && type !== TEST_HEADER_TYPE.expired && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"result\"\n            title=\"Result\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n            aligned=\"centered\"\n          />\n        )}\n        <HeaderItem\n          ItemKey=\"test_type\"\n          width={tdWidth}\n          title=\"Test\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"sequenceNo\"\n          title={stringConstant.sequenceNo}\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"siteID\"\n          title={stringConstant.show}\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n        {((type !== TEST_HEADER_TYPE.pending && type === TEST_HEADER_TYPE.alltests) ||\n          type === TEST_HEADER_TYPE.expired ||\n          type === TEST_HEADER_TYPE.unprocessed) && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"status\"\n            title=\"Test Status\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n            aligned=\"centered\"\n          />\n        )}\n        {type === TEST_HEADER_TYPE.unprocessed && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"transitionStatus\"\n            title=\"Cust Status\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n            aligned=\"centered\"\n          />\n        )}\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"tester_name\"\n          title=\"Tester\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n        {TEST_HEADER_TYPE.completed === type && CONFIG.isWhiteLabel && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"batch\"\n            title=\"H&S\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n            aligned=\"centered\"\n          />\n        )}\n        {(TEST_HEADER_TYPE.completed === type || location.pathname === \"/admin/emailstatus\") && (\n          <HeaderItem\n            width={tdWidth}\n            ItemKey=\"emailSend\"\n            title=\"Res Sent\"\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n            aligned=\"centered\"\n          />\n        )}\n        <th\n          className=\"ellipsis border-0 centered text-grey\"\n          style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n        >\n          Details\n        </th>\n      </tr>\n    </thead>\n  );\n};\n\nexport default Header;\n","import React, { useEffect } from \"react\";\nimport FileSaver from \"file-saver\";\nimport * as XLSX from \"xlsx-js-style\";\nimport moment from \"moment\";\nimport { PRE_REGISTRATION_STATUS } from \"constant\";\nimport { parseBooleanValue } from \"utils\";\nimport { getPhoneNo } from \"utils\";\nimport Icon from \"./Icon\";\nimport { stringConstant } from \"constant\";\nimport { CONFIG } from \"constant\";\nimport { getValidName } from \"utils\";\nimport { CUSTOM_INS } from \"constant\";\nimport { Button } from \"react-bootstrap\";\n\nconst ExportToExcel = (props) => {\n  const { items, selectedItem, title, appContext, filter, timeFilter, sortBy, summary, emp, isUnprocessedTest, isPlainButton = false, buttonCSS = \"profileButton btn-fill createButtons\" } = props;\n  const exportData = () => {\n    if (!selectedItem) return items;\n    return items.map((item) => {\n      let obj = {};\n      selectedItem.forEach((c) => {\n        if (c === \"firstName\" || c === \"lastName\") {\n          const val = getValidName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"phoneNumber\" || c === \"phone_number\") {\n          const [countryCode, phoneNo, phone] = getPhoneNo(item[c], item.countryCode);\n          const val = phone;\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"accession_no\") {\n          Object.assign(obj, { [c]: item[\"barcode\"] });\n        } else if (\n          c === \"updatedAt\" ||\n          c === \"createdAt\" ||\n          c === \"batch\" ||\n          c === \"resultDate\" ||\n          c === \"orderDate\" ||\n          c === \"testDate\" ||\n          c === \"receivedDate\" ||\n          c === \"dob\" ||\n          c === \"releaseDate\"\n        ) {\n          const val = item[c] ? moment(item[c]).format(\"MM/DD/YYYY\") : \"\";\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"clientID\") {\n          const val = appContext.getClientName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"patternTestAnswer\") {\n          const val = item[c] && item[c] !== \"undefined\" ? \"True\" : \"False\";\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"siteID\") {\n          const val = appContext.getSiteName(item[c]);\n          Object.assign(obj, { [c]: val });\n          //\n        } else if (c === \"labID\") {\n          const val = appContext.getLabName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"client\") {\n          const val = appContext.getSiteName(item.siteID);\n          Object.assign(obj, { [c]: val });\n        } \n        \n        else if (c === \"emailSend\") {\n          const val = item[c] ? \"✔\" : \"\";\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"eligibilityStatus\") {\n          const val =\n            item[c]?.message === \"Eligibile\" || CUSTOM_INS.includes(item[c]?.insuranceCompanyCode)\n              ? \"Y\"\n              : item[c]\n              ? \"N\"\n              : \"N\";\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"step\") {\n          Object.assign(obj, { [c]: PRE_REGISTRATION_STATUS[item[c]] });\n        }\n        else if (c === \"chartID\") {\n          Object.assign(obj, { [c]: item[c] || \"\" });\n        }\n        else {\n          Object.assign(obj, { [c]: item[c] });\n        }\n      });\n      return obj;\n    });\n  };\n\n  const handleExportToExcel = async () => {\n    if (items?.length > 0) {\n      const data = exportData();\n      const colLength = Object.keys(data[0]).length;\n      const rowLength = Object.keys(data).length;\n      const filters = {\n        id: { data: filter.id, label: \"id\" },\n        first: { data: filter.first, label: \"First Name\" },\n        last: { data: filter.last, label: \"Last Name\" },\n        firstName: { data: filter.firstName, label: \"First Name\" },\n        lastName: { data: filter.lastName, label: \"Last Name\" },\n        email: { data: filter.email, label: \"Email\" },\n        dob: { data: filter.dob, label: \"Date Of Birth\" },\n        phoneNumber: { data: filter.phoneNumber, label: \"Phone Number\" },\n        clientID: { data: filter.Client, label: \"Client\" },\n        siteID: { data: filter.Show, label: CONFIG.isWhiteLabel ? \"Location\" : \"Show\" },\n        site_name: { data: filter.site_name, label: CONFIG.isWhiteLabel ? \"Location\" : \"Show\" },\n        labID: { data: filter.Lab, label: \"Lab\" },\n        status: { data: filter.status, label: emp ? \"Status\" : \"Test Status\" },\n        result: { data: filter.result, label: \"Result\" },\n        test_type: { data: filter.test_type, label: CONFIG.isWhiteLabel ? \"Test\" : \"Test Type\" },\n        number_of_tests: { data: filter.number_of_tests, label: \"Number of tests\" },\n        avg_hours: { data: filter.avg_hours, label: \"Average hours\" },\n        avg_minutes: { data: filter.avg_minutes, label: \"Average minutes\" },\n\n        name: { data: filter.name, label: \"Name\" },\n        positive_tests: { data: filter.positive_tests, label: \"Positive Tests\" },\n        positivity_ratio: { data: filter.positivity_ratio, label: \"Positivity Ratio\" },\n        total_tests: { data: filter.total_tests, label: \"Total Tests\" },\n        reason: { data: filter.reason, label: \"Reason\" },\n        sequenceNo: { data: filter.sequenceNo, label: \"Sequence\" },\n        tester_name: { data: filter.tester_name, label: \"Collected By\" },\n        emailSend: { data: filter.emailSend, label: \"Result Sent\" },\n        updatedAt: { data: undefined, label: emp ? \"Last Update\" : \"Date Processed\" },\n        createdAt: { data: undefined, label: \"Date Collected\" },\n        resultDate: { data: undefined, label: \"Date Processed\" },\n        orderDate: { data: undefined, label: isUnprocessedTest ? \"Order Date\" : \"Date\" },\n        batch: { data: undefined, label: \"Date Tested\" },\n        validUntil: { data: undefined, label: \"Valid Until\" },\n        isQuarantined: { data: filter.isQuarantined, label: \"Quarantined\" },\n        show: { data: undefined, label: CONFIG.isWhiteLabel ? \"Location\" : \"Show\" },\n        resultDates: { data: undefined, label: \"Last Positive Test Date\" },\n        quarantinedStart: { data: undefined, label: \"Expected End Date\" },\n        daysCount: { data: undefined, label: \"Days Count\" },\n        hippaConsent: { data: undefined, label: \"Hippa Consent\" },\n        referenceID: { data: filter.referenceID, label: \"ReferenceID\" },\n        accession_no: { data: filter.accession_no, label: \"Accession No\" },\n        phone_number: { data: filter.phone_number, label: \"Phone\" },\n        sex: { data: filter.sex, label: \"Gender\" },\n        id_number: { data: filter.id_number, label: \"ID Number\" },\n        street: { data: filter.street, label: emp ? \"Address\" : \"Street\" },\n        street2: { data: filter.street2, label: \"Apt/Unit#\" },\n        city: { data: filter.city, label: \"City\" },\n        state: { data: filter.state, label: \"State\" },\n        zip: { data: filter.zip, label: \"Zip Code\" },\n        providerName: { data: undefined, label: emp ? \"Provider\" : \"Refererring Physician\" },\n        insurance_name: { data: undefined, label: \"Payer\" },\n        insurance_number: { data: undefined, label: \"Member ID\" },\n        insuranceGroupId: { data: undefined, label: \"Group ID\" },\n        eligibilityStatus: { data: undefined, label: \"Eligibility\" },\n        primaryCarePhysician: { data: undefined, label: \"Primary Care Physician\" },\n        referringPyhsician: { data: undefined, label: \"Referring Pyhsician\" },\n        showName: { data: filter.showName, label: \"Show Name\" },\n        testSendQty: { data: filter.testSendQty, label: \"Send Quantity\" },\n        isVaccinated: { data: parseBooleanValue(filter.isVaccinated), label: \"Vaccinated\" },\n        vaccinationType: { data: filter.vaccinationType, label: \"Vaccination Type\" },\n        vaccinationDate: { data: filter.vaccinationDate, label: \"Vaccination Date\" },\n        isFalsePositive: { data: filter.isFalsePositive, label: \"isFalsePositive\" },\n        isExternalTest: { data: parseBooleanValue(filter.isExternalTest), label: \"External Test\" },\n        externalTestType: { data: filter.externalTestType, label: \"External Test Type\" },\n        externalTestDate: { data: filter.externalTestDate, label: \"External Test Date\" },\n        externalTestResult: { data: filter.externalTestResult, label: \"External Test Resut\" },\n        step: { data: PRE_REGISTRATION_STATUS[filter.step], label: \"Status\" },\n        orderStatus: { data: filter.orderStatus, label: \"Order Status\" },\n        barcode: { data: filter.barcode, label: \"Accession NO\" },\n        employeeType: { data: filter.employeeTypess, label: \"Employee Type\" },\n        capcity: { data: filter.capacity, label: \"Capacity\" },\n        designation: { data: filter.designation, label: \"Designation\" },\n        whiteGlove: { data: filter.whiteGlove, label: \"White Glove\" },\n        patternTestAnswer: { data: filter.patternTestAnswer, label: \"Pattern Test\" },\n        pcrStatus: { data: filter.pcrStatus, label: \"Cust Status\" },\n        client: { data: filter.client, label: \"External Client\" },\n        middleName: { data: filter?.middleName, label: \"Middle Name\" },\n        schrID: { data: filter?.schrID, label: \"LTCS ID\" },\n        note: { data: filter?.note, label: \"Clinical Notes\" },\n        labComments: { data: filter?.labComments, label: \"Lab Comments\" },\n        orderNo: { data: filter?.orderNo, label: \"Order Number\" },\n        sendToName: { data: filter?.sendToName, label: \"Reference Lab\" },\n        sentToLabDate: { data: filter?.sentToLabDate, label: \"Date Sent\" },\n        receivedDate: { data: filter?.receivedDate, label: \"Date Received\" },\n        testDate: { data: filter?.testDate, label: \"Test Date\" },\n        releaseDate: { data: filter.releaseDate, label: \"Released On\" },\n        releaseDate: { data: filter.releaseDate, label: \"Released On\" },\n        scanByLabUserName: { data: filter?.scanByLabUserName, label: \"Received By\" },\n        StampByName: { data: filter?.StampByName, label: \"Resulted By\" },\n        verifiedByName: { data: filter?.verifiedByName, label: \"Released By\" },\n        chartID: { data: filter?.chartID, label: \"Chart #\" },\n        externalID: { data: filter?.externalID, label: \"Chart #\" },\n      };\n      const arr = Object.keys(data[0]).map((c) => filters[c]?.label || \"\");\n      // const columnsWidth = [];\n      // for (let i = 0; i < arr.length; i++) {\n      //   if (\n      //     arr[i] === \"Date Processed\" ||\n      //     arr[i] === \"Date Collected\" ||\n      //     arr[i] === \"Tester\" ||\n      //     arr[i] === \"Date Tested\" ||\n      //     arr[i] === \"Hippa Consent\" ||\n      //     arr[i] === \"Accession No\"\n      //   ) {\n      //     columnsWidth.push({ wch: 15 });\n      //     continue;\n      //   }\n      //   if (\n      //     arr[i] === \"Last Positive Test Date\" ||\n      //     arr[i] === \"Expected End Date\" ||\n      //     arr[i] === \"Phone\" ||\n      //     arr[i] === \"Employee Type\" ||\n      //     arr[i] === \"Refererring Physician\" ||\n      //     arr[i] === \"First Name\" ||\n      //     arr[i] === \"DateOfBirth\" ||\n      //     arr[i] === \"Cust Status\" ||\n      //     arr[i] === \"Insurance Carrier\" ||\n      //     arr[i] === \"Insurance Number\" ||\n      //     arr[i] === \"Primary Care\" ||\n      //     arr[i] === \"Referring Care\"\n      //   ) {\n      //     columnsWidth.push({ wch: 18 });\n      //     continue;\n      //   }\n      //   if (arr[i] === \"Test\" || arr[i] === \"External Client\" || arr[i] === \"Street\" || arr[i] === \"Email\") {\n      //     columnsWidth.push({ wch: 30 });\n      //     continue;\n      //   }\n      //   columnsWidth.push({ wch: 12 });\n      // }\n\n      function gapFilteredVal(filters) {\n        var str = \"\";\n        for (const [key, value] of Object.entries(filters)) {\n          if (key === \"emailSend\" && value.data !== undefined && value.data.length > 0) {\n            const val = value.data == \"1\" ? \"✔\" : \"Empty\";\n            str += `${value.label} - ${val}, `;\n            continue;\n          }\n          if (value.data !== undefined && value.data.length > 0) {\n            str += `${value.label} - ${value.data}, `;\n          }\n        }\n        return str;\n      }\n      // Function for gap in excel row skip rows\n      // function create_gap_rows(ws, nrows) {\n      //   var ref = XLSX.utils.decode_range(ws[\"!ref\"]); // get original range\n      //   ref.e.r += nrows; // add to ending row\n      //   ws[\"!ref\"] = XLSX.utils.encode_range(ref); // reassign row\n      // }\n      const sortedVal = filters[sortBy];\n      var wsrows = [\n        { hpx: summary ? 180 : timeFilter ? 100 : 80, level: 1 }, // \"points\"\n      ];\n\n      const merge = [{ s: { r: 0, c: 0 }, e: { r: 0, c: colLength - 1 } }];\n\n      const fileName = `${title}${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}.xlsx`;\n      const fileType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\n      let dateRange = \"\";\n      if (timeFilter) {\n        const { start, end } = timeFilter;\n        dateRange =\n          start && end\n            ? `Date Range: ${moment(start).format(\"MMM DD, YYYY\")} to ${moment(end).format(\"MMM DD, YYYY\")}`\n            : `Date Range:`;\n      }\n      const reportTitle = title || \"Complete Tests Report\";\n      const filterVal = filter\n        ? `Filtered By: ${Object.keys(filter).length > 0 ? gapFilteredVal(filters) : \"None\"}`\n        : \"\";\n      const sorted = filter ? `Sorted By: ${sortedVal ? sortedVal.label : \"None\"}` : \"\";\n\n      const orderDetails = summary\n        ? `Total Tests Ordered: ${summary.totalOrders ?? 0}, Total Attendees: ${summary.totalAttendees ?? 0},\n      Total Attendees Get Qr: ${summary.totalAttendeesQr ?? 0}, Total Tests Shipped: ${summary.totalShipped ?? 0},\n      Total Tests Received: ${summary.totalReceived ?? 0}`\n        : \"\";\n\n      const ws = !CONFIG.isWhiteLabel\n        ? dateRange.length > 0\n          ? XLSX.utils.aoa_to_sheet(\n              [[`${reportTitle} \\n ${dateRange} \\n ${filterVal} \\n ${sorted} \\n ${orderDetails}`]],\n              { origin: \"A1\" }\n            )\n          : XLSX.utils.aoa_to_sheet([[`${reportTitle} \\n ${filterVal} \\n ${sorted} \\n ${orderDetails}`]], {\n              origin: \"A1\",\n            })\n        : XLSX.utils.aoa_to_sheet([arr], { origin: 0 });\n      if (!CONFIG.isWhiteLabel) {\n        XLSX.utils.sheet_add_aoa(ws, [arr], { origin: -1 });\n      }\n      XLSX.utils.sheet_add_json(ws, data, { skipHeader: true, origin: -1 });\n\n      let columnMaxWidths = {};\n\n      // get all header name from data obejct\n      const headers = Object.keys(data[0]);\n\n      const combinedArray = headers.map((key, index) => ({\n        key: key,\n        label: arr[index],\n      }));\n\n      data.forEach((item) => {\n        combinedArray.forEach((header) => {\n          const key = header.key;\n          const cellValue = item[key];\n          const cellContentLength = String(cellValue).length;\n          if (!columnMaxWidths[key] || cellContentLength > columnMaxWidths[key]) {\n            columnMaxWidths[key] = cellContentLength;\n          }\n        });\n      });\n\n      // now push the column character width as per the max character length of each column data\n      const columnWidths = [];\n\n      combinedArray.forEach((header) => {\n        const headerWidth = header.label.length;\n        const key = header.key;\n        let val = parseInt(columnMaxWidths[key]);\n\n        // Determine the final column width: the greater of header width and content width\n        let finalWidth = Math.max(headerWidth, val);\n\n        if (key === \"eligibilityStatus\") {\n          finalWidth = 15;\n        }\n        // added padding in final result\n        columnWidths.push({ wch: finalWidth + 2 });\n      });\n\n      if (!CONFIG.isWhiteLabel) {\n        ws[\"!rows\"] = wsrows;\n        ws[\"!merges\"] = merge;\n        ws[\"!cols\"] = columnWidths;\n        ws[\"A1\"].s = {\n          alignment: {\n            horizontal: \"center\",\n            wrapText: true,\n          },\n          font: {\n            name: \"Calibri\",\n            sz: 16,\n            bold: true,\n            color: { rgb: \"#000\" },\n          },\n        };\n        for (let i = 65; i < colLength + 65; i++) {\n          ws[`${String.fromCharCode(i)}2`].s = {\n            alignment: {\n              horizontal: \"center\",\n            },\n            font: {\n              name: \"Calibri\",\n              sz: 12,\n              bold: true,\n              underline: true,\n              color: { rgb: \"#000\" },\n            },\n          };\n        }\n      } else {\n        for (let i = 65; i < colLength + 65; i++) {\n          ws[`${String.fromCharCode(i)}1`].s = {\n            alignment: {\n              horizontal: \"center\",\n            },\n            font: {\n              name: \"Calibri\",\n              sz: 12,\n              bold: true,\n              underline: true,\n              color: { rgb: \"#000\" },\n            },\n          };\n        }\n      }\n\n      // set the newly set column width\n      ws[\"!cols\"] = columnWidths;\n      // table  each cells styles\n      //\n      // for (let i = 65; i < colLength + 65; i++) {\n      //   for (let j = 0; j < rowLength; j++) {\n      //     console.log(\"ws[`${String.fromCharCode(i)}${j + 3}`]444\", ws[`${String.fromCharCode(i)}${j + 3}`]);\n      //     // ws[`${String.fromCharCode(i)}${j + 3}`].s = {\n      //     //   alignment: {\n      //     //     horizontal: \"center\",\n      //     //     wrapText: true,\n      //     //   },\n      //     // };\n      //   }\n      // }\n      const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\n      const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\n      const fileContent = new Blob([excelBuffer], { type: fileType });\n      try {\n        await FileSaver.saveAs(fileContent, fileName);\n        appContext.showSuccessMessage(\"Excel file exported successfully\");\n      } catch (err) {\n        appContext.showErrorMessage(\"file can't be expored\");\n      }\n    }\n  };\nif(isPlainButton)\n{\n  return <Button variant = \"secondary\" style={{marginTop : 10}} className={buttonCSS} onClick = {handleExportToExcel}>Export</Button>\n}\n  return <Icon handleClick={handleExportToExcel} title={\"Export to Excel\"} label=\"Export\" iconType={\"XLSIcon\"} />;\n};\n\nexport default ExportToExcel;\n","import React from \"react\";\nimport { Document, Page, Image, StyleSheet, Text, View } from \"@react-pdf/renderer\";\nimport moment from \"moment\";\nimport { formatPhoneNumber, getOrderDetail } from \"utils\";\nimport { PRE_REGISTRATION_STATUS } from \"constant\";\nimport { parseBooleanValue } from \"utils\";\nimport { stringConstant } from \"constant\";\n\nconst AllTestPDF = (props) => {\n  const { tests, title, filter, sortBy, timeFilter } = props;\n  console.log(\"sortBy\", sortBy);\n\n  const colLength = Object.keys(tests[0]).length;\n  const rowLength = Object.keys(tests).length;\n  const filters = {\n    id: { data: filter.id, label: \"id\" },\n    first: { data: filter.first, label: \"First Name\" },\n    last: { data: filter.last, label: \"Last Name\" },\n    firstName: { data: filter.firstName, label: \"First Name\" },\n    lastName: { data: filter.lastName, label: \"Last Name\" },\n    email: { data: filter.email, label: \"Email\" },\n    dob: { data: filter.dob, label: \"DateOfBirth\" },\n    phoneNumber: { data: filter.phoneNumber, label: \"Phone\" },\n    clientID: { data: filter.Client, label: \"Client\" },\n    siteID: { data: filter.Show, label: \"Show\" },\n    site_name: { data: filter.site_name, label: \"Show\" },\n    labID: { data: filter.Lab, label: \"Lab\" },\n    status: { data: filter.status, label: \"Status\" },\n    result: { data: filter.result, label: \"Result\" },\n    test_type: { data: filter.test_type, label: \"Test Type\" },\n    reason: { data: filter.reason, label: \"Reason\" },\n    sequenceNo: { data: filter.sequenceNo, label: stringConstant.sequenceNo },\n    tester_name: { data: filter.tester_name, label: \"Tester\" },\n    emailSend: { data: filter.emailSend, label: \"Result Sent\" },\n    updatedAt: { data: undefined, label: \"Date Processed\" },\n    createdAt: { data: undefined, label: \"Date Collected\" },\n    resultDate: { data: undefined, label: \"Date Processed\" },\n    batch: { data: undefined, label: \"Date Tested\" },\n    validUntil: { data: undefined, label: \"Valid Until\" },\n    isQuarantined: { data: filter.isQuarantined, label: \"Quarantined\" },\n    show: { data: undefined, label: \"Show\" },\n    resultDates: { data: undefined, label: \"Last Positive Test Date\" },\n    quarantinedStart: { data: undefined, label: \"Expected End Date\" },\n    daysCount: { data: undefined, label: \"Days Count\" },\n    hippaConsent: { data: undefined, label: \"Hippa Consent\" },\n    referenceID: { data: filter.referenceID, label: \"ReferenceID\" },\n    accession_no: { data: filter.accession_no, label: \"Accession No\" },\n    phone_number: { data: filter.phone_number, label: \"Phone\" },\n    sex: { data: filter.sex, label: \"Gender\" },\n    id_number: { data: filter.id_number, label: \"ID Number\" },\n    street: { data: filter.street, label: \"Street\" },\n    city: { data: filter.city, label: \"City\" },\n    showName: { data: filter.showName, label: \"Show Name\" },\n    testSendQty: { data: filter.testSendQty, label: \"Send Quantity\" },\n    isVaccinated: { data: parseBooleanValue(filter.isVaccinated), label: \"Vaccinated\" },\n    vaccinationType: { data: filter.vaccinationType, label: \"Vaccination Type\" },\n    vaccinationDate: { data: filter.vaccinationDate, label: \"Vaccination Date\" },\n    isFalsePositive: { data: filter.isFalsePositive, label: \"isFalsePositive\" },\n    isExternalTest: { data: parseBooleanValue(filter.isExternalTest), label: \"External Test\" },\n    externalTestType: { data: filter.externalTestType, label: \"External Test Type\" },\n    externalTestDate: { data: filter.externalTestDate, label: \"External Test Date\" },\n    externalTestResult: { data: filter.externalTestResult, label: \"External Test Resut\" },\n    step: { data: PRE_REGISTRATION_STATUS[filter.step], label: \"Status\" },\n    orderStatus: { data: filter.orderStatus, label: \"Order Status\" },\n    barcode: { data: filter.barcode, label: \"Accession/Barcode\" },\n  };\n  const header = Object.keys(tests[0]).map((c) => filters[c]?.label);\n  const { start, end } = timeFilter;\n  const sortedVal = filters[sortBy];\n  const gapFilteredVal = (filters) => {\n    var str = \"\";\n    for (const [key, value] of Object.entries(filters)) {\n      if (key === \"emailSend\" && value.data !== undefined && value.data.length > 0) {\n        const val = value.data == \"1\" ? \"true\" : \"Empty\";\n        str += `${value?.label} - ${val}, `;\n        continue;\n      }\n      if (value.data !== undefined && value.data.length > 0) {\n        str += `${value?.label} - ${value.data}, `;\n      }\n    }\n    return str;\n  };\n  const styles = StyleSheet.create({\n    body: {\n      paddingTop: 35,\n      paddingBottom: 35,\n      paddingHorizontal: 20,\n    },\n    table: {\n      width: \"100%\",\n      marginBottom: \"20px\",\n    },\n    row: {\n      display: \"flex\",\n      flexDirection: \"row\",\n      paddingBottom: \"10px\",\n    },\n    test: {\n      fontSize: 6,\n      width: \"9%\",\n      textAlign: \"center\",\n    },\n    infoText: {\n      fontSize: 13,\n    },\n    infoTxt: {\n      fontSize: 20,\n    },\n    head: {\n      fontSize: 9,\n      fontWeight: \"bold\",\n      textDecoration: \"underline\",\n      width: \"9%\",\n      fontFamily: \"Times-Bold\",\n      textAlign: \"center\",\n      paddingTop: \"10px\",\n    },\n    pageNumbers: {\n      position: \"absolute\",\n      fontSize: 8,\n      bottom: 20,\n      left: 0,\n      right: 0,\n      textAlign: \"center\",\n    },\n  });\n\n  return (\n    <>\n      <Document>\n        <Page style={styles.body}>\n          <View style={styles.table}>\n            <View style={{ flexDirection: \"row\", justifyContent: \"space-around\", marginBottom: \"10px\" }}>\n              <Image\n                style={{ width: \"100px\", height: \"50px\" }}\n                src={require(\"assets/img/safecamp_BRAND.1-nobg.png\").default}\n              />\n\n              <View\n                style={{\n                  alignItems: \"center\",\n                  padding: \"10px\",\n                  paddingLeft: \"10px\",\n                }}\n              >\n                <Text style={{ ...styles.infoTxt, fontFamily: \"Times-Bold\" }}>Completed Tests Report</Text>\n                {Object.keys(timeFilter).length !== 0 && start !== moment(\"20210301\") ? (\n                  <Text style={{ ...styles.infoText, fontFamily: \"Times-Bold\" }}>{`Date Range: ${moment(start).format(\n                    \"MMM DD, YYYY\"\n                  )} to ${moment(end).format(\"MMM DD, YYYY\")}`}</Text>\n                ) : undefined}\n                {Object.keys(filter).length > 0 ? (\n                  <Text style={{ ...styles.infoText, fontFamily: \"Times-Bold\" }}>{`Filtered By: ${gapFilteredVal(\n                    filters\n                  )}`}</Text>\n                ) : undefined}\n                {sortBy ? (\n                  <Text style={{ ...styles.infoText, fontFamily: \"Times-Bold\" }}>\n                    {\" \"}\n                    {`Sorted By: ${sortedVal?.label}`}\n                  </Text>\n                ) : undefined}\n              </View>\n            </View>\n            <View style={styles.row}>\n              {header.map((head) => (\n                <Text style={styles.head}>{head}</Text>\n              ))}\n            </View>\n            {tests.map((test, i) => (\n              <View key={i} style={styles.row} wrap={true}>\n                {Object.keys(tests[0]).map((c) => (\n                  <Text style={styles.test}>{test[c]}</Text>\n                ))}\n              </View>\n            ))}\n          </View>\n          <Text\n            style={styles.pageNumbers}\n            render={({ pageNumber, totalPages }) => `Page ${pageNumber} of ${totalPages}`}\n            fixed\n          />\n        </Page>\n      </Document>\n    </>\n  );\n};\n\nexport default AllTestPDF;\n","import React, { useMemo } from \"react\";\nimport { PDFDownloadLink } from \"@react-pdf/renderer\";\nimport AllTestPDF from \"components/PDF/AllTestPDF\";\nimport { Button } from \"react-bootstrap\";\nimport ReactPDF from \"@react-pdf/renderer\";\nimport FileSaver from \"file-saver\";\nimport { formatPhoneNumber } from \"utils\";\nimport moment from \"moment\";\nimport API from \"api\";\nimport Icon from \"components/Icon\";\nimport { CONFIG } from \"constant\";\nimport { connectedIDInLocalStorage } from \"utils\";\n\nconst TestPDFLayout = ({ tests, selectedItem, title, appContext, filter, timeFilter, sortBy }) => {\n  const exportData = () => {\n    if (!selectedItem) return tests;\n    return tests.map((item) => {\n      let obj = {};\n      selectedItem.forEach((c) => {\n        if (c === \"phoneNumber\") {\n          const val = formatPhoneNumber(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"updatedAt\" || c === \"createdAt\" || c === \"batch\" || c === \"resultDate\") {\n          const val = item[c] ? moment(item[c]).format(\"MMM DD, YYYY\") : moment(item.createdAt).format(\"MMM DD, YYYY\");\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"clientID\") {\n          const val = appContext.getClientName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"siteID\") {\n          const val = appContext.getSiteName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"labID\") {\n          const val = appContext.getLabName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"emailSend\") {\n          const val = item[c] ? \"true\" : \"\";\n          Object.assign(obj, { [c]: val });\n        } else {\n          Object.assign(obj, { [c]: item[c] });\n        }\n      });\n      return obj;\n    });\n  };\n\n  const fetchData = () => {\n    loadData();\n  };\n\n  const loadData = async () => {\n    try {\n      const filterParam = { ...filter };\n      if (CONFIG.isWhiteLabel && connectedIDInLocalStorage.get()) {\n        filterParam[\"labID\"] = connectedIDInLocalStorage.get();\n      }\n\n      if (CONFIG.isWhiteLabel && CONFIG.clientID) {\n        filterParam[\"clientID\"] = CONFIG.clientID;\n      }\n      if (timeFilter) {\n        const { start, end } = timeFilter;\n        if (start)\n          Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n        if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n        Object.assign(filterParam, { fileType: \"PDF\" });\n      }\n      if (Object.keys(filterParam).length > 0) {\n        await API.downloadPdf(filterParam);\n      }\n    } catch (err) {\n      console.log(\"Error\", err);\n    }\n  };\n  const handleClick = () => {\n    const data = exportData();\n    const fileName = \"test.pdf\";\n    ReactPDF.pdf(<AllTestPDF tests={data} title={title} filter={filter} timeFilter={timeFilter} sortBy={sortBy} />)\n      .toBlob()\n      .then(async (fileContent) => {\n        FileSaver.saveAs(fileContent, fileName);\n      });\n  };\n\n  return (\n    <>\n      <Icon\n        handleClick={handleClick}\n        title={\"Export Pdf\"}\n        label={\"Export Pdf\"}\n        iconType={\"pdfIcon\"}\n        //disabled={checkboxes.length ? false : true}\n      />\n    </>\n  );\n};\n\nexport default TestPDFLayout;\n","import React from \"react\";\nimport { CONFIG } from \"constant\";\n\nconst SequenceNo = (props) => {\n  const { num, test, handleEdit, showLogs } = props;\n\n  const parseSrNoObject = (test) => {\n    try {\n      let arr = [];\n      try {\n        arr = JSON.parse(test.sr_no);\n      } catch (er) {\n        return test.barcode;\n      }\n      if (arr.length > 0) {\n        return arr.map((r) => r.accession_no).join(\"\\n\");\n      }\n      return test.barcode;\n    } catch (e) {\n      return test.barcode;\n    }\n  };\n\n  return (\n    <td\n      className=\"ellipsis accessionListNo\"\n      style={{ textAlign: \"center\", cursor: \"Pointer\" }}\n      title={parseSrNoObject(test)}\n      onClick={() => showLogs(test)}\n    >\n      {num}\n      {handleEdit && CONFIG.isWhiteLabel && !test.result && (\n        <i\n          className=\"fas fa-edit accessionEdit\"\n          onClick={(e) => {\n            e.stopPropagation();\n            handleEdit(test);\n          }}\n        />\n      )}\n    </td>\n  );\n};\n\nexport default SequenceNo;\n","import React, { useState, useContext, useMemo, useRef } from \"react\";\n\n// react-bootstrap components\nimport { Badge, Button, Card, Navbar, Nav, Table, Container, Row, Col, Modal, Form } from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { Link } from \"react-router-dom\";\nimport parsePhoneNumber, { AsYouType } from \"libphonenumber-js\";\nimport { PDFViewer } from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport FilterSelect from \"components/FilterSelect\";\nimport { AppContext } from \"context/app-context\";\nimport {\n  changeSort,\n  getCrewsName,\n  formatTest,\n  setPhoneNo,\n  formatPhoneNumber,\n  sortTestList,\n  sortingFilterInLC,\n  formatUTCDate,\n} from \"utils\";\nimport ContactInfo from \"components/Modal/ContactInfo\";\nimport { PAGE_LIMIT, TEST_HEADER_TYPE, RESULT_COLOR } from \"constant\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport Header from \"components/Table/Header\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { Bounce } from \"react-activity\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport moment from \"moment\";\nimport SequenceNo from \"components/SequenceNo\";\nimport Loader from \"../../components/Loader/Loader\";\nimport Icon from \"components/Icon\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\nimport { stringConstant, CONFIG } from \"constant\";\n\nconst PendingReleaseTestListView = () => {\n  const mainRef = useRef();\n  const [width, setWidth] = useState(0);\n  useEffect(() => {\n    setWidth(mainRef.current.offsetWidth);\n  }, [mainRef]);\n\n  const handleResize = () => {\n    setWidth(mainRef.current?.offsetWidth);\n  };\n\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n  const importResult = [];\n  const [tests, setTests] = useState([]);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [labs, setLabs] = useState([]);\n  const [sites, setSites] = useState([]);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [releaseModalShow, setReleaseModalShow] = useState(false);\n  const [siteContactPhones, setSiteContactPhones] = useState([]);\n  const [crewPhoneNumbers, setCrewPhoneNumbers] = useState([]);\n  const [testsToRelease, setTestsToRelease] = useState([]);\n  const [releaseTo, setReleaseTo] = useState({});\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [loading, setLoading] = useState(false);\n  const [showAlert, setShowAlert] = useState(\"\");\n  const [openConfirmation, setOpenConfirmation] = useState(false);\n  const appContext = useContext(AppContext);\n  const { filterDates } = TimeFilter;\n\n  const searchTerms = [\n    \"First Name\",\n    \"Last Name\",\n    \"Date of Birth\",\n    \"Email\",\n    \"Phone\",\n    \"Client\",\n    `${stringConstant.show}`,\n    \"Lab\",\n    `${stringConstant.sequenceNo}`,\n    \"Test Type\",\n    \"Result\",\n    \"Tester\",\n    \"isVaccinated\",\n    \"White Glove\",\n    \"Pattern\",\n    \"Capacity\",\n  ];\n\n  const selectedItem = [\n    \"createdAt\",\n    \"firstName\",\n    \"lastName\",\n    \"dob\",\n    \"email\",\n    \"phoneNumber\",\n    \"clientID\",\n    \"siteID\",\n    \"labID\",\n    \"result\",\n    \"test_type\",\n    `${stringConstant.accession_no}`,\n    \"tester_name\",\n    \"isVaccinated\",\n    \"employeeType\",\n    \"whiteGlove\",\n    \"patternTestAnswer\",\n  ];\n\n  const createMoreInfo = (type, id) => {\n    let infoObj = null;\n    if (type === \"site\") infoObj = appContext.sites.find((site) => site.id === id);\n    else if (type === \"client\") infoObj = appContext.clients.find((client) => client.id === id);\n    else infoObj = labs.find((lab) => lab.id === id);\n    if (infoObj) {\n      setMoreInfo({\n        type,\n        name: infoObj.name,\n        contact: infoObj.contact_name,\n        phone: infoObj.contact_phone,\n        email: infoObj.contact_email,\n      });\n      setModalShow(true);\n    }\n  };\n\n  const filterTests = (term, input) => {\n    switch (term) {\n      case \"name\":\n        setFilteredTests(\n          tests.filter((test) => getCrewName(test[\"employee_demographics\"]).toLowerCase().includes(input.toLowerCase()))\n        );\n        break;\n      case \"lab\":\n        setFilteredTests(\n          tests.filter((test) => appContext.getLabName(test[\"labID\"]).toLowerCase().includes(input.toLowerCase()))\n        );\n        break;\n      case \"show\":\n        setFilteredTests(\n          tests.filter((test) => appContext.getSiteName(test[\"siteID\"]).toLowerCase().includes(input.toLowerCase()))\n        );\n        break;\n      case \"crew_ID\":\n        setFilteredTests(tests.filter((test) => test[\"owner\"].toLowerCase().includes(input.toLowerCase())));\n        break;\n      default:\n        setFilteredTests(tests.filter((test) => test[term].toLowerCase().includes(input.toLowerCase())));\n    }\n  };\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n\n        if (key === \"Lab\") {\n          return obj.labID && appContext.getLabName(obj.labID).toLowerCase().includes(filters[key]);\n        }\n\n        if (key === \"Tester\") {\n          return obj.tester_name && obj.tester_name.toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"Client\") {\n          return (\n            obj.clientID && appContext.getClientName(obj.clientID).toLowerCase().includes(filters[key].toLowerCase())\n          );\n        }\n        if (key === \"Show\") {\n          const siteIds = appContext.sites\n            .filter((s) => s.name.toLowerCase().includes(filters[key].toLowerCase()))\n            .map((s) => s.id);\n          return siteIds.includes(obj.siteID);\n        }\n        if (key === \"result\") {\n          return obj[key] && obj[\"viewedResult\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[key].toString().includes(filters[key]);\n        }\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n\n        if (key === \"vaccinated\") {\n          return (obj[\"isVaccinated\"] ? 1 : 0).toString() === filters[key];\n        }\n\n        if (key === \"whiteGlove\") {\n          return (obj[\"whiteGlove\"] ? 1 : 0).toString() === filters[key];\n        }\n\n        if (key === \"capacity\") {\n          return obj[\"employeeType\"] && obj[\"employeeType\"].toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"pattern\") {\n          if (filters[key] === \"1\") return obj[\"patternTestAnswer\"] && obj[\"patternTestAnswer\"] !== \"undefined\";\n\n          if (filters[key] === \"0\") return obj[\"patternTestAnswer\"] == \"undefined\" || obj[\"patternTestAnswer\"] == \"\";\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n    return models;\n  };\n\n  const displayPdf = async (test) => {\n    handleSaveFilter();\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  const displayOwner = (test) => {\n    let displayedId = test.owner.substr(-12);\n    return displayedId;\n  };\n\n  const handleCheckboxChange = (e, id) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? filteredTests.map((t) => t.id) : []);\n\n  const retestCrew = async () => {\n    setLoading(true);\n    const params = testsToRelease\n      .filter((f) => f.result.toLowerCase() === \"inconclusive\" || f.result.toLowerCase() === \"invalid\")\n      .map((t) => {\n        return {\n          id: t.id,\n          phoneNumber: t.phoneNumber,\n          email: t.email,\n          test_type: t.test_type,\n          site_name: t.site_name,\n          firstName: t.firstName,\n          siteID: t.siteID,\n          lastName: t.lastName,\n          userName: appContext.user.name,\n          type: \"invalid\",\n        };\n      });\n    if (params.length > 0) {\n      try {\n        await GQAPI.sendSmsToCrews(params);\n        appContext.showSuccessMessage(\n          `Successfully message send to ${testsToRelease.length} ${testsToRelease.length > 1 ? \"crews\" : \"crew\"}`\n        );\n        setCheckboxes([]);\n        setLoading(false);\n      } catch (err) {\n        console.log(err.message);\n        appContext.showErrorMessage(err.message);\n        setLoading(false);\n      }\n    }\n    setLoading(false);\n  };\n  const releaseTests = async () => {\n    setReleaseModalShow(false);\n    setLoading(true);\n\n    try {\n      if (!testsToRelease.length) {\n        return;\n      }\n      const ids = testsToRelease.map((t) => t.id);\n      const params = testsToRelease.map((t) => {\n        return {\n          id: t.id,\n          status: \"Processed\",\n          timerStatus: \"Processed\",\n          sequenceNo: t.sequenceNo,\n          invalidResultStatus: 1,\n        };\n      });\n      await GQAPI.releaseTest(params);\n      if (releaseTo.crew) {\n        await GQAPI.sendEmailToPendingRelease(params);\n      }\n      //\n      const pendingTestList = testsToRelease.filter((f) => f.result.toLowerCase() === \"positive\");\n      const inconclusiveTestList = testsToRelease.filter((f) => f.result.toLowerCase() === \"inconclusive\");\n      if (pendingTestList.length > 0) addLogs(pendingTestList, \"Pending Release\");\n      if (inconclusiveTestList.length > 0) addLogs(inconclusiveTestList, \"Inconclusive Release\");\n      if (releaseTo.site) {\n        //\n        for (const phoneSite of releaseTo.site) {\n          const testTypes = testsToRelease\n            .filter((s) => s.siteID === phoneSite.id)\n            .map((item) => item.test_type)\n            .filter((value, index, self) => self.indexOf(value) === index);\n\n          const testTypeText =\n            testTypes.length === 2 ? testTypes.join(\"&\") : testTypes.join(\", \").replace(/, ([^,]*)$/, \" & $1\");\n\n          await GQAPI.sendSMSNotification(\n            setPhoneNo(phoneSite.contact_phone || phoneSite.phone_number),\n            `Hello, there was a positive ${testTypeText} test result for ${phoneSite.name}. please login to your Health & Safety Portal to review.`\n          );\n        }\n      }\n\n      setLoading(false);\n      setShowAlert(`Success! You have released ${testsToRelease.length} tests`);\n      appContext.resetPendingTests(ids);\n    } catch (error) {\n      setLoading(false);\n      console.lo(\"Error:- Pending Release\", error.message);\n      setShowAlert(\"Fail! Fail to release the Test\");\n    }\n    setCheckboxes([]);\n  };\n\n  const hideAlert = () => {\n    setShowAlert(\"\");\n  };\n\n  useEffect(() => {\n    const savedFilters = appContext.testFilter;\n    if (savedFilters && savedFilters.location === \"pendingreleasetest\") {\n      if (Object.keys(savedFilters.filter).length > 0) {\n        setFilter(savedFilters.filter);\n        setShowFilter(true);\n      }\n    }\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.pendingreleasetest.sortBy) {\n      setSortDescending(sortingFilters.pendingreleasetest.sortDescending);\n      setSortBy(sortingFilters.pendingreleasetest.sortBy);\n    }\n  }, []);\n\n  useEffect(() => {\n    setLabs(appContext.labs);\n    setSites(appContext.sites);\n  }, [appContext.labs, appContext.sites]);\n\n  useEffect(() => {\n    setTests(appContext.pendingTests);\n    refreshTestList(appContext.pendingTests);\n  }, [sites, labs, appContext.pendingTests]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"pendingreleasetest\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredTests.length === 0) return;\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredTests,\n      setFilteredTests,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName,\n      appContext.parseResult\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    refreshTestList(tests);\n  }, [filter, timeFilter]);\n\n  useEffect(() => {\n    setTestsToRelease(filteredTests.filter((test) => checkboxes.includes(test.id)));\n  }, [checkboxes]);\n\n  useEffect(() => {\n    if (testsToRelease.length) {\n      const testSites = testsToRelease\n        .map((item) => item.siteID)\n        .filter((value, index, self) => self.indexOf(value) === index);\n\n      setSiteContactPhones(\n        appContext.sites.filter((f) => {\n          return testSites.includes(f.id) && (f.contact_phone || f.phone_number);\n        })\n      );\n      setCrewPhoneNumbers(testsToRelease.filter((test) => test.phoneNumber));\n    } else {\n      setSiteContactPhones([]);\n      setCrewPhoneNumbers([]);\n    }\n  }, [testsToRelease]);\n\n  const refreshTestList = (list) => {\n    const testTist = filterDates(nestedFilter(list, filter), timeFilter);\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          testTist,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredTests(testTist);\n    }\n  };\n\n  const handleChangePage = (page) => setCurrentPage(page);\n  const handleCloseContactInfo = () => {\n    setMoreInfo({});\n    setModalShow(false);\n  };\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: \"pendingreleasetest\", filter, timeFilter });\n  };\n\n  const handleFalsePositive = async (isConfirm) => {\n    setOpenConfirmation(false);\n    if (!isConfirm) return;\n\n    try {\n      if (testsToRelease.length) {\n        const params = testsToRelease.map((t) => {\n          return {\n            id: t.id,\n            isFalsePositive: true,\n            status: \"Processed\",\n            sequenceNo: t.sequenceNo,\n            invalidResultStatus: 2,\n          };\n        });\n        await GQAPI.releaseTest(params);\n        const seqno = testsToRelease.map((s) => s.id);\n        const newList = filteredTests.filter((t) => !seqno.includes(t.id));\n        setTests(newList);\n        refreshTestList(newList);\n        const pendingTestList = testsToRelease.filter((f) => f.result.toLowerCase() === \"positive\");\n        const inconclusiveTestList = testsToRelease.filter((f) => f.result.toLowerCase() === \"inconclusive\");\n        if (pendingTestList.length > 0) addLogs(pendingTestList, \"False Positive\");\n        if (inconclusiveTestList.length > 0) addLogs(inconclusiveTestList, \"False Inconclusive\");\n        appContext.showSuccessMessage(`Sucessfully marked ${testsToRelease.length} tests false postive`);\n        setCheckboxes([]);\n        appContext.resetPendingTests(seqno);\n      }\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n  };\n\n  const addLogs = (items, slug) => {\n    const ids = items.map((s) => {\n      return { id: s.id, sequenceNo: s.sequenceNo };\n    });\n    const params = { ids: ids, userID: appContext.user?.sub, userName: appContext.user?.name, slug: slug };\n    GQAPI.addTestLogs(params);\n  };\n\n  const TableRow = ({ test }) => {\n    return (\n      <tr className=\"trDataWrapper\">\n        {/* <td>{test.owner && displayOwner(test)}</td> */}\n        <td className=\"ellipsis\" style={{ textAlign: \"left\" }}>\n          {/* <Form.Check>\n            <Form.Check.Input\n              type=\"checkbox\"\n              value={test.id}\n              checked={checkboxes.indexOf(test.id) !== -1}\n              onChange={(e) => handleCheckboxChange(e, test.id)}\n            ></Form.Check.Input>\n          </Form.Check> */}\n\n          <ViewOnlyCheckBox\n            bgColor=\"red\"\n            id={test.id}\n            checked={checkboxes.indexOf(test.id) !== -1}\n            item={test}\n            handleChange={(e) => handleCheckboxChange(e, test.id)}\n          />\n        </td>\n        <td className=\"ellipsis\" title={formatUTCDate(test.createdAt)}>\n          {formatUTCDate(test.createdAt)}\n        </td>\n\n        <td className=\"table-column ellipsis\" title={test.firstName}>\n          {test.firstName}\n        </td>\n        <td className=\"table-column ellipsis\" title={test.lastName}>\n          {test.lastName}\n        </td>\n        <td className=\"ellipsis\" title={test.dob}>\n          {test.dob}\n        </td>\n        <td\n          className=\"table-column ellipsis text-decoration-none text-dark-danger text-dark-danger-hover cursor-pointer\"\n          onClick={() => test?.email && window.open(`mailto:${test.email}`)}\n          title={test.email}\n        >\n          {test.email}\n        </td>\n        <td\n          className=\"table-column ellipsis text-decoration-none text-dark-danger text-dark-danger-hover cursor-pointer\"\n          onClick={() => {\n            test.phoneNumber && window.open(`tel:${test.phoneNumber}`);\n          }}\n          title={formatPhoneNumber(test.phoneNumber)}\n        >\n          {formatPhoneNumber(test.phoneNumber)}\n        </td>\n        {!CONFIG.isWhiteLabel && (\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            <a\n              style={{ color: \"#42cef5\" }}\n              onClick={() => createMoreInfo(\"client\", test.clientID)}\n              onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n              title={appContext.getClientName(test.clientID)}\n            >\n              {appContext.getClientName(test.clientID)}\n            </a>\n          </td>\n        )}\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <a\n            style={{ color: \"#42cef5\" }}\n            onClick={() => createMoreInfo(\"site\", test.siteID)}\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n            title={appContext.getSiteName(test.siteID)}\n          >\n            {appContext.getSiteName(test.siteID)}\n          </a>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <a\n            style={{ color: \"#42cef5\" }}\n            onClick={() => createMoreInfo(\"lab\", test.labID)}\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n            title={appContext.getLabName(test.labID)}\n          >\n            {appContext.getLabName(test.labID)}\n          </a>\n        </td>\n\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <span\n            className=\"cursor-pointer\"\n            onClick={() => displayPdf(test)}\n            style={{\n              color: RESULT_COLOR[test.result?.toLowerCase()],\n            }}\n            title={appContext.parseResult(test)}\n          >\n            {appContext.parseResult(test)}\n          </span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.test_type || \"-\"}>\n          {test.test_type || \"-\"}\n        </td>\n        <SequenceNo num={test.sequenceNo} />\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.tester_name}>\n          {test.tester_name}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <Link\n            className=\"text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n            to={{\n              pathname: \"/admin/test/\" + test.id,\n              state: { pendingRelease: true, type: \"pendingRelease\", test: test },\n            }}\n            onClick={handleSaveFilter}\n          >\n            View\n          </Link>\n        </td>\n      </tr>\n    );\n  };\n\n  return showPdf ? (\n    <PDFLayout setShowPdf={setShowPdf} testPdf={testPdf} testsLab={testsLab} />\n  ) : !loading ? (\n    <>\n      <Container fluid>\n        <SweetAlert\n          show={showAlert.length > 0}\n          type=\"success\"\n          title=\"\"\n          onConfirm={() => {\n            hideAlert();\n          }}\n        >\n          {showAlert}\n        </SweetAlert>\n        <div className=\"shows-screen-parent\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                      <Icon\n                        handleClick={() => {\n                          if (filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n                      <Icon\n                        handleClick={() => setReleaseModalShow(true)}\n                        disabled={testsToRelease.length === 0}\n                        title={\"Release Tests\"}\n                        label={\"Release Tests\"}\n                        iconType={\"testNowIcon\"}\n                      />\n                      <Icon\n                        handleClick={retestCrew}\n                        title={\"Re-Test\"}\n                        label={\"Re-Test\"}\n                        iconType={\"loadCrewIcon\"}\n                        disabled={checkboxes.length ? false : true}\n                      />\n                      {filteredTests.length > 0 && (\n                        <>\n                          {Object.keys(filter).length > 0 && (\n                            <>\n                              <ExportToExcel\n                                items={filteredTests}\n                                selectedItem={selectedItem}\n                                appContext={appContext}\n                                filter={filter}\n                                timeFilter={timeFilter}\n                                title=\"Pending Release Tests\"\n                                sortBy={sortBy}\n                              />\n                              <TestPDFLayout\n                                tests={filteredTests}\n                                selectedItem={selectedItem}\n                                filter={filter}\n                                timeFilter={timeFilter}\n                                title=\"Pending Release Tests\"\n                                appContext={appContext}\n                                sortBy={sortBy}\n                              />\n                            </>\n                          )}\n                          <Icon\n                            handleClick={() => setOpenConfirmation(true)}\n                            title={\"False Positive\"}\n                            label={\"False Positive\"}\n                            iconType={\"checkEligibilityIcon\"}\n                            disabled={checkboxes.length ? false : true}\n                          />\n                        </>\n                      )}\n                    </div>\n                  </div>\n                  {showFilter && <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} />}\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"strpied-tabled-with-hover bg-transparent border-0\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md-=\"6\">\n                      <Card.Title>\n                        <div className=\"\">\n                          Pending Release:\n                          <span className=\"ps-2\"> {filteredTests ? filteredTests.length : 0}</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"6\">\n                      <MFPagination\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                        showSelectedRecord\n                        totalSelected={checkboxes.length}\n                      />\n                    </Col>\n                  </Row>\n                </Card.Header>\n                {/* <Card.Header>\n                  <div className=\"buttonHeader\">\n                    <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                      Filter\n                    </Button>\n                    <Button\n                      className=\"headerButton\"\n                      onClick={() => {\n                        if (filteredTests.length > 0) {\n                          setAllSelected(!allSelected);\n                          toggleCheckboxes(!allSelected);\n                        }\n                      }}\n                    >\n                      {!allSelected ? \"Select All\" : \"Deselect All\"}\n                    </Button>\n                    <Button\n                      className=\"headerButton\"\n                      onClick={() => setReleaseModalShow(true)}\n                      disabled={testsToRelease.length === 0}\n                    >\n                      Release Selected Tests\n                    </Button>\n                    <Button\n                      className=\"headerButton\"\n                      disabled={checkboxes.length ? false : true}\n                      onClick={() => retestCrew()}\n                    >\n                      Re-Test\n                    </Button>\n                    {filteredTests.length > 0 && (\n                      <>\n                        {Object.keys(filter).length > 0 && (\n                          <>\n                            <ExportToExcel\n                              items={filteredTests}\n                              selectedItem={selectedItem}\n                              appContext={appContext}\n                              filter={filter}\n                              timeFilter={timeFilter}\n                              title=\"Pending Release Tests\"\n                              sortBy={sortBy}\n                            />\n                            <TestPDFLayout\n                              tests={filteredTests}\n                              selectedItem={selectedItem}\n                              filter={filter}\n                              timeFilter={timeFilter}\n                              title=\"Pending Release Tests\"\n                              appContext={appContext}\n                              sortBy={sortBy}\n                            />\n                          </>\n                        )}\n                        <Button\n                          className=\"headerButton\"\n                          disabled={checkboxes.length ? false : true}\n                          onClick={() => setOpenConfirmation(true)}\n                        >\n                          False Positive\n                        </Button>\n                      </>\n                    )}\n                  </div>\n\n                  {showFilter && <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} />}\n                  <MFPagination\n                    currentPage={currentPage}\n                    handleChangePage={handleChangePage}\n                    totalPages={totalPages}\n                    showSelectedRecord\n                    totalSelected={checkboxes.length}\n                  />\n                </Card.Header> */}\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll mt-0 pt-0\">\n                  <div className=\"table-responsive pendingReleaseTable\">\n                    <Table className=\"separate-border-tr\" ref={mainRef}>\n                      <Header\n                        type={TEST_HEADER_TYPE.pending}\n                        flipSort={flipSort}\n                        sortBy={sortBy}\n                        sortDescending={sortDescending}\n                      />\n                      <tbody>\n                        {testsToMap &&\n                          testsToMap.map((test) => {\n                            return <TableRow key={test.id} test={test} />;\n                          })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      </Container>\n      <ContactInfo show={modalShow} moreInfo={moreInfo} handleClose={handleCloseContactInfo} />\n      <Modal\n        show={releaseModalShow}\n        // style={{ transform: \"translate(0, -30%)\" }}\n        animation={true}\n        onHide={() => setReleaseModalShow(false)}\n        centered\n        size={\"md\"}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Release Test Results\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n          <p>Select all that apply: </p>\n          <div className=\"checkboxRow\">\n            <label className=\"checkboxLabel\">\n              <input\n                disabled={!siteContactPhones}\n                value=\"site\"\n                onChange={(e) => {\n                  if (e.target.checked) {\n                    setReleaseTo({\n                      ...releaseTo,\n                      [e.target.value]: siteContactPhones,\n                    });\n                  } else {\n                    const newReleaseTo = releaseTo;\n                    delete newReleaseTo[e.target.value];\n                    setReleaseTo(newReleaseTo);\n                  }\n                }}\n                className=\"releaseCheckbox\"\n                type=\"checkbox\"\n              />\n              Health and Safety Officer\n            </label>\n            <label>\n              <input\n                value=\"crew\"\n                onChange={(e) => {\n                  if (e.target.checked) {\n                    setReleaseTo({\n                      ...releaseTo,\n                      [e.target.value]: crewPhoneNumbers,\n                    });\n                  } else {\n                    const newReleaseTo = releaseTo;\n                    delete newReleaseTo[e.target.value];\n                    setReleaseTo(newReleaseTo);\n                  }\n                }}\n                className=\"releaseCheckbox\"\n                type=\"checkbox\"\n              />\n              Crew Member\n            </label>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button className=\"modalButtons\" variant=\"secondary\" onClick={() => setReleaseModalShow(false)}>\n            Cancel\n          </Button>\n          <Button className=\"modalButtons\" variant=\"primary\" onClick={async () => await releaseTests()}>\n            Release Results\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      {openConfirmation && (\n        <ConfirmationModal\n          show={openConfirmation}\n          title=\"Positive Test\"\n          message={`Are you sure, you want to mark as False Positive?`}\n          handleConfirm={handleFalsePositive}\n        />\n      )}\n    </>\n  ) : (\n    <Loader />\n  );\n};\n\nexport default PendingReleaseTestListView;\n","import React from \"react\";\n\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n} from \"react-bootstrap\";\n\nfunction Upgrade() {\n  return (\n    <>\n      <Container fluid>\n        <Row>\n          <Col className=\"ml-auto mr-auto\" md=\"8\">\n            <Card>\n              <div className=\"header text-center\">\n                <h4 className=\"title\">Light Bootstrap Dashboard PRO React</h4>\n                <p className=\"category\">\n                  Are you looking for more components? Please check our Premium\n                  Version of Light Bootstrap Dashboard React.\n                </p>\n                <br></br>\n              </div>\n              <Table responsive>\n                <thead>\n                  <tr>\n                    <th></th>\n                    <th className=\"text-center\">Free</th>\n                    <th className=\"text-center\">PRO</th>\n                  </tr>\n                </thead>\n                <tbody>\n                  <tr>\n                    <td>Components</td>\n                    <td>16</td>\n                    <td>115+</td>\n                  </tr>\n                  <tr>\n                    <td>Plugins</td>\n                    <td>4</td>\n                    <td>14+</td>\n                  </tr>\n                  <tr>\n                    <td>Example Pages</td>\n                    <td>4</td>\n                    <td>22+</td>\n                  </tr>\n                  <tr>\n                    <td>Documentation</td>\n                    <td>\n                      <i className=\"fas fa-times text-danger\"></i>\n                    </td>\n                    <td>\n                      <i className=\"fas fa-check text-success\"></i>\n                    </td>\n                  </tr>\n                  <tr>\n                    <td>SASS Files</td>\n                    <td>\n                      <i className=\"fas fa-times text-danger\"></i>\n                    </td>\n                    <td>\n                      <i className=\"fas fa-check text-success\"></i>\n                    </td>\n                  </tr>\n                  <tr>\n                    <td>Login/Register/Lock Pages</td>\n                    <td>\n                      <i className=\"fas fa-times text-danger\"></i>\n                    </td>\n                    <td>\n                      <i className=\"fas fa-check text-success\"></i>\n                    </td>\n                  </tr>\n                  <tr>\n                    <td>Premium Support</td>\n                    <td>\n                      <i className=\"fas fa-times text-danger\"></i>\n                    </td>\n                    <td>\n                      <i className=\"fas fa-check text-success\"></i>\n                    </td>\n                  </tr>\n                  <tr>\n                    <td></td>\n                    <td>Free</td>\n                    <td>Just $49</td>\n                  </tr>\n                  <tr className=\"last-row\">\n                    <td></td>\n                    <td>\n                      <Button\n                        className=\"btn-round btn-fill disabled\"\n                        href=\"#pablo\"\n                        onClick={(e) => e.preventDefault()}\n                        variant=\"default\"\n                      >\n                        Current Version\n                      </Button>\n                    </td>\n                    <td>\n                      <Button\n                        className=\"btn-round btn-fill\"\n                        href=\"http://www.creative-tim.com/product/light-bootstrap-dashboard-pro-react/?ref=lbdrupgrade\"\n                        target=\"_blank\"\n                        variant=\"info\"\n                      >\n                        Upgrade to PRO\n                      </Button>\n                    </td>\n                  </tr>\n                </tbody>\n              </Table>\n            </Card>\n          </Col>\n        </Row>\n      </Container>\n    </>\n  );\n}\n\nexport default Upgrade;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport api from \"api\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport {\n  HEALTH_AND_SAFTEY,\n  newRoleOptions,\n  USER_ROLE_TYPE,\n  crewRoleOptions,\n  newRoleOptionsWhiteLabel,\n  CONFIG,\n  LAB_ADMIN_ROLE,\n} from \"../../constant\";\nimport { AppContext } from \"context/app-context\";\nimport { formatPhoneNumber, isValidPhone, isValidPhoneWithCode, isValidEmail } from \"../../utils\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport Loader from \"../Loader/Loader\";\n\nconst MFUserModal = (props) => {\n  const { show, user, handleSave, handleClose, resetCall, handleConfirmUser, message, isCrewCall } = props;\n  const [newUser, setNewUser] = useState(user);\n  const [error, setError] = useState(\"\");\n  const [selectedRole, setSelectedRole] = useState([]);\n  useEffect(() => {\n    if (!user.isNew) handleEditRole();\n  }, [user]);\n\n  useEffect(() => {\n    if (CONFIG.isWhiteLabel && user.isNew) {\n      setSelectedRole(\"\");\n    }\n  }, []);\n\n  useEffect(() => {\n    if (message) setError(message);\n  }, [message]);\n  const appContext = useContext(AppContext);\n  const sites = appContext.sites;\n  const labs = appContext.labs;\n  const clients = appContext.clients;\n  const [loading, setLoading] = useState(false);\n  const handleRoleChange = (selectedOption) => {\n    setSelectedRole(selectedOption);\n  };\n\n  const handleEditRole = async () => {\n    try {\n      const userData = { ...user };\n      const userRoles = JSON.parse(userData.roles);\n\n      let selectedRoleData = [];\n      userRoles.forEach((element) => {\n        const role = element.role === \"Employers\" ? HEALTH_AND_SAFTEY : role;\n        let roleObj = newRoleOptions.find((obj) => obj.value === role);\n        if (roleObj) {\n          selectedRoleData.push(roleObj);\n        }\n      });\n      setSelectedRole(selectedRoleData);\n      setNewUser({ ...userData });\n    } catch (err) {\n      console.log(\"Errr\", err);\n    }\n  };\n\n  console.log(\"User\", newUser);\n\n  const hasRole = (role) => {\n    return selectedRole.some((r) => r.value === role);\n  };\n\n  const handleMultipleRoles = () => {\n    let mainRoleArray = [];\n\n    if (selectedRole.length === 0) {\n      setError(\"Select Role\");\n      return false;\n    }\n\n    for (const singleRole of selectedRole) {\n      let role = singleRole.value;\n      let roleObj = {};\n\n      if (role === \"Lab\" || role === HEALTH_AND_SAFTEY || role === \"Client\") {\n        if (role === \"Lab\") {\n          if (!newUser.lab) {\n            setError(\"Select lab also\");\n            return false;\n          }\n          roleObj = {\n            role: role,\n            relatedId: newUser.lab.id,\n            labID: newUser.lab.id,\n            clientID: newUser.client?.id,\n            title: newUser.lab.name,\n            isWhiteLabelLab: newUser.lab.appPackage ? true : false,\n          };\n          mainRoleArray.push(roleObj);\n        }\n\n        if (role === HEALTH_AND_SAFTEY) {\n          if (!newUser.show) {\n            setError(\"Select show also\");\n            return false;\n          }\n          roleObj = {\n            role: 'Employers',\n            labID: newUser.lab.id,\n            clientID: newUser.client.id,\n            relatedId: newUser.show.id,\n            siteID: newUser.show.id,\n            title: newUser.show.name,\n          };\n          mainRoleArray.push(roleObj);\n        }\n\n        if (role === \"Client\") {\n          if (!newUser.client) {\n            setError(\"Select client also\");\n            return false;\n          }\n          roleObj = {\n            role: role,\n            labID: newUser.lab?.id,\n            clientID: newUser.client.id,\n            relatedId: newUser.client.id,\n            title: newUser.client.name,\n          };\n          mainRoleArray.push(roleObj);\n        }\n      } else {\n        mainRoleArray.push({ role: role });\n      }\n    }\n    return mainRoleArray;\n  };\n\n  const getNote = () => {\n    let noteArr = [];\n    let note = \"\";\n    if (newUser.lab) noteArr.push(newUser.lab.label);\n    if (hasRole(\"Admin\")) noteArr.push(\"System\");\n    if (hasRole(\"Tester\")) noteArr.push(\"Tester\");\n\n    if (noteArr.length > 0) {\n      if (noteArr.length == \"1\") note = noteArr[0];\n      else note = noteArr.join(\",\");\n    }\n    return note;\n  };\n\n  const getRoleValue = () => {\n    let role = \"\";\n    if (hasRole(\"Admin\")) {\n      role = \"Admin\";\n    } else if (hasRole(\"Lab\")) {\n      role = \"Lab\";\n    } else if (hasRole(HEALTH_AND_SAFTEY)) {\n      role = HEALTH_AND_SAFTEY;\n    }\n    return role;\n  };\n\n  const onHandleSave = async () => {\n    let mainRoleData = handleMultipleRoles();\n    if (!mainRoleData) return;\n    if (!newUser.firstName.trim()) {\n      setError(\"First name is required\");\n      return;\n    }\n\n    if (!newUser.lastName.trim()) {\n      setError(\"Last name is required\");\n      return;\n    }\n\n    if (!newUser.email.trim()) {\n      setError(\"Email  is required\");\n      return;\n    }\n    if (!isValidEmail(newUser.email)) {\n      setError(\"Email is invaild\");\n      return;\n    }\n\n    if (!newUser.phone) {\n      setError(\"Phone number is required\");\n      return;\n    }\n\n    if (!isValidPhoneWithCode(newUser.phone)) {\n      setError(\"Invalid Phone Number\");\n      return;\n    }\n\n    if (newUser.isNew && !newUser.password) {\n      setError(\"Password is requried\");\n      return;\n    }\n\n    if (newUser.isNew) {\n      const isValidPassword = /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\\s).{8,}$/.test(newUser.password);\n\n      if (!isValidPassword) {\n        setError(\n          \"Password must contains at least one lowercase letter, one uppercase letter, one numeric digit, and one special character\"\n        );\n        return;\n      }\n    }\n\n    if(!newUser?.lab?.value) {\n      setError(\"Select Lab\");\n      return;\n    }\n\n    if(!newUser?.client?.value) {\n      setError(\"Select Client\");\n      return;\n    }\n\n    const systemUser = hasRole(\"Admin\") ? 0 : 1;\n    let note = getNote();\n    let role = getRoleValue();\n\n    let finalUser = {\n      ...newUser,\n      roles: mainRoleData.length > 0 ? JSON.stringify(mainRoleData) : \"\",\n      note,\n      role,\n      systemUser,\n    };\n    \n    handleSave(finalUser);\n    handleClose();\n  };\n  // console.log(\"selectedRole\", selectedRole);\n  const handlePhoneinput = (e) => {\n    setNewUser({\n      ...newUser,\n      phone: e,\n    });\n  };\n\n  const handleLabObj = () => {\n    return {\n      label: appContext.userLab.name,\n      value: appContext.userLab.id,\n      id: appContext.userLab.id,\n      name: appContext.userLab.name,\n      appPackage: appContext.userLab.whiteLabelPackage,\n    };\n  };\n\n  const handleAdditionalFields = (roles) => {\n    let obj = {};\n    for (const role of roles) {\n      if (role.role === HEALTH_AND_SAFTEY) {\n        const site = getUserSiteName(role?.relatedId);\n        if (site) {\n          let show = { label: site.name, value: site.id, id: site.id, name: site.name };\n          obj = { ...obj, show: show };\n        }\n      }\n\n      if (role.role === USER_ROLE_TYPE.Lab) {\n        const lab = getUserLabName(role?.relatedId);\n        if (lab) {\n          let labData = {\n            label: lab.name,\n            value: lab.id,\n            id: lab.id,\n            name: lab.name,\n            appPackage: lab.whiteLabelPackage,\n          };\n          obj = { ...obj, lab: labData };\n        }\n      }\n\n      if (role.role === USER_ROLE_TYPE.Client) {\n        const client = getUserClientName(role?.relatedId);\n        if (client) {\n          let clientData = { label: client.name, value: client.id, id: client.id, name: client.name };\n          obj = { ...obj, client: clientData };\n        }\n      }\n    }\n    return obj;\n  };\n\n  const getUserLabName = (labId) => {\n    const filterLab = appContext.labs.filter((lab) => lab.id === labId);\n    if (filterLab.length > 0) {\n      return filterLab[0];\n    }\n  };\n\n  const getUserClientName = (clientId) => {\n    return appContext.clients.find((client) => clientId === client.id);\n  };\n\n  const getUserSiteName = (userId) => {\n    if (userId) {\n      const filterSite = appContext.sites.filter((s) => s.id === userId);\n      if (filterSite.length > 0) {\n        return filterSite[0];\n      }\n    }\n  };\n\n  const roleSelectionCSS = () => {\n    return selectedRole.some((r) => r.value === \"Employer\") || selectedRole.some((r) => r.value === \"Lab\")\n      ? \"activeEmploye\"\n      : \"\";\n  };\n\n  return (\n    <>\n      <Modal\n        show={show}\n        animation={true}\n        onHide={() => {\n          setNewUser(\"\");\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {newUser.isNew ? \"Create User\" : \"Update User\"}\n          </Modal.Title>\n        </Modal.Header>\n        {!loading ? (\n          <Modal.Body\n            style={{\n              paddingTop: 0,\n            }}\n          >\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">First Name: </label>\n              <input\n                value={newUser.firstName}\n                className=\"modalInput\"\n                placeholder=\"First Name\"\n                style={{\n                  width: \"100%\",\n                }}\n                onChange={(e) => setNewUser({ ...newUser, firstName: e.target.value })}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Last Name: </label>\n              <input\n                value={newUser.lastName}\n                className=\"modalInput\"\n                placeholder=\"Last Name\"\n                onChange={(e) => setNewUser({ ...newUser, lastName: e.target.value })}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Email: </label>\n              <input\n                value={newUser.email}\n                className=\"modalInput\"\n                placeholder=\"Email\"\n                style={{\n                  width: \"100%\",\n                }}\n                onChange={(e) => setNewUser({ ...newUser, email: e.target.value.trim().toLowerCase() })}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Phone #: </label>\n              {newUser.isNew ? (\n                <PhoneNoInput handleChange={handlePhoneinput} value={newUser?.phone} disabled={!newUser.isNew} />\n              ) : (\n                <input\n                  value={formatPhoneNumber(newUser.phone)}\n                  className=\"modalInput w-100\"\n                  disabled={true}\n                  placeholder=\"Phone\"\n                />\n              )}\n            </div>\n            <div className=\"form-group-wrapper\">\n              {newUser.isNew && (\n                <>\n                  <label className=\"modalLineHeaders\">Password: </label>\n\n                  <input\n                    type=\"password\"\n                    className=\"modalInput\"\n                    value={newUser.password}\n                    placeholder=\"Password\"\n                    style={{\n                      width: \"100%\",\n                    }}\n                    onChange={(e) => setNewUser({ ...newUser, password: e.target.value })}\n                  />\n                </>\n              )}\n            </div>\n            <div className={`form-group-wrapper  ${roleSelectionCSS()}`}>\n              <label className=\"modalLineHeaders\">Role:</label>\n              <Select\n                options={CONFIG.isWhiteLabel ? newRoleOptionsWhiteLabel : newRoleOptions}\n                blurInputOnSelect={true}\n                defaultValue={null}\n                isMulti\n                menuPlacement=\"auto\"\n                placeholder=\"Select a Role\"\n                onChange={handleRoleChange}\n                className=\"w-100 roleSelector\"\n                value={selectedRole}\n              />\n            </div>\n            <div className={`form-group-wrapper  ${roleSelectionCSS()}`}>\n              {selectedRole.some((r) => r.value === HEALTH_AND_SAFTEY || r.value === \"Employers\") && (\n                <>\n                  <label className=\"modalLineHeaders\">Select Show:</label>\n                  <Select\n                    className=\"w-100 siteSelector\"\n                    options={sites.map((site) => {\n                      return { label: site.name, value: site.id, id: site.id, name: site.name };\n                    })}\n                    value={newUser.show}\n                    blurInputOnSelect={true}\n                    defaultValue={null}\n                    menuPlacement=\"auto\"\n                    placeholder=\"Select a Show\"\n                    onChange={(e) => setNewUser({ ...newUser, show: e })}\n                  />\n                </>\n              )}\n            </div>\n            <div className={`form-group-wrapper ${roleSelectionCSS()}`}>\n              <label className=\"modalLineHeaders\">Select Lab:</label>\n              <Select\n                className=\"w-100  siteSelector\"\n                options={labs.map((lab) => {\n                  return {\n                    label: lab.name,\n                    value: lab.id,\n                    id: lab.id,\n                    name: lab.name,\n                    appPackage: lab.whiteLabelPackage,\n                  };\n                })}\n                blurInputOnSelect={true}\n                defaultValue={null}\n                value={newUser.lab}\n                menuPlacement=\"auto\"\n                placeholder=\"Select a Lab\"\n                // onChange={(e) => (console.log(e), setNewUser({ ...newUser, lab: e }))}\n                onChange={(e) => setNewUser({ ...newUser, lab: e })}\n              />\n            </div>\n            <div className={`form-group-wrapper  ${roleSelectionCSS()}`}>\n              <label className=\"modalLineHeaders\">Select Client:</label>\n              <Select\n                className=\"w-100 siteSelector\"\n                options={clients.map((client) => {\n                  return { label: client.name, value: client.id, id: client.id, name: client.name };\n                })}\n                value={newUser.client}\n                blurInputOnSelect={true}\n                defaultValue={null}\n                menuPlacement=\"auto\"\n                placeholder=\"Select a Client\"\n                onChange={(e) => setNewUser({ ...newUser, client: e })}\n              />\n            </div>\n\n            {newUser?.role?.split(\",\").length === 3 &&\n              LAB_ADMIN_ROLE.every((e) => newUser?.role?.includes(e)) &&\n              newUser.lab && (\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Lab Admin: </label>\n                  <input\n                    type=\"checkbox\"\n                    className=\"flex-basis-0\"\n                    checked={newUser.labAdmin}\n                    onChange={(e) => setNewUser({ ...newUser, labAdmin: e.target.checked ? newUser.lab.id : null })}\n                  />\n                </div>\n              )}\n\n            {!newUser.isNew && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\"> </label>\n                <label className=\"modalLineHeaders linkedText\" onClick={() => (handleClose(), resetCall(true))}>\n                  Reset Password\n                </label>\n              </div>\n            )}\n            {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n          </Modal.Body>\n        ) : (\n          <Loader />\n        )}\n\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            {newUser.isNew ? \"Create\" : \"Update\"}\n          </Button>\n          {newUser.status === \"UNCONFIRMED\" && (\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"primary\"\n              className=\"modalButtons\"\n              onClick={() => (handleConfirmUser(newUser), handleClose())}\n            >\n              Confirm User\n            </Button>\n          )}\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default MFUserModal;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { AppContext } from \"context/app-context\";\nimport { phoneFormatter, isValidPhone } from \"../../utils\";\nimport Loader from \"components/Loader/Loader\";\nimport ErrorMessage from \"components/Message/ErrorMessage\"\nimport api from \"api\";\n\nconst UserPasswordModal = (props) => {\n  const { user, handleClose } = props;\n  const [newUser, setNewUser] = useState(\"\");\n  const [password, setPassword] = useState(\"\");\n  const [newPassword, setNewPassword] = useState(\"\");\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n\n  useEffect(() => {\n    setNewUser(user);\n  }, [user]);\n\n  const appContext = useContext(AppContext);\n\n  const isValidPasswordLength = (value) => {\n    const isValidPassword = /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\\s).{8,}$/.test(value);\n    return isValidPassword;\n  };\n\n  const onHandleSave = async () => {\n    if (!password) {\n      setError(\"Password is requried\");\n      return;\n    }\n\n    if (!isValidPasswordLength(password)) {\n      setError(\n        \"Password must contains at least one lowercase letter, one uppercase letter, one numeric digit, and one special character\"\n      );\n      return;\n    }\n\n    if (!newPassword) {\n      setError(\"Password is requried\");\n      return;\n    }\n\n    if (!isValidPasswordLength(newPassword)) {\n      setError(\n        \"New Password must contains at least one lowercase letter, one uppercase letter, one numeric digit, and one special character\"\n      );\n      return;\n    }\n\n    if (password !== newPassword) {\n      setError(\"Password did not match\");\n      return;\n    }\n\n\n    setLoading(true);\n    \n    try {\n      await api.updateUserPassword(newUser.username, password);\n      setLoading(false);\n      appContext.showSuccessMessage(\"Password reset successfully\");\n      handleClose();\n    } catch (error) {\n      console.log(\"ERROR:User-\", error);\n      setError(error.message);\n      setLoading(false);\n    }\n  };\n\n  if (loading) {\n    return <Loader />;\n  }\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          setNewUser(\"\");\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Set Password\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">First Name: </label>\n            <input\n              value={newUser.firstName}\n              className=\"modalInput\"\n              placeholder=\"First Name\"\n              readOnly\n              style={{\n                width: \"100%\",\n              }}\n            />\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Last Name: </label>\n            <input value={newUser.lastName} className=\"modalInput\" placeholder=\"Last Name\" readOnly />\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Password: </label>\n\n            <input\n              type=\"password\"\n              className=\"modalInput\"\n              value={newUser.password}\n              placeholder=\"Password\"\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setPassword(e.target.value)}\n            />\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Confirm Password: </label>\n\n            <input\n              type=\"password\"\n              className=\"modalInput\"\n              value={newUser.password}\n              placeholder=\"New Password\"\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setNewPassword(e.target.value)}\n            />\n          </div>\n          {error && (\n          <ErrorMessage error={error} handleChange={()=>setError('')}/>\n        )}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            Reset Password\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default UserPasswordModal;\n","import React, { useState, useContext, useRef } from \"react\";\nimport { Button, Card, Table, Row, Col, DropdownButton, Dropdown, Modal, Container } from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport api from \"api\";\nimport { Auth } from \"aws-amplify\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport { AppContext } from \"context/app-context\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport MFUserModal from \"components/Users/MFUserModal\";\nimport UserPasswordModal from \"components/Users/UserPasswordModal\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport TDData from \"components/Table/TDData\";\nimport { EmptyUserObj, USER_ROLE_TYPE, PAGE_LIMIT, HEALTH_AND_SAFTEY, newRoleOptions, CONFIG } from \"constant\";\nimport { formatPhoneNumber, setPhoneNo, calculateTdWidth, sortingFilterInLC } from \"utils\";\n\nimport Select from \"react-select\";\nimport \"tableStyling.css\";\nimport Loader from \"components/Loader/Loader\";\nimport Icon from \"components/Icon\";\nimport editIcon from \"../../assets/img/edit-icon.png\";\nimport DropdownMenu from \"components/DropdownMenu/DropdownMenu\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\nimport { clientIDInLocalStorage } from \"utils\";\nimport { connectedIDInLocalStorage } from \"utils\";\n\nconst options = [\n  {\n    title: \"Edit\",\n  },\n  {\n    title: \"Delete\",\n  },\n];\nconst UsersView = (props) => {\n  const componentRef = useRef();\n  const mainWidth = useRef();\n  const [width, setWidth] = useState(0);\n\n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  useEffect(() => handleResize(), [mainWidth]);\n\n  const tdWidth = calculateTdWidth(width - 100, 7);\n\n  const [users, setUsers] = useState([]);\n  const [filteredUsers, setFilteredUsers] = useState([]);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [openCreator, setOpenCreator] = useState(false);\n  const [openPasswordModal, setOpenPasswordModal] = useState(false);\n  const [newUser, setNewUser] = useState(EmptyUserObj);\n  const [loading, setLoading] = useState(false);\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n  const [userToDelete, setUserToDelete] = useState(\"\");\n  const [timeFilter, setTimeFilter] = useState(\"All Users\");\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const appContext = useContext(AppContext);\n  const [fullscreen, setFullscreen] = useState(true);\n  const searchTerms = [\"First Name\", \"Last Name\", \"Email\", \"Phone\", \"Role\", \"Associated\"];\n  const [currentPage, setCurrentPage] = useState(1);\n  const [errorMessageText, setErrorMessageText] = useState(\"\");\n  const [usersPerPage, setUsersPerPage] = useState(PAGE_LIMIT);\n  // const [pageNumbers, setPageNumbers] = useState([]);\n\n  useEffect(() => {\n    setTimeout(() => {\n      setErrorMessageText(\"\");\n    }, 2000);\n  }, [errorMessageText]);\n\n  const sortUsers = (users, sortParam) => {\n    if (sortDescending) {\n      return [...users].sort((a, b) => (a[sortParam] < b[sortParam] ? 1 : b[sortParam] < a[sortParam] ? -1 : 0));\n    } else {\n      return [...users].sort((a, b) => (b[sortParam] < a[sortParam] ? 1 : a[sortParam] < b[sortParam] ? -1 : 0));\n    }\n  };\n\n  const getUserLabName = (labId) => {\n    const filterLab = appContext.labs.filter((lab) => lab.id === labId);\n    if (filterLab.length > 0) {\n      return filterLab[0];\n    }\n  };\n\n  const getUserClientName = (clientId) => {\n    return appContext.clients.find((client) => clientId === client.id);\n  };\n\n  const getUserSiteName = (userId) => {\n    if (userId) {\n      const filterSite = appContext.sites.filter((s) => s.id === userId);\n      if (filterSite.length > 0) {\n        return filterSite[0];\n      }\n    }\n  };\n\n  const isJson = (str) => {\n    try {\n      JSON.parse(str);\n    } catch (e) {\n      return false;\n    }\n    return true;\n  };\n\n  const handleAdditionalFields = (user) => {\n    let obj = {};\n    const associated = [];\n    const oldRole = [];\n    if (!user?.roles || user?.roles === \"undefined\") {\n      oldRole.push(user.userRole.slice(0, -1));\n      return {\n        ...user,\n        username: user.userID,\n        phone: user.phone_number.replace(/ /g, \"\"),\n        additionalFields: obj,\n        oldRole: oldRole,\n        roleTitle: user.userRole.slice(0, -1),\n        roleValue: user.userRole.slice(0, -1),\n        associated: \"System\",\n      };\n    }\n\n    const userRoles = isJson(user.roles) ? JSON.parse(user.roles) : user.roles;\n\n    for (const role of userRoles) {\n      if (role.role === HEALTH_AND_SAFTEY || role.role === \"Employers\") {\n        const site = getUserSiteName(role?.relatedId);\n        const lab = getUserLabName(role?.labID);\n        const client = getUserClientName(role?.clientID);\n        let clientData = null,\n          labData = null;\n        if (client) {\n          clientData = { label: client.name, value: client.id, id: client.id, name: client.name };\n        }\n        if (lab) {\n          labData = {\n            label: lab.name,\n            value: lab.id,\n            id: lab.id,\n            name: lab.name,\n            appPackage: lab.whiteLabelPackage,\n          };\n        }\n\n        if (site) {\n          let show = { label: site.name, value: site.id, id: site.id, name: site.name };\n          associated.push(site.name);\n          Object.assign(user, { show, client: clientData, lab: labData });\n          obj = { ...obj, show: show };\n        }\n      }\n\n      if (role.role === USER_ROLE_TYPE.Lab) {\n        const lab = getUserLabName(role?.relatedId);\n        const client = getUserClientName(role?.clientID);\n        let clientData = null;\n        if (client) {\n          clientData = { label: client.name, value: client.id, id: client.id, name: client.name };\n        }\n        if (lab) {\n          let labData = {\n            label: lab.name,\n            value: lab.id,\n            id: lab.id,\n            name: lab.name,\n            appPackage: lab.whiteLabelPackage,\n          };\n          associated.push(lab.name);\n          Object.assign(user, { lab: labData, client: clientData });\n          obj = { ...obj, lab: labData };\n        }\n      }\n\n      if (role.role === USER_ROLE_TYPE.Client) {\n        const client = getUserClientName(role?.relatedId);\n        if (client) {\n          let clientData = { label: client.name, value: client.id, id: client.id, name: client.name };\n          associated.push(client.name);\n          Object.assign(user, { client: clientData });\n          obj = { ...obj, client: clientData };\n        }\n      }\n    }\n\n    let roleTitle = \"\";\n    let linked = \"\";\n    if (userRoles.length > 1) {\n      roleTitle = \"Multi\";\n      linked = \"Multi\";\n    }\n    let onlyRoles = userRoles.map((obj) => {\n      return obj.role;\n    });\n\n    let roleValue = userRoles.map((obj) => {\n      if (obj.role === \"Employee\" || obj.role === \"Employees\") return \"Crew\";\n      return obj.role;\n    });\n\n    return {\n      ...user,\n      username: user.userID,\n      phone: user.phone_number.replace(/ /g, \"\"),\n      additionalFields: obj,\n      oldRole: onlyRoles,\n      roleTitle,\n      roleValue,\n      associated: associated.join(\",\") || \"System\",\n    };\n  };\n\n  const formatUsers = () => {\n    let formattedUsers = appContext.users.filter((u) => u.firstName).map((user) => handleAdditionalFields(user));\n    if (clientIDInLocalStorage.get() && connectedIDInLocalStorage.get()) {\n      formattedUsers = formattedUsers.filter((f) => f.lab?.id === connectedIDInLocalStorage.get());\n    }\n    setUsers(sortUsers(formattedUsers, sortBy));\n    setFilteredUsers(sortUsers(nestedFilter(formattedUsers, filter), sortBy));\n  };\n\n  const filterUsers = (searchTerm, searchInput) => {\n    return setFilteredUsers(users.filter((user) => user[searchTerm].includes(searchInput)));\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (key === \"First Name\") {\n          return obj.firstName && obj.firstName.toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"Last Name\") {\n          return obj.lastName && obj.lastName.toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"phone_number\") {\n          return obj.phone_number && obj.phone_number.replace(/\\D/g, \"\").includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"userRole\") {\n          let keyValue = \"\";\n          if (obj[\"roleValue\"] && Array.isArray(obj[\"roleValue\"])) {\n            keyValue = obj[\"roleValue\"].join(\",\").toLowerCase();\n          } else if (obj[\"roleValue\"]) {\n            keyValue = obj[\"roleValue\"].toLowerCase();\n          }\n          return (obj[key] && obj[key].toLowerCase().includes(filters[key])) || keyValue.includes(filters[key]);\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n    return models;\n  };\n\n  const formatRoleChangeParams = (roles, userId) => {\n    const roleArrFormat = roles.map((element) => {\n      if (element?.slice(-1) === \"s\") return element;\n      if (element === HEALTH_AND_SAFTEY) {\n        return \"Employers\";\n      }\n      return `${element}s`;\n    });\n    return {\n      groupname: roleArrFormat,\n      username: userId,\n    };\n  };\n\n  const getUserBaseRole = (user) => {\n    if (user.role.includes(\"Admin\")) return \"Admins\";\n    if (user.role.includes(\"Lab\")) return \"Labs\";\n    if (user.role.includes(HEALTH_AND_SAFTEY)) return \"Employers\";\n    if (user.role.includes(\"Client\")) return \"Clients\";\n    if (user.role.includes(\"Tester\")) return \"Testers\";\n    return \"Employees\";\n  };\n\n  const createUserInCognito = async (user) => {\n    try {\n      const attributePayload = {\n        email: user.email,\n        \"custom:role\": `${user.role === HEALTH_AND_SAFTEY ? \"Employer\" : user.role}s`,\n        \"custom:autoConfirm\": \"true\",\n        \"custom:firstName\": `${user.firstName}`,\n        \"custom:lastName\": `${user.lastName}`,\n        \"custom:note\": user.note,\n        \"custom:clientID\": user.client ? user.client.id : \"\",\n        \"custom:labID\": user.lab.id,\n      };\n\n      if (user.role === USER_ROLE_TYPE.Lab) {\n        Object.assign(attributePayload, {\n          \"custom:connectedID\": user.lab.id,\n        });\n      } else if (user.role === HEALTH_AND_SAFTEY) {\n        Object.assign(attributePayload, {\n          \"custom:connectedID\": user.show.id,\n        });\n      }\n\n      if (user.lab && user.lab.appPackage) {\n        Object.assign(attributePayload, {\n          \"custom:privilege\": \"whiteLabelUser\",\n        });\n      }\n      const signUp = await Auth.signUp({\n        username: user.phone,\n        password: user.password,\n        attributes: attributePayload,\n      });\n\n      return signUp;\n    } catch (ex) {\n      console.log(\"Exception\", ex);\n    }\n    return null;\n  };\n\n  const createUser = async (user) => {\n    console.log(\"In SAVE User are\", user);\n    try {\n      setLoading(true);\n      let userId = null;\n\n      // for new User\n      if (user.isNew) {\n        const signUp = await createUserInCognito(user);\n\n        if (!signUp) {\n          appContext.showErrorMessage(\"Fail to Create the User\");\n          return;\n        }\n\n        userId = signUp.userSub;\n\n        // addEmployeeRoles\n        if (userId) {\n          let addRoleObj = {\n            firstName: user.firstName,\n            lastName: user.lastName,\n            phone_number: user.phone,\n            email: user.email,\n            userRole: `${user.role === HEALTH_AND_SAFTEY ? \"Employer\" : user.role}s`,\n            note: user.note,\n            username: userId,\n            roles: user.roles,\n            labID: user?.lab?.id,\n            clientID: user?.client?.id,\n            labAdmin: user.labAdmin,\n            status: \"CONFIRMED\",\n            systemUser: user.systemUser,\n          };\n\n          await api.addEmployee(addRoleObj);\n        }\n\n        appContext.showSuccessMessage(\"User created successfully\");\n      } else {\n        userId = user.username;\n        await api.updateUserInfoV2(user);\n\n        const newRolesDetails = JSON.parse(user.roles);\n        const newRoles = newRolesDetails.map((r) => r.role);\n        const removeRoles = user.oldRole.filter((value) => !newRoles.includes(value));\n        if (removeRoles.length > 0) {\n          await api.removeMultipleUserFromGroup(formatRoleChangeParams(removeRoles, userId));\n        }\n        const addRoles = newRoles.filter((value) => !user.oldRole.includes(value));\n        if (addRoles.length > 0) {\n          await api.addMultipleUserToGroup(formatRoleChangeParams(addRoles, userId));\n        }\n\n        appContext.showSuccessMessage(\"User updated successfully\");\n        setOpenCreator(false);\n      }\n\n      if (userId) {\n        let msg = `Hello ${user.firstName}, Please see the below link to access portal. \\nUser Name: ${user.phone} \\nPassword: ${user.password} \\n ${CONFIG.baseurl}`;\n        if (user.isNew) {\n          // await api.sendSMSNotification(user.phone, msg);\n        }\n\n        await appContext.resetUsers();\n      }\n      setLoading(false);\n    } catch (error) {\n      console.log(\"ERROR:User-\", error);\n      let message = error.message.replace(\"_\", \" \");\n      setErrorMessageText(message);\n      setOpenCreator(true);\n    }\n  };\n\n  const handleResetPassword = (obj) => {\n    console.log(\"Password Obj\", obj);\n  };\n\n  const handleClose = () => {\n    setOpenCreator(false);\n    setOpenDeleteConfirmation(false);\n  };\n\n  const handlePasswordClose = () => {\n    setOpenPasswordModal(false);\n  };\n\n  const handleChangePage = (number) => {\n    setCurrentPage(number);\n  };\n\n  const indexOfLastUser = currentPage * usersPerPage;\n  const indexOfFirstUser = indexOfLastUser - usersPerPage;\n  const currentUsers = (users) => {\n    return users.slice(indexOfFirstUser, indexOfLastUser);\n  };\n\n  let usersToMap =\n    Object.values(filter).length === 0 || Object.keys(filter).length === 0\n      ? currentUsers(users)\n      : currentUsers(filteredUsers);\n\n  const getPageNumbers = (users) => {\n    const pageNumbers = [];\n    for (let i = 1; i <= Math.ceil(users.length / usersPerPage); i++) {\n      pageNumbers.push(i);\n    }\n    return pageNumbers;\n  };\n\n  let pageNumbers = getPageNumbers(users);\n\n  useEffect(() => {\n    loadPrevSorting();\n    appContext.resetUsers();\n  }, []);\n\n  useEffect(() => {\n    formatUsers();\n  }, [appContext.users]);\n\n  useEffect(() => {\n    if (users.length > 0) setUsers(sortUsers(users, sortBy));\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"users\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n  }, [sortDescending]);\n\n  useEffect(() => {\n    if (users.length > 0) {\n      setFilteredUsers(nestedFilter(users, filter));\n      setCurrentPage(1);\n    }\n  }, [filter]);\n\n  const loadPrevSorting = () => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.users.sortBy) {\n      setSortDescending(sortingFilters.users.sortDescending);\n      setSortBy(sortingFilters.users.sortBy);\n    }\n  };\n\n  if (filteredUsers.length > 0) {\n    pageNumbers = getPageNumbers(filteredUsers);\n  }\n\n  const onRoleChange = async (e, user) => {\n    console.log(\"EVENT HERE\", e, user);\n    setLoading(true);\n    await api.changeUserRole(user.role, e.value, user.username);\n    setTimeout(() => {\n      appContext.resetUsers();\n    }, 1500);\n  };\n\n  const renderPageNumbers = () => {\n    let slicedPages = pageNumbers;\n    if (currentPage === 1) {\n      slicedPages = pageNumbers.slice(0, 3);\n    } else if (currentPage === pageNumbers.length) {\n      slicedPages = pageNumbers.slice(currentPage - 3, currentPage);\n    } else {\n      slicedPages = pageNumbers.slice(currentPage - 2, currentPage + 1);\n    }\n\n    return slicedPages.map((number) => {\n      return (\n        <li\n          key={number}\n          onClick={() => handleChangePage(number)}\n          style={{\n            textDecoration: currentPage === number ? \"none\" : \"underline\",\n            color: currentPage === number ? \"black\" : \"#A82632\",\n            display: \"inline-block\",\n            padding: 5,\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = currentPage === number ? \"none\" : \"underline\";\n          }}\n        >\n          {number}\n        </li>\n      );\n    });\n  };\n\n  const roleChangeOptions = [\n    { value: \"Admin\", label: \"Admin\" },\n    { value: \"Lab\", label: \"Lab\" },\n    { value: \"Tester\", label: \"Tester\" },\n    { value: \"Employee\", label: \"Crew\" },\n    { value: \"Employer\", label: \"Health & Safety\" },\n  ];\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  const handleEditUser = (user) => {\n    const obj = { ...user, isNew: false };\n    console.log(\"Obj\", obj);\n    setNewUser(obj);\n    setOpenCreator(true);\n  };\n\n  const handleConfirm = async (isConfirm) => {\n    setOpenDeleteConfirmation(false);\n    if (!isConfirm) {\n      setUserToDelete(null);\n      return;\n    }\n    try {\n      setLoading(true);\n      await api.deleteUser(userToDelete.username, userToDelete.id);\n      setUserToDelete(null);\n      appContext.resetUsers();\n      appContext.showSuccessMessage(\"User removed successfully\");\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n    setLoading(false);\n  };\n\n  const handleDropDownOptions = (user, value) => {\n    switch (value) {\n      case \"Edit\":\n        handleEditUser(user);\n        break;\n      case \"Delete\":\n        setOpenDeleteConfirmation(true);\n        setUserToDelete(user);\n        break;\n      default:\n        break;\n    }\n  };\n\n  const TableRow = ({ user }) => {\n    return (\n      <tr className=\"trDataWrapper\" key={user.username}>\n        {/* <td className=\"icon\">\n          <img\n            src={editIcon}\n            className=\"cursor-pointer\"\n            width=\"16\"\n            alt=\"edit icon\"\n            id={user.id}\n            onClick={(e) => handleEditUser(user)}\n          />\n        </td> */}\n        <ViewOnlyCheckBox\n          bgColor=\"red\"\n          id={user.id}\n          // checked={checkboxes.indexOf(test.id) !== -1}\n          // item={test}\n          // handleChange={(e) => handleCheckboxChange(e, test.id, test)}\n        />\n        <td className=\"ellipsis\" style={{ textAlign: \"left\" }} title={user.firstName}>\n          {user.firstName}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"left\" }} title={user.lastName}>\n          {user.lastName}\n        </td>\n        <td\n          className=\"table-column ellipsis text-dark-danger text-dark-danger-hover cursor-pointer\"\n          onClick={() => user?.email && window.open(`mailto:${user.email}`)}\n          title={user.email}\n        >\n          {user.email}\n        </td>\n        <td\n          className=\"ellipsis text-dark-danger text-dark-danger-hover cursor-pointer\"\n          onClick={() => user?.phone_number && window.open(`tel:+1${user.phone_number.replace(/\\D/g, \"\")}`)}\n          title={user.phone_number}\n        >\n          {user.phone_number}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\", textOverflow: \"visible\" }} title={user.roleValue}>\n          {user.roleTitle || user.roleValue}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\", textOverflow: \"visible\" }} title={user.associated}>\n          {user.associated}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\", textOverflow: \"visible\" }} title={user.status}>\n          {user.status || \"Confirmed\"}\n        </td>\n        <td className=\"icon text-center\">\n          <DropdownMenu options={options} handleDropDownOptions={(e) => handleDropDownOptions(user, e)} />\n          {/* <i\n            className=\"fa fa-trash secondary-gray cursor-pointer\"\n            aria-hidden=\"true\"\n            id={user.id}\n            onClick={(e) => {\n              setOpenDeleteConfirmation(true);\n              setUserToDelete(user);\n            }}\n          /> */}\n        </td>\n      </tr>\n    );\n  };\n  return (\n    <Container fluid ref={mainWidth}>\n      {!loading ? (\n        <div className=\"shows-screen-parent\">\n          <Col md=\"12\">\n            <Card className=\"border-0 mb-1\">\n              <Card.Body className=\"p-0\">\n                <div className=\"shows-filter-wrapper\">\n                  <div className=\"shows-filter-inner\">\n                    <Icon\n                      handleClick={() => setShowFilter(!showFilter)}\n                      title={\"Filter\"}\n                      label={\"Filter\"}\n                      iconType={\"filter\"}\n                    />\n                  </div>\n                  <Icon\n                    handleClick={() => {\n                      setNewUser({ ...EmptyUserObj });\n                      setOpenCreator(true);\n                    }}\n                    title={\"Create a User\"}\n                    label={\"Create\"}\n                    iconType={\"createIcon\"}\n                  />\n                </div>\n                {showFilter && (\n                  <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} isUsersTable={true} />\n                )}\n              </Card.Body>\n            </Card>\n          </Col>\n          <Row className=\"mx-0\">\n            <Col>\n              <Card className=\"strpied-tabled-with-hover bg-transparent border-0\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md-=\"6\">\n                      <Card.Title>\n                        <div className=\"\">\n                          Users:\n                          <span className=\"ps-2\">{filteredUsers ? filteredUsers.length : users.length}</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col style={{ textAlign: \"right\" }} md={{ span: 5, offset: 1 }} xl={{ span: 5, offset: 1 }}>\n                      Page\n                      <ul className=\"createButtons pr-0\" style={{ display: \"inline\" }}>\n                        <i\n                          className=\"fas fa-angle-left\"\n                          style={{ color: \"#585858\" }}\n                          onMouseOver={(e) => {\n                            e.target.style.cursor = \"pointer\";\n                            e.target.style.color = \"black\";\n                          }}\n                          onMouseLeave={(e) => (e.target.style.color = \"#585858\")}\n                          onClick={() => {\n                            currentPage !== 1 && handleChangePage(currentPage - 1);\n                          }}\n                        />\n                        {/* {currentPage !== 1 && \"...\"} */}\n                        {currentPage} of {pageNumbers.length}\n                        {/* {pageNumbers.length >= currentPage && \"...\"} */}\n                        <i\n                          className=\"fas fa-angle-right\"\n                          style={{ color: \"#585858\" }}\n                          onMouseOver={(e) => {\n                            e.target.style.cursor = \"pointer\";\n                            e.target.style.color = \"black\";\n                          }}\n                          onMouseLeave={(e) => (e.target.style.color = \"#585858\")}\n                          onClick={() => {\n                            currentPage !== pageNumbers.length && handleChangePage(currentPage + 1);\n                          }}\n                        />\n                      </ul>\n                    </Col>\n                  </Row>\n                </Card.Header>\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll mt-0 pt-0\">\n                  <div className=\"table-responsive pendingReleaseTable\">\n                    <Table className=\"separate-border-tr\">\n                      <thead ref={componentRef}>\n                        <tr>\n                          <th />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"firstName\"\n                            title=\"First Name\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"lastName\"\n                            title=\"Last Name\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"email\"\n                            title=\"Email\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"phone_number\"\n                            title=\"Phone Number\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"role\"\n                            title=\"Role\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"associated\"\n                            title=\"Associated\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"status\"\n                            title=\"Status\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <th className=\"border-0 text-center text-grey\">Actions</th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {usersToMap &&\n                          usersToMap.map((user, i) => {\n                            return <TableRow key={i} user={user} />;\n                          })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      ) : (\n        // <h3\n        //   style={{\n        //     display: \"block\",\n        //     marginLeft: \"auto\",\n        //     marginRight: \"auto\",\n        //     paddingTop: 50,\n        //     paddingBottom: 50,\n        //   }}\n        // >\n        //   Loading...\n        // </h3>\n        <Loader />\n      )}\n      {openCreator && (\n        <MFUserModal\n          show={openCreator}\n          user={newUser}\n          handleSave={createUser}\n          handleClose={handleClose}\n          resetCall={setOpenPasswordModal}\n          message={errorMessageText}\n        />\n      )}\n      {openPasswordModal && (\n        <UserPasswordModal user={newUser} handleClose={handlePasswordClose} handleSave={handleResetPassword} />\n      )}\n\n      {openDeleteConfirmation && (\n        <ConfirmationModal\n          show={openDeleteConfirmation}\n          title=\"Delete User\"\n          message=\"Are you sure, you want to remove User?\"\n          handleConfirm={handleConfirm}\n        />\n      )}\n    </Container>\n  );\n};\n\nexport default UsersView;\n","import React, { useState } from \"react\";\n\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n  DropdownButton,\n  Dropdown,\n  Modal,\n} from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport { CSVLink } from \"react-csv\";\nimport { Importer, ImporterField } from \"react-csv-importer\";\nimport SortIcon from \"../components/SortIcon\";\nimport SearchBar from \"../components/SearchBar\";\nimport { Link } from \"react-router-dom\";\nimport parsePhoneNumber, { AsYouType } from \"libphonenumber-js\";\n\nconst ClientTests = () => {\n  const importResult = [];\n  const [tests, setTests] = useState([]);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [labs, setLabs] = useState([]);\n  const [sites, setSites] = useState([]);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [searchTerm, setSearchTerm] = useState(\"name\");\n  const [searchInput, setSearchInput] = useState(\"\");\n\n  const searchTerms = [\"crew_ID\", \"name\", \"phone_number\", \"lab\", \"show\", \"barcode\", \"status\"];\n  const testsToMap = searchInput !== \"\" ? filteredTests : tests;\n\n  useEffect(() => {\n    const getClient = async (id) => {\n      const model = await API.findTestByID(id);\n      setDemographics(JSON.parse(model.employee_demographics));\n      setTest(model);\n    };\n\n    const {\n      match: { params },\n    } = props;\n    getTest(params.testId);\n  }, []);\n\n  useEffect(() => {\n    labs.length !== 0 && sites.length !== 0 && fetchTests();\n  }, [sites, labs]);\n\n  useEffect(() => {\n    changeSort();\n  }, [sortBy, sortDescending]);\n\n  const fetchTests = async () => {\n    const models = await API.getTests();\n    setTests(models);\n  };\n\n  const fetchLabs = async () => {\n    const models = await API.getLabs();\n    setLabs(models);\n  };\n\n  const fetchSites = async () => {\n    const models = await API.getSites();\n    setSites(models);\n  };\n\n  const changeSort = () => {\n    switch (sortBy) {\n      case \"employee_demographics\":\n        setTests(\n          sortDescending\n            ? [...tests].sort((a, b) =>\n                JSON.parse(b[sortBy]).lastName < JSON.parse(a[sortBy]).lastName\n                  ? 1\n                  : JSON.parse(a[sortBy]).lastName < JSON.parse(b[sortBy]).lastName\n                  ? -1\n                  : 0\n              )\n            : [...tests].sort((a, b) =>\n                JSON.parse(b[sortBy]).lastName > JSON.parse(a[sortBy]).lastName\n                  ? 1\n                  : JSON.parse(a[sortBy]).lastName > JSON.parse(b[sortBy]).lastName\n                  ? -1\n                  : 0\n              )\n        );\n        break;\n      case \"siteID\":\n        setTests(\n          sortDescending\n            ? [...tests].sort((a, b) =>\n                getSiteName(b[sortBy]) < getSiteName(a[sortBy])\n                  ? 1\n                  : getSiteName(a[sortBy]) < getSiteName(b[sortBy])\n                  ? -1\n                  : 0\n              )\n            : [...tests].sort((a, b) =>\n                getSiteName(b[sortBy]) > getSiteName(a[sortBy])\n                  ? 1\n                  : getSiteName(a[sortBy]) > getSiteName(b[sortBy])\n                  ? -1\n                  : 0\n              )\n        );\n        break;\n      case \"labID\":\n        setTests(\n          sortDescending\n            ? [...tests].sort((a, b) =>\n                getLabName(b[sortBy]) < getLabName(a[sortBy])\n                  ? 1\n                  : getLabName(a[sortBy]) < getLabName(b[sortBy])\n                  ? -1\n                  : 0\n              )\n            : [...tests].sort((a, b) =>\n                getLabName(b[sortBy]) > getLabName(a[sortBy])\n                  ? 1\n                  : getLabName(a[sortBy]) > getLabName(b[sortBy])\n                  ? -1\n                  : 0\n              )\n        );\n        break;\n      default:\n        setTests(\n          sortDescending\n            ? [...tests].sort((a, b) => (b[sortBy] < a[sortBy] ? 1 : a[sortBy] < b[sortBy] ? -1 : 0))\n            : [...tests].sort((a, b) => (b[sortBy] > a[sortBy] ? 1 : a[sortBy] > b[sortBy] ? -1 : 0))\n        );\n    }\n  };\n\n  const getLabName = (id) => {\n    const labObj = labs.find((lab) => lab.id === id);\n    return labObj ? labObj.name : \"NA\";\n  };\n\n  const getSiteName = (id) => {\n    const siteObj = sites.find((site) => site.id === id);\n    return siteObj ? siteObj.name : \"NA\";\n  };\n\n  const getCrewsName = (empDemos) => {\n    let parsed = JSON.parse(empDemos);\n    let first = parsed.firstName.charAt(0).toUpperCase() + parsed.firstName.slice(1).toLowerCase();\n    let last = parsed.lastName.charAt(0).toUpperCase() + parsed.lastName.slice(1).toLowerCase();\n    return `${first} ${last}`;\n  };\n\n  const createMoreInfo = (type, id) => {\n    const infoObj = type === \"site\" ? sites.find((site) => site.id === id) : labs.find((lab) => lab.id === id);\n    if (!infoObj) return;\n    setMoreInfo({\n      type,\n      name: infoObj.name,\n      contact: infoObj.contact_name,\n      phone: infoObj.contact_phone,\n      email: infoObj.contact_email,\n    });\n    setModalShow(true);\n  };\n\n  const filterTests = (term, input) => {\n    switch (term) {\n      case \"name\":\n        setFilteredTests(\n          tests.filter((test) =>\n            getCrewsName(test[\"employee_demographics\"]).toLowerCase().includes(input.toLowerCase())\n          )\n        );\n        break;\n      case \"lab\":\n        setFilteredTests(tests.filter((test) => getLabName(test[\"labID\"]).toLowerCase().includes(input.toLowerCase())));\n        break;\n      case \"show\":\n        setFilteredTests(\n          tests.filter((test) => getSiteName(test[\"siteID\"]).toLowerCase().includes(input.toLowerCase()))\n        );\n        break;\n      case \"crew_ID\":\n        setFilteredTests(tests.filter((test) => test[\"owner\"].toLowerCase().includes(input.toLowerCase())));\n        break;\n      default:\n        setFilteredTests(tests.filter((test) => test[term].toLowerCase().includes(input.toLowerCase())));\n    }\n  };\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(!sortDescending);\n  };\n\n  const TableRow = ({ test }) => {\n    return (\n      <tr>\n        <td>{test.owner}</td>\n        <td>{getCrewsName(test.employee_demographics)}</td>\n        <td>{test.phoneNumber && parsePhoneNumber(test.phoneNumber, \"US\").format(\"NATIONAL\")}</td>\n        <td>\n          <a\n            style={{ color: \"#42cef5\" }}\n            onClick={() => createMoreInfo(\"site\", test.siteID)}\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n          >\n            {getSiteName(test.siteID)}\n          </a>\n        </td>\n        <td>\n          <a\n            style={{ color: \"#42cef5\" }}\n            onClick={() => createMoreInfo(\"lab\", test.labID)}\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n          >\n            {getLabName(test.labID)}\n          </a>\n        </td>\n        <td>{test.barcode}</td>\n        <td>{new Date(test.createdAt).toDateString()}</td>\n        <td>{test.status}</td>\n        <td>\n          <span\n            style={{\n              color: test.result?.toLowerCase() === \"negative\" ? \"green\" : \"red\",\n            }}\n          >\n            {test.result && test.result.charAt(0).toUpperCase() + test.result.slice(1)}\n          </span>\n        </td>\n        <td>NA</td>\n        <td>\n          <Link style={{ color: \"#42cef5\" }} to={\"/admin/test/\" + test.id}>\n            View\n          </Link>\n        </td>\n      </tr>\n    );\n  };\n\n  const SetSortIcon = ({ sortName }) => {\n    return <SortIcon sortName={sortName} sortBy={sortBy} sortDescending={sortDescending} />;\n  };\n\n  return (\n    <>\n      <Container fluid>\n        <Row>\n          <Col md=\"12\">\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title as=\"h4\">Tests</Card.Title>\n                <SearchBar\n                  searchTerms={searchTerms}\n                  filter={filterTests}\n                  setSearchInput={setSearchInput}\n                  setSearchTerm={setSearchTerm}\n                  searchTerm={searchTerm}\n                  searchInput={searchInput}\n                  placeholder=\"Search tests...\"\n                />\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width table-responsive px-0\">\n                <Table className=\"table-hover table-striped\">\n                  <thead>\n                    <tr>\n                      <th className=\"border-0\" onClick={() => flipSort(\"owner\")}>\n                        Crew ID\n                        <SetSortIcon sortName=\"owner\" />\n                      </th>\n                      <th className=\"border-0\" onClick={() => flipSort(\"employee_demographics\")}>\n                        Name\n                        <SetSortIcon sortName=\"employee_demographics\" />\n                      </th>\n                      <th className=\"border-0\" onClick={() => flipSort(\"phone\")}>\n                        Phone\n                        <SetSortIcon sortName=\"phone\" />\n                      </th>\n                      <th className=\"border-0\" onClick={() => flipSort(\"siteID\")}>\n                        Show\n                        <SetSortIcon sortName=\"siteID\" />\n                      </th>\n                      <th className=\"border-0\" onClick={() => flipSort(\"labID\")}>\n                        Lab\n                        <SetSortIcon sortName=\"labID\" />\n                      </th>\n                      <th className=\"border-0\" onClick={() => flipSort(\"barcode\")}>\n                        Barcode\n                        <SetSortIcon sortName=\"barcode\" />\n                      </th>\n                      <th className=\"border-0\" onClick={() => flipSort(\"createdAt\")}>\n                        Batch\n                        <SetSortIcon sortName=\"createdAt\" />\n                      </th>\n                      <th className=\"border-0\" onClick={() => flipSort(\"status\")}>\n                        Status\n                        <SetSortIcon sortName=\"status\" />\n                      </th>\n                      <th className=\"border-0\" onClick={() => flipSort(\"result\")}>\n                        Result\n                        <SetSortIcon sortName=\"result\" />\n                      </th>\n                      <th className=\"border-0\">CT Score</th>\n                      <th className=\"border-0\">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {testsToMap?.map((test) => {\n                      return <TableRow key={test.id} test={test} />;\n                    })}\n                  </tbody>\n                </Table>\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n      </Container>\n      <Modal\n        show={modalShow}\n        style={{ transform: \"translate(0, -30%)\" }}\n        animation={true}\n        onHide={() => {\n          setMoreInfo({});\n          setModalShow(false);\n        }}\n        centered\n        size={\"md\"}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title id=\"contained-modal-title-vcenter\">{moreInfo.name}'s Contact Info</Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n          <p>Contact Name: {moreInfo.contact}</p>\n          <p>Contact Phone: {moreInfo.phone}</p>\n          <p>\n            Contact Email: <a href={`mailto:${moreInfo.email}`}>{moreInfo.email}</a>\n          </p>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button\n            variant=\"secondary\"\n            onClick={() => {\n              setMoreInfo({});\n              setModalShow(false);\n            }}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default ClientTests;\n","import { stringConstant } from \"constant\";\nimport React from \"react\";\nimport { Table } from \"react-bootstrap\";\n\nconst TestSubmitResponse = (props) => {\n  const { title, data } = props;\n  if (data.length === 0) return <></>;\n\n  return (\n    <>\n      <h6>\n        {title} - Total Test ( {data.reduce((ttl, { tests }) => ttl + tests, 0)} )\n      </h6>\n      <Table className=\"table-hover table-striped\">\n        <thead>\n          <tr>\n            <th\n              className={`border-0 centered`}\n              style={{\n                color: \"grey\",\n                fontWeight: \"bold\",\n              }}\n            >\n              <div className=\"d-flex justify-content-start align-items-center\">\n                <span>Lab</span>\n              </div>\n            </th>\n            <th\n              className={`border-0 centered`}\n              style={{\n                color: \"grey\",\n                fontWeight: \"bold\",\n              }}\n            >\n              <div className=\"d-flex justify-content-start align-items-center\">\n                <span>{stringConstant.show}</span>\n              </div>\n            </th>\n            <th\n              className={`border-0 centered`}\n              style={{\n                color: \"grey\",\n                fontWeight: \"bold\",\n              }}\n            >\n              <div>\n                <span># of Test</span>\n              </div>\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          {data.map((msg, index) => {\n            return (\n              <tr key={index}>\n                <td>{msg.lab.name}</td>\n                <td>{msg.show}</td>\n                <td style={{ textAlign: \"center\" }}>{msg.tests}</td>\n              </tr>\n            );\n          })}\n        </tbody>\n      </Table>\n    </>\n  );\n};\n\nexport default TestSubmitResponse;\n","import React from \"react\";\nimport TestSubmitResponse from \"components/Modal/TestSubmitResponse\";\nimport { Button, Modal } from \"react-bootstrap\";\n\nconst TestSubmitModal = (props) => {\n  const { data, handleClose } = props;\n\n  const parseSubmitMessage = (list) => {\n    const message = [];\n    list.forEach((obj) => {\n      const showNames = obj.tests\n        .map((item) => item.site_name)\n        .filter((value, index, self) => self.indexOf(value) === index);\n      showNames.forEach((s) => {\n        message.push({ lab: obj.lab, show: s, tests: obj.tests.filter((f) => f.site_name === s).length });\n      });\n    });\n\n    return message;\n  };\n\n  const successMessage = parseSubmitMessage(data.filter((s) => s.error === null));\n  const errorMessage = parseSubmitMessage(data.filter((s) => s.error !== null));\n\n  return (\n    <Modal show animation={true} onHide={() => handleClose()} centered>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Test Submit Result\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"form-group-wrapper d-block\">\n          <div className=\"table-responsive\">\n            <TestSubmitResponse title=\"Success Result\" data={successMessage} />\n            <TestSubmitResponse title=\"Error Result\" data={errorMessage} />\n          </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer className=\"flex-row-reverse\">\n        <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleClose()}>\n          OK\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default TestSubmitModal;\n","import { TEST_KEYS_PARSE } from \"constant\";\nimport React, { useState, useRef } from \"react\";\nimport { Overlay, Popover } from \"react-bootstrap\";\nimport { Card, Table, Row, Col, Button } from \"react-bootstrap\";\n\nconst PopoverStick = (props) => {\n  const { item, columns, values, cssClass, changeObject } = props;\n  const [showPopover, setShowPopover] = useState(false);\n  const childNode = useRef();\n  let setTimeoutConst = null;\n  const handleMouseEnter = () => {\n    setTimeoutConst = setTimeout(() => {\n      setShowPopover(true);\n    }, 1000);\n  };\n  const handleMouseLeave = () => {\n    clearTimeout(setTimeoutConst);\n    setShowPopover(false);\n  };\n\n  const TableRow = ({ rowItem, index }) => {\n    return (\n      <tr key={index}>\n        <td className=\"popOver-centered border-0\">{TEST_KEYS_PARSE[rowItem]}</td>\n        <td className=\"popOver-centered border-0\">{changeObject[rowItem]}</td>\n      </tr>\n    );\n  };\n\n  return (\n    <>\n      <td\n        className={cssClass}\n        ref={childNode}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        onClick={() => setShowPopover(true)}\n        style={{\n          cursor: \"pointer\",\n          textAlign: \"center\",\n        }}\n      >\n        {item}\n      </td>\n      {values.length > 0 && showPopover && (\n        <Overlay show={showPopover} placement=\"auto\" flip target={childNode.current}>\n          <Popover\n            onMouseEnter={() => {\n              setShowPopover(true);\n            }}\n            onMouseLeave={handleMouseLeave}\n            id=\"popover\"\n            className=\"popOverSchedule\"\n          >\n            <Popover.Header className=\"fw-bold\">Details</Popover.Header>\n            <Card className=\"border-0 mb-1\">\n              <Card.Body className=\"p-0\">\n                <div className=\"form-group-wrapper d-block\">\n                  <div className=\"table-responsive overFlow-y-hidden\">\n                    <Table className=\"table-hover table-striped\">\n                      <thead>\n                        <tr>\n                          <th className=\"popOver-centered border-0\">Filed</th>\n                          <th className=\"popOver-centered border-0\">Change</th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {values.map((val, i) => {\n                          return <TableRow key={i} index={i} rowItem={val} />;\n                        })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </div>\n              </Card.Body>\n            </Card>\n          </Popover>\n        </Overlay>\n      )}\n    </>\n  );\n};\n\nexport default PopoverStick;\n","import moment from \"moment\";\nimport React, { useState, useRef } from \"react\";\nimport { Table, Modal } from \"react-bootstrap\";\n\nconst TestLogsDetailView = (props) => {\n  const { item, columns, values, cssClass, changeObject, msg } = props;\n\n  const onlyShowDateLabels = [\"Test Date\", \"Dob\"];\n\n  const [showDetailModal, setShowDetailModal] = useState(false);\n\n  const childNode = useRef();\n\n  const TableRow = ({ rowItem, index }) => {\n    const formatResult = (result, label) => {\n      if (typeof result === \"boolean\") {\n        return result ? \"Yes\" : \"No\";\n      }\n\n      if (typeof result === \"string\" && result.includes(\"-\") && moment(result, moment.ISO_8601, true).isValid()) {\n        if (onlyShowDateLabels.includes(label)) {\n          return moment(result).format(\"MM-DD-YYYY\");\n        }\n        return moment(result).format(\"MM-DD-YYYY hh:mm A\");\n      }\n\n      return result || \"\";\n    };\n\n    return (\n      <tr key={index}>\n        <td className=\"popOver-centered border-0\">{rowItem.name}</td>\n        <td className=\"popOver-centered border-0\">{formatResult(rowItem.oldResult, rowItem.name)}</td>\n        <td className=\"popOver-centered border-0\">{formatResult(rowItem.newResult, rowItem.name)}</td>\n      </tr>\n    );\n  };\n\n  const showSingleLogMessage = (msgObj) => {\n    const msg = msgObj[0];\n    return `${msg.name} changed ${msg.oldResult} to ${msg.newResult}`;\n  };\n\n  return (\n    <>\n      <td\n        className={cssClass}\n        ref={childNode}\n        onClick={() => setShowDetailModal(true)}\n        style={{\n          cursor: \"pointer\",\n          display: \"flex\",\n          width: \"100%\",\n          justifyContent: \"center\",\n        }}\n      >\n        {!values || (Array.isArray(values) && values.length === 0) ? msg.slug : \"View Details\"}\n      </td>\n      {Array.isArray(values) && values.length > 0 && showDetailModal && (\n        <Modal\n          show\n          animation={true}\n          size=\"lg\"\n          onHide={() => setShowDetailModal(false)}\n          centered\n          scrollable\n          className=\"searchList seperateModal\"\n        >\n          <Modal.Header closeButton>\n            <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n              Detail Logs\n            </Modal.Title>\n          </Modal.Header>\n          <Modal.Body style={{ padding: \"0px\" }}>\n            <div className=\"form-group-wrapper d-block\">\n              <div className=\"table-responsive overFlow-y-hidden\">\n                <Table className=\"table-hover table-striped\">\n                  <thead>\n                    <tr>\n                      <th className=\"popOver-centered border-0\">Label</th>\n                      <th className=\"popOver-centered border-0\">Before</th>\n                      <th className=\"popOver-centered border-0\">After</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {Array.isArray(values) &&\n                      values.map((val, i) => {\n                        return <TableRow key={i} index={i} rowItem={val} />;\n                      })}\n                  </tbody>\n                </Table>\n              </div>\n            </div>\n          </Modal.Body>\n        </Modal>\n      )}\n    </>\n  );\n};\n\nexport default TestLogsDetailView;\n","import React from \"react\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport { vhToPixels } from \"utils\";\nimport Loader from '../Loader/Loader'\n\nconst DocumentPreviewModal = ({ isModalOpen, setIsModalOpen, fileUrl, fileType, title, cssClass, isLoading }) => {\n\n  return (\n    <Modal\n      show={isModalOpen}\n      backdrop=\"static\"\n      className={`second-modal ${cssClass}`}\n      onHide={() => setIsModalOpen(false)}\n      size=\"3xl\"\n      centered\n    >\n      <Modal.Header closeButton className=\"h-25\" style={{ marginBottom: \"0px\" }}>\n        <Modal.Title className=\"m-0\">{title || \"\"}</Modal.Title>\n      </Modal.Header>\n      <Modal.Body className=\"d-flex justify-content-center\" style={{ padding: \"0px\", paddingBottom: \"5px\", minHeight:\"100px\" }}>\n        {isLoading ? (\n          <Loader />\n        ) : fileType === \"image\" ? (\n          <img\n            src={fileUrl}\n            alt=\"Document Preview\"\n            style={{ maxWidth: \"100%\", height: \"auto\" }}\n          />\n        ) : (\n          <iframe\n            src={fileUrl}\n            type=\"application/pdf\"\n            width=\"100%\"\n            height={vhToPixels(80)}\n            title=\"Document Preview\"\n            style={{ border: \"none\" }} // Optional: Remove iframe border\n          />\n        )}\n\n\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"secondary\" onClick={() => setIsModalOpen(false)}>\n          Close\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default DocumentPreviewModal;\n","import PopoverStick from \"components/PopoverStick\";\nimport { CONFIG, Audit_Parse, BUCKET_EXTERNAL_IMAGES } from \"constant\";\nimport React, { useEffect, useState } from \"react\";\nimport { Button, Modal, Table } from \"react-bootstrap\";\nimport { formatLogDate, capitalizeLetter } from \"utils\";\nimport API from \"api\";\nimport { Storage } from \"aws-amplify\";\nimport FullImageView from \"components/FullPageImageView\";\nimport PopoverSticks from \"components/PopoverSticks\";\nimport TestLogsDetailView from \"components/TestLogsDetailView\";\nimport { toTitleCase } from \"utils\";\nimport { getContentType } from \"utils\";\nimport DocumentPreviewModal from \"./DocumentPreviewModal\";\nimport Loader from \"components/Loader/Loader\";\n\nconst TestLogsModal = (props) => {\n  const { handleClose, test, setSuccessMessageText } = props;\n\n  const [data, setData] = useState([]);\n  const [loading, setLoading] = useState(false);\n\n  // const [image, setImage] = useState(\"\");\n  const [previewFileData, setPreviewFileData] = useState();\n\n\n  const getSequenceNo = () => {\n    if (data && data.length > 0) return CONFIG.isWhiteLabel ? data[0]?.barcode : data[0].sequenceNo;\n    return \"\";\n  };\n\n  const showTestLogs = async () => {\n    let logs = [];\n\n    if (test.recordType === \"employee\") {\n      logs = await API.getPatientLogs(test.mdID);\n    } else if (test.recordType === \"logs\") {\n      logs = await API.getLogs(test.id);\n    } else if (test.sequenceNo) {\n      logs = await API.getTestLogs(test.sequenceNo);\n    } else if (test.ordID) {\n      logs = await API.getOrderLogs(test.ordID, test.testID);\n    }\n\n    logs = logs.map((m) => {\n      m.slug = m.action || m.slug;\n      if (m.slug && m.slug.toLowerCase() === \"email\") {\n        return { ...m, newValue: \"Result Emailed\" };\n      }\n      return { ...m };\n    });\n    setData([...logs].sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt)));\n  };\n\n  useEffect(() => {\n    showTestLogs();\n  }, []);\n\n  const LABELS = {\n    AccessionNoChanged: \"Accession No. Changed\",\n  };\n\n  const getActionDetails = (msg) => {\n    let val = msg.slug || msg.action;\n    return LABELS[val] || val;\n  };\n\n  const handleClickOnImage = async (fileName) => {\n\n    try {\n      if (!fileName || !fileName?.file) return;\n\n      setLoading(true);\n\n      const fileExtension = fileName.file.split(\".\").pop().toLowerCase();\n\n      const contentType = getContentType(fileExtension);\n\n      const result = await Storage.get(fileName.file, {\n        bucket: BUCKET_EXTERNAL_IMAGES,\n        download: false,\n        contentDisposition: \"inline\",\n        contentType: contentType,\n      });\n\n      setPreviewFileData({ fileType: fileExtension === \"pdf\" ? \"pdf\" : \"image\", fileUrl: result });\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Error\", err);\n    }\n  };\n\n\n  // const handleClickOnImage = async (log) => {\n  //   if (!log.file) return;\n  //   try {\n  //     const res = await Storage.get(log.file);\n  //     console.log('Res',res)\n  //     setImage(res);\n  //   } catch (err) {\n  //     console.log(\"Error:-\", err.message);\n  //   }\n  // };\n\n  function renderMessageContent(msg) {\n    if (msg.file) {\n      return msg.message;\n    } else if (\n      (msg.hasOwnProperty(\"changeRecord\") && msg.changeRecord != null) ||\n      (msg.hasOwnProperty(\"changeObject\") && msg.changeObject != null)\n    ) {\n      return (\n        <TestLogsDetailView\n          item={msg.slug}\n          values={msg?.changeRecord ? msg.changeRecord : msg.changeObject}\n          changeObject={msg?.changeRecord ? msg.changeRecord : msg.changeObject}\n          msg={msg}\n        />\n      );\n    } else if (\n      capitalizeLetter(msg.prevValue || msg.oldValue || \"\") &&\n      capitalizeLetter(msg.newValue || msg.result || \"\")\n    ) {\n      return ` ${capitalizeLetter(msg.prevValue || msg.oldValue || \"-\")} to ${capitalizeLetter(\n        msg.newValue || msg.result || \"-\"\n      )}`;\n    } else if (msg.action === \"View Details\") {\n      return capitalizeLetter(msg.action);\n    }\n\n    return capitalizeLetter(msg.newValue || msg.result || msg.message || Audit_Parse[msg.eventType] || \"-\");\n  }\n\n  return (\n    <Modal show animation={true} onHide={() => handleClose()} centered size=\"xl\">\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {`${test.title || \"Tests Logs\"} ${(CONFIG.isWhiteLabel ? test.barcode : test.sequenceNo) || \"\"}`}\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n      {loading && <Loader />}\n\n        <div className=\"form-group-wrapper d-block\">\n          <div className=\"table-responsive\">\n            <Table className=\"table-hover table-striped\">\n              <thead>\n                <tr>\n                  <th\n                    className={`border-0`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    Sr#\n                  </th>\n                  <th\n                    className={`border-0`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span>Date</span>\n                    </div>\n                  </th>\n\n                  {/* <th\n                    className={`border-0`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    Test Name\n                  </th> */}\n\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span>Action</span>\n                    </div>\n                  </th>\n\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div>\n                      <span>Event</span>\n                    </div>\n                  </th>\n\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div>\n                      <span>User</span>\n                    </div>\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {data.length > 0 ?\n                  data.map((msg, index) => {\n                    return (\n                      <tr key={index}>\n                        <td>{data.length - index}</td>\n                        <td>{formatLogDate(msg.createdAt)}</td>\n\n                        {/* <td>{formatLogDate(msg.createdAt)}</td> */}\n\n                        {msg.slug === \"Test Updated\" && msg?.changeObject ? (\n                          <PopoverStick\n                            item={msg.slug}\n                            values={Object.keys(msg.changeObject)}\n                            changeObject={msg.changeObject}\n                          />\n                        ) : (\n                          <td style={{ textAlign: \"center\" }}>{getActionDetails(msg)}</td>\n                        )}\n                        {/* <td style={{ textAlign: \"center\" }}>{getActionDetails(msg)}</td> */}\n\n                        <td\n                          className={msg.file && \"linkedTextU\"}\n                          style={{ textAlign: \"center\" }}\n                          onClick={() => handleClickOnImage(msg)}\n                        >\n                          {renderMessageContent(msg)}\n                        </td>\n                        <td style={{ textAlign: \"center\" }}>\n                          {msg.userName === \"Auto\" ? \"System Generated\" : toTitleCase(msg.userName) || \"N/A\"}\n                        </td>\n                        {window.location.hostname === \"localhost\" && (\n                          <td\n                            onClick={async () => {\n                              await API.deleteLogRecord(msg);\n                              setSuccessMessageText(\"delete Successfully\");\n                              // appContext.showSuccessMessage(\"delete Successfully\");\n                              await showTestLogs();\n                            }}\n                          >\n                            <i className=\"fas fa-trash cursor-pointer\" />\n                          </td>\n                        )}\n                      </tr>\n                    );\n                  }): \"No Record Found\"}\n              </tbody>\n            </Table>\n          </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleClose()}>\n          Close\n        </Button>\n      </Modal.Footer>\n      {/* {image && <FullImageView image={image} handleClose={() => setImage(\"\")} />} */}\n\n\n      <DocumentPreviewModal\n        isModalOpen={previewFileData?.fileType}\n        setIsModalOpen={() => {\n          setPreviewFileData();\n        }}\n        cssClass=\"preview-modal\"\n        fileUrl={previewFileData?.fileUrl}\n        fileType={previewFileData?.fileType}\n      />\n    </Modal>\n  );\n};\n\nexport default TestLogsModal;\n","import React, { useState, useEffect } from \"react\";\nimport { Button, Form, Modal } from \"react-bootstrap\";\nimport { externalTypesOptions } from \"constant\";\nimport Select from \"react-select\";\nimport { parseBooleanValue } from \"utils\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\n\nconst ChangeTestLabModal = (props) => {\n  const { handleSave, handleClose, selectedTest, labs } = props;\n  const [testType, setTestType] = useState(\"\");\n  const [sendToLab, setSendToLab] = useState(false);\n  const [error, setError] = useState(\"\");\n  const [confirmText, setConfirmText] = useState(\"\");\n\n  useEffect(() => {\n    setTimeout(() => {\n      setError(\"\");\n    }, 4000);\n  }, [error]);\n\n  const onHandleSave = () => {\n    if (!testType) {\n      setError(\"Please select the Lab\");\n      return;\n    }\n    if (confirmText !== \"confirm\") {\n      setError(\"Please enter confirm in input\");\n      return;\n    }\n    handleSave(testType, sendToLab);\n    handleClose();\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Change Test Lab\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Select Lab </label>\n            <Select\n              className=\"w-100 siteSelector\"\n              options={labs.map((l) => {\n                return { value: l.id, label: l.name };\n              })}\n              blurInputOnSelect={true}\n              defaultValue={null}\n              menuPlacement=\"auto\"\n              placeholder=\"Select Lab\"\n              onChange={(e) => setTestType(e)}\n            />\n          </div>\n\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Type confirm: </label>\n            <input\n              value={confirmText}\n              className=\"modalInput\"\n              placeholder=\"type confirm\"\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setConfirmText(e.target.value)}\n            />\n          </div>\n          {selectedTest && selectedTest.filter((t) => t.test_type === \"PCR\").length > 0 && (\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Send to Lab: </label>\n              <div className=\"d-flex \">\n                <span className=\"labelYesNo\">{parseBooleanValue(setSendToLab)}</span>\n                <ViewOnlyCheckBox\n                  id=\"2\"\n                  bgColor=\"blue\"\n                  checked={sendToLab}\n                  handleChange={(e) => setSendToLab(!sendToLab)}\n                />\n              </div>\n            </div>\n          )}\n          {error.length > 0 && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            Save\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default ChangeTestLabModal;\n","import { useRef, useEffect } from 'react';\n\nexport function useInitialRender() {\n  const isFirstRender = useRef(true);\n\n  useEffect(() => {\n    isFirstRender.current = false;\n  }, []);\n\n  return isFirstRender.current;\n}","import React, { useState, useEffect } from \"react\";\nimport { Modal, Button, Table, Row, Col } from \"react-bootstrap\";\nimport { CSVReader } from \"react-papaparse\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { downloadDataAsCSV } from \"utils\";\n\nconst ImportResultModal = (props) => {\n  const [error, setError] = useState(\"\");\n  const { handleClose, handleImport, errorMessage, header = true } = props;\n  useEffect(() => {\n    setError(errorMessage);\n  }, [errorMessage]);\n  const handleOnDrop = (data) => {\n    handleImport(data);\n  };\n  const handleOnError = (err) => {\n    console.log(err);\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n  };\n\n  return (\n    <Modal show animation={true} onHide={() => handleClose()} centered size={\"lg\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Upload Results\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div\n          className=\"linkedText\"\n          onClick={() => downloadDataAsCSV([{ result: \"positive\", accession_number: \"23343\" }], \"sample-result\")}\n        >\n          Download Sample CSV\n        </div>\n        <div className=\"form-group-wrapper d-block\">\n          <CSVReader\n            onDrop={handleOnDrop}\n            onError={handleOnError}\n            addRemoveButton\n            config={{\n              header: header,\n              skipEmptyLines: true,\n              skipLinesWithEmptyValues: true, // Skip lines with empty values\n            }}\n            onRemoveFile={handleOnRemoveFile}\n          >\n            <span>Drop CSV file here or click to upload.</span>\n          </CSVReader>\n          <div style={{ marginTop: \"10px\" }}>\n            {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n          </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer className=\"flex-row-reverse\">\n        <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleClose()}>\n          OK\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ImportResultModal;\n","import React from \"react\";\nimport { Button, Modal , Table} from \"react-bootstrap\";\nimport { toTitleCase } from \"utils\";\n\nconst ResultModal = (props) => {\n  const { data, handleClose } = props;\n\n  return (\n    <Modal show animation={true} onHide={() => handleClose()} centered>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Uploaded Result Status\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"form-group-wrapper d-block\">\n          <div className=\"table-responsive\">\n            <Table className=\"table-hover table-striped\">\n              <thead>\n                <tr>\n                  <th\n                    className={`border-0`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span>Result Type</span>\n                    </div>\n                  </th>\n                 \n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div>\n                      <span># of Results</span>\n                    </div>\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {data.map((msg, index) => {\n                  return (\n                    <tr key={index}>\n                      <td>{toTitleCase(msg.label)}</td>\n                      <td style={{ textAlign: \"center\" }}>{msg.tests}</td>\n                    </tr>\n                  );\n                })}\n              </tbody>\n            </Table>\n          </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer className=\"flex-row-reverse\">\n        <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleClose()}>\n          OK\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ResultModal;\n","import { async } from \"@firebase/util\";\nimport api from \"api\";\nimport Loader from \"components/Loader/Loader\";\nimport { stringConstant } from \"constant\";\nimport React, { useState, useEffect } from \"react\";\nimport { Button, Form, Modal } from \"react-bootstrap\";\nimport { isValidAccessionNo } from \"utils\";\nimport gqApi from \"views/GraphQL/gqApi\";\n\nconst EditAccessionNoModal = (props) => {\n  const { handleClose, test, appContext } = props;\n  const [error, setError] = useState(\"\");\n  const [newTestCreate, setTestCreate] = useState({ ...test });\n  const [confirmText, setConfirmText] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n\n  useEffect(() => {\n    setTimeout(() => {\n      setError(\"\");\n    }, 4000);\n  }, [error]);\n\n  const onHandleSave = async () => {\n    if (newTestCreate.barcode === test.barcode) {\n      setError(\"Please change Accession No. and \");\n      return;\n    }\n    if (newTestCreate.barcode && newTestCreate.barcode.length !== 10 && isValidAccessionNo(newTestCreate.barcode)) {\n      setError(\"Accession No. is Invalid e.g. (YYMMDD0001)\");\n      return;\n    }\n\n    if (confirmText !== \"confirm\") {\n      setError(\"Please enter confirm in input\");\n      return;\n    }\n    const res = await gqApi.validateAccessionNo(newTestCreate);\n    if (!res) {\n      setError(`Accession No. ${newTestCreate.barcode} is already assigned. Please use the other`);\n      return;\n    }\n\n    try {\n      setLoading(true);\n      await api.updateBarcodeNumber(newTestCreate, appContext);\n      setLoading(false);\n      handleClose(\"success\");\n    } catch (err) {\n      console.log(\"Error:-\", err);\n      setLoading(false);\n      handleClose(err);\n    }\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Change Accession Number\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Accession Number: </label>\n            <div className=\"merged-input-container\">\n              <input\n                className=\"merged-input\"\n                style={{ width: \"22%\" }}\n                readOnly\n                value={newTestCreate?.barcode?.slice(0, 6)}\n              />\n              <input\n                className=\"merged-input\"\n                style={{ width: \"78%\" }}\n                placeholder={stringConstant.barcode}\n                value={newTestCreate?.barcode.slice(6)}\n                maxLength={\"4\"}\n                onChange={(e) => {\n                  setTestCreate({\n                    ...newTestCreate,\n                    barcode: `${newTestCreate?.barcode?.slice(0, 6)}${e.target.value.replace(/[^0-9]/g, \"\")}`,\n                  });\n                }}\n              />\n            </div>\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Type confirm: </label>\n            <input\n              value={confirmText}\n              className=\"modalInput\"\n              placeholder=\"type confirm\"\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setConfirmText(e.target.value)}\n            />\n          </div>\n\n          {error.length > 0 && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons\"\n            onClick={onHandleSave}\n            disabled={newTestCreate.barcode === test.barcode}\n          >\n            Save\n          </Button>\n        </Modal.Footer>\n        {loading && <Loader />}\n      </Modal>\n    </>\n  );\n};\n\nexport default EditAccessionNoModal;\n","export default __webpack_public_path__ + \"static/media/times-circle.a69b06b8.svg\";","import timesIcon from \"assets/img/times-circle.svg\";\nimport { DEFAULT_ACCEPTED_FILE_TYPES, FILE_REPRESENT_TYPES_MAP } from \"constant\";\nimport { useRef } from \"react\";\nimport { removeWhitespaceAndParentheses } from \"../../utils\";\n\nconst MultipleFileInput = (props) => {\n  const {\n    files,\n    setFiles,\n    setFileTypes,\n    setSelectedFileNames,\n    setFileSizes,\n    selectedFileNames,\n    acceptFiles,\n    fileTypes,\n    fileSizes,\n  } = props;\n  const fileInputRef = useRef();\n\n  const handleDragOver = (e) => {\n    e.preventDefault();\n  };\n\n  const openFileDialog = () => {\n    if (fileInputRef.current) {\n      fileInputRef.current.click();\n    }\n  };\n\n  const onRemoveFile = (index, e) => {\n    e.stopPropagation();\n\n    const updatedFiles = [...files];\n    const updatedFileTypes = setFileTypes ? [...setFileTypes] : [];\n    const updatedFileNames = [...selectedFileNames];\n    const updatedFileSizes = setFileSizes ? [...setFileSizes] : [];\n\n    updatedFiles.splice(index, 1);\n    updatedFileTypes.splice(index, 1);\n    updatedFileNames.splice(index, 1);\n    updatedFileSizes.splice(index, 1);\n\n    setFiles(updatedFiles);\n    setFileTypes && setFileTypes(updatedFileTypes);\n    setSelectedFileNames(updatedFileNames);\n    setFileSizes && setFileSizes(updatedFileSizes);\n  };\n\n  const isFileDuplicate = (fileName) => {\n    return selectedFileNames.includes(fileName);\n  };\n\n  const isInputFileTypeValid = (type) => {\n    return acceptFiles.includes(FILE_REPRESENT_TYPES_MAP.get(type) || type);\n  };\n\n  const addNewFiles = (newFiles) => {\n    const updatedFiles = [...files];\n    const updatedFileTypes = setFileTypes ? [...setFileTypes] : [];\n    const updatedFileNames = [...selectedFileNames];\n    const updatedFileSizes = setFileSizes ? [...setFileSizes] : [];\n\n    newFiles.forEach((file, index) => {\n      const newFileName = removeWhitespaceAndParentheses(file.name);\n      if (!isFileDuplicate(newFileName) && isInputFileTypeValid(file.type)) {\n        updatedFiles.push(file);\n        updatedFileTypes.push(fileTypes ? fileTypes[index] : \"\");\n        updatedFileNames.push(newFileName);\n        updatedFileSizes.push(fileSizes ? fileSizes[index] : \"\");\n      }\n    });\n\n    setFiles(updatedFiles);\n    setFileTypes && setFileTypes(updatedFileTypes);\n    setSelectedFileNames(updatedFileNames);\n    setFileSizes && setFileSizes(updatedFileSizes);\n  };\n\n  const handleFileChange = (event) => {\n    if (event.currentTarget.files && event.currentTarget.files.length > 0) {\n      const newFiles = Array.from(event.currentTarget.files);\n      addNewFiles(newFiles);\n    }\n  };\n\n  const handleDrop = (e) => {\n    e.preventDefault();\n    if (e.dataTransfer && e.dataTransfer.files) {\n      const newFiles = Array.from(e.dataTransfer.files);\n      addNewFiles(newFiles);\n    }\n  };\n\n  return (\n    <div className=\"d-flex flex-column align-items-center\" onDragOver={handleDragOver} onDrop={handleDrop}>\n      <div className=\"d-flex flex-column align-items-center file-upload-area\" onClick={openFileDialog}>\n        {selectedFileNames && selectedFileNames.length > 0 ? (\n          <div\n            className={`d-flex align-items-center column-gap-15 ${\n              selectedFileNames.length > 4 ? \"small-file-icons\" : \"\"\n            }`}\n          >\n            {selectedFileNames.map((fileName, index) => (\n              <div key={index} className=\"file-content-wrapper\">\n                <div className=\"file-icon-container file-width-cust\">\n                  <img\n                    src={require(`assets/img/pdf.svg`).default}\n                    alt=\"File Icon\"\n                    className={selectedFileNames.length > 4 ? \"small-icon\" : \"file-icon\"}\n                  />\n                  <span className=\"remove-icon\" onClick={(e) => onRemoveFile(index, e)}>\n                    <img style={{ width: \"18px\" }} src={timesIcon} alt=\"\" />\n                  </span>\n                </div>\n                <div className={\"text-ellipsis\"}>{fileName}</div>\n              </div>\n            ))}\n          </div>\n        ) : (\n          <p className=\"mt-2 mb-0\">Drag & Drop or Click to Select Files</p>\n        )}\n      </div>\n\n      <input\n        ref={fileInputRef}\n        type=\"file\"\n        accept={acceptFiles || DEFAULT_ACCEPTED_FILE_TYPES}\n        onChange={handleFileChange}\n        multiple\n        style={{ display: \"none\" }}\n      />\n    </div>\n  );\n};\n\nexport default MultipleFileInput;\n","import MultipleFileInput from \"components/Input/MultipleFileInput\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { CONFIG, stringConstant } from \"constant\";\nimport moment from \"moment\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { removeWhitespaceAndParentheses } from \"utils\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport api from \"api\";\n\nconst LoadOrdersModal = (props) => {\n  const { handleClose, errorMessage, setOrderFiles, onSaveFile, sites } = props;\n\n  const [error, setError] = useState(\"\");\n  const [selectedFileNames, setSelectedFileNames] = useState([]);\n  const [selectedSite, setSelectedSite] = useState(null);\n  const [selectedTest, setSelectedTest] = useState(null);\n  const [testDate, setTestDate] = useState(moment().format('YYYY-MM-DD'));\n  const [testOptions, setTestOptions] = useState();\n  const [files, setFiles] = useState([]);\n\n  useEffect(() => {\n    loadTestOptions();\n  }, []);\n\n\n  useEffect(() => {\n    setError(errorMessage);\n  }, [errorMessage]);\n\n  const loadTestOptions = async () => {\n    const options = await api.getTestTypesOptions();\n    if(options.length === 1){\n      setSelectedTest(options[0]);\n    }\n    setTestOptions(options);\n  };\n\n  const getSiteOptions = useMemo(() => {\n    if (!CONFIG.clientID) return [];\n\n    return sites\n      .filter((s) => s.clientID === CONFIG.clientID)\n      .map((l) => {\n        return { value: l.id, label: l.name };\n      });\n  }, [sites]);\n\n  useEffect(() => {\n    if (getSiteOptions.length === 1) {\n      setSelectedSite(getSiteOptions[0]);\n    }\n  }, [getSiteOptions]);\n\n  const isValidFiles = () => {\n    if (files.length === 0) {\n      setError(\"Please Select at least one file\");\n      return;\n    }\n    // if (!selectedSite && !CONFIG.lifeCarePrimaryPharmacy) {\n    //   setError(\"Client is Required\");\n    //   return;\n    // }\n    if (!testDate) {\n      setError(\"Test Date is Required\");\n      return;\n    }\n\n    const selectedTestDate = moment(testDate, 'YYYY-MM-DD');\n\n    if(moment().subtract(1,'days').isAfter(selectedTestDate)){\n      setError(\"Test Date is should current or future date\");\n      return;\n    }\n\n    if (!selectedTest) {\n      setError(\"Select the Test\");\n      return;\n    }\n    return true;\n  };\n  const handleSave = async () => {\n    if (!isValidFiles()) return;\n    let ttl = files.length;\n   \n    const objectsArray = [];\n\n    for (let i = 0; i < ttl; i++) {\n      const obj = { status: \"pending\", id: uuidv4(), floorID: removeWhitespaceAndParentheses(files[i].name) };\n      objectsArray.push(obj);\n    }\n\n    const orderFiles = {\n      files,\n      uploadStatus: objectsArray,\n      testDate: moment(`${testDate} ${moment().format(\"HH:mm\")}`).toISOString(),\n      selectedSite,\n      selectedFileNames,\n      testTypeID: selectedTest?.id,\n    };\n\n    setOrderFiles(orderFiles);\n    onSaveFile(orderFiles);\n  };\n\n  return (\n    <Modal show animation={true} onHide={() => handleClose()} centered size={\"xl\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Upload Files\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"form-group-wrapper d-block\">\n          <div className=\"col-sm-12 testAdmin createClientsWrapper\">\n            <div className=\"crew-profile-info-cl-3 \">\n              {!CONFIG.lifeCarePrimaryPharmacy && getSiteOptions.length > 1 && (\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">{stringConstant.site} </label>\n                  <Select\n                    className=\"w-100 siteSelector\"\n                    options={getSiteOptions}\n                    blurInputOnSelect={true}\n                    defaultValue={null}\n                    menuPlacement=\"auto\"\n                    placeholder={`Select ${stringConstant.site}`}\n                    value={selectedSite ? selectedSite : null}\n                    onChange={(e) => setSelectedSite(e)}\n                  />\n                </div>\n              )}\n              <div className=\"form-group-wrapper dateWrapper\">\n                <label className=\"modalLineHeaders\">Test Date: </label>\n\n                <input\n                  className=\"modalInput\"\n                  type=\"date\"\n                  value={testDate}\n                  style={{ width: \"100%\", marginBottom: \"10px\" }}\n                  onChange={(e) => setTestDate(e.target.value)}\n                  min={moment().format(\"YYYY-MM-DD\")}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Select Test</label>\n                <Select\n                  className=\"w-100 siteSelector\"\n                  options={testOptions}\n                  blurInputOnSelect={true}\n                  defaultValue={null}\n                  menuPlacement=\"auto\"\n                  placeholder={`Select`}\n                  value={selectedTest ? selectedTest : null}\n                  onChange={(e) => setSelectedTest(e)}\n                />\n              </div>\n            </div>\n\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Document Files: </label>\n              <MultipleFileInput\n                files={files}\n                setFiles={setFiles}\n                setSelectedFileNames={setSelectedFileNames}\n                selectedFileNames={selectedFileNames}\n                acceptFiles={\".pdf, .csv\"}\n              />\n            </div>\n          </div>\n          <div style={{ marginTop: \"10px\" }}>\n            {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n          </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <Button className=\"modalButtons\" variant=\"secondary\" onClick={() => handleSave()}>\n          Upload\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default LoadOrdersModal;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nconst RedirectLink = ({ pathname, value, children }) => {\n\n  \n  const redirectTo = window.location.pathname.split('/').length === 2 ? `admin/${pathname}` : pathname;\n\n  return (\n    <Link\n      style={{ textDecoration: \"none\", color: \"var(--text-black)\", cursor: \"pointer\" }}\n      to={{\n        pathname: redirectTo,\n        state: value,\n      }}\n    >\n      {children}\n    </Link>\n  );\n};\n\nexport default RedirectLink;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { RESULTS_TEST, SET_SELECTED_TEST } from \"./resultsTestConstant\";\nimport api from \"api\";\nimport { generateRefInterval } from \"utils\";\nimport { TYPE_OF_TEST } from \"constant\";\nimport { getRefInterval } from \"utils\";\nimport { customIsEmpty } from \"util/customLodash\";\nimport { customIsJsonString } from \"util/customLodash\";\nimport { TEST_PANEL_TYPES } from \"constant\";\nimport { getAgeFromDateString } from \"utils\";\n\nexport const setSelectedTestAsync = createAsyncThunk(SET_SELECTED_TEST, async (tests) => {\n  let simpleTestList = [];\n  let detailTestList = [];\n  let panelTests = null;\n\n  const processArray = (array, response) => {\n    return array.reduce((acc, obj) => {\n      const refInterval = generateRefInterval({ ...response, ranges: obj?.ranges?.[0] ?? null });\n\n      if (obj.testType === \"mainTest\") {\n        return acc.concat(obj.targetRanges);\n      } else {\n        // return acc.concat(obj);\n        const { typeOfTest, minValue, maxValue, isAssociatedPanel } = response;\n\n        return acc.concat({\n          ...obj,\n          possibleValues: typeOfTest,\n          refInterval: typeOfTest === \"Qualitative\" ? \"Not Detected\" : refInterval,\n        });\n      }\n    }, []);\n  };\n\n  const formatTestWithPanel = (testData) => {\n    const { targetRanges, typeOfTest } = testData;\n\n    const targetArr = [];\n\n    targetRanges?.forEach((item) => {\n      const refInterval = generateRefInterval({ ranges: item?.ranges?.[0] ?? null });\n\n      const finalTargetObj = {\n        ...item,\n        refInterval: typeOfTest === TYPE_OF_TEST.QUALITATIVE ? \"Not Detected\" : refInterval,\n        typeOfTest,\n      };\n      targetArr.push(finalTargetObj);\n    });\n\n    return targetArr;\n  };\n\n  const processTests = async (testId) => {\n    const testsList = [];\n    const testDetail = await api.getTestTypesByID(testId);\n\n\n    testsList.push(testDetail);\n    // if (testDetail.isAssociatedPanel) {\n    //   const testObj = {\n    //     ...testDetail,\n\n    //     targetRanges: getRefInterval(testDetail.targetRanges, testDetail.typeOfTest),\n    //   };\n    //   testsList.push(testObj);\n    // } else {\n    //   testsList.push({ ...testDetail,  });\n    // }\n\n    return testsList;\n  };\n\n  const getPanelData = async (panelId) => {\n    const panelData = await api.getTestTypesByID(panelId);\n\n    const resultData = await processedPanel(panelData.targetRanges);\n\n    return { panelName: panelData.name, targetRanges: resultData, type: panelData.type };\n  };\n\n  const processedPanel = async (targetRanges) => {\n    const testsList = [];\n\n    for (const targetItem of targetRanges) {\n      if (targetItem.type !== TEST_PANEL_TYPES.PANEL) {\n        try {\n          const testsData = await processTests(targetItem.id);\n          testsList.push(...testsData);\n        } catch (error) {\n          console.error(\"Error processing test:\", error);\n        }\n      } else {\n        const panelResponse = await getPanelData(targetItem.id);\n\n        testsList.push(panelResponse);\n      }\n    }\n\n    return testsList;\n  };\n\n  for (const test of tests) {\n    if (test?.result) {\n      const detailRes = await api.getTestResultDetails({ id: test.id });\n      if (detailRes && !customIsEmpty(detailRes)) {\n        panelTests = {\n          ...detailRes,\n          clientID: test.clientID,\n          siteID: test.siteID,\n          barcode: test?.barcode || \"\",\n        };\n        break;\n      }\n    }\n\n    const testTypeID = test.testTypeID || test?.employee_demographics?.testTypeID;\n\n    const response = await api.getTestTypesByID(testTypeID);\n\n    const patientAge =getAgeFromDateString(test.employee_demographics.dob)\n\n    const patientGender = test.employee_demographics.sex\n\n    if (\n      response.type === TEST_PANEL_TYPES.QUALITATIVE_WITH_PATHOGEN ||\n      response.type === TEST_PANEL_TYPES.QUANTITATIVE_WITH_PATHOGEN ||\n      response.type === TEST_PANEL_TYPES.BOTH \n    ) {\n      const testObjWithPanel = {\n        tests: response.targetRanges,\n        isAssociatedPanel: response.isAssociatedPanel,\n        typeOfTest: response.typeOfTest,\n        id: test.id,\n        type: response.type,\n        testName: response.name,\n        barcode: test?.barcode || \"\",\n        ranges: response?.ranges || null,\n        patientAge,\n        patientGender\n      };\n      panelTests = testObjWithPanel;\n    } else if (\n      response.type === TEST_PANEL_TYPES.QUALITATIVE_WITHOUT_PATHOGEN ||\n      response.type === TEST_PANEL_TYPES.QUANTITATIVE_WITHOUT_PATHOGEN\n    ) {\n      const testObj = {\n        ...response,\n        units: customIsJsonString(response.units) ? response.units : { label: response.units, value: response.units },\n      };\n      const finalTestobj = {\n        tests: testObj,\n        isAssociatedPanel: response.isAssociatedPanel,\n        typeOfTest: response.typeOfTest,\n        type: response.type,\n        id: test.id,\n        barcode: test?.barcode || \"\",\n        ranges: response?.ranges || null,\n        patientAge,\n        patientGender\n      };\n      panelTests = finalTestobj;\n    } else if (response.type === TEST_PANEL_TYPES.PANEL) {\n      const result = await processedPanel(response.targetRanges);\n      const panelFinalData = {\n        panelName: response.name,\n        type: response.type,\n        tests: result,\n        id: test.id,\n        barcode: test?.barcode || \"\",\n        patientAge,\n        patientGender\n      };\n\n      panelTests = panelFinalData;\n    }\n\n    panelTests = { ...panelTests, clientID: test.clientID, siteID: test.siteID };\n  }\n\n  const showDetailModal = !simpleTestList.length && detailTestList.length === 1;\n  const showSimpleModal = simpleTestList.length > 0;\n  const showPanalModal = panelTests !== null;\n\n  return { simpleTestList, detailTestList, panelTests, showDetailModal, showSimpleModal, showPanalModal };\n});\n\nconst initialState = {\n  simpleTestList: null,\n  detailTestList: null,\n  panelTests: null,\n  showDetailModal: false,\n  showSimpleModal: false,\n  showPanalModal: false,\n  listRemovedTest: [],\n  testForResult: null,\n};\n\nconst resultsTestSlice = createSlice({\n  name: RESULTS_TEST,\n  initialState,\n  reducers: {\n    resetStateResultState: () => initialState,\n    setTestIdsToRemove: (state, action) => {\n      state.listRemovedTest = action.payload;\n    },\n    setSimpleResultModal: (state, action) => {\n      state.showSimpleModal = action.payload.showSimpleModal;\n      state.simpleTestList = action.payload.simpleTestList;\n    },\n    setTestForResult: (state, action) => {\n      state.testForResult = action.payload;\n    },\n  },\n  extraReducers: (builder) => {\n    builder.addCase(setSelectedTestAsync.fulfilled, (state, action) => {\n      Object.assign(state, initialState);\n\n      const { simpleTestList, detailTestList, panelTests, showDetailModal, showSimpleModal, showPanalModal } =\n        action.payload;\n\n      state.simpleTestList = simpleTestList;\n      state.detailTestList = detailTestList;\n      state.panelTests = panelTests;\n      state.showDetailModal = showDetailModal;\n      state.showSimpleModal = showSimpleModal;\n      state.showPanalModal = showPanalModal;\n    });\n  },\n});\nexport const { resetStateResultState, setTestIdsToRemove, setSimpleResultModal, setTestForResult } =\n  resultsTestSlice.actions;\nexport default resultsTestSlice.reducer;\n","export const RESULTS_TEST = \"resultTest\";\nexport const SET_SELECTED_TEST = \"resultTest/selectedTest\";\n","import { setSelectedTestAsync } from \"./resultsTestSlice\";\n\nexport const setSelectedTestForResult = (test) => async (dispatch) => {\n    await dispatch(setSelectedTestAsync(test));\n  };","export const showResultTest = (state) => state.resultTest;\n","import React from \"react\";\nimport notesOnIcon from \"assets/img/file-icon.png\";\nimport notesOffIcon from \"assets/img/file-icon-gray.png\";\n\nconst Notes = (props) => {\n  const { note, handleClick, empNotes } = props;\n\n  return (\n    <div className=\"action-exclamation\" onClick={() => handleClick()}>\n      <span\n        className=\"cursor-pointer\"\n        title={note || `${empNotes ? \"Patient Note:\" + empNotes : \"\"}` || \"Add Note\"}\n        style={{\n          borderColor: note ? \"rgb(83 83 232)\" : \"rgb(186 184 184)\",\n        }}\n      >\n        {note || empNotes ? (\n          <img className=\"notesIcon\" src={notesOnIcon} alt=\"notes-on-img\" />\n        ) : (\n          <img className=\"notesIcon\" src={notesOffIcon} alt=\"notes-off-img\" />\n        )}\n      </span>\n    </div>\n  );\n};\n\nexport default Notes;\n","import { useEffect, useRef, useState } from \"react\";\n\nconst useResizeObserver = (ref) => {\n  const [dimensions, setDimensions] = useState(null);\n  const observerRef = useRef(null);\n\n  useEffect(() => {\n    const observer = new ResizeObserver((entries) => {\n      const entry = entries[0];\n      setDimensions(entry.contentRect);\n    });\n\n    observerRef.current = observer;\n\n    if (ref.current) {\n      observer.observe(ref.current);\n    }\n\n    return () => {\n      observer.disconnect();\n    };\n  }, [ref]);\n\n  return dimensions;\n};\n\nexport default useResizeObserver;\n","export const RESULT_PDF = \"result/pdf\";\nexport const RESULT_PDF_URL = \"result/pdf/url\";\nexport const RESULT_REQ_URL = \"result/req/url\";\nexport const RESULT_PDF_BUCKET = \"employee-external-tests\"","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { RESULT_PDF, LAB_ID, CONFIG } from \"constant\";\nimport { Storage } from \"aws-amplify\";\nimport { env, delay } from \"utils\";\nimport { RESULT_PDF_BUCKET, RESULT_PDF_URL, RESULT_REQ_URL } from \"./resultPdfConstant\";\n\n\nconst handleFileError = async ({ error, attempt, maxRetries, retryDelays, rejectWithValue }) => {\n  const status = error?.$metadata?.httpStatusCode || error.status || error.response?.status;\n  const errorName = error?.name;\n\n  const isRetryable =\n    [\"NoSuchKey\", \"AccessDenied\"].includes(errorName) || [403, 404].includes(status);\n\n  if (isRetryable && attempt < maxRetries) {\n    await delay(retryDelays[attempt - 1] || 20000);\n    return \"\";\n  }\n\n  if (status === 403) return \"Access forbidden: Unable to retrieve the file.\"\n  if (status === 404) return \"File not found.\";\n  return \"An unexpected error occurred.\";\n};\n\n\nconst getFilePath = ({ test, isResultPdf }) => {\n  const basePath = `req_form/${env}/${test?.clientID}/${test?.orderNo}`;\n  const combinedPath = test?.isCombinedTest ? `${basePath}/${test?.testName}.pdf` : `${basePath}.pdf`;\n\n  if (CONFIG.whiteLabelID === LAB_ID.inc && !isResultPdf) {\n    return `req_form/${env}/${test?.barcode || test?.orderNo}.pdf`;\n  }\n\n  if (isResultPdf) {\n    const fileName = test?.resultPDF || `${test?.barcode}.pdf`;\n    return test?.testDoneModalCall\n      ? `results/${env}/${test?.clientID}/${test?.sequenceNo}.pdf`\n      : `results/${env}/${test?.clientID}/${fileName}`;\n  }\n\n  return combinedPath;\n};\n\nconst fetchPdf = async ({ test, isResultPdf, maxRetries, retryDelays, rejectWithValue }) => {\n  const filePath = getFilePath({ test, isResultPdf });\n\n  for (let attempt = 1; attempt <= maxRetries; attempt++) {\n    try {\n      // Attempt to download the file\n      await Storage.get(filePath, {\n        download: true,\n        contentDisposition: \"inline\",\n        bucket: RESULT_PDF_BUCKET,\n        contentType: \"application/pdf\",\n      });\n\n      const fileUrl = await Storage.get(filePath, {\n        download: false,\n        contentDisposition: \"inline\",\n        bucket: RESULT_PDF_BUCKET,\n        contentType: \"application/pdf\",\n      });\n\n      const resultPdfTitle = isResultPdf\n        ? `Result For : ${test?.barcode || test?.sequenceNo}`\n        : `Requisition Form - ${test?.barcode || `Order No: ${test?.orderNo}`}`;\n\n      return {\n        resultFileUrl: fileUrl,\n        showPdf: true,\n        resultFileType: \"pdf\",\n        resultPdfTitle,\n        isLoadingResultPdf: false,\n        resultPdfError: null,\n      };\n    } catch (error) {\n      const shouldRetry = await handleFileError({ error, attempt, maxRetries, retryDelays, rejectWithValue });\n      if (shouldRetry){\n        return {\n          resultFileUrl: \"\",\n          showPdf: false,\n          resultFileType: \"pdf\",\n          resultPdfTitle: \"\",\n          isLoadingResultPdf: false,\n          resultPdfError: null,\n        };\n      }\n    }\n  }\n};\n\nconst maxRetries = 3;\n\nconst retryDelays = [10000, 15000, 20000];\n\nexport const showResultPdf = createAsyncThunk(\n  RESULT_PDF_URL,\n  async (test, { rejectWithValue }) => {\n    return await fetchPdf({ test, isResultPdf: true, maxRetries, retryDelays, rejectWithValue });\n  }\n);\n\n\nexport const showResultReqForm = createAsyncThunk(\n  RESULT_REQ_URL,\n  async (test, { rejectWithValue }) => {\n    return await fetchPdf({ test, isResultPdf: false, maxRetries, retryDelays, rejectWithValue });\n  }\n);\n\nconst initialState = {\n  pdfData: {\n    resultFileUrl: \"\",\n    showPdf: false,\n    resultFileType: \"pdf\",\n    resultPdfTitle: \"\",\n    isLoadingResultPdf: false,\n    resultPdfError: null,\n  },\n};\n\nconst resultPdfSlice = createSlice({\n  name: RESULT_PDF,\n  initialState,\n  reducers: {\n    hideResultPdf: () => initialState,\n  },\n  extraReducers: (builder) => {\n    const handlePending = (state) => {\n      state.pdfData.isLoadingResultPdf = true;\n      state.pdfData.resultPdfError = null;\n      state.pdfData.showPdf = true;\n    };\n\n    const handleFulfilled = (state, action) => {\n      state.pdfData = action.payload;\n    };\n\n    const handleRejected = (state, action) => {\n      state.pdfData.isLoadingResultPdf = false;\n      state.pdfData.resultPdfError = action.payload || \"Something went wrong\";\n      state.pdfData.showPdf = false;\n    };\n\n    builder\n      .addCase(showResultPdf.pending, handlePending)\n      .addCase(showResultPdf.fulfilled, handleFulfilled)\n      .addCase(showResultPdf.rejected, handleRejected);\n\n    builder\n      .addCase(showResultReqForm.pending, handlePending)\n      .addCase(showResultReqForm.fulfilled, handleFulfilled)\n      .addCase(showResultReqForm.rejected, handleRejected);\n  },\n});\n\nexport const { hideResultPdf } = resultPdfSlice.actions;\n\nexport default resultPdfSlice.reducer;\n","import { useDispatch } from \"react-redux\";\nimport { getResultColors } from \"../../../utils\";\nimport React, { useContext } from \"react\";\nimport { showResultPdf } from \"store/features/resultPdf/reslutPdfSlice\";\nimport { AppContext } from \"context/app-context\";\n\nconst ResultCell = ({ test }) => {\n  const appContext = useContext(AppContext);\n\n  const parsedResult = appContext.parseResult(test);\n\n  const isSiteUser = !!appContext?.user?.isSite();\n\n  const resultColor = test?.resultColor || getResultColors(test);\n  // const resultColor = \"green\";\n\n  const dispatch = useDispatch();\n\n  const displayPdf = () => {\n    dispatch(showResultPdf({ ...test, isSiteUser }));\n  };\n \n  return (\n    <td\n      className=\"ellipsis\"\n      style={{ textAlign: \"center\" }}\n      title={[\"Cancel\",\"Cancelled\",\"Rejected\"].includes(test.result) ? test.cancelReason : parsedResult}\n    >\n      <span\n        className=\"text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n        onClick={() => displayPdf()}\n        style={{\n          color: resultColor,\n        }}\n      >\n        {parsedResult}\n      </span>\n    </td>\n  );\n};\n\nexport default ResultCell;\n","import React from \"react\";\nconst Status = (props) => {\n  const { type, size, color, title, cssClass, crossIcon, tickIcon, questionIcon } = props;\n  \n  const getCrossType = () => {\n    switch (type) {\n      case \"square\":\n        return \"fa-times\";\n      case \"circle\":\n        return \"fa-times-circle\";\n      default:\n        return \"fa-times-circle\";\n    }\n  };\n  const getTickType = () => {\n    switch (type) {\n      case \"square\":\n        return \"fa-check\";\n      case \"circle\":\n        return \"fa-check-circle\";\n      default:\n        return \"fa-check-circle\";\n    }\n  };\n  const getQuestionType = () => {\n    switch (type) {\n      case \"square\":\n        return \"fa-question\";\n      case \"circle\":\n        return \"fa-question-circle\";\n      default:\n        return \"fa-question-circle\";\n    }\n  };\n  const getColor = () => {\n    switch (color) {\n      case \"#ff5f5f\":\n      case \"maroon\":\n        return \"maroon\";\n      case \"#3939ff\":\n        return \"green\";\n      case \"green\":\n        return \"green\";\n      case \"lightgreen\":\n        return \"lightgreen\";\n      case \"blue\":\n        return \"blue\";\n      case \"yellow\":\n        return \"#FFD300\";\n      case \"orange\":\n        return \"orange\";\n      case \"#95614c\":\n        return \"#95614c\";\n      default:\n        return \"gray\";\n    }\n  };\n  const getSize = () => {\n    switch (size) {\n      case \"sm\":\n        return \"sm\";\n      case \"md\":\n        return \"md\";\n      case \"lg\":\n        return \"lg\";\n      default:\n        return \"md\";\n    }\n  };\n  return (\n    <>\n      {crossIcon && <i className={`${cssClass} fas ${getCrossType()} ${getSize()} ${getColor()}`} title={title} />}\n      {tickIcon && <i className={`${cssClass} fas ${getTickType()} ${getSize()} ${getColor()}`} title={title} />}\n      {questionIcon && (\n        <i className={`${cssClass} fas ${getQuestionType()} ${getSize()} ${getColor()}`} title={title} />\n      )}\n    </>\n  );\n};\nexport default Status;\n","import React, { useState, useEffect } from \"react\";\r\nimport Status from \"components/Status\";\r\n\r\nconst TDStatus = ({ row, item, handleClick }) => {\r\n  const [isActive, setIsActive] = useState(row[item]); // Track value changes\r\n\r\n  useEffect(() => {\r\n    setIsActive(row[item]); \r\n  }, [row[item]]);\r\n\r\n  const onHandleClick = () => {\r\n    if (handleClick) {\r\n      handleClick(row);\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div className=\"star-icon-wrapper\" onClick={onHandleClick}>\r\n      <Status type=\"circle\" size=\"md\" color={isActive ? \"green\" : \"maroon\"} \r\n        tickIcon={isActive} crossIcon={!isActive} />\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default TDStatus;","import api from \"api\";\nimport EditIcon from \"assets/img/edit-icon.png\";\n// import TrashIcon from \"assets/img/trash-icon.png\";\nimport binIcon from \"assets/img/Delete-Icon.svg\";\n\nimport DropdownMenu from \"components/DropdownMenu/DropdownMenu\";\nimport Notes from \"components/Notes/Notes\";\nimport Status from \"components/Status/Status\";\nimport { currencyformatter, TABLE_COLUMN_TYPES, TABLE_QUICK_TOOLS } from \"constant\";\nimport useResizeObserver from \"constants/hooks/useResizeObserver\";\nimport { AppContext } from \"context/app-context\";\nimport { debounce } from \"debounce\";\nimport { useCallback, useEffect, useRef, useState, useContext } from \"react\";\nimport { Form, Table } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport {\n  calculateTdWidth,\n  capitalizeLetter,\n  formattedString,\n  convertToUpper,\n  personalisationInLC,\n  formatDate,\n  formatDateMDY,\n  tdEmail,\n  tdPhone,\n  tdResult,\n  eligibilityMessageColor,\n  eligibilityMessage,\n  formatNumber,\n  toTitleCase,\n  formatLogDate,\n  getResultToShow,\n  detectChangeInPersonalization,\n  getFileNameFromDocuments,\n  nameToTitleCase,\n  capitalizeBCBSOrTitleCase,\n  formatLabelID,\n} from \"utils\";\nimport HeaderItem from \"./HeaderItem\";\nimport { parseTestUnit } from \"utils\";\nimport ResultCell from \"views/GraphQL/TestListCompletedTest/ResultCell\";\nimport TDStatus from \"./TDStatus\";\n\nconst MainTable = (props) => {\n  const {\n    columns,\n    rows,\n    individualRowCssClass,\n    handleSaveDragAndResize,\n    personalisationKey,\n    draggable,\n    resizable,\n    flipSort,\n    sortBy,\n    sortDescending,\n    widthToSkip,\n    tools = [],\n    dropDownOptions,\n    customDropDownOptsForRow,\n    handleDropDownClick,\n    selectedRows = [],\n    handleCellClick = null,\n    cssClass,\n    customColumnCellRenderer,\n    parentKey,\n    trDataWrapperHeader = \"\",\n    isTestDoneModal,\n    strippedTable,\n    headerStyle,\n    isDocList,\n  } = props;\n  const [columnToBeSwapped, setColumnToBeSwapped] = useState(null);\n  const [reset, setReset] = useState(false);\n  const [width, setWidth] = useState(0);\n  const resizeableTable = useRef();\n  const tableWrapperRef = useRef();\n  const appContext = useContext(AppContext);\n\n  //Screen Resolution Change\n  useEffect(() => {\n    handleScreenWidthChange();\n  }, [tableWrapperRef]);\n\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleScreenWidthChange);\n    return () => {\n      window.removeEventListener(\"resize\", handleScreenWidthChange);\n    };\n  });\n\n  const handleScreenWidthChange = () => {\n    if (tableWrapperRef.current) setWidth(tableWrapperRef.current.offsetWidth);\n  };\n\n  const tdWidth = calculateTdWidth(\n    width - (widthToSkip || 0),\n    columns.length > 0 ? columns.filter((p) => p.isCheck).length : 2\n  );\n\n  const handlePersonalization = async (column, data) => {\n    if (!personalisationKey) return;\n\n    const isChanged = detectChangeInPersonalization(column, data);\n\n    if (isChanged) {\n      handleSaveDragAndResize([...data]);\n\n      const personalisationData = personalisationInLC.saveAs(data, personalisationKey);\n\n      await api.saveUserPersonalisation(appContext.user.sub, personalisationData);\n    }\n  };\n\n  useEffect(() => {\n    if (reset) {\n      setTimeout(() => setReset(false), 100);\n    }\n  }, [reset]);\n\n  // Column Resizing\n  let dimensions = null;\n\n  if (resizable) dimensions = useResizeObserver(resizeableTable);\n\n  useEffect(() => {\n    handleScreenWidthChange();\n    if (dimensions) {\n      const props = { columns, whiteSpaceVisible: width - dimensions.width };\n      handleColumnResizerDelay(props);\n    }\n  }, [dimensions]);\n\n  const handleColumnResizerDelay = useCallback(\n    debounce((props) => {\n      handleColumnResizer(props);\n    }, 200),\n    []\n  );\n\n  const handleColumnResizer = (props) => {\n    const { columns, whiteSpaceVisible } = props;\n    if (!resizeableTable || !resizeableTable.current?.childNodes?.length > 0) return;\n    if (!columns || columns.length === 0) return;\n\n    const headerCells = resizeableTable.current?.childNodes[0]?.childNodes[0]?.childNodes;\n    if (!headerCells || !headerCells?.length > 2) return;\n\n    let eachColumnAdditionalWidth = 0;\n    if (Math.floor(whiteSpaceVisible) > 4) {\n      eachColumnAdditionalWidth = Math.floor(whiteSpaceVisible / (headerCells.length - 2));\n    }\n    let personalizeToSave = [...columns];\n    // console.log(\"ColumnsINSIDE\", columns);\n    for (let i = 1; i < headerCells.length - 1; i++) {\n      const colIndex = personalizeToSave.findIndex(\n        (column) => column.title?.toLowerCase() === headerCells[i]?.childNodes[0]?.innerText?.toLowerCase().trim()\n      );\n\n      if (colIndex === -1) continue;\n\n      const obj = {\n        ...personalizeToSave[colIndex],\n        width: headerCells[i].childNodes[0].offsetWidth + eachColumnAdditionalWidth,\n      };\n      personalizeToSave.splice(colIndex, 1, { ...obj });\n    }\n    setReset(true);\n\n    handlePersonalization(columns, personalizeToSave);\n  };\n\n  // Draggable Column\n  const handleDragStart = (e) => {\n    const targetObj =\n      columns.find((col) => col.isCheck && col.title.toLowerCase() === e.target.innerText.toLowerCase()) || null;\n    setColumnToBeSwapped(targetObj);\n  };\n\n  const handleColumnChange = (e) => {\n    const targetDestinationObj = columns.find(\n      (col) => col.isCheck && col.title.toLowerCase() === e.target.innerText.toLowerCase()\n    );\n\n    if (!columnToBeSwapped || !targetDestinationObj) return;\n    if (columnToBeSwapped.id === targetDestinationObj.id) return;\n\n    let personalisationData = [...columns];\n    const subjectIndex = personalisationData.findIndex((col) => col.id === columnToBeSwapped.id);\n    const targetIndex = personalisationData.findIndex((col) => col.id === targetDestinationObj.id);\n\n    const temp = personalisationData.splice(subjectIndex, 1)[0];\n    personalisationData.splice(targetIndex, 0, temp);\n    handlePersonalization(columns, personalisationData);\n  };\n\n  const handleClickCall = (item, row) => {\n    handleCellClick && handleCellClick(item.itemKey, row);\n  };\n\n  const headerAlign = (item) => (item === \"center\" ? \"centered\" : item === \"right\" ? \"right\" : undefined);\n\n  const tdFormat = (item, row, title, rowIndex) => {\n    if (item.itemKey === \"eligibilityStatus\") {\n      const eligMessage = eligibilityMessage(row[item.itemKey], row);\n      if (title) {\n        return eligMessage;\n      }\n\n      return (\n        <div className=\"star-icon-wrapper cursor-pointer\">\n          <Status\n            type=\"circle\"\n            size=\"md\"\n            color={eligibilityMessageColor(eligMessage)}\n            tickIcon={eligibilityMessageColor(eligMessage) === \"green\" ? \"Yes\" : undefined}\n            crossIcon={eligibilityMessageColor(eligMessage) === \"maroon\" ? \"Yes\" : undefined}\n            title={eligMessage}\n          />\n        </div>\n      );\n    }\n\n    if (item.itemKey === \"status\") {\n      if (title) return row[item.itemKey] === \"active\" ? \"Active\" : \"InActive\";\n\n      const isActive = row[item.itemKey] === \"active\";\n\n      return (\n        <div className=\"star-icon-wrapper cursor-pointer\">\n          <Status\n            type=\"circle\"\n            size=\"md\"\n            color={isActive ? \"green\" : \"maroon\"}\n            tickIcon={isActive}\n            crossIcon={!isActive}\n          />\n        </div>\n      );\n    }\n\n    if (item.itemKey === \"serialNo\") {\n      return <div># {rowIndex + 1}</div>;\n    }\n\n    if (item.itemKey === \"firstName\" || item.itemKey === \"lastName\") {\n      return nameToTitleCase(row[item.itemKey] || \"\");\n    }\n\n    //  for payer\n    // if (item.itemKey === \"Name\") {\n    //   return capitalizeBCBSOrTitleCase(row[item.itemKey] || \"\");\n    // }\n\n    if (item.itemKey === \"fileName\") {\n      return getFileNameFromDocuments(row[item.itemKey]);\n    }\n    const rowItemData = row[item.itemKey];\n\n    if (\n      (!rowItemData || rowItemData === \"undefined\") &&\n      item.type !== TABLE_COLUMN_TYPES.currency &&\n      item.type !== TABLE_COLUMN_TYPES.number &&\n      item.type !== TABLE_COLUMN_TYPES.boolean\n    ) {\n      return \"\";\n    }\n\n    switch (item.type) {\n      case TABLE_COLUMN_TYPES.boolean:\n        return <TDStatus row={row} item={item.itemKey} />;\n      case TABLE_COLUMN_TYPES.shortDate:\n        return formatDateMDY(row[item.itemKey]);\n\n      case TABLE_COLUMN_TYPES.longDate:\n        return formatDateMDY(row[item.itemKey]);\n\n      case TABLE_COLUMN_TYPES.dateTime:\n        return formatLogDate(row[item.itemKey]);\n\n      case TABLE_COLUMN_TYPES.currency:\n        return currencyformatter.format(row[item.itemKey] || 0);\n      case TABLE_COLUMN_TYPES.number:\n        return formatNumber(row[item.itemKey] || 0);\n      case TABLE_COLUMN_TYPES.upperCaseText:\n        return convertToUpper(row[item.itemKey] || \"\");\n      case TABLE_COLUMN_TYPES.firstLetterCapital:\n        return formattedString(row[item.itemKey] || \"\");\n      case TABLE_COLUMN_TYPES.labelID:\n        return formatLabelID(row[item.itemKey]);\n      default:\n        // return row[item.itemKey] ? row[item.itemKey] : \"\";\n        return row?.[item.itemKey] ?? \"\";\n    }\n  };\n\n  const renderTd = (item, row, index, rowIndex) => {\n    if (item.customCellRenderer) return customColumnCellRenderer(item, row, index, rowIndex);\n    switch (item.type) {\n      case TABLE_COLUMN_TYPES.fixedValue:\n        return (\n          <td\n            key={`fixed_item_${index}`}\n            // key={item.id}\n            className={`ellipsis ${item.cssClass ?? \"\"}`}\n            style={{\n              textAlign: item.textAlign,\n              textOverflow: item.textOverflow,\n            }}\n            onClick={() => handleClickCall(item, row)}\n          >\n            {item.text}\n          </td>\n        );\n\n      case TABLE_COLUMN_TYPES.json:\n        return <td>{row[item.itemKey][0].value}</td>;\n      case TABLE_COLUMN_TYPES.email:\n        return tdEmail(row[item.itemKey]);\n\n      case TABLE_COLUMN_TYPES.phone:\n        return tdPhone(row[item.itemKey]);\n\n      case TABLE_COLUMN_TYPES.result:\n        return <ResultCell test={row} />;\n\n      default:\n        return (\n          <td\n            // key={item.id}\n            key={`default_item_${index}`}\n            className={`ellipsis ${item.cssClass ?? \"\"}`}\n            style={{\n              textAlign: item.textAlign,\n              textOverflow: item.textOverflow,\n              color: `${item.colorObj ? item.colorObj[row[item.itemKey]] : \"\"}`,\n            }}\n            onClick={() => handleClickCall(item, row)}\n            title={tdFormat(item, row, \"title\")}\n          >\n            {tdFormat(item, row, \"\", rowIndex)}\n          </td>\n        );\n    }\n  };\n  const isQuickToolIncluded = (tools) => {\n    return [TABLE_QUICK_TOOLS.checkbox, TABLE_QUICK_TOOLS.edit, TABLE_QUICK_TOOLS.notes].some((tool) =>\n      tools.includes(TABLE_QUICK_TOOLS[tool])\n    );\n  };\n  function renderTableHeader() {\n    return (\n      tools.length > 0 &&\n      isQuickToolIncluded(tools) && (\n        <th className={`tools-td ${tools.length > 0 ? \"tools-available\" : \"tools-unavailable\"}`} />\n      )\n    );\n  }\n\n  const TableRow = ({ row, index }) => {\n    if (row?.antibioticDivider) {\n      return (\n        <tr\n          key={`${row?.id}_row_${index}`}\n          className={`${individualRowCssClass ? individualRowCssClass(row) : \"trDataWrapper\"}`}\n        >\n          <td colSpan={columns.length + 1} className=\"text-center \" style={{ fontWeight: \"bold\" }}>\n            {row.label}\n          </td>\n        </tr>\n      );\n    }\n\n    return (\n      <tr\n        key={`${row?.id}_row_${index}`}\n        className={`${individualRowCssClass ? individualRowCssClass(row) : \"trDataWrapper\"}`}\n      >\n        {tools.length > 0 && isQuickToolIncluded(tools) && (\n          <td\n            className={`ellipsis tools-td ${tools.length > 0 ? \"tools-available\" : \"tools-unavailable\"}`}\n            style={{\n              minWidth: `${!tools.includes(TABLE_QUICK_TOOLS.delete) && tools.length && tools.length * 33.33}px`,\n            }}\n            // style={{ minWidth: `${    tools .length * 33.33}px` }}\n          >\n            <div className=\"d-flex align-items-center w-100 column-gap-10\">\n              {tools.includes(TABLE_QUICK_TOOLS.checkbox) && (\n                <Form.Check>\n                  <Form.Check.Input\n                    type=\"checkbox\"\n                    checked={selectedRows.indexOf(row?.id) !== -1}\n                    value={row?.id}\n                    onChange={(event) =>\n                      handleCellClick && handleCellClick(TABLE_QUICK_TOOLS.checkbox, row, event, index)\n                    }\n                  />\n                </Form.Check>\n              )}\n              {tools.includes(TABLE_QUICK_TOOLS.edit) && (\n                <img\n                  src={EditIcon}\n                  alt=\"edit icon\"\n                  width=\"18\"\n                  onMouseOver={(e) => {\n                    e.target.style.cursor = \"pointer\";\n                  }}\n                  aria-hidden=\"true\"\n                  id={row?.id}\n                  onClick={(event) => handleCellClick && handleCellClick(TABLE_QUICK_TOOLS.edit, row, event)}\n                />\n              )}\n              {tools.includes(TABLE_QUICK_TOOLS.notes) && (\n                <Notes\n                  note={\n                    typeof row?.note === \"object\"\n                      ? row?.note?.message\n                      : row?.note || row?.notes || row?.employee_demographics?.comment\n                  }\n                  empNotes={typeof row?.note === \"object\" ? row?.note?.message : row?.note}\n                  handleClick={() => handleCellClick && handleCellClick(TABLE_QUICK_TOOLS.notes, row)}\n                />\n              )}\n            </div>\n          </td>\n        )}\n\n        {columns.map((col, colIndex) => col.isCheck && renderTd(col, row, colIndex, index))}\n\n        {(tools.includes(TABLE_QUICK_TOOLS.delete) ||\n          (customDropDownOptsForRow && customDropDownOptsForRow.length > 0) ||\n          (dropDownOptions && dropDownOptions.length > 0)) && (\n          <td\n            className={`icon tools-td text-center ${rows.length === 1 ? \"single-row-dropdown-menu\" : \"\"} ${\n              tools.includes(TABLE_QUICK_TOOLS.delete) || customDropDownOptsForRow\n                ? \"tools-available\"\n                : \"tools-unavailable\"\n            }`}\n          >\n            {((customDropDownOptsForRow && customDropDownOptsForRow.length > 0) ||\n              (dropDownOptions && dropDownOptions.length > 0)) && (\n              <DropdownMenu\n                options={customDropDownOptsForRow ? customDropDownOptsForRow(row) : dropDownOptions}\n                handleDropDownOptions={(type) => handleDropDownClick(type, row)}\n              />\n            )}\n\n            {tools.includes(TABLE_QUICK_TOOLS.delete) && (\n              <img\n                src={binIcon}\n                alt=\"trash icon\"\n                width=\"15\"\n                onMouseLeave={(e) => (e.target.style.color = \"black\")}\n                onMouseOver={(e) => {\n                  e.target.style.cursor = \"pointer\";\n                }}\n                aria-hidden=\"true\"\n                id={row?.id}\n                onClick={(event) => handleCellClick && handleCellClick(TABLE_QUICK_TOOLS.delete, row, event, index)}\n              />\n            )}\n          </td>\n        )}\n\n        {/* <td\n          className={`icon tools-td text-center ${rows.length === 1 ? \"single-row-dropdown-menu\" : \"\"} ${\n            tools.includes(TABLE_QUICK_TOOLS.delete) || customDropDownOptsForRow\n              ? \"tools-available\"\n              : \"tools-unavailable\"\n          }`}\n        >\n          {((customDropDownOptsForRow && customDropDownOptsForRow.length > 0) ||\n            (dropDownOptions && dropDownOptions.length > 0)) && (\n            <DropdownMenu\n              options={customDropDownOptsForRow ? customDropDownOptsForRow(row) : dropDownOptions}\n              handleDropDownOptions={(type) => handleDropDownClick(type, row)}\n            />\n          )}\n\n          {tools.includes(TABLE_QUICK_TOOLS.delete) && (\n            <img\n              src={binIcon}\n              alt=\"trash icon\"\n              width=\"15\"\n              onMouseLeave={(e) => (e.target.style.color = \"black\")}\n              onMouseOver={(e) => {\n                e.target.style.cursor = \"pointer\";\n              }}\n              aria-hidden=\"true\"\n              id={row?.id}\n              onClick={(event) => handleCellClick && handleCellClick(TABLE_QUICK_TOOLS.delete, row, event, index)}\n            />\n          )}\n        </td> */}\n      </tr>\n    );\n  };\n\n  const renderDetails = () => {\n    if (\n      (customDropDownOptsForRow && customDropDownOptsForRow.length > 0) ||\n      (dropDownOptions && dropDownOptions.length > 0)\n    ) {\n      return (\n        <th className={`tools-td text-center ${tools.length > 0 ? \"tools-available\" : \"tools-unavailable\"}`}>\n          {isTestDoneModal ? \"Action\" : \"Details\"}\n        </th>\n      );\n    }\n    if (tools.includes(TABLE_QUICK_TOOLS.delete)) {\n      return <th className={`tools-td text-center ${tools.length > 0 ? \"tools-available\" : \"tools-unavailable\"}`}></th>;\n    }\n  };\n\n  return (\n    <>\n      <div\n        ref={tableWrapperRef}\n        style={{ height: rows.length === 1 ? \"160px\" : \"auto\" }}\n        className={`${isDocList && \"bothScroll\"} table-responsive pendingReleaseTable ${\n          resizable ? \"empClaimTable\" : \"\"\n        } ${cssClass || \"\"}`}\n      >\n        <Table ref={resizeableTable} className={`${strippedTable ? \"table-striped\" : \"separate-border-tr\"}`}>\n          <thead>\n            <tr className={trDataWrapperHeader}>\n              {renderTableHeader()}\n              {columns.map(\n                (item, i) =>\n                  item.isCheck && (\n                    <HeaderItem\n                      key={`${i}_hc`}\n                      draggable={draggable}\n                      width={!resizable && (item.columnWidth || tdWidth)}\n                      // minWidth={resizable && tdWidth}\n                      innerDivWidth={resizable && (reset ? `${item.width}px` : item.width)}\n                      handleDrop={handleColumnChange}\n                      handleDragStart={handleDragStart}\n                      ItemKey={item.itemKey}\n                      title={item.title}\n                      flipSort={flipSort}\n                      sortBy={sortBy}\n                      sortDescending={sortDescending}\n                      aligned={headerAlign(item.textAlign)}\n                      cssClass={resizable ? \"claimTableTH\" : \"\"}\n                      headerStyle={headerStyle}\n                    />\n                  )\n              )}\n\n              {renderDetails()}\n            </tr>\n          </thead>\n          <tbody>\n            {rows &&\n              rows.map((row, index) => {\n                return <TableRow key={`${index}_row`} row={row} index={index} />;\n              })}\n          </tbody>\n        </Table>\n      </div>\n    </>\n  );\n};\n\nexport default MainTable;\n","import React from \"react\";\n\nconst PersonalizationItem = (props) => {\n  const { item, handleCheck } = props;\n  const checkBoxId = `checkbox-${item.id || item?.filterKey || item?.itemKey}`;\n  return (\n    <div className=\"personalizationCheckbox\">\n      <input\n        type=\"checkBox\"\n        id={checkBoxId}\n        onChange={(e) => handleCheck(e)}\n        value={item.itemKey}\n        defaultChecked={item.isCheck}\n      ></input>\n      <label className=\"ml-2\" htmlFor={checkBoxId}>\n        {item.title}\n      </label>\n    </div>\n  );\n};\n\nexport default PersonalizationItem;\n","import React, { useEffect, useState } from \"react\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport PersonalizationItem from \"components/Personalization/PersonalizationItem\";\n\nconst PersonalizationModal = (props) => {\n  const { show, handleClose, handleChange, data } = props;\n  const [personalize, setPersonalize] = useState([]);\n  useEffect(() => {\n    setPersonalize(data.sort((a, b) => a.id - b.id));\n  }, []);\n\n  const handleCheckBox = (event) => {\n    const index = personalize.findIndex((i) => i.itemKey === event.target.value);\n    if (event.target.checked && index !== -1) {\n      personalize[index].isCheck = true;\n      return;\n    }\n    if (index !== -1) personalize[index].isCheck = false;\n  };\n\n  const handleSubmit = () => handleChange(personalize);\n\n  return (\n    <Modal show={show} animation={true} onHide={() => handleClose()} centered size={\"lg\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Personalize\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"mb-3\">\n          {personalize.map((ek, index) => (\n            <PersonalizationItem key={index} handleCheck={handleCheckBox} item={ek} />\n          ))}\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <Button variant=\"primary\" onClick={handleSubmit}>\n          Apply\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default PersonalizationModal;\n","import { CONFIG } from \"constant\";\nimport { formatNumber } from \"utils\";\n\nconst stringData = {\n  clients: CONFIG.isLabType ? \"Patients\" : \"Members\",\n  client: CONFIG.isLabType ? \"Patient\" : \"Member\",\n  importClientDataTitle: CONFIG.isLabType ? \"Import Patient Data\" : \"Import Member Data\",\n  importProcedureDataTitle: CONFIG.isLabType ? \"Import Procedure Code Data\" : \"Import Procedure Code Data\",\n  loadClient: CONFIG.isLabType ? \"Upload\" : \"Load Provider\",\n  selectOneClientError: CONFIG.isLabType ? \"Please select one patient\" : \"Please select one member\",\n  clientTestAvailableUpdate: CONFIG.isLabType\n    ? \"{total} Patient(s) Test Available Successfully updated\"\n    : \"{total} Member(s) Test Available Successfully updated\",\n  createLoginForClient: CONFIG.isLabType ? \"Create a Login for Patient?\" : \"Create a Login for Member?\",\n  deleteClient: \"Confirm Deletion\",\n  updateClient: CONFIG.isLabType ? \"Update Patient Data\" : \"Update Member Data\",\n  memberProfile: CONFIG.isLabType ? \"Patient Profile\" : \"Member Profile\",\n  clientName: CONFIG.isLabType ? \"Patient name\" : \"Member Name\",\n  requestClientRemoval: CONFIG.isLabType\n    ? \"Are you sure, you want to delete the selected {total} patient\"\n    : \"Are you sure, you want to delete the selected {total} member\",\n  filter: \"Filter\",\n  selectAll: \"Select All\",\n  deselectAll: \"Deselect All\",\n  denialClaim: \"Claim Denied\",\n  submitClaim: \"Sent Claim\",\n  createClaim: \"Create Claim\",\n  claimCancel: \"Claim Cancel\",\n  claimAmount: \"Claim Amount\",\n  createSalesPerson: \"Create Sales Person\",\n  activeToggle: \"Active Toggle\",\n  procedureCode: \"Procedure Code\",\n  procedureCodes: \"Procedure Codes\",\n  testDictionary: \"Test Dictionary\",\n  salesPerson: \"Sales Persons\",\n  messageTemplate: \"Message Templates\",\n  createMessageTemplate: \"Create Message Template\",\n  employeeClaim: \"Claims\",\n  diagnosisCode: \"Diagnosis Code\",\n  diagnosisCodes: \"Diagnosis Codes\",\n  patientDocuments: \"Patient Documents\",\n  documentDetails: \"Document Details\",\n  delete: \"Delete\",\n  checkEligibility: \"Check Eligibility\",\n  provider: \"Provider Management\",\n  alertSettings: \"Alert Settings\",\n  settings: \"Settings\",\n  generalSettings: \"General Settings\",\n  createDiagnosis: \"Create New ICD Code\",\n  updateDiagnosis: \"Edit ICD Information\",\n  createCPT: \"Create New CPT Code\",\n  updateCPT: \"Edit CPT Information\",\n  providerCreatedSuccessfully: \"Provider Created Successfully\",\n  providerUpdatedSuccessfully: \"Provider Updated Successfully\",\n  eligibilityDetails: \"Eligibility Details\",\n  createClient: CONFIG.isLabType ? \"New Patient\" : \"Create New Member\",\n  loadClientData: CONFIG.isLabType ? \"Upload Patients\" : \"Load Member Data\",\n  loadProviderData: \"Upload Providers\",\n  createMember: CONFIG.isLabType ? \"New Patient\" : \"Create\",\n  loadOrderData: \"Load Order Data\",\n  importTracking: \"Import Tracking ID\",\n  clientData: CONFIG.isLabType ? \"Patient Data\" : \"Member Data\",\n  personalize: \"Edit Columns\",\n  orderTest: \"Order Test\",\n  orderConfirmationDescription: \"Are you sure you want to place an order for {total} COVID-19 Antigen Tests\",\n  orderSuccessMsg: \"You have successfully placed an order for {total} COVID-19 Antigen tests\",\n  orderFailedMsg:\n    \"You are no longer eligible for this program. Please verify your insurance information or contact your insurance carrier and try again\",\n  multipleOrderSuccessMsg: CONFIG.isLabType\n    ? \"Selected patients have successfully placed an order for {total} COVID-19 Antigen tests\"\n    : \"Selected members have successfully placed an order for {total} COVID-19 Antigen tests\",\n  multipleOrderFailedMsg: CONFIG.isLabType\n    ? \"Selected patients are no longer eligible for this program. Please verify their insurance information or contact insurance carrier and try again\"\n    : \"Selected members are no longer eligible for this program. Please verify their insurance information or contact insurance carrier and try again\",\n  confirmAutoShipment:\n    \"Are you sure you want to enable SafeCamp LTC to auto ship {total} tests to your address on the first of every month\",\n  action: \"Action\",\n  scheduleNotAssigned: \"Schedule Not Assigned\",\n  clientCreatedSuccessfully: CONFIG.isLabType ? \"Patient created successfully\" : \"Member created successfully\",\n  clientUpdatedSuccessfully: CONFIG.isLabType ? \"Patient updated successfully\" : \"Member updated successfully\",\n  clientDeletedSuccessfully: CONFIG.isLabType\n    ? \"You have successfully deleted the selected patient\"\n    : \"You have successfully deleted the selected member\",\n  clientHaveClaims: \"Patient Have Claims \",\n  clientAlreadyExistOnRow: CONFIG.isLabType ? \"Patient Already exist on row\" : \"Member Already exist on row\",\n  facilities: CONFIG.isLabType ? \"Locations\" : \"Facilities/Agents\",\n  dashboard: \"Dash Board\",\n  reports: \"Reports\",\n  claims: \"Claims\",\n  billing: \"Billing\",\n  subagents: \"Sub Agents\",\n  createSubAgents: \"Create New Sub Agent\",\n  createFacility: CONFIG.isLabType ? \"Create New Location\" : \"Create New Facility/Agent\",\n  loadLocationData: CONFIG.isLabType ? \"Import Locations\" : \"Import Facility/Agent\",\n  locCsvSampleName: CONFIG.isLabType ? \"Locations CSV Sample\" : \"Facilities_Agents CSV sample\",\n  SACsvSampleName: \"Sub Agent CSV sample\",\n  eligibilityCsvSampleName: \"eligibility_sample_csv\",\n  orderSampleCsv: \"Order_Sample\",\n  eligibilityStatusFile: \"Eligibility_Status_File\",\n  downloadCsvSample: \"Download CSV Sample\",\n  loadSubAgentsData: \"Import Sub Agents\",\n  eligibilityStatus: \"Eligibility Status\",\n  dashboard: \"Dashboard\",\n  companies: CONFIG.isLabType ? \"Companies\" : \"Clients\",\n  createCompany: CONFIG.isLabType ? \"Create New Company\" : \"Create New Client\",\n  editCompany: CONFIG.isLabType ? \"Edit Company Data\" : \"Edit Client Data\",\n  companyInfo: CONFIG.isLabType ? \"Company Information\" : \"Client Information\",\n  companyName: CONFIG.isLabType ? \"Company Name\" : \"Client Name\",\n  bulkEligibility: \"Bulk Eligibility\",\n  orders: \"Orders\",\n  totalOrders: \"Orders\",\n  submitOrder: \"Submit Order\",\n  close: \"Close\",\n  users: \"System Users\",\n  createAUser: \"Create a User\",\n  crews: \"Crews\",\n  showUnconfirmedUsers: \"Show Unconfirmed Users\",\n  liveSearch: \"Live Search\",\n  exportToExcel: \"Export To Excel\",\n  srNo: \"Sr#\",\n  qtyOrdered: \"Qty Ordered\",\n  orderStatus: \"Order Status\",\n  personalizeColumns: \"Edit Columns\",\n  emailMsgToCreatedClient: \"\",\n  emptyFile: \"Empty File\",\n  failtoimportdata: \"Fail to Import Data\",\n  insuranceProvider: \"Insurance Provider\",\n  selectinsuranceProvider: \"Select Insurance Provider\",\n  insuranceProviderRequired: \"Insurance Provider is required\",\n  procedureCodeRequired: \"Procedure Code is required\",\n  insurances: \"Insurances\",\n  payerManagement: \"Payer Management\",\n  modifireCode: \"Modifier Code\",\n  typeConfirm: \"Please type Confirm\",\n  quanity: \"Quanity\",\n  create: \"Create\",\n  cliList: \"CLIA List\",\n  updateClaimStatus: \"Update Status\",\n  assignTo: \"Assign to\",\n  removeAssignTo: \"Remove Assign\",\n  addCli: \"Add CLIA\",\n  update: \"Update\",\n  Eligibility: \"Eligibility\",\n  coverageDetails: \"Coverage Details\",\n  labClient: \"Lab Clients\",\n  postPayment: \"Process Payment\",\n  claimInvoice: \"Claim Invoices\",\n  cancelled: \"Cancelled\",\n  cancel: \"Cancel\",\n  receiveTest: \"Receive Test\",\n  resultFile: \"Result File\",\n  referenceLab: \"Reference Lab\",\n};\n\nexport const t = (key, obj) => {\n  let val = stringData[key];\n  if (obj) {\n    Object.entries(obj).forEach(([key, value]) => {\n      val = val.replace(`{${key}}`, formatNumber(value));\n    });\n  }\n  return val;\n};\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { CONFIG } from \"constant\";\nimport api from \"../../../api\";\nimport {\n  emailMsgToCreatedMember,\n  formatEmployeesData,\n  formatTimeZone,\n  patientDataInLocalStorage,\n} from \"../../../utils\";\nimport {\n  EMPLOYEE,\n  EMPLOYEE_CREATE,\n  EMPLOYEE_DELETE,\n  EMPLOYEE_FETCH,\n  EMPLOYEE_FETCH_RECORD,\n  EMPLPLOYEE_UPDATE,\n} from \"./employeesConstant\";\nimport { setMessage } from \"../general/generalAction\";\nimport { t } from \"stringConstants\";\nimport { MESSAGE_MODES, CUSTOM_INS } from \"constant\";\nimport { EmptyUserObj } from \"constant\";\n\nconst nestedFilter = (targetArray, filters) => {\n  if (Object.keys(filters).length === 0) return targetArray;\n  const filterKeys = Object.keys(filters);\n  //filters main array of objects\n  const models = targetArray.filter((obj) => {\n    //goes through each key being filtered for\n    return filterKeys.every((key) => {\n      if (!filters[key].length && !Object.keys(filters[key]).length) {\n        return true;\n      }\n      if (key === \"updatedAt\" || key === \"createdAt\") {\n        return new Date(obj[key]) > filters[key].startDate._d && new Date(obj[key]) < filters[key].endDate._d;\n      }\n      if (key === \"First Name\") {\n        return obj.firstName && obj.firstName.toLowerCase().includes(filters[key].toLowerCase());\n      }\n\n      if (key === \"Last Name\") {\n        return obj.lastName && obj.lastName.toLowerCase().includes(filters[key].toLowerCase());\n      }\n\n      if (key === \"scheduleID\") {\n        return obj.scheduleID && (obj.scheduleID === filters[key] || obj.scheduleLinked.indexOf(filters[key]) !== -1);\n      }\n      if (key === \"department\") {\n        return obj.department && obj.department === filters[key];\n      }\n      if (key === \"isSchedule\") {\n        return (obj.isSchedule ? obj.isSchedule : 0) == filters[key];\n      }\n      if (key === \"isVaccinated\") {\n        return (obj.isVaccinated ? 1 : 0).toString() === filter[key];\n      }\n      if (key === \"qaDone\") {\n        return obj.qaDone === filters[key];\n      }\n      if (key === \"autoShipment\") {\n        return obj.autoShipment == filters[key];\n      }\n      if (key === \"testDone\") {\n        return obj.testDone === filter[key];\n      }\n      if (key === \"note\") {\n        if (filters[key] === \"1\" && obj.note) return true;\n        if (filters[key] === \"0\") return true;\n      }\n      if (key === \"eligibilityStatus\") {\n        const val = obj[key]?.message === \"Eligibile\" ? \"eligibile\" : obj[key] ? \"invalid\" : \"not checked\";\n        return val && val.toString() === filters[key];\n      }\n      if (key === \"testOrdered\" || key === \"testAvailable\") {\n        return obj[key].toString() === filters[key];\n      }\n      if (key === \"empTZ\") {\n        return formatTimeZone(obj[key]).toLowerCase().includes(filters[key].toLowerCase());\n      }\n      if (key === \"checkIn\") {\n        return obj.checkIn === filters[key];\n        // return new Date(obj.checkIn) > filters[key].startDate._d && new Date(obj.checkIn) < filters[key].endDate._d;\n      }\n      if (key === \"payerId\") {\n        return filters[key].includes(obj.insuranceCompany);\n      }\n      if (key === \"secondaryInsurance\") {\n        return filters[key].includes(obj.secondaryInsurance);\n      }\n      if ((key === \"programName\" || key === \"zoneColor\") && filters[key] && filters[key].length > 0) {\n        return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n      }\n      if (key === \"status\") {\n        return filters[key] === obj.status;\n      }\n      if (key === \"Blank\" && filters[key].length > 0) {\n        return filters[key].some((f) => !obj[PARSE_FILTER_KEY_NAME[f]]);\n      }\n      return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n    });\n  });\n  return models;\n};\n\n// Async thunk to fetch all employees\nexport const fetchAllEmployees = createAsyncThunk(EMPLOYEE_FETCH, async (_, { getState }) => {\n  const response = await api.getEmployees();\n\n  const [subAgents, locations, clients, providers] = [\n    getState().subAgents.subAgents,\n    getState().locations.locations,\n    getState().clients.clients,\n    getState().providers.providers,\n  ];\n\n  const emps = formatEmployeesData(response, subAgents || [], locations || [], clients || [], providers || []);\n  return emps;\n});\n// External email Send Function\n\nconst sendEmailToMember = async (newUser) => {\n  try {\n    const message = emailMsgToCreatedMember(newUser.firstName, newUser.medicalNo, newUser.password);\n\n    await api.sendEmail([{ email: newUser.email, subject: \"SafeCamp LTC Team\", msg: message }]);\n  } catch (error) {\n    console.log(\"ERROR createUser: \", error);\n  }\n};\n\n// Async thunk to create a employee\nexport const createEmployeeAsync = createAsyncThunk(EMPLOYEE_CREATE, async (employee, { getState, dispatch }) => {\n  const user = getState().auth.user;\n  const documents = getState().documents.documents;\n  const result = await api.newEmployee(employee, null, user);\n\n  // Create Patient in LIS\n  if (result.res) {\n    await api.newPatientCreateAPI(result.res);\n  }\n  // Check Manual Eligibility on create Patient\n  if (result.res && !employee.eEligibility && !CUSTOM_INS.includes(result.res.insuranceCompany)) {\n    await api.checkManualBulkEligibility([result.res], user);\n  }\n\n  // add Logs for Eligibility\n  if (result.res && employee.eligibilityID) {\n    await api.updateLogs({ employeeID: result.res.id, id: employee.eligibilityID });\n  }\n  if (documents.length > 0) {\n    const newDocs = documents.filter((f) => !f.employeeID);\n    if (newDocs.length > 0) {\n      const modifyDocs = newDocs.map((m) => ({ ...m, employeeID: result.res.id }));\n      if (modifyDocs && modifyDocs.length > 0) await api.newDocumentCreateAPI(modifyDocs);\n    }\n  }\n\n  const [subAgents, locations, clients, providers] = [\n    getState().subAgents.subAgents,\n    getState().locations.locations,\n    getState().clients.clients,\n    getState().providers.providers,\n  ];\n\n  // Format Employees Data\n  const emps = formatEmployeesData([result.res], subAgents || [], locations || [], clients || [], providers || []);\n  dispatch(setMessage(t(\"clientCreatedSuccessfully\"), MESSAGE_MODES.success));\n  return emps[0];\n});\n\n//Async thunk to Fetch user employee\nexport const fetchEmployeeRecord = createAsyncThunk(EMPLOYEE_FETCH_RECORD, async (user) => {\n  const item = await api.getLoggedInUserEmployeeID(null, user.preferred_username);\n\n  return item;\n});\n\n// Async thunk to update a employee\nexport const updateEmployeeAsync = createAsyncThunk(EMPLPLOYEE_UPDATE, async (employee, { getState, dispatch }) => {\n  const user = getState().auth.user;\n  const response = await api.updateEmployee(employee, user);\n\n  if (response.res) {\n    await api.patientUpdateAPI(response.res);\n  }\n\n  const [subAgents, locations, clients, providers] = [\n    getState().subAgents.subAgents,\n    getState().locations.locations,\n    getState().clients.clients,\n    getState().providers.providers,\n  ];\n  const emps = formatEmployeesData([response.res], subAgents || [], locations || [], clients || [], providers || []);\n\n  if (!employee.onAlert) dispatch(setMessage(t(\"clientUpdatedSuccessfully\"), MESSAGE_MODES.success));\n\n  return emps[0];\n});\n\n// Async thunk to delete a employee\nexport const deleteEmployeeAsync = createAsyncThunk(EMPLOYEE_DELETE, async (employeeId, { getState }) => {\n  const user = getState().auth.user;\n  const employees = getState().employees.employees;\n  const emp = employees.find((f) => f.id === employeeId);\n  const response = await api.deleteEmployee(employeeId, user);\n  if (emp.loginID && !CONFIG.isLabType) await api.deleteUser(emp.loginID);\n  return employeeId;\n});\n\nconst employeeSlice = createSlice({\n  name: EMPLOYEE,\n  initialState: {\n    employees: [],\n    filteredEmployees: [],\n    proxyRelations: [],\n    employeesFilter: {},\n    employeeRecord: null,\n    openCreator: false,\n    newUser: EmptyUserObj,\n    selectedEmployeeForTest: []\n  },\n  reducers: {\n    setFilteredEmployees: (state, action) => {\n      state.filteredEmployees = action.payload;\n    },\n    setProxyRelations: (state, action) => {\n      state.proxyRelations = action.payload;\n    },\n    setOpenCreator: (state, action) => {\n      state.openCreator = action.payload;\n    },\n    setNewUser: (state, action) => {\n      state.newUser = action.payload;\n    },\n    setEmployeesFilter: (state, action) => {\n      state.employeesFilter = action.payload;\n    },\n    setSelectedEmployeeForTest: (state, action) => {\n      state.selectedEmployeeForTest = action.payload;\n    },\n    updateTestAvailableQty: (state, action) => {\n      const updateEmps = state.employees.map((m) => {\n        if (action.payload.Ids.includes(m.id)) {\n          return { ...m, testAvailable: action.payload.testQty };\n        }\n        return { ...m };\n      });\n      const filterUpdateEmps = state.filteredEmployees.map((m) => {\n        if (action.payload.Ids.includes(m.id)) {\n          return { ...m, testAvailable: action.payload.testQty };\n        }\n        return { ...m };\n      });\n      state.employees = updateEmps;\n      state.filteredEmployees = filterUpdateEmps;\n    },\n    updateNotes: (state, action) => {\n      const data = action.payload;\n      const emp = state.employees.find((f) => f.id === data.id);\n      emp[\"note\"] = data.note;\n      emp.status = data.status;\n      if (data.status === \"inactive\") {\n        emp.testAvailable = 0;\n      }\n      emp.noteAddedBy = data.userName;\n      emp.updatedBy = data.userID;\n      emp.updatedByName = data.userName;\n\n      const existingemployeeIndex = state.employees.findIndex((employee) => employee.id === emp.id);\n      const existingFilteremployeeIndex = state.filteredEmployees.findIndex((employee) => employee.id === emp.id);\n      if (existingemployeeIndex !== -1) {\n        state.employees[existingemployeeIndex] = emp;\n      }\n      if (existingFilteremployeeIndex !== -1) {\n        state.filteredEmployees[existingFilteremployeeIndex] = emp;\n      }\n    },\n    updateEmployeeFromClaim: (state, action) => {\n      const updatedemployee = action.payload;\n      const existingemployeeIndex = state.employees.findIndex((employee) => employee.id === updatedemployee?.id);\n      const existingFilteremployeeIndex = state.filteredEmployees.findIndex(\n        (employee) => employee.id === updatedemployee?.id\n      );\n      if (existingemployeeIndex !== -1) {\n        state.employees[existingemployeeIndex] = updatedemployee;\n      }\n      if (existingFilteremployeeIndex !== -1) {\n        state.filteredEmployees[existingFilteremployeeIndex] = updatedemployee;\n      }\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchAllEmployees.fulfilled, (state, action) => {\n        state.employees = action.payload;\n        state.filteredEmployees = nestedFilter(action.payload, state.employeesFilter);\n      })\n      .addCase(createEmployeeAsync.fulfilled, (state, action) => {\n        const filteredEmployees = [...state.filteredEmployees];\n        state.employees.unshift(action.payload);\n        filteredEmployees.unshift(action.payload);\n        state.filteredEmployees = nestedFilter(filteredEmployees, state.employeesFilter);\n      })\n      .addCase(updateEmployeeAsync.fulfilled, (state, action) => {\n        const updatedemployee = action.payload;\n        const existingemployeeIndex = state.employees.findIndex((employee) => employee.id === updatedemployee.id);\n        const existingFilteremployeeIndex = state.filteredEmployees.findIndex(\n          (employee) => employee.id === updatedemployee.id\n        );\n        if (existingemployeeIndex !== -1) {\n          state.employees[existingemployeeIndex] = updatedemployee;\n        }\n        if (existingFilteremployeeIndex !== -1) {\n          state.filteredEmployees[existingFilteremployeeIndex] = updatedemployee;\n        }\n        state.filteredEmployees = nestedFilter(state.filteredEmployees, state.employeesFilter);\n      })\n      .addCase(deleteEmployeeAsync.fulfilled, (state, action) => {\n        const deletedemployeeId = action.payload;\n        state.employees = state.employees.filter((employee) => employee.id !== deletedemployeeId);\n        state.filteredEmployees = state.filteredEmployees.filter((emp) => emp.id !== deletedemployeeId);\n      })\n      .addCase(fetchEmployeeRecord.fulfilled, (state, action) => {\n        patientDataInLocalStorage.save(action.payload);\n        state.employeeRecord = action.payload;\n      });\n  },\n});\n\nexport const {\n  setFilteredEmployees,\n  updateNotes,\n  updateTestAvailableQty,\n  setOpenCreator,\n  setNewUser,\n  setEmployeesFilter,\n  updateEmployeeFromClaim,\n  setProxyRelations,\n  setSelectedEmployeeForTest\n} = employeeSlice.actions;\n\nexport default employeeSlice.reducer;\n","export const EMPLOYEE = \"employee\";\n\nexport const EMPLOYEE_FETCH = \"employee/fetchAllEmployees\";\n\nexport const EMPLOYEE_FETCH_RECORD = \"employee/fetchEmployeeRecord\";\n\nexport const EMPLOYEE_CREATE = \"employee/createEmployee\";\n\nexport const EMPLPLOYEE_UPDATE = \"employee/updateEmployee\";\n\nexport const EMPLOYEE_DELETE = \"employee/deleteEmployee\";\n","import React, { useState, useEffect } from \"react\";\nimport { Card, Col, Row, Table } from \"react-bootstrap\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport api from \"api\";\nimport { formatDateMDY } from \"utils\";\nimport Loader from \"components/Loader/Loader\";\n\nconst PreviousNotes = (props) => {\n  const { id, user } = props;\n  const [items, setItems] = useState([]);\n  const [loading, setLoading] = useState(false);\n\n  const loadData = async () => {\n    setLoading(true);\n    const logs = await api.getEmployeeLogs(id);\n\n    setItems(\n      logs\n        .filter(\n          (f) =>\n            (f.eventType === \"MemberUpdated\" || f.eventType === \"ClaimUpdated\") &&\n            f.changeObject &&\n            f.changeObject.newRecord?.note?.S\n        )\n        .sort((a, b) => (a.createdAt > b.createdAt ? -1 : a.createdAt < b.createdAt ? 1 : 0))\n    );\n    setLoading(false);\n  };\n\n  //   useEffect(() => {\n  //     loadData();\n  //   }, []);\n\n  const TableRow = ({ log, index }) => {\n    const obj = log.changeObject.newRecord;\n    return (\n      <tr>\n        <td>{index + 1}</td>\n        <td className=\"w-15\">{formatDateMDY(log.createdAt)}</td>\n\n        <td className=\"ellipsis w-50\" style={{ textAlign: \"center\" }} title={obj.note?.S || \"\"}>\n          {obj.note?.S || \"\"}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={obj.noteAddedBy?.S || \"System\"}>\n          {obj.noteAddedBy?.S || \"System\"}\n        </td>\n\n        {/* <td\n          onClick={async () => {\n            await api.deleteLogRecord(log.id);\n          }}\n        >\n          <i className=\"fas fa-trash cursor-pointer\" />\n        </td> */}\n      </tr>\n    );\n  };\n\n  if (loading) return <Loader />;\n\n  if (items.length > 0) {\n    return (\n      <Row>\n        <Col md=\"12\">\n          <Card className=\"strpied-tabled-with-hover\">\n            <Card.Header className=\"fw-bold\">Previous Note's</Card.Header>\n            <Card.Body>\n              <div className=\"table-responsive\">\n                <Table className=\"table\">\n                  <thead>\n                    <tr>\n                      <th className=\"ellipsis w-10\">SQ.</th>\n                      <th className=\"ellipsis\">DATE</th>\n                      {/* {/* <th className=\"border-0 centered\">Action</th>  */}\n                      <th className=\"border-0 centered ellipsis w-50\">NOTE</th>\n                      <th className=\"border-0 centered ellipsis w-30\">USER NAME</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {items.map((item, i) => {\n                      return <TableRow key={i} index={i} log={item} />;\n                    })}\n                  </tbody>\n                </Table>\n              </div>\n            </Card.Body>\n          </Card>\n        </Col>\n      </Row>\n    );\n  }\n\n  return <></>;\n};\n\nexport default PreviousNotes;\n","import api from \"api\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport Loader from \"components/Loader/Loader\";\nimport { NOTES_MAX_CHARACTER_LENGTH } from \"constant\";\nimport moment from \"moment\";\nimport { useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport PreviousNotes from \"./PreviousNotes\";\n\nconst PendingOrderNoteModal = (props) => {\n  const { data, handleClose, user } = props;\n\n  // Initialize notes for all data objects\n  const initialNotes = data.reduce((acc, item) => {\n    acc[item.id] = item?.employee_demographics?.comment || \"\";\n    return acc;\n  }, {});\n\n  const [notes, setNotes] = useState(initialNotes);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n\n  const onHandleSave = async () => {\n    setLoading(true);\n    const promises = data.map(async (item) => {\n      const obj = {\n        id: item.id,\n        note: notes[item.id],\n        updatedBy: user.sub,\n        updatedByName: user.name,\n      };\n\n      try {\n        const { employee_demographics } = item;\n        const demos =\n          typeof employee_demographics === \"string\" ? JSON.parse(employee_demographics) : employee_demographics;\n        demos.comment = notes[item.id];\n        const objToUpdate = { employee_demographics: JSON.stringify(demos) };\n\n        await api.updateTest(obj.id, objToUpdate);\n      } catch (err) {\n        console.log(\"Error updating note for item ID:\", item.id, err);\n      }\n    });\n\n    try {\n      await Promise.all(promises);\n      setLoading(false);\n      handleClose();\n    } catch (err) {\n      console.log(\"Error:-\", err);\n      setError(\"An error occurred while saving notes.\");\n      setLoading(false);\n    }\n  };\n\n  const handleNoteChange = (id, value) => {\n    setNotes((prevNotes) => ({\n      ...prevNotes,\n      [id]: value,\n    }));\n  };\n\n  return (\n    <Modal show backdrop=\"static\" className=\"second-modal\" onHide={handleClose} animation={true} size={\"lg\"} scrollable>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\">Comment</Modal.Title>\n      </Modal.Header>\n      <Modal.Body>\n        {data.map((item) => (\n          <div key={item.id} className=\"row textAreaMessageInput\">\n            <div className=\"col-12 mb-3\">\n              <textarea\n                placeholder={`Write a comment for ${item.firstName} ${item.lastName}`}\n                className=\"MessageInput\"\n                value={notes[item.id]}\n                onChange={(e) => handleNoteChange(item.id, e.target.value)}\n                maxLength={NOTES_MAX_CHARACTER_LENGTH}\n              />\n            </div>\n            <PreviousNotes id={item.id} user={user} />\n          </div>\n        ))}\n        <div style={{ minHeight: \"3vh\" }}>\n          {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button\n          style={{ marginBottom: 10 }}\n          variant=\"primary\"\n          className=\"modalButtons headerButton btn-fill\"\n          onClick={handleClose}\n        >\n          Close\n        </Button>\n        <div className=\"d-flex\">\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={onHandleSave}\n          >\n            Save\n          </Button>\n        </div>\n        {loading && <Loader />}\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default PendingOrderNoteModal;\n","import React, { useState, useContext, useMemo, useRef } from \"react\";\n\nimport { Button, Card, Container, Row, Col } from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { Link } from \"react-router-dom\";\n\nimport { PDFViewer } from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport Filter from \"components/Filter\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport Loader from \"components/Loader/Loader\";\nimport { AppContext } from \"context/app-context\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport { PAGE_LIMIT, IR_COLUMN_INDEX, RECEIVED_BYLAB, LAB_ID } from \"constant\";\nimport TimeFilter from \"components/TimeFilter\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport {\n  changeSort,\n  getCrewsName,\n  formatTest,\n  formatPhoneNumber,\n  setPhoneNo,\n  calculateTdWidth,\n  sortTestList,\n  sortingFilterInLC,\n  formatUTCDate,\n  removeSpecialCharacters,\n  convertToLower,\n  isAllowToArchive,\n  isTenDigitNumber,\n  downloadDataAsCSV,\n  parseJSONObject,\n  capitalizeLetter,\n  getClientSpecificString,\n  formattedString,\n  parseResultDataToJsonForAlta,\n  isLocalhost,\n} from \"utils\";\nimport ContactInfo from \"components/Modal/ContactInfo\";\nimport FilterSelect from \"components/FilterSelect\";\nimport TestSubmitModal from \"components/Modal/TestSubmitModal\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport TestLogsModal from \"components/Modal/TestLogsModal\";\nimport ChangeTestLabModal from \"components/Modal/ChangeTestLabModal\";\nimport moment from \"moment\";\nimport { useInitialRender } from \"components/useInitialRender\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\nimport Icon from \"components/Icon\";\nimport { stringConstant } from \"constant\";\nimport { CONFIG } from \"constant\";\nimport ImportResultModal from \"components/Modal/ImportResultModal\";\nimport ResultModal from \"components/ResultStatus/ResultModal\";\nimport SequenceNo from \"components/SequenceNo\";\nimport EditAccessionNoModal from \"components/Modal/EditAccessionNoModal\";\nimport { TEST_EMPTY_OBJECT } from \"constant\";\nimport TestModal from \"components/Modal/TestModal\";\n\nimport { getValidName } from \"utils\";\nimport { GET_CUST_COLOR } from \"constant\";\nimport LoadOrdersModal from \"views/Order/LoadOrdersModal\";\nimport { ADMIN_USER } from \"constant\";\nimport RedirectLink from \"components/RedirectLink\";\nimport { setSelectedTestForResult } from \"store/features/resultsTests/resultsTestAction\";\nimport { setSimpleResultModal, setTestForResult } from \"store/features/resultsTests/resultsTestSlice\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showResultTest } from \"store/features/resultsTests/resultsTestSelectors\";\nimport MainTable from \"components/Table/MainTable\";\nimport { PENDING_RESULT_PERSONALIZE } from \"constants/personalization\";\nimport { TABLE_QUICK_TOOLS } from \"constant\";\nimport { PERSONALISATION_KEY, PENDING_RESULTS, MESSAGE_MODES } from \"constant\";\nimport { personalisationInLC } from \"utils\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport { toTitleCase } from \"utils\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport { t } from \"stringConstants\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { setLoader } from \"store/features/general/generalSlice\";\nimport { updateNotes } from \"store/features/employees/employeesSlice\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport PendingOrderNoteModal from \"components/Notes/pendingOrderNoteModal\";\nimport { formatDateMDY } from \"utils\";\nimport { BIO_LAB_ID } from \"constant\";\nimport { TEST_STATUS_COLOR } from \"constant\";\nimport { fetchGeneralSettings } from \"store/features/testDictionary/testDictionarySlice\";\nimport { processAltaResultSamples } from \"utils\";\n\nconst UnprocessedTestsApi = () => {\n  const [tests, setTests] = useState([]);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [labs, setLabs] = useState([]);\n  const [sites, setSites] = useState([]);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [triggerFilter, setTriggerFilter] = useState();\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [loading, setLoading] = useState(false);\n  const [showAlert, setShowAlert] = useState(false);\n  const [importStatus, setImportStatus] = useState();\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [openConfirmation, setOpenConfirmation] = useState(false);\n  const [showLabChangeModal, setShowLabChangeModal] = useState(false);\n  const [modalShowResult, setModalShowResult] = useState(false);\n  const permission = useSelector(userGivenPermission);\n  const [noteModal, setNotesModal] = useState(false);\n  const loginUser = useSelector(selectLoginUser);\n  const [cancelTestData, setCancelTestsData] = useState({ isConfirm: false, reason: \"\" });\n\n  const [selectedTests, setSelectedTests] = useState([]);\n\n  const [showResultModal, setShowResultModal] = useState(false);\n\n  const [showUpdateResultModal, setShowUpdateResultModal] = useState(false);\n\n  const { listRemovedTest } = useSelector(showResultTest);\n\n  const [personalize, setPersonalize] = useState([]);\n  const [searchTerms, setSearchTerms] = useState([]);\n  const [filterTabIndex, setFilterTabIndex] = useState(0);\n\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n\n  const [uploadResultSummary, setUploadResultSummary] = useState(null);\n  const [editAccessionNo, setEditAccessionNo] = useState(null);\n  const [selectedTest, setSelectedTest] = useState([]);\n  const [newTestCreate, setTestCreate] = useState(_.cloneDeep(TEST_EMPTY_OBJECT));\n  const [openCreator, setOpenCreator] = useState(false);\n  const [openLoadOrdersModal, setLoadOrderModal] = useState(false);\n  const [checkedPage, setCheckedPage] = useState([]);\n  const { filterDates } = TimeFilter;\n  const initialRender = useInitialRender();\n  const location = useLocation();\n  const history = useHistory();\n  const waitingResultCall = location.pathname.includes(\"senttest\") ? true : false;\n  const appContext = useContext(AppContext);\n\n  const dispatch = useDispatch();\n  const filterRef = useRef(filter);\n\n  // const searchTerms = CONFIG.isWhiteLabel\n  //   ? [\n  //     \"First Name\",\n  //     \"Last Name\",\n  //     \"Date of Birth\",\n  //     \"Email\",\n  //     \"Phone\",\n  //     `${stringConstant.show}`,\n  //     \"Test Type\",\n  //     `${stringConstant.sequenceNo}`,\n  //     \"Tester\",\n  //     \"Custody Status\",\n  //     \"Referring Physician\",\n  //   ]\n  //   : [\n  //     \"First Name\",\n  //     \"Last Name\",\n  //     \"Date of Birth\",\n  //     \"Email\",\n  //     \"Phone\",\n  //     \"Client\",\n  //     `${stringConstant.show}`,\n  //     \"Lab\",\n  //     \"Test Status\",\n  //     \"Test Type\",\n  //     `${stringConstant.sequenceNo}`,\n  //     \"Tester\",\n  //     \"isVaccinated\",\n  //     \"White Glove\",\n  //     \"Pattern\",\n  //     \"Capacity\",\n  //   ];\n\n  // const searchTerms = useMemo(() => {\n  //   return PENDING_RESULT_PERSONALIZE.map((item) => item.title);\n  // }, [PENDING_RESULT_PERSONALIZE]);\n\n  const selectedItem = CONFIG.isWhiteLabel\n    ? [\n        \"createdAt\",\n        \"firstName\",\n        \"lastName\",\n        \"dob\",\n        \"email\",\n        \"phoneNumber\",\n        \"siteID\",\n        \"status\",\n        \"test_type\",\n        `${stringConstant.accession_no}`,\n        \"tester_name\",\n      ]\n    : [\n        \"createdAt\",\n        \"firstName\",\n        \"lastName\",\n        \"dob\",\n        \"email\",\n        \"phoneNumber\",\n        \"clientID\",\n        \"siteID\",\n        \"labID\",\n        \"status\",\n        \"test_type\",\n        `${stringConstant.accession_no}`,\n        \"tester_name\",\n        \"isVaccinated\",\n        \"employeeType\",\n        \"whiteGlove\",\n        \"patternTestAnswer\",\n      ];\n\n  const displayOwner = (test) => {\n    let displayedId = test.owner.substr(-12);\n    return displayedId;\n  };\n\n  const defaultConfig = useMemo(() => {\n    return getClientSpecificString();\n  }, []);\n\n  const handleCloseCreateTest = () => {\n    setTestCreate(_.cloneDeep(TEST_EMPTY_OBJECT));\n    setSelectedTest([]);\n    setOpenCreator(false);\n  };\n\n  const handleOpenCreateTest = () => {\n    // set the created At date when open the test Modal\n    let newObjValue = { ...TEST_EMPTY_OBJECT, createdAt: moment().format(\"YYYY-MM-DDTHH:mm\") };\n\n    // if any test is selected to clone the test data\n    if (selectedTest && selectedTest.length > 0) {\n      let selectedUser = { ...selectedTest[0] };\n      const emptyObjectKeys = Object.keys(TEST_EMPTY_OBJECT);\n      for (const objKey of emptyObjectKeys) {\n        if (objKey === \"sequenceNo\") continue;\n        if (objKey == \"employee_demographics\") {\n          let demographicObj =\n            typeof selectedUser[objKey] === \"string\" ? JSON.parse(selectedUser[objKey]) : selectedUser[objKey];\n          newObjValue[objKey] = { ...demographicObj, phoneNumber: selectedUser[\"phoneNumber\"] };\n          if (selectedUser[\"dob\"]) {\n            newObjValue[objKey] = { ...demographicObj, dob: moment(selectedUser[\"dob\"]).format(\"MMDDYYYY\") };\n          }\n        } else {\n          newObjValue[objKey] = selectedUser[objKey];\n        }\n      }\n    }\n    setTestCreate(newObjValue);\n    setOpenCreator(true);\n  };\n\n  const createTest = async (testData) => {\n    // create test\n    testData = {\n      ...testData,\n      submittedByName: appContext?.user?.name,\n      createdBy: appContext?.user?.sub,\n      tester_name: appContext?.user?.name,\n    };\n\n    // Lab Check barcode is active or not\n    const checkLab = labs?.find((item) => item.id === testData.labID && item.barCodeProvided);\n    if (checkLab && checkLab.id) {\n      let barcode = await API.getLabProvidedBarCode(checkLab.id);\n      if (barcode) {\n        testData = { ...testData, barcode };\n      }\n    }\n\n    let newTest = await GQAPI.createTest(testData);\n    setLoading(false);\n    if (newTest) {\n      appContext.showSuccessMessage(\"Test created successfully\");\n      handleCloseCreateTest();\n    } else {\n      appContext.showErrorMessage(\"Test can't be created\");\n    }\n  };\n  const createMoreInfo = (type, id) => {\n    let infoObj = null;\n    if (type === \"site\") infoObj = appContext.sites.find((site) => site.id === id);\n    else if (type === \"client\") infoObj = appContext.clients.find((client) => client.id === id);\n    else infoObj = labs.find((lab) => lab.id === id);\n\n    if (infoObj) {\n      setMoreInfo({\n        type,\n        name: infoObj.name,\n        contact: infoObj.contact_name,\n        phone: infoObj.contact_phone || infoObj.phone_number,\n        email: infoObj.contact_email,\n      });\n      setModalShow(true);\n    }\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n\n      return filterKeys.every((key) => {\n        if (!filters[key] || !filters[key].length) {\n          return true;\n        }\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n        if (key === \"Lab\") {\n          return obj.labID && appContext.getLabName(obj.labID).toLowerCase().includes(filters[key]);\n        }\n        if (key === \"Client\") {\n          return (\n            obj.clientID && appContext.getClientName(obj.clientID).toLowerCase().includes(filters[key].toLowerCase())\n          );\n        }\n        if (key === \"Tester\") {\n          return obj.tester_name && obj.tester_name.toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        // if ((key = \"Test Type\")) {\n        //   if (\"antigen\".includes(filter[key].toLowerCase()))\n        //     return obj.isAntigen;\n        //   if (\"pcr\".includes(filter[key].toLowerCase())) return !obj.isAntigen;\n        // }\n\n        if (key === \"Show\") {\n          const siteIds = appContext.sites\n            .filter((s) => s?.name?.toLowerCase().includes(filters[key]?.toLowerCase()))\n            .map((s) => s.id);\n          return siteIds?.includes(obj.siteID);\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n        if (key === \"dob\" && obj[key]) {\n          return moment(obj[key], \"MM/DD/YYYY\").format(\"YYYY-MM-DD\") === filters[key];\n        }\n\n        // if (key === \"dob\") {\n        //   return obj[key] && moment(obj[key], \"DD/MM/YYYY\").format(\"YYYY-MM-DD\") === filters[key];\n        // }\n\n        // if (key === \"dob\" && filters[key]) {\n        //   return obj?.employee_demographics?.dob && obj?.employee_demographics?.dob === moment(filters[key]).format('MMDDYYYY') ;\n        // }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[\"testTypeID\"] && filters[key].indexOf(obj[\"testTypeID\"]) !== -1;\n        }\n\n        if (key === \"vaccinated\") {\n          return (obj[\"isVaccinated\"] ? 1 : 0).toString() === filters[key];\n        }\n\n        if (key === \"whiteGlove\") {\n          return (obj[\"whiteGlove\"] ? 1 : 0).toString() === filters[key];\n        }\n\n        if (key === \"orderID\") {\n          return obj[\"orderID\"] === filters[key];\n        }\n\n        if (key === \"capacity\") {\n          return obj[\"employeeType\"] && obj[\"employeeType\"].toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"pattern\") {\n          if (filters[key] === \"1\") return obj[\"patternTestAnswer\"] && obj[\"patternTestAnswer\"] !== \"undefined\";\n\n          if (filters[key] === \"0\") return obj[\"patternTestAnswer\"] == \"undefined\" || obj[\"patternTestAnswer\"] == \"\";\n        }\n\n        if (key === \"tester_name\" || key === \"scanByLabUserName\") {\n          const tester = filter[key].join(\",\");\n          return obj[key] && tester.toLowerCase()?.includes(obj[key]?.toLowerCase());\n        }\n\n        // return obj[key] && obj[key]?.toLowerCase()?.includes(filters[key]?.toLowerCase());\n        return (\n          typeof obj[key] === \"string\" &&\n          typeof filters[key] === \"string\" &&\n          obj[key]?.toLowerCase().includes(filters[key]?.toLowerCase())\n        );\n      });\n    });\n\n    return models;\n  };\n\n  const displayPdf = async (test) => {\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const loadTestFromPG = async () => {\n    try {\n      setLoading(true);\n      const pgList = await API.getTestListFromPG({ waiting: waitingResultCall ? \"w\" : \"p\" });\n      setLoading(false);\n      let ttlTests = pgList.rows.map((t) => formatTest(t));\n\n      if (waitingResultCall) {\n        ttlTests = ttlTests.filter((t) => t.status !== \"New\");\n      }\n\n      setTests(ttlTests);\n      refreshTestList(ttlTests);\n    } catch (err) {\n      setLoading(false);\n    }\n  };\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  const handleCheckboxChange = (e, row) => {\n    const filteredList = checkboxes.filter((c) => c !== row.id);\n    if (e.target.checked) {\n      filteredList.push(row.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? filteredTests.map((t) => t.id) : []);\n\n  const printTestLabels = () => {\n    const testsToSubmit = tests.filter((test) => checkboxes.includes(test.id));\n\n    const yetNotReceived = testsToSubmit.filter((test) => !test.receivedDate && !test.sendToID);\n\n    if (yetNotReceived.length > 0) {\n      receiveTheTests(yetNotReceived);\n    }\n    setCheckboxes([]);\n    if (testsToSubmit.length > 0) {\n      testsToSubmit.forEach((singleTest) => {\n        appContext.printBarcode(singleTest);\n      });\n    }\n  };\n\n  const submitTests = async () => {\n    try {\n      const testsToSubmit = tests.filter((test) => checkboxes.includes(test.id));\n      if (!testsToSubmit.length) return;\n      setLoading(true);\n      const submission = await GQAPI.submitUnprocessedTests(\n        testsToSubmit,\n        appContext.user,\n        CONFIG.isLive ? \"LIVE\" : \"DEV\"\n      );\n      const newTestList = tests.filter((test) => !checkboxes.includes(test.id));\n\n      setFilteredTests(newTestList);\n      setAllSelected(false);\n      setCheckboxes([]);\n      setImportStatus(submission);\n      setShowAlert(true);\n      setShowFilter(false);\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error\", err);\n      setLoading(false);\n      appContext.showErrorMessage(\"Fail to Submit the Record\");\n    }\n  };\n\n  const reSubmitTests = async () => {\n    const testsToSubmit = tests.filter((test) => checkboxes.includes(test.id));\n    if (!testsToSubmit.length) return;\n    setLoading(true);\n    const submission = await API.reSubmitUnprocessedTests(testsToSubmit, appContext.user);\n    // addLogs(testsToSubmit, \"ReSubmitToLab\");\n    setAllSelected(false);\n    setCheckboxes([]);\n    setImportStatus(submission);\n    setShowAlert(true);\n    setShowFilter(false);\n    setLoading(false);\n  };\n\n  const addLogs = (items, slug) => {\n    const ids = items.map((s) => {\n      return { id: s.id, sequenceNo: s.sequenceNo };\n    });\n    const params = { ids: ids, userID: appContext.user?.sub, userName: appContext.user?.name, slug: slug };\n    API.addTestLogs(params);\n  };\n\n  useEffect(() => {\n    const savedFilters = appContext.testFilter;\n    if (savedFilters && savedFilters.location === \"unprocessedtest\") {\n      if (Object.keys(savedFilters.filter).length > 0) {\n        setFilter(savedFilters.filter);\n        setShowFilter(true);\n      }\n    }\n    const sortingFilters = sortingFilterInLC.get();\n    if (waitingResultCall && sortingFilters.senttest.sortBy) {\n      setSortDescending(sortingFilters.senttest.sortDescending);\n      setSortBy(sortingFilters.senttest.sortBy);\n    } else if (sortingFilters.unprocessedtest.sortBy) {\n      setSortDescending(sortingFilters.unprocessedtest.sortDescending);\n      setSortBy(sortingFilters.unprocessedtest.sortBy);\n    }\n\n    const personalizeData = personalisationInLC.get(PERSONALISATION_KEY.PENDING_TEST);\n    const searchTermsData = personalizeData.map((item) => item.title);\n    setSearchTerms(searchTermsData);\n\n    setPersonalize(personalizeData);\n    loadTestFromPG();\n    dispatch(fetchGeneralSettings());\n  }, []);\n\n  useEffect(() => {\n    setLoading(true);\n    setLabs(appContext.labs);\n    setSites(appContext.sites);\n  }, [appContext.labs, appContext.sites]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[waitingResultCall ? \"senttest\" : \"unprocessedtest\"] = {\n      filter,\n      timeFilter,\n      sortBy,\n      sortDescending,\n    };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredTests.length === 0) return;\n\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredTests,\n      setFilteredTests,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (location.state) {\n      setShowFilter(true);\n      setFilter({ ...filter, [location.state.term]: location.state.name });\n      setTriggerFilter(true);\n      history.replace({\n        pathname: location.pathname,\n        state: null,\n      });\n    }\n  }, [location.state]);\n\n  useEffect(() => {\n    filterRef.current = filter;\n  }, [filter]);\n\n  useEffect(() => {\n    refreshTestList(tests);\n  }, [filter, triggerFilter, timeFilter]);\n\n  useEffect(() => {\n    if (initialRender) return;\n\n    if (appContext.testObject && appContext.testObject !== 0) {\n      const eventType = appContext.testObject.opType;\n      const model = formatTest(appContext.testObject.element);\n      const newList = [...tests];\n\n      if (eventType === \"DELETE\" || model.result || model.isArchive || model.status === \"Cancel\") {\n        setTests(tests.filter((t) => t.id !== model.id));\n        setFilteredTests(filteredTests.filter((t) => t.id !== model.id));\n        return;\n      }\n\n      if (eventType === \"INSERT\") {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        if (index !== -1) {\n          newList.splice(index, 1, model);\n        } else {\n          newList.unshift(model);\n        }\n      }\n      setTests(newList);\n      refreshTestList(newList);\n    }\n  }, [appContext.testObject]);\n\n  const refreshTestList = (list) => {\n    const testList = filterDates(nestedFilter(list, filterRef.current), timeFilter);\n\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          testList,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName\n        )\n      );\n    } else {\n      setFilteredTests(testList);\n    }\n  };\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: \"unprocessedtest\", filter, timeFilter });\n  };\n\n  const afterDeletedTest = (testList) => {\n    const newTestlist = filteredTests.filter((t) => testList.findIndex((f) => f.id === t.id) === -1);\n    setTests(newTestlist);\n    refreshTestList(newTestlist);\n\n    setCheckboxes([]);\n  };\n\n  const removeRFromBarCode = (str) => {\n    if (!str) return str;\n    return str.replace(/R/g, \"\");\n  };\n\n  const handleEditNumber = (test) => {\n    if (test.result) return;\n    setEditAccessionNo(test);\n  };\n\n  const isSimpleResultToProcess = async (csvData) => {\n    const firstRow = csvData[0];\n    let params = [];\n    const responseMessage = [];\n\n    \n    const COLUMN_INDEX = {\n      accession_number: 0,\n      test_name: 3,\n      result: 4,\n    };\n\n    if (\n      firstRow.data.indexOf(\"accession_number\") !== -1 &&\n      firstRow.data.indexOf(\"test_name\") !== -1 &&\n      firstRow.data.indexOf(\"result\") !== -1\n    ) {\n      COLUMN_INDEX.accession_number = firstRow.data.indexOf(\"accession_number\");\n      COLUMN_INDEX.test_name = firstRow.data.indexOf(\"test_name\");\n      COLUMN_INDEX.result = firstRow.data.indexOf(\"result\");\n    } else {\n      return false;\n    }\n\n    setModalShowResult(false);\n\n    for (let index = 1; index < csvData.length; index++) {\n      const { data } = csvData[index];\n      let id = removeRFromBarCode(data[COLUMN_INDEX.accession_number]);\n      let result = data[COLUMN_INDEX.result];\n      \n      let isValidAccessioNo = tests.find((t) => t.barcode === id);\n      if (!result) {\n        responseMessage[\"Invalid Result\"] = (responseMessage[\"Invalid Result\"] || 0) + 1;\n      } else if (isValidAccessioNo) {\n        responseMessage[result] = (responseMessage[result] || 0) + 1;\n        params.push({\n          testID: isValidAccessioNo.id,\n          accession_number: id,\n          testTypeID: isValidAccessioNo.employee_demographics?.testTypeID,\n          test_name: data[COLUMN_INDEX.test_name],\n          result,\n          labID: CONFIG.whiteLabelID,\n          StampBy: appContext.user.sub,\n          StampByName: appContext.user.name,\n        });\n      } else {\n        responseMessage[\"Invalid Accession No\"] = parseInt(responseMessage[\"Invalid Accession No\"] || 0) + 1;\n      }\n    }\n\n    const arrayOfObjects = Object.entries(responseMessage).map(([key, value]) => ({ label: key, tests: value }));\n    if (params.length > 0) {\n      await GQAPI.updateWhiteLabelTestResult(params, true);\n    }\n    setLoading(false);\n\n    setUploadResultSummary(arrayOfObjects);\n\n    return true;\n  };\n\n  const closeCSVDropDialog = (message) => {\n    setLoading(false);\n    appContext.showErrorMessage(message);\n  };\n\n  const getTestTypesList = async () => {\n    const apiData = await API.getTestTypes();\n    return apiData;\n  };\n\n  const handleCSVOnDrop = async (csvData) => {\n    try {\n      \n\n      const params = [];\n      const errorfiles = [];\n\n      if (csvData.length < 2) {\n        return closeCSVDropDialog(\"CSV file is empty\");\n      }\n\n      const isSimpleResult = await isSimpleResultToProcess(csvData);\n\n      if (isSimpleResult) {\n        return;\n      }\n\n      if (CONFIG.whiteLabelID === LAB_ID.alta) {\n        setLoading(true);\n        const testTypes = await getTestTypesList();\n\n        const csvJsonData = parseResultDataToJsonForAlta(csvData);\n\n        const { processed, responseMessageArray } = processAltaResultSamples({\n          data: csvJsonData,\n          tests,\n          appContext,\n          testTypes,\n        });\n\n        const responObjects = Object.entries(responseMessageArray).map(([key, value]) => ({\n          label: key,\n          tests: value,\n        }));\n\n        if (processed && processed.length) {\n          await GQAPI.updateWhiteLabelTestResult(processed, true);\n        }\n\n        setLoading(false);\n\n        setModalShowResult(false);\n\n        setUploadResultSummary(responObjects);\n\n        return;\n      }\n\n      const gridDataStartIndex = csvData.findIndex((row) => {\n        if (\n          row.data.indexOf(\"Fluor\") !== -1 &&\n          row.data.indexOf(\"Target\") !== -1 &&\n          row.data.indexOf(\"Sample\") !== -1 &&\n          row.data.indexOf(\"Call\") !== -1\n        ) {\n          IR_COLUMN_INDEX.Fluor = row.data.indexOf(\"Fluor\");\n          IR_COLUMN_INDEX.Target = row.data.indexOf(\"Target\");\n          IR_COLUMN_INDEX.Sample = row.data.indexOf(\"Sample\");\n          IR_COLUMN_INDEX.Call = row.data.indexOf(\"Call\");\n          return true;\n        }\n        return false;\n      });\n      // If grid data not found, return (or handle accordingly)\n      if (gridDataStartIndex === -1) {\n        return closeCSVDropDialog(\"'Flour','Call','Target' and 'Sample' Column are required in csv\");\n      }\n\n      // Skip rows until grid data starts\n      let actualData = csvData.slice(gridDataStartIndex);\n      let patternData = actualData\n        .filter(\n          (f) =>\n            (convertToLower(f.data[IR_COLUMN_INDEX.Fluor]) === \"cy5\" ||\n              convertToLower(f.data[IR_COLUMN_INDEX.Fluor]) === \"cal red 610\") &&\n            convertToLower(f.data[IR_COLUMN_INDEX.Target]) === \"rnasep\"\n        )\n        .map((f) => {\n          return {\n            fluor: f.data[IR_COLUMN_INDEX.Fluor],\n            target: f.data[IR_COLUMN_INDEX.Target],\n            sample: f.data[IR_COLUMN_INDEX.Sample],\n          };\n        });\n      actualData = actualData.filter(\n        (f) =>\n          convertToLower(f.data[IR_COLUMN_INDEX.Fluor]) === \"fam\" &&\n          convertToLower(f.data[IR_COLUMN_INDEX.Target]) === \"covid-19 rna\"\n      );\n      let ttlRecord = actualData.length;\n\n      if (ttlRecord === 0) {\n        setLoading(false);\n        appContext.showErrorMessage(\"Required data is not in correct format\");\n        return;\n      }\n\n      const responseMessage = [];\n\n      const clientResultTypes = getResultTypes();\n\n      setModalShowResult(false);\n      for (let index = 0; index < ttlRecord; index++) {\n        const { data } = actualData[index];\n        let id = removeRFromBarCode(data[IR_COLUMN_INDEX.Sample]);\n        let result = removeSpecialCharacters(data[IR_COLUMN_INDEX.Call]);\n        let isValidAccessioNo = tests.find((t) => t.barcode === id);\n        let fluorValue = patternData.find((f) => f.sample === id);\n        let fluor = fluorValue?.fluor || data[IR_COLUMN_INDEX.Fluor];\n        if (!isValidAccessioNo) {\n          id = null;\n        }\n        if (id) {\n          try {\n            let finalResult = \"\";\n            if (result === \"positive\") {\n              finalResult = \"Detected\";\n            } else if (!result) {\n              finalResult = \"Not Detected\";\n            } else if (result === \"in\") {\n              finalResult = \"Invalid\";\n            } else if (result === \"i\") {\n              finalResult = \"Indeterminate\";\n            } else {\n              finalResult = \"Error Result\";\n            }\n            // Check if any of the result type is not set at client level\n            if (finalResult !== \"Error Result\" && !clientResultTypes[finalResult]) {\n              finalResult = \"Error Result\";\n            }\n\n            responseMessage[finalResult] = parseInt(responseMessage[finalResult] || 0) + 1;\n            params.push({\n              Target: data[IR_COLUMN_INDEX.Target],\n              Sample: data[IR_COLUMN_INDEX.Sample],\n              Call: data[IR_COLUMN_INDEX.Call],\n              fluor: fluor,\n              labID: CONFIG.whiteLabelID,\n              StampBy: appContext.user.sub,\n              StampByName: appContext.user.name,\n              resultDate: moment().format(\"MMDDYYYY\"),\n            });\n          } catch (err) {\n            console.log(err);\n          }\n        } else {\n          responseMessage[\"Invalid Accession No\"] = parseInt(responseMessage[\"Invalid Accession No\"] || 0) + 1;\n        }\n      }\n      const arrayOfObjects = Object.entries(responseMessage).map(([key, value]) => ({ label: key, tests: value }));\n\n      if (params.length > 0) {\n        await GQAPI.updateWhiteLabelTestResult(params, false);\n      }\n      setUploadResultSummary(arrayOfObjects);\n    } catch (err) {\n      console.log(\"Err\", err);\n      setLoading(false);\n    }\n    setLoading(false);\n  };\n\n  const updateLabChange = async (selectedType, isSubmitToLab) => {\n    const updateSelectedTestResult = tests.filter((test) => checkboxes.includes(test.id) && test.test_type === \"PCR\");\n    const ttlTest = updateSelectedTestResult.length;\n    if (!ttlTest) {\n      appContext.showErrorMessage(\"No PCR test was selected\");\n      return;\n    }\n    setLoading(true);\n    try {\n      let testList = [];\n      if (!loading) setLoading(true);\n      if (isSubmitToLab) {\n        testList = updateSelectedTestResult.map((t) => {\n          return {\n            id: t.id,\n            labID: selectedType.value,\n            labName: selectedType.label,\n            status: \"Sent\",\n            submittedBy: appContext.user.sub,\n            submittedByName: appContext.user.name,\n            sequenceNo: t.sequenceNo,\n          };\n        });\n        await GQAPI.updateTestLab(testList);\n        const lab = appContext.labs.find((l) => l.id === selectedType.value);\n        await API.submitToLab(lab, updateSelectedTestResult);\n      } else {\n        testList = updateSelectedTestResult.map((t) => {\n          return {\n            id: t.id,\n            labID: selectedType.value,\n            labName: selectedType.label,\n            sequenceNo: t.sequenceNo,\n          };\n        });\n        await GQAPI.updateTestLab(testList);\n      }\n      addLogs(updateSelectedTestResult, \"LabChange\", selectedType.label);\n      appContext.showSuccessMessage(`${ttlTest} test${ttlTest === 1 ? \"\" : \"s\"} lab has been changed`);\n    } catch (err) {\n      console.log(\"Error\", err);\n      appContext.showErrorMessage(`Fail to update the lab`);\n    }\n    setLoading(false);\n    setCheckboxes([]);\n  };\n\n  const getResultTypes = () => {\n    let types = [\"Positive\", \"Negative\", \"Invalid\", \"Indeterminate\", \"Detected\", \"Not Detected\"];\n\n    if (appContext.clients && appContext.clients.length > 0) {\n      let types = appContext.clients[0].resultTypes.results;\n    }\n    return Object.fromEntries(types.map((key) => [key, true]));\n  };\n\n  const handleChangePage = (page) => setCurrentPage(page);\n  const handleCloseContactInfo = () => {\n    setMoreInfo({});\n    setModalShow(false);\n  };\n  const clearSelection = async () => {\n    const newList = tests.filter((test) => !listRemovedTest.includes(test.id));\n    refreshTestList(newList);\n  };\n\n  useEffect(() => {\n    clearSelection();\n  }, [listRemovedTest]);\n\n  const handleConfirm = async (isConfirm) => {\n    setOpenConfirmation(false);\n    if (!isConfirm) {\n      return;\n    }\n    updateTestResult(\"positive\");\n  };\n\n  const handleExportLabGen = async () => {\n    await appContext.sendToLab(filteredTests, checkboxes);\n    setCheckboxes([]);\n  };\n  const handleExportBilling = async () => {\n    try {\n      setLoading(true);\n      const data = await API.formatBioBillingCSV(filteredTests);\n\n      await downloadDataAsCSV(data, `billing_dept_${moment().format(\"MM_DD_YYYY\")}.csv`);\n      setLoading(false);\n    } catch (e) {\n      setLoading(false);\n      appContext.showSuccessMessage(`Fail to download the file`);\n    }\n  };\n  const downloadRequisitionFile = async () => {\n    try {\n      await appContext.downloadRequisition({\n        filteredTests,\n        allSelected: true,\n        filter: { ...filter, waiting: \"w\" },\n        timeFilter,\n        checkboxes,\n      });\n    } catch (error) {\n      console.log(\"error\", error);\n      appContext.showErrorMessage(\"Fail to downlaod\");\n    }\n    setAllSelected(false);\n    setCheckboxes([]);\n  };\n\n  const disableCheckbox = () => {\n    if (checkboxes.length !== 1) return true;\n\n    return tests.some((test) => checkboxes.includes(test.id) && test.status === \"Cancel\");\n  };\n\n  const receiveTheTests = async (selectedTests) => {\n    try {\n      const testsToReceive = selectedTests.map((t) => ({\n        id: t.id,\n        barcode: t.barcode,\n        scanByLabUserID: appContext?.user?.sub,\n        scanByLabUserName: appContext?.user?.name,\n        pcrStatus: RECEIVED_BYLAB,\n      }));\n\n      const fileName = `${moment().format(\"DD_MM_YYYY_HH_mm_ss\")}_specimen_received_${CONFIG.envType}.csv`;\n\n      API.saveFileSendToLab(fileName, testsToReceive);\n    } catch (ex) {\n      console.log(\"ex\", ex);\n    }\n  };\n\n  const handleShowResultModal = () => {\n    const selectedTests = tests.filter((test) => checkboxes.includes(test.id));\n\n    // if (CONFIG.clientID === BIO_LAB_ID) {\n    //   dispatch(setSimpleResultModal({ showSimpleModal: true, simpleTestList: selectedTests }));\n    //   setCheckboxes([]);\n    //   return;\n    // }\n\n    if (selectedTests.length !== 1) return;\n\n    const isNotReceived = !selectedTests[0]?.receivedDate && !selectedTests[0]?.sendToID;\n\n    if (isNotReceived) {\n      receiveTheTests(selectedTests);\n    }\n\n    if (selectedTests[0].sendToName) {\n      dispatch(setTestForResult(selectedTests[0]));\n    } else {\n      dispatch(setSelectedTestForResult(selectedTests));\n    }\n\n    setCheckboxes([]);\n  };\n\n  const customRenderTD = (item, test) => {\n    const { itemKey } = item;\n    const testId = test?.id;\n\n    if (itemKey === \"client\") {\n      const site_name = formattedString(appContext?.getSiteName(test.siteID) || test.site_name);\n      return (\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} key={`client_${testId}`}>\n          <a\n            style={{ color: \"#42cef5\" }}\n            onClick={() => createMoreInfo(\"site\", test.siteID)}\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n            title={formattedString(site_name)}\n          >\n            {formattedString(site_name)}\n          </a>\n        </td>\n      );\n    }\n\n    if (itemKey === \"firstName\") {\n      return (\n        <td\n          className=\"table-column ellipsis\"\n          title={capitalizeLetter(getValidName(test.firstName))}\n          key={`firstName_${testId}`}\n        >\n          {\n            <RedirectLink pathname=\"order\" value={{ name: test.orderID, term: \"id\" }}>\n              {capitalizeLetter(getValidName(test.firstName))}\n            </RedirectLink>\n          }\n        </td>\n      );\n    }\n\n    if (itemKey === \"barcode\") {\n      return (\n        <SequenceNo\n          num={CONFIG.isWhiteLabel ? test.barcode : test.sequenceNo}\n          test={test}\n          handleEdit={handleEditNumber}\n          showLogs={appContext.showLogs}\n          key={`barcode_${testId}`}\n        />\n      );\n    }\n\n    if (itemKey === \"status\") {\n      return (\n        <td\n          className=\"ellipsis\"\n          style={{\n            textAlign: \"center\",\n            color: TEST_STATUS_COLOR[test?.status] || \"black\",\n          }}\n          title={test.status}\n          key={`status_${testId}`}\n        >\n          {test.status}\n        </td>\n      );\n    }\n\n    if (itemKey === \"pcrStatus\") {\n      return (\n        <td\n          className=\"ellipsis\"\n          style={{ textAlign: \"center\", color: GET_CUST_COLOR[test.pcrStatus] || \"\" }}\n          title={test?.pcrStatus === \"Sent Out\" ? test.sendToName : test.pcrStatus || \"-\"}\n          key={`pcrStatus_${testId}`}\n        >\n          {test.pcrStatus || \"-\"}\n        </td>\n      );\n    }\n    if (itemKey === \"orderDate\") {\n      return (\n        <td className=\"table-column ellipsis\" key={`firstName_${testId}`}>\n          {test?.employee_demographics?.orderDate}\n        </td>\n      );\n    }\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n      default:\n        break;\n    }\n  };\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n    const personalisationData = personalisationInLC.saveAs(data, PERSONALISATION_KEY.PENDING_TEST);\n    setOpenPersonalizationModal(false);\n    await API.saveUserPersonalisation(appContext.user.sub, personalisationData);\n  };\n\n  const downloadResultFile = async () => {\n    const testsToProcess =\n      checkboxes.length > 0 ? filteredTests.filter((test) => checkboxes.includes(test.id)) : filteredTests;\n\n    const simpleTestList = [];\n    const testTypeCache = {};\n\n    const fetchTestTypeByID = async (testTypeID) => {\n      if (testTypeCache[testTypeID]) {\n        return testTypeCache[testTypeID];\n      }\n      const response = await API.getTestTypesByID(testTypeID);\n      testTypeCache[testTypeID] = response;\n      return response;\n    };\n\n    const fetchPromises = testsToProcess.map(async (test) => {\n      const { employee_demographics = {}, test_type, barcode } = test;\n      const { testTypeID = \"\", firstName, lastName } = employee_demographics;\n\n      if (!testTypeID) {\n        simpleTestList.push({\n          accession_number: barcode,\n          chartID: test.chartID,\n          firstName,\n          lastName,\n          test_name: test_type,\n          test_acronym: tr.csv_name,\n          result: \"\",\n        });\n        return;\n      }\n\n      const response = await fetchTestTypeByID(testTypeID);\n\n      const defaultResult = response?.typeOfTest === \"Qualitative\" ? \"Not Detected\" : \"\";\n\n      if (!response || !Array.isArray(response.targetRanges) || response.targetRanges.length === 0) {\n        simpleTestList.push({\n          accession_number: barcode,\n          chartID: test.chartID,\n          firstName,\n          lastName,\n          test_name: test_type,\n          test_acronym: tr.csv_name,\n          result: defaultResult,\n        });\n        return;\n      }\n\n      response.targetRanges.forEach((tr) => {\n        simpleTestList.push({\n          accession_number: barcode,\n          chartID: test.chartID,\n          firstName,\n          lastName,\n          test_name: tr.name,\n          test_acronym: tr.csv_name,\n          result: defaultResult,\n        });\n      });\n    });\n\n    await Promise.all(fetchPromises);\n\n    await downloadDataAsCSV(simpleTestList, `${moment().format(\"MM_DD_YYYY_MM_HH_SS\")}_result`);\n\n    setCheckboxes([]);\n  };\n\n  const handleReceiveTest = async () => {\n    if (checkboxes.length === 0) return;\n\n    try {\n      const selectedTests = filteredTests.filter((test) => checkboxes.includes(test.id));\n\n      if (selectedTests.length === 0) {\n        dispatch(setMessage(\"Selected tests already received\", MESSAGE_MODES.error));\n        setCheckboxes([]);\n        return;\n      }\n\n      dispatch(setLoader(true));\n\n      const testsToReceive = selectedTests.map((t) => ({\n        id: t.id,\n        barcode: t.barcode,\n        scanByLabUserID: appContext?.user?.sub,\n        scanByLabUserName: appContext?.user?.name,\n        pcrStatus: RECEIVED_BYLAB,\n      }));\n\n      const fileName = `${moment().format(\"DD_MM_YYYY_HH_mm_ss\")}_specimen_received_${CONFIG.envType}.csv`;\n\n      await API.saveFileSendToLab(fileName, testsToReceive);\n      const message = `${testsToReceive.length} Test${\n        testsToReceive.length > 1 ? \"s\" : \"\"\n      } have been received successfully`;\n\n      dispatch(setLoader(false));\n      dispatch(setMessage(message, MESSAGE_MODES.success));\n    } catch (ex) {\n      console.log(\"Ex\", ex);\n      dispatch(setLoader(false));\n      dispatch(setMessage(\"Fail to Received the Tests\", MESSAGE_MODES.error));\n    }\n    setCheckboxes([]);\n  };\n\n  const handleComment = () => {\n    if (checkboxes.length === 0) return;\n\n    const selectedTests = filteredTests.filter((test) => checkboxes.includes(test.id));\n    setSelectedTests(selectedTests);\n    setNotesModal(true);\n  };\n\n  const exportPersonalize = useMemo(() => {\n    const selectedItems = [...personalize.filter((m) => m.isCheck && m.itemKey !== \"details\").map((m) => m.itemKey)];\n\n    // Find the index of \"Test Date\" in personalize\n    const testDateIndex = personalize.findIndex((m) => m.title === \"Test Date\");\n\n    // If \"Test Date\" is checked, insert \"testDate\" at the correct index\n    if (testDateIndex !== -1 && personalize[testDateIndex].isCheck) {\n      selectedItems.splice(testDateIndex, 0, \"testDate\");\n    }\n\n    return selectedItems;\n  }, [personalize]);\n\n  const handleCancelTest = async () => {\n    const { reason, preDefineReason } = cancelTestData;\n    const testToPerformList = filteredTests.filter((t) => checkboxes.includes(t.id));\n\n    // Close the confirmation modal\n    setCancelTestsData({ ...cancelTestData, isConfirm: false });\n\n    // Format the canceled tests with updated status and reason\n    const formattedTest = testToPerformList.map((item) => ({\n      id: item?.id,\n      sequenceNo: item.sequenceNo,\n      orderID: item?.orderID,\n      reason,\n      preDefineReason: preDefineReason === \"Other\" ? reason : preDefineReason,\n    }));\n\n    if (formattedTest.length > 0) {\n      setLoading(true);\n      await API.canelTests(formattedTest);\n\n      const testLabel = formattedTest.length === 1 ? \"test\" : \"tests\";\n      appContext.showSuccessMessage(`${formattedTest.length} ${testLabel} have been cancelled successfully`);\n\n      setCancelTestsData({ isConfirm: false, reason: \"\" });\n      setLoading(false);\n\n      afterDeletedTest(testToPerformList);\n    }\n  };\n\n  return showPdf ? (\n    <Container fluid>\n      <Row>\n        <Col md=\"12\">\n          <Card className=\"strpied-tabled-with-hover\">\n            <Card.Header>\n              <Row style={{ alignItems: \"center\" }}>\n                <Card.Title as=\"h4\">\n                  Showing Test PDF for{\" \"}\n                  {typeof testPdf.employee_demographics === \"string\"\n                    ? JSON.parse(testPdf.employee_demographics).firstName\n                    : testPdf.employee_demographics.firstName}\n                </Card.Title>\n                <Button\n                  style={{\n                    marginTop: 10,\n                  }}\n                  className=\"createButtons\"\n                  onClick={() => setShowPdf(false)}\n                >\n                  Close\n                </Button>\n              </Row>\n            </Card.Header>\n            <Card.Body className=\"pdfContainer table-full-width table-responsive px-0\">\n              <PDFViewer className=\"pdfView\">\n                <PDF test={testPdf} testsLab={testsLab} parseTestResultForPDF={appContext.parseTestResultForPDF} />\n              </PDFViewer>\n            </Card.Body>\n          </Card>\n        </Col>\n      </Row>\n    </Container>\n  ) : !loading ? (\n    <>\n      <Container fluid>\n        {showAlert && <TestSubmitModal data={importStatus} handleClose={setShowAlert} />}\n        <div className=\"shows-screen-parent\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                      {/* Date Range */}\n                      <FilterSelect setTimeFilter={setTimeFilter} />\n                      <Icon\n                        handleClick={() => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n\n                      <Icon\n                        handleClick={() => setOpenPersonalizationModal(true)}\n                        title={\"Edit Column\"}\n                        label={\"Edit Column\"}\n                        iconType={\"personalizeIcon\"}\n                      />\n                      {(isAllowToArchive(appContext.user?.phone_number) || permission?.test?.archiveTest) && (\n                        <Icon\n                          handleClick={() =>\n                            appContext.openDeleteConfirmation(\n                              filteredTests.filter((f) => checkboxes.includes(f.id)),\n                              afterDeletedTest\n                            )\n                          }\n                          title={\"Archive\"}\n                          label={\"Archive\"}\n                          iconType={\"binIcon\"}\n                          disabled={checkboxes.length === 0}\n                        />\n                      )}\n                      <ExportToExcel\n                        items={\n                          filteredTests?.length > 0\n                            ? filteredTests.map((item) => {\n                                return {\n                                  ...item,\n                                  testDate: item?.createdAt,\n                                };\n                              })\n                            : []\n                        }\n                        selectedItem={exportPersonalize}\n                        appContext={appContext}\n                        filter={filter}\n                        title={waitingResultCall ? \"Pending Results\" : \"Unprocessed Tests\"}\n                        sortBy={sortBy}\n                        isUnprocessedTest\n                      />\n                      {!CONFIG.isWhiteLabel && (\n                        <Icon\n                          disabled={checkboxes.length === 0}\n                          handleClick={() => setShowLabChangeModal(true)}\n                          title={\"Change Lab\"}\n                          label={\"Change Lab\"}\n                          iconType={\"labIcon\"}\n                        />\n                      )}\n                      {ADMIN_USER.includes(appContext.user?.phone_number) && (\n                        <>\n                          <Icon\n                            handleClick={handleExportLabGen}\n                            title={\"Send to Lab\"}\n                            label={\"Send to Lab\"}\n                            iconType={\"resultsIcon\"}\n                            disabled={checkboxes.length === 0}\n                          />\n\n                          <Icon\n                            handleClick={handleExportBilling}\n                            title={\"Ex. Billing CSV\"}\n                            label={\"Ex. Billing CSV\"}\n                            iconType={\"resultsIcon\"}\n                            disabled={filteredTests.length === 0}\n                          />\n                        </>\n                      )}\n\n                      {waitingResultCall &&\n                      (appContext.user[\"custom:role\"] === \"Admins\" || CONFIG.isWhiteLabel) &&\n                      permission?.test?.resultTest ? (\n                        <Icon\n                          handleClick={handleShowResultModal}\n                          title={\"Result Tests\"}\n                          label={\"Result Tests\"}\n                          iconType={\"resultsIcon\"}\n                          disabled={disableCheckbox()}\n                        />\n                      ) : (\n                        <>\n                          <Icon\n                            disabled={checkboxes.length === 0}\n                            handleClick={() => submitTests()}\n                            title={\"Submit Selected Tests\"}\n                            label={\"Submit\"}\n                            iconType={\"submitIcon\"}\n                          />\n                        </>\n                      )}\n                      {permission?.test?.editTest && (\n                        <Icon\n                          handleClick={() => setModalShowResult(!modalShowResult)}\n                          iconType={\"importIcon\"}\n                          label={\"Upload Results\"}\n                          title={\"Upload Results\"}\n                        />\n                      )}\n                      {/* {permission[PENDING_RESULTS]?.write && (\n                        <Icon\n                          handleClick={() => handleOpenCreateTest()}\n                          title={\"Create Test\"}\n                          label={\"Create Test\"}\n                          iconType={\"createIcon\"}\n                        />\n                      )} */}\n\n                      {filteredTests.length > 0 && !CONFIG.isWhiteLabel && (\n                        <>\n                          {Object.keys(filter).length > 0 && (\n                            <>\n                              <TestPDFLayout\n                                tests={filteredTests}\n                                selectedItem={selectedItem}\n                                filter={filter}\n                                timeFilter={timeFilter}\n                                title={waitingResultCall ? \"Pending Results\" : \"Unprocessed Tests\"}\n                                appContext={appContext}\n                                sortBy={sortBy}\n                              />\n                            </>\n                          )}\n                        </>\n                      )}\n                      <Icon\n                        handleClick={() => downloadRequisitionFile()}\n                        disabled={checkboxes.length === 0}\n                        title={\"Req Forms\"}\n                        label=\"Req Forms\"\n                        iconType={\"dw_Icon\"}\n                      />\n                      {(defaultConfig.isShowResultFile || window.location.hostname === \"localhost\") && (\n                        <Icon\n                          handleClick={() => downloadResultFile()}\n                          title={t(\"resultFile\")}\n                          label={t(\"resultFile\")}\n                          iconType={\"dw_Icon\"}\n                        />\n                      )}\n                      <Icon\n                        handleClick={handleReceiveTest}\n                        disabled={checkboxes.length === 0}\n                        title={t(\"receiveTest\")}\n                        label={t(\"receiveTest\")}\n                        iconType={\"importIcon\"}\n                      />\n                      <Icon\n                        handleClick={() => printTestLabels()}\n                        title={\"Print Label\"}\n                        label={\"Print Label\"}\n                        iconType={\"printerIcon\"}\n                        disabled={checkboxes.length === 0}\n                      />\n                      <Icon\n                        handleClick={() => handleComment()}\n                        title={\"Comment\"}\n                        label={\"Comment\"}\n                        iconType={\"comment_Icon\"}\n                        disabled={checkboxes.length === 0}\n                      />\n                      {!appContext.user?.isSite() && (\n                        <Icon\n                          handleClick={() => {\n                            setCancelTestsData({\n                              reason: \"\",\n                              isConfirm: true,\n                              actionType: \"Cancelled\",\n                            });\n                          }}\n                          title=\"Cancel\"\n                          disabled={checkboxes.length > 0 ? false : true}\n                          label=\"Cancel\"\n                          iconType=\"cancel_Icon\"\n                        />\n                      )}\n                    </div>\n                  </div>\n                  {showFilter && (\n                    <Filter\n                      filterTerms={searchTerms}\n                      setFilter={setFilter}\n                      filter={filter}\n                      triggerFilter={triggerFilter}\n                      setTriggerFilter={setTriggerFilter}\n                      personalisationData={personalize}\n                      isGrouped={true}\n                      filterTabIndex={filterTabIndex}\n                      setFilterTabIndex={(value) => setFilterTabIndex(value)}\n                      filterTab=\"pendingResult\"\n                    />\n                  )}\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card\n                className={`strpied-tabled-with-hover bg-transparent border-0   ${\n                  testsToMap?.length === 1 || testsToMap?.length === 2 ? \"test-details-table\" : \"\"\n                }`}\n              >\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md-=\"6\">\n                      <Card.Title>\n                        <div className=\"\">\n                          {waitingResultCall ? \"Pending Results\" : \"Unprocessed Tests\"} :\n                          <span className=\"ps-2\"> {filteredTests.length}</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"6\">\n                      <MFPagination\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                        showSelectedRecord\n                        totalSelected={checkboxes.length}\n                      />\n                    </Col>\n                  </Row>\n                </Card.Header>\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll mt-0 pt-0\">\n                  <MainTable\n                    columns={personalize}\n                    rows={testsToMap}\n                    draggable\n                    resizable\n                    cssClass=\"table-noresponsive\"\n                    trDataWrapperHeader={\"trDataWrapperHeader\"}\n                    individualRowCssClass={(row) => {\n                      return row.employee_demographics?.stat && row?.status !== \"Processed\"\n                        ? \"trDataWrapper isStatRow\"\n                        : \"trDataWrapper\";\n                    }}\n                    personalisationKey={PERSONALISATION_KEY.PENDING_TEST}\n                    handleSaveDragAndResize={(personalizeArr) => setPersonalize(personalizeArr)}\n                    widthToSkip={155}\n                    customColumnCellRenderer={customRenderTD}\n                    selectedRows={checkboxes}\n                    tools={[TABLE_QUICK_TOOLS.checkbox]}\n                    flipSort={flipSort}\n                    sortBy={sortBy}\n                    sortDescending={sortDescending}\n                    handleCellClick={handleCellClick}\n                    dropDownOptions={[\n                      { value: \"Logs\", title: \"Audit Trail\" },\n                      { value: \"View\", title: \"View\" },\n                    ]}\n                    handleDropDownClick={(type, row) => {\n                      if (type === \"Audit Trail\") {\n                        appContext.showLogs({ ...row });\n                      }\n                      if (type === \"View\") {\n                        handleSaveFilter();\n                        history.push({\n                          pathname: `/admin/test/${row.id}`,\n                          state: {\n                            unprocessed: true,\n                            type: \"unprocessed\",\n                            test: row,\n                          },\n                        });\n                      }\n                    }}\n                  />\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      </Container>\n      <ContactInfo show={modalShow} moreInfo={moreInfo} handleClose={handleCloseContactInfo} />\n\n      {openPersonalizationModal && (\n        <PersonalizationModal\n          data={personalize}\n          handleChange={handlePersonalization}\n          show={openPersonalizationModal}\n          handleClose={() => setOpenPersonalizationModal(false)}\n        />\n      )}\n\n      {openConfirmation && (\n        <ConfirmationModal\n          show={openConfirmation}\n          title=\"Result Positive\"\n          message=\"Are you sure, to result positive ?\"\n          handleConfirm={handleConfirm}\n        />\n      )}\n      {showLabChangeModal && (\n        <ChangeTestLabModal\n          handleSave={updateLabChange}\n          labs={appContext.labs}\n          handleClose={() => setShowLabChangeModal(false)}\n        />\n      )}\n\n      {modalShowResult && (\n        <ImportResultModal\n          handleImport={handleCSVOnDrop}\n          handleClose={() => setModalShowResult(false)}\n          header={false}\n        />\n      )}\n      {editAccessionNo && (\n        <EditAccessionNoModal\n          handleClose={(val) => {\n            setEditAccessionNo(null);\n            if (val) {\n              val === \"success\"\n                ? appContext.showSuccessMessage(\"Successfully Changed the Accession No!\")\n                : appContext.showErrorMessage(val);\n            }\n          }}\n          test={editAccessionNo}\n          appContext={appContext}\n        />\n      )}\n\n      {uploadResultSummary && (\n        <ResultModal data={uploadResultSummary} handleClose={() => setUploadResultSummary(false)} />\n      )}\n\n      {openLoadOrdersModal && <LoadOrdersModal handleClose={() => setLoadOrderModal(false)} appContext={appContext} />}\n      {openCreator && (\n        <TestModal\n          newTestCreate={newTestCreate}\n          handleCloseCreateTest={handleCloseCreateTest}\n          createTest={createTest}\n          setTestCreate={setTestCreate}\n          clients={appContext.clients}\n          sites={appContext.sites}\n          labs={appContext.labs}\n        />\n      )}\n      {noteModal && (\n        <PendingOrderNoteModal\n          data={selectedTests}\n          handleClose={() => {\n            setNotesModal(false);\n            setSelectedTest([]);\n            setCheckboxes([]);\n          }}\n          user={loginUser}\n        />\n      )}\n      {cancelTestData.isConfirm && (\n        <ConfirmationModal\n          handleConfirm={(isConfirm) => {\n            if (isConfirm) {\n              if (!cancelTestData.reason || !cancelTestData.preDefineReason) {\n                return appContext.showErrorMessage(\"Please Enter Reason\");\n              }\n              return handleCancelTest();\n            }\n            setCancelTestsData({ isConfirm: false, reason: \"\" });\n          }}\n          title=\"Reason for Cancel\"\n          handleClose={() => setCancelTestsData({ isConfirm: false, reason: \"\" })}\n          reasonObj={{ cancelTestData, setCancelTestsData }}\n        />\n      )}\n    </>\n  ) : (\n    <Loader />\n  );\n};\n\nexport default UnprocessedTestsApi;\n","import React from \"react\";\nimport { Tab, Tabs, TabList, TabPanel } from \"react-tabs\";\nimport \"react-tabs/style/react-tabs.css\";\n\nconst TabPills = (props) => {\n  const { tabs, handleTabClick, setActiveIndex, activeIndex } = props;\n\n  return (\n    <Tabs selectedIndex={activeIndex} onSelect={setActiveIndex}>\n      <TabList>\n        {tabs?.map((item, index) => (\n          <Tab key={index} onClick={() => handleTabClick && handleTabClick(item)}>\n            {item.title}\n          </Tab>\n        ))}\n      </TabList>\n      {tabs?.map((item, index) => (\n        <TabPanel key={index}>{item.component}</TabPanel>\n      ))}\n    </Tabs>\n  );\n};\nexport default TabPills;\n","export const selectUsers = (state) => state.users;\nexport const usersList = (state) => state.users.users;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { MESSAGE_MODES } from \"constant\";\nimport { getFloatVal } from \"utils\";\nimport { callAmplifyAPI } from \"views/GraphQL/gqApi\";\nimport { callAmplifyAPIPut } from \"views/GraphQL/gqApi\";\nimport api from \"../../../api\";\nimport { setMessage } from \"../general/generalAction\";\nimport { setLoader, showMessage } from \"../general/generalSlice\";\nimport {\n  CPT_CODE,\n  CPT_CODE_FETCH,\n  CPT_CODE_CREATE,\n  CPT_CODE_UPDATE,\n  CPT_CODE_DELETE,\n  ICT_CODE_FETCH,\n  ICT_CODE_CREATE,\n  ICT_CODE_DELETE,\n  ICT_CODE_UPDATE,\n} from \"./cptCodeConstant\";\n\nexport const fetchCPTCodeAsync = createAsyncThunk(CPT_CODE_FETCH, async (param, { dispatch }) => {\n  const response = await api.searchCptCode(param);\n  if (response) return response;\n  return { rows: [], total: 0 };\n});\n\nexport const fetchICTCodeAsync = createAsyncThunk(ICT_CODE_FETCH, async (param, { dispatch }) => {\n  const response = await api.searchICTCode(param); // Your API call logic here\n  return response;\n});\n\nexport const updateCPTCodeAsync = createAsyncThunk(CPT_CODE_UPDATE, async (param, { dispatch }) => {\n  dispatch(setLoader(true));\n  const response = await callAmplifyAPIPut(\"/cpt\", {\n    id: param.id,\n    code: param.code,\n    title: param.description,\n    charge: param.charges,\n    isActive: param.isActive,\n    internalCode: param.internalCode,\n    referenceCharge: getFloatVal(param.referenceCharge),\n    effectiveDate: param.effectiveDate,\n    retiredDate: param.retiredDate,\n    cashCharge: param.cashCharge,\n    inNeworkCharge: param.inNeworkCharge,\n    outNetworkCharge: param.outNetworkCharge,\n  });\n  dispatch(setLoader(false));\n\n  if (response && response.status) {\n    dispatch(setMessage(\"CPT Code Update successfully\", MESSAGE_MODES.success));\n    return param;\n  } else {\n    dispatch(setMessage(`${response?.error || \"CPT Code not Update\"}`, MESSAGE_MODES.error));\n  }\n  return null;\n});\n\nexport const updateICTCodeAsync = createAsyncThunk(ICT_CODE_UPDATE, async (param, { dispatch }) => {\n  const response = await callAmplifyAPIPut(\"/ict\", {\n    id: param.id,\n    code: param.code,\n    title: param.title,\n    isActive: param.isActive,\n    internalCode: param.internalCode,\n    effectiveDate: param.effectiveDate,\n    retiredDate: param.retiredDate,\n  });\n\n  if (response && response.status) {\n    dispatch(setMessage(\"ICD Code Update successfully\", MESSAGE_MODES.success));\n    return param;\n  } else {\n    dispatch(setMessage(`${response?.error || \"ICD Code not Update\"}`, MESSAGE_MODES.error));\n  }\n  return null;\n});\n\nexport const createCPTCodeAsync = createAsyncThunk(CPT_CODE_CREATE, async (param, { dispatch }) => {\n  dispatch(setLoader(true));\n  const response = await callAmplifyAPI(\"/cpt\", {\n    code: param.code,\n    title: param.description,\n    charge: param.charges,\n    isActive: param.isActive,\n    internalCode: param.internalCode,\n    referenceCharge: getFloatVal(param.referenceCharge),\n    effectiveDate: param.effectiveDate,\n    retiredDate: param.retiredDate,\n\n    cashCharge: param.cashCharge,\n    inNeworkCharge: param.inNeworkCharge,\n    outNetworkCharge: param.outNetworkCharge,\n  }); // Your API call logic here\n  dispatch(setLoader(false));\n\n  if (response && response.rows && response.rows.length > 0) {\n    dispatch(setMessage(\"CPT Code Add Successfully\", MESSAGE_MODES.success));\n    return response.rows[0];\n  } else {\n    dispatch(setMessage(`${response?.error || \"CPT Code not Add\"}`, MESSAGE_MODES.error));\n  }\n  return null;\n});\n\nexport const createICTCodeAsync = createAsyncThunk(ICT_CODE_CREATE, async (param, { dispatch }) => {\n  const response = await callAmplifyAPI(\"/ict\", {\n    code: param.code,\n    title: param.title,\n    isActive: param.isActive,\n    internalCode: param.internalCode,\n    effectiveDate: param.effectiveDate,\n    retiredDate: param.retiredDate,\n  });\n\n  if (response && response.rows && response.rows.length > 0) {\n    dispatch(setMessage(\"ICD Code Add Successfully\", MESSAGE_MODES.success));\n    return response.rows[0];\n  } else {\n    dispatch(setMessage(`${response?.error || \"ICD Code not Add\"}`, MESSAGE_MODES.error));\n  }\n  return null;\n});\n\nexport const deleteCPTCodeAsync = createAsyncThunk(CPT_CODE_DELETE, async (defaultSetting) => {\n  const response = await api.updateCliItem(defaultSetting); // Your API call logic here\n  return response;\n});\n\nconst cptCodeSlice = createSlice({\n  name: CPT_CODE,\n  initialState: {\n    procedureList: [],\n    openCreateCPTModal: false,\n    selectedCPTItem: null,\n    diagnosisList: [],\n    openCreateICTModal: false,\n    selectedICTItem: null,\n    totalIctRecords: 0,\n    totalCptRecords: 0,\n  },\n  reducers: {\n    setProcedureList: (state, action) => {\n      state.procedureList = action.payload.rows;\n    },\n    setOpenCreateCPTModal: (state, action) => {\n      state.openCreateCPTModal = action.payload;\n    },\n    setSelectedCPTItem: (state, action) => {\n      state.selectedCPTItem = action.payload;\n    },\n    setDiagnosisList: (state, action) => {\n      state.diagnosisList = action.payload;\n    },\n    setOpenCreateICTModal: (state, action) => {\n      state.openCreateICTModal = action.payload;\n    },\n    setSelectedICTItem: (state, action) => {\n      state.selectedICTItem = action.payload;\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchCPTCodeAsync.fulfilled, (state, action) => {\n        state.procedureList = action.payload.rows;\n        state.totalCptRecords = action.payload.total;\n      })\n      .addCase(fetchICTCodeAsync.fulfilled, (state, action) => {\n        state.diagnosisList = action.payload.rows;\n        state.totalIctRecords = action.payload.total;\n      })\n      .addCase(createCPTCodeAsync.fulfilled, (state, action) => {\n        if (action.payload) {\n          state.totalCptRecords = Number(state.totalCptRecords) + 1;\n          state.procedureList.unshift(action.payload);\n        }\n      })\n      .addCase(createICTCodeAsync.fulfilled, (state, action) => {\n        if (action.payload) {\n          state.totalIctRecords = Number(state.totalIctRecords) + 1;\n          state.diagnosisList.unshift(action.payload);\n        }\n      })\n      .addCase(updateCPTCodeAsync.fulfilled, (state, action) => {\n        const updatedCPT = action.payload;\n        if (updatedCPT) {\n          const existingclientIndex = state.procedureList.findIndex((code) => code.id === updatedCPT.id);\n          if (existingclientIndex !== -1) {\n            state.procedureList[existingclientIndex] = updatedCPT;\n          }\n        }\n      })\n      .addCase(updateICTCodeAsync.fulfilled, (state, action) => {\n        const updatedICT = action.payload;\n        if (updatedICT) {\n          const existingclientIndex = state.diagnosisList.findIndex((code) => code.id === updatedICT.id);\n          if (existingclientIndex !== -1) {\n            state.diagnosisList[existingclientIndex] = updatedICT;\n          }\n        }\n      })\n      .addCase(deleteCPTCodeAsync.fulfilled, (state, action) => {\n        const deletedId = action.payload;\n        state.totalCptRecords = state.totalCptRecords - 1;\n        state.procedureList = state.procedureList.filter((code) => code.id !== deletedId);\n      });\n  },\n});\n\nexport const {\n  setProcedureList,\n  setSelectedCPTItem,\n  setOpenCreateCPTModal,\n  setDiagnosisList,\n  setOpenCreateICTModal,\n  setSelectedICTItem,\n} = cptCodeSlice.actions;\n\nexport default cptCodeSlice.reducer;\n","export const CPT_CODE = \"cptCode\";\n\nexport const CPT_CODE_FETCH = \"cptCodeFetch\";\n\nexport const CPT_CODE_CREATE = \"cptCodeCreate\";\n\nexport const CPT_CODE_UPDATE = \"cptCodeUpdate\";\n\nexport const CPT_CODE_DELETE = \"cptCodeDelete\";\n\nexport const ICT_CODE_FETCH = \"ICTCodeFectch\";\n\nexport const ICT_CODE_CREATE = \"ICTCodeCreate\";\n\nexport const ICT_CODE_UPDATE = \"ICTCodeUpdate\";\nexport const ICT_CODE_DELETE = \"ICTCodeDelete\";\n","import { TagResourceCommand } from \"@aws-sdk/client-cognito-identity-provider\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport { CLI_ACTIONS } from \"constant\";\nimport React, { useState } from \"react\";\nimport { Button, Modal, Form } from \"react-bootstrap\";\nimport { useDispatch } from \"react-redux\";\nimport { t } from \"stringConstants\";\nimport { createICTCodeAsync, updateICTCodeAsync } from \"../../store/features/cptCodes/cptCodeSlice\";\nimport { RemoveSpaceAndChar } from \"../../utils\";\nimport InputField from \"components/InputField/InputField\";\nimport moment from \"moment\";\n\nconst AddDiagnosisCodeSettingsModal = (props) => {\n  const { handleClose, selectedItem, handleSave } = props;\n  const [newItem, setNewItem] = useState(\n    selectedItem ? { ...selectedItem, action: CLI_ACTIONS.update } : { isActive: true, action: CLI_ACTIONS.add }\n  );\n  const [error, setError] = useState(\"\");\n  const dispatch = useDispatch();\n\n  const onHandleSave = async (obj) => {\n    if (!obj.code || !obj.code.trim()) {\n      setError(\"Please fill Diagnosis Code field!\");\n      return;\n    }\n    if (!obj.title || !obj.title.trim()) {\n      setError(\"ICT code title is required\");\n      return;\n    }\n\n    if (!obj.internalCode || !obj.internalCode.trim()) {\n      Object.assign(obj, { internalCode: obj.code });\n    }\n    try {\n      if (newItem.action === CLI_ACTIONS.add) {\n        dispatch(createICTCodeAsync(obj));\n      } else if (newItem.action === CLI_ACTIONS.update) {\n        dispatch(updateICTCodeAsync(obj));\n      }\n      handleClose();\n    } catch (err) {\n      console.log(\"Error in ICT Modal\", err);\n    }\n  };\n\n  return (\n    <>\n      <Modal show backdrop=\"static\" animation={true} onHide={() => handleClose()} centered size={\"md\"}>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {newItem.action === CLI_ACTIONS.add ? `${t(\"createDiagnosis\")}` : `${t(\"updateDiagnosis\")}`}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body style={{ paddingTop: 0 }}>\n          {/* <div className=\"d-flex justify-content-around\">\n            \n          </div> */}\n          <div className=\"crew-form-list crew-profile-again flex-direction row11\">\n            <div className=\"w-100 createClientsWrapper\">\n              <Form.Group className=\"form-group-wrapper w-100\">\n                <Form.Label className=\"mt-0 text-capitalize\">ICD Code:</Form.Label>\n                <Form.Control\n                  className={`modalInput`}\n                  minLength={5}\n                  onChange={(e) => setNewItem({ ...newItem, code: RemoveSpaceAndChar(e.target.value).toUpperCase() })}\n                  value={newItem?.code}\n                  placeholder=\"Enter ICT Code\"\n                  type=\"text\"\n                />\n              </Form.Group>\n            </div>\n            <div className=\"w-100 createClientsWrapper\">\n              <Form.Group className=\"form-group-wrapper w-100\">\n                <Form.Label className=\"mt-0 text-capitalize\">Alias:</Form.Label>\n                <Form.Control\n                  className={`modalInput`}\n                  minLength={5}\n                  onChange={(e) => setNewItem({ ...newItem, internalCode: e.target.value.toUpperCase() })}\n                  value={newItem?.internalCode}\n                  placeholder=\"Enter Alias\"\n                  type=\"text\"\n                />\n              </Form.Group>\n            </div>\n            <div className=\"w-100 createClientsWrapper\">\n              <Form.Group className=\"form-group-wrapper w-100\">\n                <Form.Label className=\"mt-0 text-capitalize\">title</Form.Label>\n                <Form.Control\n                  className={`modalInput`}\n                  maxLength={65}\n                  onChange={(e) => setNewItem({ ...newItem, title: e.target.value })}\n                  value={newItem?.title}\n                  placeholder=\"Enter ICT Title\"\n                  type=\"text\"\n                />\n              </Form.Group>\n            </div>\n            <div className=\"w-100 createClientsWrapper\">\n              <Form.Group className=\"form-group-wrapper w-100\">\n                <InputField\n                  type=\"datePicker\"\n                  inputStyle=\"w-100 orderTestDob\"\n                  labelStyle=\"modalLineHeaders mt-0 text-capitalize\"\n                  label=\"Effective Date\"\n                  value={\n                    newItem?.effectiveDate && new Date(newItem?.effectiveDate) != \"Invalid Date\"\n                      ? moment(newItem?.effectiveDate, \"YYYY-MM-DD\").toDate()\n                      : null\n                  }\n                  isFutureDateAllowed\n                  placeholder=\"Effective Date\"\n                  handleChange={(e) =>\n                    setNewItem({\n                      ...newItem,\n                      effectiveDate: moment(e).format(\"YYYY-MM-DD\") != \"Invalid date\" ? moment(e).toISOString() : \"\",\n                    })\n                  }\n                />\n              </Form.Group>\n            </div>\n            <div className=\"w-100 createClientsWrapper\">\n              <Form.Group className=\"form-group-wrapper w-100\">\n                <InputField\n                  type=\"datePicker\"\n                  inputStyle=\"w-100 orderTestDob\"\n                  labelStyle=\"modalLineHeaders mt-0 text-capitalize\"\n                  label=\"Retired Date\"\n                  value={\n                    newItem?.retiredDate && new Date(newItem?.retiredDate) != \"Invalid Date\"\n                      ? moment(newItem?.retiredDate, \"YYYY-MM-DD\").toDate()\n                      : null\n                  }\n                  isFutureDateAllowed\n                  placeholder=\"Retired Date\"\n                  handleChange={(e) =>\n                    setNewItem({\n                      ...newItem,\n                      retiredDate: moment(e).format(\"YYYY-MM-DD\") != \"Invalid date\" ? moment(e).toISOString() : \"\",\n                    })\n                  }\n                />\n              </Form.Group>\n            </div>\n          </div>\n          <div\n            className=\"d-flex align-items-center column-gap-10 profile-\n                          detail mb-3\"\n          >\n            <span className=\"section-title\">Active: </span>\n            <SwitchToggle\n              checked={newItem.isActive}\n              handleToogleChange={(e) =>\n                setNewItem({\n                  ...newItem,\n                  isActive: e.target.checked,\n                })\n              }\n            />\n          </div>\n        </Modal.Body>\n        <div className=\"px-4 my-2\" style={{ height: \"2vh\" }}>\n          {error && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </div>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => onHandleSave(newItem)}\n          >\n            {newItem.action === CLI_ACTIONS.add ? \"Create\" : \"Update\"}\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default AddDiagnosisCodeSettingsModal;\n","export const cptCodeSelector = (state) => state.cptCode.procedureList;\n\nexport const openCreateCPTModalSelector = (state) => state.cptCode.openCreateCPTModal;\n\nexport const selectedCPTItemSelector = (state) => state.cptCode.selectedCPTItem;\n\nexport const ICTCodeSelector = (state) => state.cptCode.diagnosisList;\n\nexport const openCreateICTModalSelector = (state) => state.cptCode.openCreateICTModal;\n\nexport const selectedICTItemSelector = (state) => state.cptCode.selectedICTItem;\n\nexport const totalIctRecordsSelector = (state) => state.cptCode.totalIctRecords;\nexport const totalCptRecordsSelector = (state) => state.cptCode.totalCptRecords;\n","import React from \"react\";\nimport { Row, Col } from \"react-bootstrap\";\nimport moment from \"moment\";\n\nconst PGPagination = (props) => {\n  const {\n    currentPage,\n    totalPages,\n    handleChangePage,\n    totalSelected,\n    showSelectedRecord,\n    timeFilter,\n    totalRecord,\n    currentRecord,\n  } = props;\n\n  const showDateFilter = () => {\n    if (!timeFilter) return \"\";\n    if (timeFilter && Object.keys(timeFilter).length > 0) {\n      const { start, end } = timeFilter;\n      const startDate = moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\");\n      const endDate = moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\");\n      return `Date Filter: ${startDate.format(\"MM-DD-YYYY\")} - ${endDate.format(\"MM-DD-YYYY\")}`;\n    }\n    return \"Date Filter: All\";\n  };\n\n  return (\n    <Row className=\"pull-right mt-0\" style={{ borderWidth: 1 }}>\n      <Col md=\"5\" className=\"selectedTestsText\">\n        <span>{showSelectedRecord && `Selected Record : ${totalSelected}`}</span>\n        <span className=\"datefilter-label\" style={{ fontWeight: \"normal\" }}>\n          {showDateFilter()}\n        </span>\n      </Col>\n      <Col className=\"text-right paginationText-alignment\" md={{ span: 6, offset: 1 }} xl={{ span: 6, offset: 1 }}>\n        Page\n        <ul className=\"createButtons pr-0\" style={{ display: \"inline\" }}>\n          <i\n            className=\"fas fa-angle-left\"\n            style={{ color: \"#585858\" }}\n            onMouseOver={(e) => {\n              e.target.style.cursor = \"pointer\";\n              e.target.style.color = \"black\";\n            }}\n            onMouseLeave={(e) => (e.target.style.color = \"#585858\")}\n            onClick={() => {\n              currentPage !== 1 && handleChangePage(currentPage - 1, \"prev\");\n            }}\n          />\n          {currentPage} of {totalPages} {currentRecord < totalRecord && \"...\"}\n          <i\n            className=\"fas fa-angle-right\"\n            style={{ color: \"#585858\" }}\n            onMouseOver={(e) => {\n              e.target.style.cursor = \"pointer\";\n              e.target.style.color = \"black\";\n            }}\n            onMouseLeave={(e) => (e.target.style.color = \"#585858\")}\n            onClick={() => {\n              currentPage !== totalPages && handleChangePage(currentPage + 1, \"next\");\n            }}\n          />\n        </ul>\n      </Col>\n    </Row>\n  );\n};\n\nexport default PGPagination;\n","export const selectedCompanySetting = (state) => state.companySetting?.setting || {};\nexport const selectedCompanySettingClia = (state) => state.companySetting.setting.cliaNumber;\n","import ViewCheckBox from \"components/CheckBox/ViewCheckBox\";\nimport Filter from \"components/Filter\";\nimport Icon from \"components/Icon\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport { debounce } from \"debounce\";\nimport { useCallback, useEffect, useRef, useState, useMemo, useContext } from \"react\";\nimport { Card, Col, Row, Table } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport \"../../../src/tableStyling.css\";\nimport EditIcon from \"../../assets/img/edit-icon.png\";\nimport AddDiagnosisCodeSettingsModal from \"../../components/GeneralSettings/AddDiagnosisCodeSettingsModal\";\nimport {\n  ICTCodeSelector,\n  openCreateICTModalSelector,\n  selectedICTItemSelector,\n  totalIctRecordsSelector,\n} from \"../../store/features/cptCodes/cptCodeSelectors\";\nimport {\n  fetchICTCodeAsync,\n  setOpenCreateICTModal,\n  setSelectedICTItem,\n} from \"../../store/features/cptCodes/cptCodeSlice\";\nimport { t } from \"../../stringConstants\";\nimport { DIAGNOSIS_CODE_PERSONALIZE } from \"constants/personalization\";\nimport { MESSAGE_MODES, TABLE_QUICK_TOOLS, DIAGNOSIS_CODES, PAGE_LIMIT } from \"../../constant\";\nimport MainTable from \"components/Table/MainTable\";\nimport Status from \"components/Status\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport PGPagination from \"components/Pagination/PGPagination\";\nimport { AppContext } from \"context/app-context\";\nimport { draggablePersonalizationLocalStorage, userCompanyID, numberWithCommas } from \"utils\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport { selectedCompanySetting } from \"../../store/features/companySetting/companySettingSelectors\";\n\nimport api from \"../../api\";\n\nconst DiagnosisCodeSettings = (props) => {\n  const [sortBy, setSortBy] = useState(\"\");\n  const [personalize, setPersonalize] = useState([]);\n\n  const diagnosisList = useSelector(ICTCodeSelector);\n  const totalIptRecords = useSelector(totalIctRecordsSelector);\n  const [sortDescending, setSortDescending] = useState(true);\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const mainWidth = useRef();\n  const dispatch = useDispatch();\n  const selectedICTItem = useSelector(selectedICTItemSelector);\n  const setting = useSelector(selectedCompanySetting);\n\n  const openCreateICTModal = useSelector(openCreateICTModalSelector);\n  const permission = useSelector(userGivenPermission);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const quickTools = [permission[DIAGNOSIS_CODES]?.write && TABLE_QUICK_TOOLS.edit];\n  const [pageNo, setPageNo] = useState(1);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const appContext = useContext(AppContext);\n  const [filterDiagnosisList, setFilterDiagnosisList] = useState([]);\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n\n  const searchTerms = [\"Diagnosis Code\", \"Alias\", \"Diagnosis Code Desc\", \"Status\", \"Billable\"];\n\n  const sortUsers = (users, sortParam) => {\n    if (sortDescending) {\n      return [...users].sort((a, b) => (a[sortParam] < b[sortParam] ? 1 : b[sortParam] < a[sortParam] ? -1 : 0));\n    } else {\n      return [...users].sort((a, b) => (b[sortParam] < a[sortParam] ? 1 : a[sortParam] < b[sortParam] ? -1 : 0));\n    }\n  };\n\n  const fetchFromApi = useCallback(\n    debounce(async (filter, sortBy, sortDescending, page) => {\n      dispatch(\n        fetchICTCodeAsync({\n          ...(Object.keys(filter).length > 0 ? filter : { code: \"a\" }),\n          orderBy: sortBy,\n          orderByDirection: sortDescending,\n          page: page || 1,\n        })\n      );\n    }, 1000),\n    []\n  );\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filterDiagnosisList.length;\n    if (direction === \"next\" && page === totalPages && totalIptRecords > 0 && currentRecord < totalIptRecords) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      const concatResult = filterDiagnosisList.concat(diagnosisList);\n      setFilterDiagnosisList(concatResult);\n    } else {\n      setFilterDiagnosisList(diagnosisList);\n    }\n  }, [diagnosisList]);\n\n  const diagnosisCodesToMap = useMemo(() => {\n    const list = filterDiagnosisList ? [...filterDiagnosisList] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filterDiagnosisList, currentPage]);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      fetchFromApi(filter, sortBy, sortDescending, pageNo);\n    }\n  }, [pageNo]);\n\n  useEffect(() => {\n    setPageNo(1);\n    fetchFromApi({ ...filter }, sortBy, sortDescending, 1);\n  }, [filter, sortBy, sortDescending]);\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  const handleCheckboxChange = (e, user) => {\n    const filteredList = checkboxes.filter((c) => c !== user.id);\n    if (e.target.checked) {\n      filteredList.push(user.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const tdFormat = (item, row) => {\n    return row[item];\n  };\n\n  const renderTd = (item, row) => {\n    return (\n      <td\n        key={item.id}\n        className=\"ellipsis\"\n        style={{\n          textAlign: item.textAlign,\n          textOverflow: item.textOverflow,\n        }}\n      >\n        {tdFormat(item.itemKey, row)}\n      </td>\n    );\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        dispatch(setSelectedICTItem({ item: row }));\n        dispatch(setOpenCreateICTModal(true));\n        break;\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n\n      default:\n        break;\n    }\n  };\n  const loginUser = appContext.user;\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n    const personalisationData = draggablePersonalizationLocalStorage.saveAs(data, \"diagnosis\");\n    setOpenPersonalizationModal(false);\n    draggablePersonalizationLocalStorage.save(JSON.stringify(personalisationData));\n    await api.saveUserPersonalisation(loginUser.sub, personalisationData);\n  };\n\n  useEffect(() => {\n    const response = draggablePersonalizationLocalStorage.get(loginUser, \"diagnosis\", DIAGNOSIS_CODE_PERSONALIZE);\n    const uniqueResponse = response.reduce((acc, current) => {\n      if (!acc.some((item) => item.title === current.title)) {\n        acc.push(current);\n      }\n      return acc;\n    }, []);\n    setPersonalize(uniqueResponse);\n  }, []);\n\n  return (\n    <div style={{ flex: 1 }}>\n      <>\n        <Row>\n          <Col>\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  {`${t(\"diagnosisCodes\")} (${numberWithCommas(totalIptRecords) || 0})`}\n                </Card.Title>\n                <div className=\"buttonHeader\">\n                  <Icon\n                    handleClick={() => setShowFilter(!showFilter)}\n                    title={\"Filter\"}\n                    label={\"Filter\"}\n                    iconType={\"filter\"}\n                  />\n                  <Icon\n                    handleClick={() => setOpenPersonalizationModal(true)}\n                    title={t(\"personalize\")}\n                    label={t(\"personalize\")}\n                    iconType={\"personalizeIcon\"}\n                  />\n                  {permission[DIAGNOSIS_CODES]?.write && (\n                    <Icon\n                      handleClick={() => dispatch(setOpenCreateICTModal(true))}\n                      title={\"Create Diagnosis\"}\n                      label={\"Create\"}\n                      iconType={\"createIcon\"}\n                    />\n                  )}\n                </div>\n                {showFilter && (\n                  <Filter\n                    filterTerms={searchTerms}\n                    setFilter={setFilter}\n                    filter={filter}\n                    isUsersTable={true}\n                    personalisationData={DIAGNOSIS_CODE_PERSONALIZE}\n                  />\n                )}\n              </Card.Header>\n              <Card.Body className=\"table-full-width desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable\">\n                  <Card.Header className=\"shows-screen-wrapper\">\n                    <Row className=\"pb-4\">\n                      <Col md-=\"6\">\n                        {/* <Card.Title>\n                          <div className=\"\">\n                            Diagnosis codes:\n                            <span className=\"ps-2\"> {numberWithCommas(totalIptRecords) || 0}</span>\n                          </div>\n                        </Card.Title> */}\n                      </Col>\n                      <Col md=\"6\">\n                        <PGPagination\n                          currentPage={currentPage}\n                          handleChangePage={handleChangePage}\n                          totalPages={totalPages}\n                          totalRecord={totalIptRecords}\n                          currentRecord={filterDiagnosisList?.length}\n                          totalSelected={checkboxes?.length}\n                        />\n                      </Col>\n                    </Row>\n                  </Card.Header>\n                  <MainTable\n                    columns={personalize}\n                    rows={diagnosisCodesToMap}\n                    flipSort={flipSort}\n                    sortBy={sortBy}\n                    sortDescending={sortDescending}\n                    widthToSkip={155}\n                    tools={quickTools}\n                    handleCellClick={handleCellClick}\n                    customColumnCellRenderer={renderTd}\n                    dropDownOptions={[{ value: \"Logs\", title: \"Audit Trail\" }]}\n                    selectedRows={checkboxes}\n                    handleDropDownClick={(type, row) => {\n                      if (type === \"Audit Trail\") {\n                        appContext.showLogs({ ...row, title: \"Diagnoses Logs\", recordType: \"ict\" });\n                      }\n                    }}\n                  />\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n\n          {openCreateICTModal && (\n            <AddDiagnosisCodeSettingsModal\n              handleClose={() => {\n                dispatch(setOpenCreateICTModal(false));\n                dispatch(setSelectedICTItem(null));\n              }}\n              selectedItem={selectedICTItem?.item || null}\n            />\n          )}\n        </Row>\n        {openPersonalizationModal && (\n          <PersonalizationModal\n            data={personalize}\n            handleChange={handlePersonalization}\n            show={openPersonalizationModal}\n            handleClose={() => setOpenPersonalizationModal(false)}\n          />\n        )}\n      </>\n    </div>\n  );\n};\n\nexport default DiagnosisCodeSettings;\n","import { TABLE_COLUMN_TYPES } from \"../../constant\";\n\nexport const INSURANCE_PERSONALIZE = [\n  {\n    itemKey: \"Name\",\n    title: \"Name\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category : \"General\",\n  },\n  {\n    itemKey: \"shortName\",\n    title: \"Alias\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category : \"General\",\n\n  },\n  {\n    itemKey: \"address\",\n    title: \"Address\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category : \"General\",\n\n  },\n  {\n    itemKey: \"city\",\n    title: \"City\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category : \"General\",\n\n  },\n  {\n    itemKey: \"state\",\n    title: \"State\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    category : \"General\",\n\n  },\n  {\n    itemKey: \"zip\",\n    title: \"Zip\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n    type: TABLE_COLUMN_TYPES.text,\n    category : \"General\",\n\n  },\n  {\n    itemKey: \"phone\",\n    title: \"Phone Number\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 7,\n    type: TABLE_COLUMN_TYPES.phone,\n    category : \"General\",\n\n  },\n  {\n    itemKey: \"fax\",\n    title: \"Fax\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 8,\n    type: TABLE_COLUMN_TYPES.phone,\n    category : \"General\",\n\n  },\n  {\n    itemKey: \"claims\",\n    title: \"Total Claims\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 9,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"claimAmount\",\n    title: \"Total Claim Amount\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 10,\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"openAmount\",\n    title: \"Total Claims Open\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 11,\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"paid\",\n    title: \"Total Claims Paid\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 12,\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"totalAppeal\",\n    title: \"Total Claims in Appeal\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 13,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"avgTime\",\n    title: \"Average Time\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 14,\n    type: TABLE_COLUMN_TYPES.number,\n    isSkipFilter: true,\n  },\n  {\n    itemKey: \"lastClaim\",\n    title: \"Last Claim\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 15,\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n\n  {\n    itemKey: \"days30\",\n    title: \"Days (30)\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 16,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n\n  {\n    itemKey: \"days60\",\n    title: \"Days (60)\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 17,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"days90\",\n    title: \"Days (90)\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 18,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n\n  {\n    itemKey: \"older\",\n    title: \"Older\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 19,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"isActive\",\n    title: \"Active\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 20,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"network\",\n    title: \"Network\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 21,\n    customCellRenderer: true,\n  },\n];\n","import axios from \"axios\";\nimport { API, Auth } from \"aws-amplify\";\nimport api from \"../api\";\nimport { userCompanyID } from \"utils\";\nimport { CONFIG } from \"constant\";\nimport { callAmplifyAPI, callAmplifyAPIPut } from \"views/GraphQL/gqApi\";\n\n\nconst apiName = \"AdminQueries\";\nconst publicApiName = \"usersApi\";\n\nconst fetchInsurances = async (param) => {\n  let path = \"/insurances/list\";\n  let myInit = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      clientID: CONFIG.clientID,\n      ...param,\n    },\n  };\n\n  try {\n    const models = await API.post(apiName, path, myInit);\n\n    return models || [];\n  } catch (e) {\n    console.log(\"Error getting users:\", e);\n    return [];\n  }\n};\n\nconst createInsurances = async (params) => {\n  let path = \"/insurances\";\n  let myInit = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      ...params,\n    },\n  };\n\n  try {\n    const models = await API.post(apiName, path, myInit);\n\n    return models;\n  } catch (e) {\n    console.log(\"Error getting users:\", e);\n    return null;\n  }\n};\n\nconst updateInsurances = async (params) => {\n  let path = \"/insurances\";\n  let myInit = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      ...params,\n    },\n  };\n\n  try {\n    const models = await API.put(apiName, path, myInit);\n\n    return models;\n  } catch (e) {\n    console.log(\"Error getting users:\", e);\n    return null;\n  }\n};\n\nconst fetchCompletePayerList = async (param) => {\n  let path = \"/insurances/all\";\n\n  try {\n    const models = await callAmplifyAPI(path, param);\n\n    return models || [];\n  } catch (e) {\n    console.log(\"Error getting users:\", e);\n    return { rows: [] };\n  }\n};\n\nexport default {\n  fetchInsurances,\n  createInsurances,\n  updateInsurances,\n  fetchCompletePayerList,\n};\n","export const INSURANCES = \"insurances\";\n\nexport const INSURANCES_FETCH = `${INSURANCES}Fetch`;\n\nexport const INSURANCES_FETCH_ALL = `${INSURANCES}FetchAll`;\n\nexport const INSURANCES_CREATE = `${INSURANCES}Create`;\n\nexport const INSURANCES_UPDATE = `${INSURANCES}Update`;\n\nexport const INSURANCES_DELETE = `${INSURANCES}Delete`;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { MESSAGE_MODES, INSURANCE_PROVIDER } from \"constant\";\nimport { userCompanyID } from \"utils\";\nimport insuranceServices from \"../../../services/InsuranceService\";\n\nimport { setMessage } from \"../general/generalAction\";\nimport { setLoader, showMessage } from \"../general/generalSlice\";\nimport {\n  INSURANCES,\n  INSURANCES_CREATE,\n  INSURANCES_DELETE,\n  INSURANCES_FETCH,\n  INSURANCES_UPDATE,\n  INSURANCES_FETCH_ALL,\n} from \"./insuranceConstant\";\n\nexport const fetchInsurancesAsync = createAsyncThunk(INSURANCES_FETCH, async (param, { dispatch }) => {\n  const apiData = await insuranceServices.fetchInsurances(param);\n  return { apiData, param };\n});\n\nexport const fetchPayerAsync = createAsyncThunk(INSURANCES_FETCH_ALL, async (param, { dispatch }) => {\n  return await insuranceServices.fetchCompletePayerList(param);\n});\n\nexport const createInsuranceAsync = createAsyncThunk(INSURANCES_CREATE, async (param, { dispatch, getState }) => {\n  const loginUser = getState().auth.user;\n  dispatch(setLoader(true));\n  const response = await insuranceServices.createInsurances({\n    ...param,\n  });\n  dispatch(setLoader(false));\n\n  if (response && response?.Item) {\n    dispatch(setMessage(\"Payer Added Sucessfully\", MESSAGE_MODES.success));\n    return { ...response?.Item, Name: response?.Item.name };\n  } else {\n    dispatch(setMessage(`${response?.error || \"Payer Not Created\"}`, MESSAGE_MODES.error));\n  }\n  return null;\n});\n\nexport const updateInsuranceAsync = createAsyncThunk(INSURANCES_UPDATE, async (param, { dispatch, getState }) => {\n  const loginUser = getState().auth.user;\n  dispatch(setLoader(true));\n\n  const response = await insuranceServices.updateInsurances({\n    ...param,\n  });\n  dispatch(setLoader(false));\n\n  if (response && (response.status || response?.Item)) {\n    dispatch(setMessage(\"Payer Updated Sucessfully\", MESSAGE_MODES.success));\n    return param;\n  } else {\n    dispatch(setMessage(`${response?.error || \"Payer Not Updated\"}`, MESSAGE_MODES.error));\n  }\n  return null;\n});\n\nexport const deleteInsuranceAsync = createAsyncThunk(INSURANCES_DELETE, async (defaultSetting) => {\n  // const response = await api.updateCliItem(defaultSetting); // Your API call logic here\n  return {};\n});\n\nconst insuranceSlice = createSlice({\n  name: INSURANCES,\n  initialState: {\n    payerList: [],\n    insurancesList: [],\n    filteredInsurances: [],\n    openInsuranceModal: false,\n    selectedInsurance: null,\n    openInsruModal: false,\n    totalInsurancesRecords: 0,\n  },\n  reducers: {\n    setInsurnaceList: (state, action) => {\n      state.insurancesList = action.payload;\n    },\n    setFilteredInsurnaceList: (state, action) => {\n      state.filteredInsurances = action.payload;\n    },\n    setOpenInsuranceModal: (state, action) => {\n      state.openInsuranceModal = action.payload;\n    },\n    setSelectedInsurance: (state, action) => {\n      state.selectedInsurance = action.payload;\n    },\n    setOpenInsruModal: (state, action) => {\n      state.openInsruModal = action.payload;\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchInsurancesAsync.fulfilled, (state, action) => {\n        const { apiData = {}, param = {} } = action.payload || {};\n        const { rows: data = [], total = 0 } = apiData;\n\n        if (param?.page === 1) {\n          state.insurancesList = data;\n          state.filteredInsurances = data;\n        } else {\n          state.insurancesList = [...state.insurancesList, ...data];\n          state.filteredInsurances = [...state.filteredInsurances, ...data];\n        }\n\n        state.totalInsurancesRecords = total;\n      })\n      .addCase(fetchPayerAsync.fulfilled, (state, action) => {\n        state.payerList = action.payload?.rows || INSURANCE_PROVIDER;\n      })\n      .addCase(createInsuranceAsync.fulfilled, (state, action) => {\n        if (action.payload) {\n          state.insurancesList.unshift(action.payload);\n          state.filteredInsurances.unshift(action.payload);\n        }\n      })\n      .addCase(updateInsuranceAsync.fulfilled, (state, action) => {\n        const updateItem = action.payload;\n        if (updateItem) {\n          const existingclientIndex = state.insurancesList.findIndex((code) => code.id === updateItem.id);\n          if (existingclientIndex !== -1) {\n            state.insurancesList[existingclientIndex] = updateItem;\n          }\n          const existingIndex = state.filteredInsurances.findIndex((code) => code.id === updateItem.id);\n          if (existingIndex !== -1) {\n            state.filteredInsurances[existingIndex] = updateItem;\n          }\n        }\n      });\n  },\n});\n\nexport const {\n  setInsurnaceList,\n  setFilteredInsurnaceList,\n  setOpenInsuranceModal,\n  setSelectedInsurance,\n  setOpenInsruModal,\n} = insuranceSlice.actions;\n\nexport default insuranceSlice.reducer;\n","import React from \"react\";\nimport EditIcon from \"assets/img/edit-icon.png\";\n\nconst InputGrid = (props) => {\n  const { headerLabel, list, handleEdit, cssClass } = props;\n  return (\n    <>\n      <div className={`order-select-edited mb-4 ${cssClass}`}>\n        <div className=\"column-gap-15 form-group-wrapper align-items-center mb-0 m-0 secondary-insurance-head\">\n          <label className=\"w-94 heading-insurance\">{headerLabel}</label>\n          {handleEdit && (\n            <img\n              src={EditIcon}\n              width=\"18\"\n              alt=\"edit icon\"\n              onMouseLeave={(e) => (e.target.style.color = \"black\")}\n              onMouseOver={(e) => {\n                e.target.style.cursor = \"pointer\";\n              }}\n              aria-hidden=\"true\"\n              onClick={(e) => handleEdit(e)}\n            />\n          )}\n        </div>\n        {list &&\n          list.map((item, i) => {\n            return (\n              item && (\n                <div className=\"d-flex secondary-insurance-change list-item-ins\" key={i}>\n                  <label className=\"mxw-50\">{item.label}</label>\n                  <input\n                    className={`height-32 modalInput hidebordar ellipsis secondary-edit-input text-right`}\n                    value={item.value || \"\"}\n                    title={item.value || \"\"}\n                    type=\"text\"\n                    readOnly={true}\n                  />\n                </div>\n              )\n            );\n          })}\n      </div>\n    </>\n  );\n};\n\nexport default InputGrid;\n","import api from \"api\";\nimport Loader from \"components/Loader/Loader\";\nimport { INSURANCE_PROVIDER, MEDICATRE_IDS, MESSAGE_MODES, PAYER_NETWORK_OPTIONS } from \"constant\";\nimport moment from \"moment\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Button, Form, Modal } from \"react-bootstrap\";\nimport DatePicker from \"react-date-picker\";\nimport Select from \"react-select\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { CONFIG } from \"../../constant\";\nimport { t } from \"../../stringConstants\";\nimport { convertToUpper, getValidDep, isValidIDNumber, isValidName, validatePhone } from \"../../utils\";\nimport RadioButton from \"../RadioButton/RadioButton\";\nimport { insurnaceSelector, selectedInsurnaceSelector } from \"../../store/features/insurances/insuranceSelectors\";\nimport DropDown from \"../Modal/DropDown\";\nimport AutoCompleteAddress from \"../AutoCompleteAddress\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport { createInsuranceAsync, updateInsuranceAsync } from \"../../store/features/insurances/insuranceSlice\";\nimport InputField from \"components/InputField/InputField\";\nimport InputGrid from \"components/Input/InputGrid\";\nimport { selectedCompanySetting } from \"store/features/companySetting/companySettingSelectors\";\nimport { AppContext } from \"context/app-context\";\n\nconst options = {\n  componentRestrictions: { country: \"us\" },\n  fields: [\"address_components\", \"name\", \"formatted_address\"],\n  strictBounds: false,\n  types: [],\n};\nconst InsuranceModal = (props) => {\n  const { handleClose, cssClass } = props;\n  const { selectedInsurance } = useSelector(insurnaceSelector);\n  const [newInsurance, setNewInsurnace] = useState(selectedInsurance);\n  const [address, setAddress] = useState(null);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const firstNameRef = useRef();\n  const dispatch = useDispatch();\n  const appContext = useContext(AppContext);\n\n  const { otherNPI, cliaNumber } = useSelector(selectedCompanySetting);\n\n  useEffect(() => {\n    setTimeout(() => {\n      setError(\"\");\n    }, 4000);\n  }, [error]);\n\n  useEffect(() => {\n    if (firstNameRef.current) {\n      firstNameRef.current.focus();\n    }\n\n    if (newInsurance.npi) {\n      const data = otherNPI?.find((f) => f.npi === newInsurance.npi);\n      if (data) {\n        setNewInsurnace({\n          ...newInsurance,\n          npiName: data.name,\n        });\n      }\n    }\n  }, []);\n\n  const checkValidation = (newInsurance) => {\n    if (!newInsurance.Name || !newInsurance.Name.trim()) {\n      setError(\"Insurance name is required\");\n      return;\n    }\n\n    if (!newInsurance.shortName || !newInsurance.shortName.trim()) {\n      setError(\"Lab Alias is required\");\n      return;\n    }\n\n    // if (!newInsurance.phone || !newInsurance.phone.trim()) {\n    //   setError(\"Phone Number is required\");\n    //   return;\n    // }\n    // if (!validatePhone(newInsurance.phone)) {\n    //   setError(\"Invalid Phone Number\");\n    //   return;\n    // }\n    // if (!newInsurance.fax || !newInsurance.fax.trim()) {\n    //   setError(\"Fax is required\");\n    //   return;\n    // }\n    // if (!validatePhone(newInsurance.fax)) {\n    //   setError(\"Invalid Fax\");\n    //   return;\n    // }\n    // if (!newInsurance.eClaim) {\n    //   if (!newInsurance.manualTerm || !newInsurance.manualTerm.trim()) {\n    //     setError(\"Term is required\");\n    //     return;\n    //   }\n    //   if (!newInsurance.eFax || !newInsurance.eFax.trim()) {\n    //     setError(\"eFax is required\");\n    //     return;\n    //   }\n    //   if (!validatePhone(newInsurance.eFax)) {\n    //     setError(\"Invalid eFax\");\n    //     return;\n    //   }\n    //   if (!newInsurance.manualMail || !newInsurance.manualMail.trim()) {\n    //     setError(\"Mail is required\");\n    //     return;\n    //   }\n    // }\n\n    // if (!newInsurance.ERA) {\n    //   if (!newInsurance.eraMail || !newInsurance.eraMail.trim()) {\n    //     setError(\"Era Mail is required\");\n    //     return;\n    //   }\n    // }\n    // if (!newInsurance.claimPhone || !newInsurance.claimPhone.trim()) {\n    //   setError(\"Claim Phone is required\");\n    //   return;\n    // }\n    // if (!validatePhone(newInsurance.claimPhone)) {\n    //   setError(\"Invalid Claim Phone\");\n    //   return;\n    // }\n\n    // if (!newInsurance.claimFax || !newInsurance.claimFax.trim()) {\n    //   setError(\"Claim Fax is required\");\n    //   return;\n    // }\n    // if (!validatePhone(newInsurance.claimFax)) {\n    //   setError(\"Invalid Claim Fax\");\n    //   return;\n    // }(\n\n    if (!newInsurance.npi || !newInsurance.npi.trim()) {\n      setError(\"NPI is Required\");\n      return;\n    }\n\n    return true;\n  };\n\n  const onHandleSave = async () => {\n    const isValidation = checkValidation(newInsurance);\n    if (!isValidation) return;\n\n    const data = {\n      ...newInsurance,\n      clientID: CONFIG.clientID,\n      updatedByName: appContext.user?.name,\n      updatedBy: appContext.user?.sub,\n    };\n\n    if (newInsurance.eClaim) {\n      Object.assign(data, { manualAmount: 0, manualTerm: \"\", manualMail: \"\", eFax: \"\" });\n    }\n    if (newInsurance.ERA) {\n      Object.assign(data, { eraMail: false });\n    }\n\n    try {\n      if (newInsurance.isNew) {\n        dispatch(createInsuranceAsync(data));\n      } else {\n        dispatch(updateInsuranceAsync(data));\n      }\n      handleClose();\n    } catch (err) {\n      console.log(err);\n      dispatch(setMessage(err.message, MESSAGE_MODES.error));\n    }\n  };\n\n  const handlePhoneNo = (e) => {\n    setNewInsurnace({\n      ...newInsurance,\n      phoneNumber: e,\n    });\n  };\n  const handleUpdateAddress = (val, flag) => {\n    const addressObj = {\n      address: val.street,\n      city: val.city,\n      zip: val.zipcode,\n      state: val.state,\n    };\n    setNewInsurnace({ ...newInsurance, ...addressObj });\n  };\n\n  const handleUpdateClaimAddress = (val, flag) => {\n    const addressObj = {\n      claimAddress: val.street,\n      claimCity: val.city,\n      claimZip: val.zipcode,\n      claimState: val.state,\n    };\n    setNewInsurnace({ ...newInsurance, ...addressObj });\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        size=\"xl\"\n        onHide={() => {\n          handleClose();\n        }}\n        backdrop=\"static\"\n        className={cssClass ?? \"\"}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {newInsurance.isNew ? \"Setup Payer\" : \"Edit Payer\"}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"createClientsWrapper\">\n            <div className=\"leftSide\">\n              <div className=\"row mb-3\">\n                <InputField\n                  type=\"dropDown\"\n                  groupWrapper=\"w-100\"\n                  options={INSURANCE_PROVIDER}\n                  labelStyle=\"text-capitalize\"\n                  label=\"Select Payer:\"\n                  value={newInsurance.payerId ? INSURANCE_PROVIDER.find((f) => f.value === newInsurance.payerId) : null}\n                  index=\"Name\"\n                  isClearable={true}\n                  placeholder=\"Select Payer\"\n                  handleChange={(e) => {\n                    if (e) {\n                      setNewInsurnace({ ...newInsurance, Name: e.label, payerId: e.value });\n                    } else {\n                      setNewInsurnace({ ...newInsurance, Name: \"\", payerId: \"\" });\n                    }\n                  }}\n                />\n                {/* <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Select Insurnace: </label>\n                  <DropDown\n                    data={INSURANCE_PROVIDER}\n                    handleChange={(val, e) => {\n                      console.log(\"Val\", e);\n                      setNewInsurnace({\n                        ...newInsurance,\n                        Name: e.label,\n                        payerId: e.value,\n                      });\n                    }}\n                  />\n                </div> */}\n                <div className=\"form-group-wrapper mt-3\">\n                  <label className=\"modalLineHeaders\">Alias: </label>\n                  <input\n                    ref={firstNameRef}\n                    value={newInsurance.shortName}\n                    className=\"modalInput\"\n                    placeholder=\"Alias\"\n                    style={{\n                      width: \"100%\",\n                    }}\n                    onChange={(e) =>\n                      setNewInsurnace({\n                        ...newInsurance,\n                        shortName: getValidDep(e.target.value),\n                      })\n                    }\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"mb-1\">Address:</label>\n                  <AutoCompleteAddress\n                    value={newInsurance.address}\n                    handleChange={handleUpdateAddress}\n                    cssClass={\"modalInput\"}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders mt-0\">City:</label>\n                  <input\n                    type=\"text\"\n                    className=\"modalInput\"\n                    value={newInsurance.city}\n                    placeholder=\"City\"\n                    onChange={(e) => setNewInsurnace({ ...newInsurance, city: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders mt-0\">State:</label>\n                  <input\n                    type=\"text\"\n                    className=\"modalInput\"\n                    value={newInsurance.state}\n                    placeholder=\"State\"\n                    onChange={(e) => setNewInsurnace({ ...newInsurance, state: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <Form.Group className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders mt-0 text-capitalize\">Phone Number</label>\n                    <PhoneNoInput\n                      cssClass={`employee-phone-input`}\n                      handleChange={(e) =>\n                        setNewInsurnace({\n                          ...newInsurance,\n                          phone: e,\n                        })\n                      }\n                      value={newInsurance.phone}\n                    />\n                  </Form.Group>\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <Form.Group className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders mt-0 text-capitalize\">Fax</label>\n                    <PhoneNoInput\n                      cssClass={`employee-phone-input`}\n                      handleChange={(e) =>\n                        setNewInsurnace({\n                          ...newInsurance,\n                          fax: e,\n                        })\n                      }\n                      value={newInsurance.fax}\n                    />\n                  </Form.Group>\n                </div>\n                <InputField\n                  type=\"dropDown\"\n                  groupWrapper=\"w-100\"\n                  options={otherNPI?.map((m) => ({ ...m, value: m.npi, label: m.npi })) || []}\n                  labelStyle=\"text-capitalize\"\n                  label=\"Select Insurance NPI:\"\n                  value={newInsurance.npi ? { value: newInsurance.npi, label: newInsurance.npi } : null}\n                  index=\"Name\"\n                  isClearable={true}\n                  placeholder=\"Select Insurance NPI\"\n                  handleChange={(e) => {\n                    if (e) {\n                      setNewInsurnace({\n                        ...newInsurance,\n                        npi: e.value,\n                        npiName: e.name,\n                      });\n                    } else {\n                      setNewInsurnace({ ...newInsurance, npi: \"\" });\n                    }\n                  }}\n                />\n                {newInsurance.npi && (\n                  <InputGrid\n                    cssClass=\"mt-3\"\n                    headerLabel={\"Lab Insurance Details\"}\n                    list={[\n                      { label: \"Name\", value: newInsurance.npiName },\n                      {\n                        label: \"Address\",\n                        value: newInsurance.address,\n                      },\n                    ]}\n                  />\n                )}\n                <InputField\n                  type=\"dropDown\"\n                  groupWrapper=\"w-100\"\n                  options={cliaNumber?.map((m) => ({ value: m.cliCode, label: m.cliCode })) || []}\n                  labelStyle=\"text-capitalize\"\n                  label=\"Select CLIA Number:\"\n                  value={\n                    newInsurance.cliaNumber ? { value: newInsurance.cliaNumber, label: newInsurance.cliaNumber } : null\n                  }\n                  index=\"Name\"\n                  isClearable={true}\n                  placeholder=\"Select CLIA Number\"\n                  handleChange={(e) => {\n                    if (e) {\n                      setNewInsurnace({ ...newInsurance, cliaNumber: e.value });\n                    } else {\n                      setNewInsurnace({ ...newInsurance, cliaNumber: \"\" });\n                    }\n                  }}\n                />\n\n                <div\n                  className=\"d-flex align-items-center justify-content-between profile-\n                          detail mt-3\"\n                >\n                  <span>Active</span>\n                  <SwitchToggle\n                    checked={newInsurance.isActive}\n                    handleChange={(e) =>\n                      setNewInsurnace({\n                        ...newInsurance,\n                        isActive: e.target.checked,\n                      })\n                    }\n                  />\n                </div>\n              </div>\n            </div>\n            <div className=\"leftSide\">\n              <div className=\"row mb-3\">\n                <div\n                  className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-3\"\n                >\n                  <span>Electronic Claims:</span>\n                  <SwitchToggle\n                    checked={newInsurance.eClaim}\n                    handleChange={(e) =>\n                      setNewInsurnace({\n                        ...newInsurance,\n                        eClaim: e.target.checked,\n                      })\n                    }\n                  />\n                </div>\n                {!newInsurance.eClaim && (\n                  <>\n                    <div className=\"form-group-wrapper\">\n                      <label className=\"modalLineHeaders mt-0\">Term:</label>\n                      <input\n                        type=\"text\"\n                        className=\"modalInput\"\n                        value={newInsurance.manualTerm}\n                        placeholder=\"Term\"\n                        onChange={(e) => setNewInsurnace({ ...newInsurance, manualTerm: e.target.value })}\n                      />\n                    </div>\n                    <div className=\"form-group-wrapper\">\n                      <label className=\"modalLineHeaders mt-0\">Amount:</label>\n                      <input\n                        type=\"number\"\n                        className=\"modalInput\"\n                        value={newInsurance.manualAmount}\n                        placeholder=\"Amount\"\n                        onChange={(e) => setNewInsurnace({ ...newInsurance, manualAmount: e.target.value })}\n                      />\n                    </div>\n                    <Form.Group className=\"form-group-wrapper\">\n                      <label className=\"modalLineHeaders mt-0 text-capitalize\">eFax</label>\n                      <PhoneNoInput\n                        cssClass={`employee-phone-input`}\n                        handleChange={(e) =>\n                          setNewInsurnace({\n                            ...newInsurance,\n                            eFax: e || \"\",\n                          })\n                        }\n                        value={newInsurance.eFax}\n                      />\n                    </Form.Group>\n                    <div className=\"form-group-wrapper\">\n                      <label className=\"modalLineHeaders mt-0\">Mail:</label>\n                      <input\n                        type=\"email\"\n                        className=\"modalInput\"\n                        value={newInsurance.manualMail}\n                        placeholder=\"Mail\"\n                        onChange={(e) => setNewInsurnace({ ...newInsurance, manualMail: e.target.value })}\n                      />\n                    </div>\n                  </>\n                )}\n                <div\n                  className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-3\"\n                >\n                  <span>Electronic Eligibility:</span>\n                  <SwitchToggle\n                    checked={newInsurance.eEligibility}\n                    handleChange={(e) =>\n                      setNewInsurnace({\n                        ...newInsurance,\n                        eEligibility: e.target.checked,\n                      })\n                    }\n                  />\n                </div>\n                <div\n                  className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-3\"\n                >\n                  <span>Electronic EDI:</span>\n                  <SwitchToggle\n                    checked={newInsurance.EDI}\n                    handleChange={(e) =>\n                      setNewInsurnace({\n                        ...newInsurance,\n                        EDI: e.target.checked,\n                      })\n                    }\n                  />\n                </div>\n                <div\n                  className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-3\"\n                >\n                  <span>Electronic ERA:</span>\n                  <SwitchToggle\n                    checked={newInsurance.ERA}\n                    handleChange={(e) =>\n                      setNewInsurnace({\n                        ...newInsurance,\n                        ERA: e.target.checked,\n                      })\n                    }\n                  />\n                </div>\n\n                {!newInsurance.ERA && (\n                  <div\n                    className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-3\"\n                  >\n                    <span>ERA Mail:</span>\n                    <SwitchToggle\n                      checked={newInsurance.eraMail}\n                      handleChange={(e) =>\n                        setNewInsurnace({\n                          ...newInsurance,\n                          eraMail: e.target.checked,\n                        })\n                      }\n                    />\n                  </div>\n                )}\n                <div className=\"form-group-wrapper\">\n                  <label className=\"mb-1\">Claim Address:</label>\n                  <AutoCompleteAddress\n                    value={newInsurance.claimAddress}\n                    handleChange={handleUpdateClaimAddress}\n                    cssClass={\"modalInput\"}\n                  />\n                </div>\n\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders mt-0\">Claim City:</label>\n                  <input\n                    type=\"text\"\n                    className=\"modalInput\"\n                    value={newInsurance.claimCity}\n                    placeholder=\"City\"\n                    onChange={(e) => setNewInsurnace({ ...newInsurance, claimCity: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders mt-0\">Claim State:</label>\n                  <input\n                    type=\"text\"\n                    className=\"modalInput\"\n                    value={newInsurance.claimState}\n                    placeholder=\"State\"\n                    onChange={(e) => setNewInsurnace({ ...newInsurance, claimState: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <Form.Group className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders mt-0 text-capitalize\">Claim Phone Number</label>\n                    <PhoneNoInput\n                      cssClass={`employee-phone-input`}\n                      handleChange={(e) =>\n                        setNewInsurnace({\n                          ...newInsurance,\n                          claimPhone: e,\n                        })\n                      }\n                      value={newInsurance.claimPhone}\n                    />\n                  </Form.Group>\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <Form.Group className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders mt-0 text-capitalize\">Claim Fax</label>\n                    <PhoneNoInput\n                      cssClass={`employee-phone-input`}\n                      handleChange={(e) =>\n                        setNewInsurnace({\n                          ...newInsurance,\n                          claimFax: e,\n                        })\n                      }\n                      value={newInsurance.claimFax}\n                    />\n                  </Form.Group>\n                </div>\n                <InputField\n                  type=\"dropDown\"\n                  groupWrapper=\"w-100\"\n                  options={PAYER_NETWORK_OPTIONS}\n                  labelStyle=\"text-capitalize\"\n                  label=\"Network Type:\"\n                  value={newInsurance.network ? { value: newInsurance.network, label: newInsurance.network } : null}\n                  index=\"Name\"\n                  isClearable={true}\n                  placeholder=\"Select\"\n                  handleChange={(e) => {\n                    setNewInsurnace({\n                      ...newInsurance,\n                      network: e.value,\n                    });\n                  }}\n                />\n              </div>\n            </div>\n          </div>\n        </Modal.Body>\n        <div className=\"px-4 my-2\" style={{ height: \"2vh\" }}>\n          {\" \"}\n          {error.length > 0 && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </div>\n        {!loading ? (\n          <Modal.Footer>\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"primary\"\n              className=\"modalButtons headerButton btn-fill\"\n              onClick={() => {\n                handleClose();\n              }}\n            >\n              Close\n            </Button>\n\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"secondary\"\n              className=\"modalButtons headerButton btn-fill\"\n              onClick={() => onHandleSave()}\n            >\n              {newInsurance.isNew ? \"Save\" : \"Update\"}\n            </Button>\n          </Modal.Footer>\n        ) : (\n          <Loader />\n        )}\n      </Modal>\n    </>\n  );\n};\n\nexport default InsuranceModal;\n","import ViewCheckBox from \"components/CheckBox/ViewCheckBox\";\nimport Icon from \"components/Icon\";\nimport Loader from \"components/Loader/Loader\";\nimport { useCallback, useEffect, useRef, useState, useMemo, useContext } from \"react\";\nimport { Card, Col, Row, Table } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport \"../../../src/tableStyling.css\";\nimport EditIcon from \"../../assets/img/edit-icon.png\";\nimport TrashIcon from \"../../assets/img/trash-icon.png\";\nimport { INSURANCE_PERSONALIZE } from \"../../constants/personalization/InsPersonalization\";\nimport { insurnaceSelector, totalInsurancesRecordsSelector } from \"../../store/features/insurances/insuranceSelectors\";\nimport { selectedCompanySetting } from \"../../store/features/companySetting/companySettingSelectors\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport { t } from \"../../stringConstants\";\nimport Filter from \"components/Filter\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport {\n  fetchInsurancesAsync,\n  setInsurnaceList,\n  setOpenInsuranceModal,\n  setSelectedInsurance,\n} from \"../../store/features/insurances/insuranceSlice\";\n// import InsuranceModal from \"../../components/Insurances/InsuranceModal;\nimport { debounce } from \"debounce\";\nimport InsuranceModal from \"components/Insurances/InsuranceModal\";\nimport {\n  INSURANCE_EMPTY_OBJECT,\n  PAGE_LIMIT,\n  TABLE_QUICK_TOOLS,\n  PAYER_MANAGEMENT_VALUE,\n  PAYER_DROPDOWN_OPTIONS,\n} from \"../../constant\";\nimport MainTable from \"../../components/Table/MainTable\";\nimport {\n  draggablePersonalizationLocalStorage,\n  userCompanyID,\n  formatNumber,\n  nameToTitleCase,\n  uniqueObject,\n} from \"../../utils\";\nimport api from \"../../api\";\nimport { AppContext } from \"context/app-context\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport PGPagination from \"components/Pagination/PGPagination\";\nimport Status from \"components/Status/Status\";\n\nconst Insurances = (props) => {\n  const [triggerFilter, setTriggerFilter] = useState(false);\n  const [filterTabIndex, setFilterTabIndex] = useState(0);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [personalize, setPersonalize] = useState([]);\n  const [sortDescending, setSortDescending] = useState(true);\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const dispatch = useDispatch();\n  const { insurancesList, filteredInsurances } = useSelector(insurnaceSelector);\n  const totalInsurances = useSelector(totalInsurancesRecordsSelector);\n  const setting = useSelector(selectedCompanySetting);\n  const appContext = useContext(AppContext);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [usersPerPage, setUsersPerPage] = useState(PAGE_LIMIT);\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n  const permission = useSelector(userGivenPermission);\n  const [totalPages, setTotalPages] = useState(1);\n  const [pageNo, setPageNo] = useState(1);\n  const [loading, setLoading] = useState(false);\n\n  const quickTools = [permission[PAYER_MANAGEMENT_VALUE]?.write && TABLE_QUICK_TOOLS.edit];\n  const loginUser = appContext.user;\n  const searchTerms = [\"Name\", \"Alias\", \"Electronic Claims\", \"Electronic Eligibility\", \"Electronic ERA\", \"Active\"];\n\n  const fetchFromApi = useCallback(\n    debounce(async (filter, sortBy, sortDescending, page) => {\n      setLoading(true);\n      try {\n        await dispatch(\n          fetchInsurancesAsync({\n            ...filter,\n            orderBy: sortBy,\n            orderByDirection: sortDescending,\n            page: page || 1,\n          })\n        ).unwrap();\n      } catch (error) {\n        console.error(\"Failed to fetch insurances:\", error);\n      } finally {\n        setLoading(false);\n      }\n    }, 1000),\n    [dispatch]\n  );\n\n  useEffect(() => {\n    fetchFromApi(filter, sortBy, sortDescending);\n  }, [filter, sortBy, sortDescending]);\n\n  useEffect(() => {\n    const response = draggablePersonalizationLocalStorage.get(loginUser, \"insurance\", INSURANCE_PERSONALIZE);\n    setPersonalize(response);\n  }, [setting]);\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        dispatch(setOpenInsuranceModal(true));\n        dispatch(setSelectedInsurance({ ...row, isNew: false }));\n        break;\n\n      default:\n        break;\n    }\n  };\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n    const personalisationData = draggablePersonalizationLocalStorage.saveAs(data, \"insurance\");\n    setOpenPersonalizationModal(false);\n    draggablePersonalizationLocalStorage.save(JSON.stringify(personalisationData));\n    await api.saveUserPersonalisation(loginUser.sub, personalisationData);\n  };\n\n  const insurancesToMap = useMemo(() => {\n    const list = filteredInsurances ? [...filteredInsurances] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredInsurances, currentPage]);\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filteredInsurances.length;\n    if (direction === \"next\" && page === totalPages && totalInsurances > 0 && currentRecord < totalInsurances) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      fetchFromApi(filter, sortBy, sortDescending, pageNo);\n    }\n  }, [pageNo]);\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"isActive\") {\n      const isActive = row[item.itemKey] || false;\n      return (\n        <td>\n          <div className=\"star-icon-wrapper cursor-pointer text-center\">\n            <Status\n              type=\"circle\"\n              size=\"md\"\n              title={isActive ? \"Active\" : \"Inactive\"}\n              color={isActive ? \"green\" : \"orange\"}\n              crossIcon={isActive === false}\n              tickIcon={isActive === true}\n            />\n          </div>\n        </td>\n      );\n    }\n\n    if (item.itemKey === \"network\") {\n      const networkStatus = row[item.itemKey];\n      \n      const isInNetwork = networkStatus === \"In Network\";\n\n      const colorMap = {\n        \"In Network\": \"green\",\n        \"Out of Network\": \"red\"\n      };\n\n      const color = colorMap[networkStatus] || \"orange\";\n    \n      return (\n        <td>\n          <div className=\"star-icon-wrapper cursor-pointer text-center\">\n            <Status\n              type=\"circle\"\n              size=\"md\"\n              title={networkStatus}\n              color={color}\n              crossIcon={!isInNetwork}\n              tickIcon={isInNetwork}\n            />\n          </div>\n        </td>\n      );\n    }\n    \n  };\n\n  return (\n    <div style={{ flex: 1 }}>\n      <>\n        <Row>\n          {loading && <Loader />}\n          <Col>\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  {`${t(\"payerManagement\")}  (${formatNumber(totalInsurances) || insurancesToMap.length})`}\n                </Card.Title>\n                <div className=\"buttonHeader\">\n                  <Icon\n                    handleClick={() => setShowFilter(!showFilter)}\n                    title={\"Filter\"}\n                    label={\"Filter\"}\n                    iconType={\"filter\"}\n                  />\n                  <Icon\n                    handleClick={() => setOpenPersonalizationModal(true)}\n                    title={t(\"personalize\")}\n                    label={t(\"personalize\")}\n                    iconType={\"personalizeIcon\"}\n                  />\n\n                  <ExportToExcel\n                    selectedItem={personalize.length > 0 && personalize.filter((m) => m.isCheck && m.itemKey)}\n                    items={filteredInsurances.map((e) => {\n                      return {\n                        ...e,\n                      };\n                    })}\n                    filter={filter}\n                    title={t(\"payerManagement\")}\n                    sortBy={sortBy}\n                  />\n                  {permission[PAYER_MANAGEMENT_VALUE]?.write && (\n                    <Icon\n                      handleClick={() => {\n                        dispatch(setOpenInsuranceModal(true));\n                        dispatch(setSelectedInsurance({ ...INSURANCE_EMPTY_OBJECT, clientID: userCompanyID.get() }));\n                      }}\n                      title={\"Create Insurance\"}\n                      label={\"Create\"}\n                      iconType={\"createIcon\"}\n                    />\n                  )}\n                </div>\n                {showFilter && (\n                  <Filter\n                  triggerFilter={triggerFilter}\n                  setTriggerFilter={setTriggerFilter}\n                  isGrouped={true}\n                  filterTabIndex={filterTabIndex}\n                  setFilterTabIndex={(value) => setFilterTabIndex(value)}\n                    filterTerms={searchTerms}\n                    setFilter={setFilter}\n                    filter={filter}\n                    personalisationData={INSURANCE_PERSONALIZE}\n                  />\n                )}\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width desktop-noScroll\">\n                <Card.Header className=\"shows-screen-wrapper mb-3\">\n                  <Row className=\"pb-4\">\n                    <Col md-=\"6\"></Col>\n                    <Col md=\"6\">\n                      <PGPagination\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                        currentRecord={filteredInsurances?.length}\n                      />\n                    </Col>\n                  </Row>\n                </Card.Header>\n                <MainTable\n                  cssClass={filteredInsurances.length === 0 && \"overFlow-y-hidden\"}\n                  columns={uniqueObject(personalize, \"id\")}\n                  rows={insurancesToMap}\n                  flipSort={flipSort}\n                  sortBy={sortBy}\n                  sortDescending={sortDescending}\n                  draggable\n                  resizable\n                  personalisationKey={\"insurance\"}\n                  tools={quickTools}\n                  handleSaveDragAndResize={(personalizeArr) => setPersonalize(personalizeArr)}\n                  widthToSkip={130}\n                  handleCellClick={handleCellClick}\n                  customColumnCellRenderer={customRenderTD}\n                  dropDownOptions={PAYER_DROPDOWN_OPTIONS}\n                  handleDropDownClick={(type, row) => {\n                    console.log(\"Type\", type);\n                    if (type === \"Audit Trail\") {\n                      appContext.showLogs({ ...row, recordType: \"Audit Trail\", title: \"Payer Logs\" });\n                    }\n                  }}\n                />\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n        {openPersonalizationModal && (\n          <PersonalizationModal\n            data={uniqueObject(personalize, \"id\")}\n            handleChange={handlePersonalization}\n            show={openPersonalizationModal}\n            handleClose={() => setOpenPersonalizationModal(false)}\n          />\n        )}\n      </>\n    </div>\n  );\n};\n\nexport default Insurances;\n","export const selectedSubAgent = (state) => state.subAgents;\n\n","import { CONFIG, MESSAGE_MODES } from \"constant\";\nimport { useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { CSVReader } from \"react-papaparse\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Select from \"react-select\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { userCompanyID } from \"utils\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport { selectedSubAgent } from \"store/features/subAgents/subAgentsSelectors\";\nimport { selectedLocation } from \"store/features/locations/locationsSelectors\";\nimport { downloadDataAsCSV } from \"utils\";\n\nconst ProcedureImportModal = (props) => {\n  const { handleClose, handleImport, title, subAgent } = props;\n  const dispatch = useDispatch();\n  const loginUser = useSelector(selectLoginUser);\n  const { locations } = useSelector(selectedLocation);\n  const { subAgents } = useSelector(selectedSubAgent);\n\n  //   const getSelectedCompany = () => {\n  //     if (loginUser?.isSubAgent() && !subAgents) {\n  //       return userCompanyID.get();\n  //     } else if (loginUser?.isSite() && subAgents) {\n  //       return userCompanyID.get();\n  //     }\n  //     if ((subAgent ? locations : subAgents).length === 1) {\n  //       return (subAgent ? locations : subAgents)[0].id;\n  //     }\n\n  //     return \"\";\n  //   };\n\n  const handleDownloadSample = async () => {\n    await downloadDataAsCSV(\n      [\n        {\n          proc_code: \"A9600\",\n          alias: \"A9600\",\n          proc_desc: \"Sr89 strontium\",\n          charge: \"$0.00\",\n          active: \"yes\",\n        },\n      ],\n      \"Procedure Code Import Sample\"\n    );\n  };\n  //   const [selectedCompany, setSelectedCompany] = useState(getSelectedCompany());\n\n  const handleOnDrop = (data) => {\n    // if (!selectedCompany) {\n    //   dispatch(setMessage(\"Please select the facility/agent first then import\", MESSAGE_MODES.error));\n    //   // return;\n    // } else {\n    //   handleImport(data, selectedCompany);\n    handleImport(data);\n    // }\n  };\n  const handleOnError = (err) => {\n    console.log({ err });\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n  };\n\n  return (\n    <Modal show animation={true} backdrop=\"static\" onHide={() => handleClose()} centered size={\"lg\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {title}\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"form-group-wrapper d-block\">\n          {CONFIG.isLabType && (\n            <div\n              style={{\n                textAlign: \"right\",\n                color: \"#42cef5\",\n                textAlign: \"center\",\n                cursor: \"Pointer\",\n              }}\n              onClick={() => handleDownloadSample()}\n            >\n              Download Upload Template\n            </div>\n          )}\n          {/* {selectedCompany && ( */}\n          <CSVReader\n            onDrop={handleOnDrop}\n            onError={handleOnError}\n            addRemoveButton\n            config={{\n              header: true,\n              skipEmptyLines: true,\n            }}\n            onRemoveFile={handleOnRemoveFile}\n          >\n            <span>Drop CSV file here or click to upload.</span>\n          </CSVReader>\n          {/* )} */}\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer className=\"flex-row-reverse\">\n        <Button variant=\"secondary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n          OK\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ProcedureImportModal;\n","import React, { useState, useEffect } from \"react\";\nimport Form from \"react-bootstrap/Form\";\nimport { formatCurrency, parseCurrency } from \"utils\";\n\nconst CurrencyInput = ({ value, onChange, label = \"\", placeholder = \"\", className = \"\" }) => {\n  const [inputValue, setInputValue] = useState(\"\");\n\n  useEffect(() => {\n    const parsedValue = parseCurrency(value);\n    setInputValue(formatCurrency(parsedValue));\n  }, []);\n\n  const handleChange = (e) => {\n    const value = e.target.value;\n    setInputValue(value);\n    onChange(parseCurrency(value));\n  };\n\n  const handleBlur = () => {\n    const parsedValue = parseCurrency(inputValue);\n    setInputValue(formatCurrency(parsedValue));\n  };\n\n  return (\n    <Form.Group className={`form-group-wrapper w-100 ${className}`}>\n      {label && <Form.Label className=\"mt-0 text-capitalize\">{label}</Form.Label>}\n      <Form.Control\n        className=\"modalInput\"\n        maxLength={65}\n        onChange={handleChange}\n        onBlur={handleBlur}\n        value={inputValue}\n        placeholder={placeholder}\n        type=\"text\"\n      />\n    </Form.Group>\n  );\n};\n\nexport default CurrencyInput;\n","import SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport { CLI_ACTIONS } from \"constant\";\nimport { useState } from \"react\";\nimport { Button, Form, Modal } from \"react-bootstrap\";\nimport { useDispatch } from \"react-redux\";\nimport { t } from \"stringConstants\";\nimport { createCPTCodeAsync, updateCPTCodeAsync } from \"../../store/features/cptCodes/cptCodeSlice\";\nimport { RemoveSpaceAndChar, formatCurrency, parseCurrency, parseStringIntoFloat } from \"../../utils\";\nimport InputField from \"components/InputField/InputField\";\nimport moment from \"moment\";\nimport CurrencyInput from \"components/CurrencyInput\";\n\nconst AddProcedureCodeSettingsModal = (props) => {\n  const { handleClose, selectedItem, handleSave } = props;\n  const [newItem, setNewItem] = useState(\n    selectedItem ? { ...selectedItem, action: CLI_ACTIONS.update } : { action: CLI_ACTIONS.add, isActive: true, charges: 0, referenceCharge: 0 }\n  );\n  const [error, setError] = useState(\"\");\n  const dispatch = useDispatch();\n\n  const onHandleSave = async (obj) => {\n    if (!obj.code || !obj.code.trim()) {\n      setError(\"Please fill Procedure Code field!\");\n      return;\n    }\n    if (!obj.description || !obj.description.trim()) {\n      setError(\"CPT code title is required\");\n      return;\n    }\n\n    if (!obj.charges || !obj.charges.toString().trim()) {\n      setError(\"Charge is required\");\n      return;\n    }\n\n    if (!obj.internalCode || !obj.internalCode.toString().trim()) {\n      Object.assign(obj, { internalCode: obj.code });\n    }\n\n    try {\n      if (newItem.action === CLI_ACTIONS.add) {\n        dispatch(createCPTCodeAsync(obj));\n      } else if (newItem.action === CLI_ACTIONS.update) {\n        dispatch(updateCPTCodeAsync(obj));\n      }\n      handleClose();\n    } catch (err) {\n      console.log(\"Error in CPT Modal\", err);\n    }\n  };\n\n  return (\n    <>\n      <Modal show backdrop=\"static\" animation={true} onHide={() => handleClose()} centered size={\"xl\"}>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {newItem.action === CLI_ACTIONS.add ? `${t(\"createCPT\")}` : `${t(\"updateCPT\")}`}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body style={{ paddingTop: 0 }}>\n          <div style={{ display: \"flex\", gap: \"16px\" }}>\n            <div style={{ flex: 1 }}>\n              <div className=\"w-100 createClientsWrapper\">\n                <Form.Group className=\"form-group-wrapper w-100\">\n                  <Form.Label className=\"mt-0 text-capitalize\">Procedure Code:</Form.Label>\n                  <Form.Control\n                    className={`modalInput`}\n                    minLength={5}\n                    onChange={(e) => setNewItem({ ...newItem, code: RemoveSpaceAndChar(e.target.value).toUpperCase() })}\n                    value={newItem?.code}\n                    placeholder=\"Enter Procedure Code\"\n                    type=\"text\"\n                  />\n                </Form.Group>\n              </div>\n              <div className=\"w-100 createClientsWrapper\">\n                <Form.Group className=\"form-group-wrapper w-100\">\n                  <Form.Label className=\"mt-0 text-capitalize\">Alias:</Form.Label>\n                  <Form.Control\n                    className={`modalInput`}\n                    minLength={5}\n                    onChange={(e) => setNewItem({ ...newItem, internalCode: e.target.value.toUpperCase() })}\n                    value={newItem?.internalCode}\n                    placeholder=\"Enter Alias\"\n                    type=\"text\"\n                  />\n                </Form.Group>\n              </div>\n              <div className=\"w-100 createClientsWrapper\">\n                <Form.Group className=\"form-group-wrapper w-100\">\n                  <Form.Label className=\"mt-0 text-capitalize\">Description</Form.Label>\n                  <Form.Control\n                    className={`modalInput`}\n                    maxLength={65}\n                    onChange={(e) => setNewItem({ ...newItem, description: e.target.value })}\n                    value={newItem?.description}\n                    placeholder=\"Enter CPT Description\"\n                    type=\"text\"\n                  />\n                </Form.Group>\n              </div>\n\n              <div className=\"w-100 createClientsWrapper\">\n                <Form.Group className=\" w-100\">\n                  <InputField\n                    type=\"datePicker\"\n                    inputStyle=\"w-100 orderTestDob\"\n                    labelStyle=\"modalLineHeaders mt-0 text-capitalize\"\n                    label=\"Retired Date\"\n                    value={\n                      newItem?.retiredDate && new Date(newItem?.retiredDate) != \"Invalid Date\"\n                        ? moment(newItem?.retiredDate, \"YYYY-MM-DD\").toDate()\n                        : null\n                    }\n                    isFutureDateAllowed\n                    placeholder=\"Retired Date\"\n                    handleChange={(e) =>\n                      setNewItem({\n                        ...newItem,\n                        retiredDate: moment(e).format(\"YYYY-MM-DD\") != \"Invalid date\" ? moment(e).toISOString() : \"\",\n                      })\n                    }\n                  />\n                </Form.Group>\n              </div>\n\n              <div className=\"w-100 createClientsWrapper\">\n                <Form.Group className=\"w-100\">\n                  <InputField\n                    isFutureDateAllowed\n                    type=\"datePicker\"\n                    inputStyle=\"w-100 orderTestDob\"\n                    labelStyle=\"modalLineHeaders mt-0 text-capitalize\"\n                    label=\"Effective Date\"\n                    value={\n                      newItem?.effectiveDate && new Date(newItem?.effectiveDate) != \"Invalid Date\"\n                        ? moment(newItem?.effectiveDate, \"YYYY-MM-DD\").toDate()\n                        : null\n                    }\n                    placeholder=\"Effective Date\"\n                    handleChange={(e) =>\n                      setNewItem({\n                        ...newItem,\n                        effectiveDate: moment(e).format(\"YYYY-MM-DD\") != \"Invalid date\" ? moment(e).toISOString() : \"\",\n                      })\n                    }\n                  />\n                </Form.Group>\n              </div>\n            </div>\n\n            <div style={{ flex: 1 }}>\n              {/* 2nd column */}\n\n              <div className=\"w-100 createClientsWrapper\">\n                <CurrencyInput\n                  value={newItem.charges}\n                  onChange={(e) => {\n                    setNewItem({ ...newItem, charges: e });\n                  }}\n                  label=\"Internal Charges\"\n                  placeholder=\"Enter Internal Charges\"\n                />\n              </div>\n\n              <div className=\"w-100 createClientsWrapper\">\n                <CurrencyInput\n                  value={newItem.referenceCharge}\n                  onChange={(e) => {\n                    setNewItem({ ...newItem, referenceCharge: e });\n                  }}\n                  label=\"Reference Charge\"\n                  placeholder=\"Enter Reference Charge\"\n                />\n              </div>\n              <div className=\"w-100 createClientsWrapper\">\n                <CurrencyInput\n                  value={newItem.cashCharge}\n                  onChange={(e) => {\n                    setNewItem({ ...newItem, cashCharge: e });\n                  }}\n                  label=\"Cash Charge\"\n                  placeholder=\"Enter Cash Charge\"\n                />\n              </div>\n              <div className=\"w-100 createClientsWrapper\">\n                <CurrencyInput\n                  value={newItem.inNeworkCharge}\n                  onChange={(e) => {\n                    setNewItem({ ...newItem, inNeworkCharge: e });\n                  }}\n                  label=\"In Network Charge\"\n                  placeholder=\"Enter In Network Charge\"\n                />\n              </div>\n              <div className=\"w-100 createClientsWrapper\">\n                <CurrencyInput\n                  value={newItem.outNetworkCharge}\n                  onChange={(e) => {\n                    setNewItem({ ...newItem, outNetworkCharge: e });\n                  }}\n                  label=\"Out Network Charge\"\n                  placeholder=\"Enter Out Network Charge\"\n                />\n              </div>\n            </div>\n          </div>\n\n          <div\n            className=\"d-flex align-items-center column-gap-10 profile-\n                          detail mb-3\"\n          >\n            <span className=\"section-title\">Active: </span>\n            <SwitchToggle\n              checked={newItem.isActive}\n              handleToogleChange={(e) =>\n                setNewItem({\n                  ...newItem,\n                  isActive: e.target.checked,\n                })\n              }\n            />\n          </div>\n        </Modal.Body>\n        <div className=\"px-4 my-2\" style={{ height: \"2vh\" }}>\n          {error && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </div>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => onHandleSave(newItem)}\n          >\n            {newItem.action === CLI_ACTIONS.add ? \"Create\" : \"Update\"}\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default AddProcedureCodeSettingsModal;\n","import Filter from \"components/Filter\";\nimport Icon from \"components/Icon\";\nimport Loader from \"components/Loader/Loader\";\nimport ProcedureImportModal from \"components/Modal/ProcedureImportModal\";\nimport Status from \"components/Status\";\nimport MainTable from \"components/Table/MainTable\";\nimport { PROCEDURE_CODE_PERSONALIZE } from \"constants/personalization\";\nimport { debounce } from \"debounce\";\nimport moment from \"moment\";\nimport { useCallback, useEffect, useStat, useMemo, useState, useContext } from \"react\";\nimport { Card, Col, Row } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { setLoader } from \"store/features/general/generalSlice\";\nimport \"../../../src/tableStyling.css\";\nimport AddProcedureCodeSettingsModal from \"../../components/GeneralSettings/AddProcedureCodeSettingsModal\";\nimport { MESSAGE_MODES, TABLE_QUICK_TOOLS, PROCEDURE_CODES, PAGE_LIMIT } from \"../../constant\";\nimport {\n  cptCodeSelector,\n  openCreateCPTModalSelector,\n  selectedCPTItemSelector,\n  totalCptRecordsSelector,\n} from \"../../store/features/cptCodes/cptCodeSelectors\";\nimport {\n  fetchCPTCodeAsync,\n  setOpenCreateCPTModal,\n  setSelectedCPTItem,\n} from \"../../store/features/cptCodes/cptCodeSlice\";\nimport { t } from \"../../stringConstants\";\nimport { draggablePersonalizationLocalStorage, userCompanyID, formatNumber } from \"../../utils\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport PGPagination from \"components/Pagination/PGPagination\";\nimport { AppContext } from \"context/app-context\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport api from \"api\";\n\nconst ProcedureCodeSettings = (props) => {\n  const [sortBy, setSortBy] = useState(\"\");\n  const procedureList = useSelector(cptCodeSelector);\n  const totalCptRecords = useSelector(totalCptRecordsSelector);\n  const [sortDescending, setSortDescending] = useState(true);\n  const [showFilter, setShowFilter] = useState(false);\n  const [loading, setLoading] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [openImportModal, setOpenImportModal] = useState(false);\n  const dispatch = useDispatch();\n  const selectedCPTItem = useSelector(selectedCPTItemSelector);\n  const openCreateCPTModal = useSelector(openCreateCPTModalSelector);\n  const user = useSelector(selectLoginUser);\n  const permission = useSelector(userGivenPermission);\n  const [pageNo, setPageNo] = useState(1);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n\n  const [personalize, setPersonalize] = useState([]);\n\n  const [filterProcedureList, setFilterProcedureList] = useState([]);\n\n  const quickTools = [permission[PROCEDURE_CODES]?.write && TABLE_QUICK_TOOLS.edit];\n\n  const searchTerms = [\"Procedure Code\", \"Alias\", \"Procedure Code Desc\", \"Internal Charge\", \"Active\"];\n\n  const appContext = useContext(AppContext);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      const concatResult = filterProcedureList.concat(procedureList);\n      setFilterProcedureList(concatResult);\n    } else {\n      setFilterProcedureList(procedureList);\n    }\n  }, [procedureList]);\n\n  const fetchFromApi = useCallback(\n    debounce(async (filter, sortBy, sortDescending, page) => {\n      dispatch(\n        fetchCPTCodeAsync({\n          ...(Object.keys(filter).length > 0 ? filter : {}),\n          orderBy: sortBy,\n          orderByDirection: sortDescending,\n          page: page || 1,\n        })\n      );\n    }, 1000),\n    []\n  );\n\n  useEffect(() => {\n    setPageNo(1);\n    fetchFromApi(filter, sortBy, sortDescending, 1);\n  }, [filter, sortBy, sortDescending]);\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  const procedureCodesToMap = useMemo(() => {\n    const list = filterProcedureList ? [...filterProcedureList] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filterProcedureList, currentPage]);\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filterProcedureList.length;\n    if (direction === \"next\" && page === totalPages && totalCptRecords > 0 && currentRecord < totalCptRecords) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  const handleImport = async (procedureData) => {\n    setOpenImportModal(false);\n    try {\n      if (procedureData.length === 0) return;\n      dispatch(setLoader(true));\n      const arr = [];\n      const notNpiFound = [];\n      const ttlLength = procedureData.length;\n      const alphanumericRegex = /^[A-Za-z0-9]+$/;\n      const uniqueProcedureCodes = new Set();\n      const duplicateCounts = new Map();\n      for (let index = 0; index < ttlLength; index++) {\n        const { data } = procedureData[index];\n        const procedure = { ...data };\n        if (!procedure.proc_code || !procedure.proc_code.trim() || !alphanumericRegex.test(procedure.proc_code)) {\n          notNpiFound.push(procedure);\n          continue;\n        }\n        if (uniqueProcedureCodes.has(procedure.proc_code)) {\n          const count = duplicateCounts.get(procedure.proc_code) || 0;\n          duplicateCounts.set(procedure.proc_code, count + 1);\n          continue;\n        }\n        uniqueProcedureCodes.add(procedure.proc_code);\n        if (!procedure.alias || !procedure.alias.trim() || !alphanumericRegex.test(procedure.procedure_code)) {\n          notNpiFound.push(procedure);\n          continue;\n        }\n        if (!procedure.proc_desc || !procedure.proc_desc.trim()) {\n          notNpiFound.push(procedure);\n          continue;\n        }\n        if (!procedure.charge || !procedure.charge.trim()) {\n          notNpiFound.push(procedure);\n          continue;\n        }\n        if (!procedure.active || !procedure.active.trim()) {\n          notNpiFound.push(procedure);\n          continue;\n        }\n\n        arr.push({\n          ...procedure,\n          clientID: userCompanyID.get(),\n          requestedBy: user.sub,\n          requestedByName: user.name,\n        });\n      }\n\n      const fileName = `procedure_code/procedure_import${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}.csv`;\n      // await api.saveFileOnBucket(arr, fileName);\n      dispatch(setLoader(false));\n      const duplicateMessage = Array.from(duplicateCounts)\n        .map(([code, count]) => {\n          return `${count} duplicate(s) of procedure code \"${code}\" found.`;\n        })\n        .join(\" \");\n\n      if (notNpiFound.length > 0 || duplicateMessage) {\n        const message = `${notNpiFound.length} Procedure(s) is Invalid Not Found or Already Exist. ${duplicateMessage}`;\n        dispatch(setMessage(message, MESSAGE_MODES.info));\n      }\n    } catch (err) {\n      console.log(err);\n      dispatch(setMessage(err, MESSAGE_MODES.error));\n      dispatch(setLoader(false));\n    }\n  };\n\n  const tdFormat = (item, row) => {\n    if (item === \"isActive\")\n      return row?.isActive ? (\n        <div className=\"star-icon-wrapper\">\n          <Status type=\"circle\" size=\"md\" color=\"green\" tickIcon />\n        </div>\n      ) : (\n        <div className=\"star-icon-wrapper\">\n          <Status type=\"circle\" size=\"md\" color=\"maroon\" crossIcon />\n        </div>\n      );\n    return row[item];\n  };\n\n  const renderTd = (item, row) => {\n    return (\n      <td\n        key={item.id}\n        className=\"ellipsis\"\n        style={{\n          textAlign: item.textAlign,\n          textOverflow: item.textOverflow,\n        }}\n      >\n        {tdFormat(item.itemKey, row)}\n      </td>\n    );\n  };\n\n  const handleCheckboxChange = (e, user) => {\n    const filteredList = checkboxes.filter((c) => c !== user.id);\n    if (e.target.checked) {\n      filteredList.push(user.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        dispatch(setSelectedCPTItem({ item: row }));\n        dispatch(setOpenCreateCPTModal(true));\n        break;\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n      default:\n        break;\n    }\n  };\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      fetchFromApi(filter, sortBy, sortDescending, pageNo);\n    }\n  }, [pageNo]);\n  const loginUser = appContext.user;\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n\n    const personalisationData = draggablePersonalizationLocalStorage.saveAs(data, \"cptCodes\");\n    setOpenPersonalizationModal(false);\n    draggablePersonalizationLocalStorage.save(JSON.stringify(personalisationData));\n\n    await api.saveUserPersonalisation(loginUser.sub, personalisationData);\n  };\n\n  useEffect(() => {\n    const response = draggablePersonalizationLocalStorage.get(loginUser, \"cptCodes\", PROCEDURE_CODE_PERSONALIZE);\n    setPersonalize(response);\n  }, []);\n\n  return (\n    <div style={{ flex: 1 }}>\n      {!loading ? (\n        <Row>\n          <Col>\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  {`${t(\"procedureCodes\")} (${formatNumber(totalCptRecords)})`}\n                </Card.Title>\n                <div className=\"buttonHeader\">\n                  <Icon\n                    handleClick={() => setShowFilter(!showFilter)}\n                    title={\"Filter\"}\n                    label={\"Filter\"}\n                    iconType={\"filter\"}\n                  />\n\n                  <Icon\n                    handleClick={() => setOpenPersonalizationModal(true)}\n                    title={t(\"personalize\")}\n                    label={t(\"personalize\")}\n                    iconType={\"personalizeIcon\"}\n                  />\n                  {permission[PROCEDURE_CODES]?.write && (\n                    <Icon\n                      handleClick={() => dispatch(setOpenCreateCPTModal(true))}\n                      title={\"Create Procedure\"}\n                      label={\"Create\"}\n                      iconType={\"createIcon\"}\n                    />\n                  )}\n                </div>\n                {showFilter && (\n                  <Filter\n                    filterTerms={searchTerms}\n                    setFilter={setFilter}\n                    filter={filter}\n                    isUsersTable={true}\n                    personalisationData={PROCEDURE_CODE_PERSONALIZE}\n                  />\n                )}\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable\">\n                  <Card.Header className=\"shows-screen-wrapper\">\n                    <Row className=\"pb-4\">\n                      <Col md-=\"6\">\n                        <Card.Title>\n                          {/* <div className=\"\">\n                            Procedure codes:\n                            <span className=\"ps-2\"> {totalCptRecords || 0}</span>\n                          </div> */}\n                        </Card.Title>\n                      </Col>\n                      <Col md=\"6\">\n                        <PGPagination\n                          currentPage={currentPage}\n                          handleChangePage={handleChangePage}\n                          totalPages={totalPages}\n                          totalRecord={totalCptRecords}\n                          currentRecord={filterProcedureList?.length}\n                          totalSelected={checkboxes?.length}\n                        />\n                      </Col>\n                    </Row>\n                  </Card.Header>\n                  <MainTable\n                    columns={personalize}\n                    rows={procedureCodesToMap}\n                    flipSort={flipSort}\n                    sortBy={sortBy}\n                    draggable\n                    resizable\n                    sortDescending={sortDescending}\n                    personalisationKey={\"cptCodes\"}\n                    widthToSkip={155}\n                    tools={quickTools}\n                    selectedRows={checkboxes}\n                    handleSaveDragAndResize={(personalizeArr) => setPersonalize(personalizeArr)}\n                    handleCellClick={handleCellClick}\n                    customColumnCellRenderer={renderTd}\n                    dropDownOptions={[{ value: \"Logs\", title: \"Audit Trail\" }]}\n                    handleDropDownClick={(type, row) => {\n                      if (type === \"Audit Trail\") {\n                        appContext.showLogs({ ...row, title: \"Procedure Logs\", recordType: \"cpt\" });\n                      }\n                    }}\n                  />\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n\n          {openCreateCPTModal && (\n            <AddProcedureCodeSettingsModal\n              handleClose={() => {\n                dispatch(setOpenCreateCPTModal(false));\n                dispatch(setSelectedCPTItem(null));\n              }}\n              selectedItem={selectedCPTItem?.item || null}\n            />\n          )}\n\n          {openPersonalizationModal && (\n            <PersonalizationModal\n              data={personalize}\n              handleChange={handlePersonalization}\n              show={openPersonalizationModal}\n              handleClose={() => setOpenPersonalizationModal(false)}\n            />\n          )}\n          {openImportModal && (\n            <ProcedureImportModal\n              handleClose={() => setOpenImportModal(false)}\n              handleImport={handleImport}\n              title={t(\"importProcedureDataTitle\")}\n            />\n          )}\n        </Row>\n      ) : (\n        <Loader />\n      )}\n    </div>\n  );\n};\n\nexport default ProcedureCodeSettings;\n","import React, { useState } from \"react\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport { dependentPermissionsList } from \"constant\";\n\nconst UserPermissions = (props) => {\n  const { permission, setPermission, value, label, isWrite, isDelete, permissionData, width=\"46.5%\",disabled=false } = props;\n\n  const { subObject = [] } = permissionData;\n\n  const handleToggleChange = (e) => {\n    const access = e.target.checked;\n\n    const newPermission = {\n      ...permission,\n      [value]: {\n        ...permission[value],\n        access: access ? true : false,\n        ...(access\n          ? {}\n          : Object.keys(permission[value]).reduce((acc, key) => {\n              acc[key] = false;\n              return acc;\n            }, {})),\n      },\n    };\n\n    if (value === \"settings\" && !access) {\n      dependentPermissionsList.forEach((item) => {\n        newPermission[item] = { access: false, write: false, delete: false };\n      });\n    }\n    if (dependentPermissionsList.includes(value) && access) {\n      newPermission.settings = { ...permission.settings, access: true };\n    }\n    setPermission(newPermission);\n  };\n\n  const handelSubToggleChange = (e, keyValue) => {\n    const checkedValue = e.target.checked;\n    const newPermission = {\n      ...permission,\n      [value]: { ...permission[value], [keyValue]: checkedValue },\n    };\n    setPermission(newPermission);\n  };\n\n  return (\n    <div>\n      <div className=\"userPermission profile-detail\">\n        <div className=\"d-flex align-items-center justify-content-between\">\n          <span className=\"mx-1 font-bold\">{label}</span>\n          <SwitchToggle disabled={disabled} checked={permission[value]?.access} handleToogleChange={handleToggleChange} />\n        </div>\n\n        <>\n          {isWrite && (\n            <div className=\"d-flex mx-2 align-items-center column-gap-10\">\n              <span className=\"mx-1\">Write</span>\n              <input\n                type=\"checkbox\"\n                checked={permission[value]?.write}\n                disabled={!permission[value]?.access}\n                onChange={(e) =>\n                  setPermission({\n                    ...permission,\n                    [value]: { ...permission[value], write: e.target.checked ? true : false },\n                  })\n                }\n              />\n            </div>\n          )}\n          {isDelete && (\n            <div className=\"d-flex mx-2 align-items-center column-gap-10\">\n              <span className=\"mx-1\">Archive</span>\n              <input\n                type=\"checkbox\"\n                checked={permission[value]?.delete}\n                disabled={!permission[value]?.access}\n                onChange={(e) =>\n                  setPermission({\n                    ...permission,\n                    [value]: { ...permission[value], delete: e.target.checked ? true : false },\n                  })\n                }\n              />\n            </div>\n          )}\n        </>\n      </div>\n\n      <div className=\"userPermissionChecks \">\n        {subObject.map((item) => (\n          <div className=\"d-flex mx-2 align-items-center \">\n            <span className=\"mx-1\" style={{ width: width }}>\n              {item.label}\n            </span>\n            <SwitchToggle\n              checked={permission[value]?.[item.value] || false}\n              handleToogleChange={(e) => handelSubToggleChange(e, item.value)}\n              disabled={!permission[value]?.access || false}\n            />\n          </div>\n        ))}\n      </div>\n    </div>\n  );\n};\n\nexport default UserPermissions;\n","import React, { useEffect, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport UserPermissions from \"./userPermissions\";\nimport { PERMISSIONS_LIST, DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS } from \"constant\";\nimport Loader from \"components/Loader/Loader\";\n\nconst CreateUserRolesOptions = ({\n  handleClose,\n  title,\n  label,\n  handleSaveChange,\n  selectedValue,\n  editObj,\n  loading = false,\n  disabled = false,\n}) => {\n  const [option, setOption] = useState(\"\");\n\n  const [permission, setPermission] = useState(DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS);\n\n  useEffect(() => {\n    if (selectedValue) {\n      setOption(selectedValue);\n    }\n  }, [selectedValue]);\n\n  useEffect(() => {\n    if (editObj) {\n      setOption(editObj?.label || \"\");\n      let newPermission = JSON.parse(editObj.code);\n      setPermission(newPermission);\n    }\n  }, [editObj]);\n\n  const handleSaveOptions = () => {\n    if (option) {\n      handleSaveChange({ option, permission });\n    }\n  };\n\n  return (\n    <Modal\n      show\n      animation={true}\n      onHide={() => handleClose()}\n      backdrop=\"static\"\n      centered\n      size={\"lg\"}\n      keyboard={true}\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {title}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0}}>\n        <div className=\"row mb-3\">\n          <div className=\"col-lg-12 col-12 mb-3\">\n            <label className=\"modalLineHeaders mt-0\">{label}:</label>\n            <input\n              value={option}\n              className=\"modalInput\"\n              placeholder={\"Create User Role\"}\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setOption(e.target.value)}\n              disabled={!!editObj}\n            />\n          </div>\n        </div>\n\n        {loading && <Loader />}\n\n        <div className=\"row mb-3 permissionBoxRoles\">\n          <div className=\"manage-permissions-heading\">Manage Permissions</div>\n          <div className=\"cool-scrollbar\">\n            {PERMISSIONS_LIST.map((m) => (\n              <UserPermissions\n                setPermission={setPermission}\n                permission={permission}\n                permissionData={m}\n                value={m.value}\n                key={m.value}\n                label={m.label}\n                isDelete={m.delete}\n                isWrite={m.write}\n                disabled={m.disabled && disabled}\n              />\n            ))}\n          </div>\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"headerButton\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={handleSaveOptions}>\n          Save\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default CreateUserRolesOptions;\n","import React, { useEffect, useState } from \"react\";\nimport Select from \"react-select\";\nimport api from \"api\";\nimport Icon from \"components/Icon\";\nimport { ReactSelectCustomContainer } from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\nimport { TEST_SETTING_TYPES } from \"constant\";\nimport CreateUserRolesOptions from \"./CreateUserRolesOptions\";\nimport { useDispatch } from \"react-redux\";\nimport { setError } from \"store/features/general/generalSlice\";\n\nconst useOptions = (settingType) => {\n  const dispatch = useDispatch()\n  const [options, setOptions] = useState([]);\n  \n  const getOptions = async () => {\n    try {\n      const optionList = await api.getGeneralSetting(settingType);\n      setOptions(optionList);\n    } catch (error) {\n      console.error(`Error fetching ${settingType}:`, error);\n    }\n  };\n\n  const addOption = async (optionData) => {\n    const { option } = optionData;\n\n    if (settingType === TEST_SETTING_TYPES.ROLE) {\n\n      const isExist = options.some((item) => item.label.toLowerCase() === option.toLowerCase());\n      if(isExist){\n        dispatch(setError(\"This Role Already Exist.\"))\n        return\n      }\n      if (!isExist) {\n        await api.createRolesOption(settingType, optionData);\n      }\n      await getOptions();\n    }\n  };\n\n  useEffect(() => {\n    getOptions();\n  }, [settingType]);\n\n  return { options, addOption };\n};\n\nconst UserRoleSelect = ({\n  settingType,\n  onChange,\n  value,\n  tabIndex = 1,\n  label = \"Role\",\n  className = \"\",\n  title = \"Create New Role\",\n  placeholder = \"Select User Role\",\n  required = false,\n  isMulti = false,\n  defaultValue = null,\n  defaultOptions = null,\n  showAddIcon = true,\n  showNumberSelected = false,\n  mainClass = \"test-component-element\",\n}) => {\n  const { options, addOption } = useOptions(settingType);\n\n  const [showCreateOptionModal, setShowCreateOptionModal] = useState(false);\n\n  const handelAddOption = (value) => {\n    addOption(value);\n\n    setShowCreateOptionModal(false);\n  };\n\n  return (\n    <div className={mainClass}>\n      <div className=\"selector-label-container\">\n        {label && (\n          <p className=\"test-type-input-label\">\n            {label}\n            {required && <span style={{ color: \"red\" }}>*</span>}\n          </p>\n        )}\n        {showAddIcon && (\n          <Icon\n            iconType={\"createIconBlue\"}\n            containerClass={\"ms-2 cursor-pointer\"}\n            innerClass={\"test-selector-add-icon\"}\n            handleClick={() => setShowCreateOptionModal(true)}\n          />\n        )}\n      </div>\n      <div className=\"d-flex align-items-center\">\n        <Select\n          className={`w-100 ${className}`}\n          options={defaultOptions ? defaultOptions : options}\n          blurInputOnSelect={true}\n          menuPlacement={\"auto\"}\n          defaultValue={defaultValue}\n          value={value}\n          placeholder={placeholder}\n          onChange={onChange}\n          tabIndex={tabIndex}\n          isMulti={isMulti}\n          getOptionValue={(option) => option.label}\n          // components={{ ValueContainer: ReactSelectCustomContainer }}\n          components={showNumberSelected ? { ValueContainer: ReactSelectCustomContainer } : undefined}\n        />\n      </div>\n      {showCreateOptionModal && (\n        <CreateUserRolesOptions\n          handleClose={() => setShowCreateOptionModal(false)}\n          title={title}\n          label={label}\n          handleSaveChange={handelAddOption}\n          placeholder={placeholder}\n        />\n      )}\n    </div>\n  );\n};\n\nexport default UserRoleSelect;\n","import ErrorMessage from \"components/Message/ErrorMessage\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport { AppContext } from \"context/app-context\";\nimport { useContext, useEffect, useState, useMemo } from \"react\";\nimport \"react-activity/dist/Bounce.css\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport {\n  CONFIG,\n  HEALTH_AND_SAFTEY,\n  TEST_SETTING_TYPES,\n  USER_ROLE_TYPE,\n  newRoleOptions,\n  newRoleOptionsWhiteLabel,\n} from \"../../constant\";\nimport {\n  combinePermissions,\n  createChangeObjForLogs,\n  formatPhoneNumber,\n  isValidEmail,\n  isValidPhoneWithCode,\n  transformSubObjectToPermissionObject,\n} from \"../../utils\";\nimport Loader from \"../Loader/Loader\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport UserPermissions from \"./userPermissions\";\nimport { PERMISSIONS_LIST, DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS, dependentPermissionsList } from \"constant\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport { useSelector } from \"react-redux\";\nimport { customIsEmpty } from \"util/customLodash\";\nimport {\n  ReactSelectCustomOption,\n  ReactSelectCustomContainer,\n} from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\nimport TestTypeSelect from \"views/TestTypeSetting/TestTypeComponent/TestTypeSelect\";\nimport UserRoleSelect from \"./UserRoleSelect\";\nimport api from \"api\";\n\nconst WhiteLabelUserModal = (props) => {\n  const { show, user, handleSave, handleClose, resetCall, handleConfirmUser, message, isCrewCall, users, loading } =\n    props;\n  const [newUser, setNewUser] = useState(user);\n  const [error, setError] = useState(\"\");\n  const [rolesOptions, setRolesOptions] = useState([]);\n\n  const [selectedRole, setSelectedRole] = useState([{ value: \"Employee\", label: \"Patient\" }]);\n\n  // const userAssignedPermissions = user.userPermission\n  //   ? JSON.parse(user.userPermission)\n  //   : DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS;\n\n  const userAssignedPermissions = useMemo(() => {\n    // const permissions = user.userPermission ? JSON.parse(user.userPermission) : DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS;\n    const permissions =\n      user.userPermission && Object.keys(JSON.parse(user.userPermission)).length > 0\n        ? JSON.parse(user.userPermission)\n        : DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS;\n\n    if (user.roleValue && user.roleValue.includes(\"Provider\")) {\n      permissions[\"clientBaseRole\"] = { access: true };\n    }\n\n    return permissions;\n  }, [user.roleValue]);\n\n  const getRolesOptions = async () => {\n    try {\n      const optionList = await api.getGeneralSetting(TEST_SETTING_TYPES.ROLE);\n      setRolesOptions(optionList);\n    } catch (error) {\n      console.error(`Error fetching:`, error);\n    }\n  };\n\n  useEffect(async () => {\n    await getRolesOptions();\n  }, []);\n\n  const getSelectedRole = () => {\n    let userRoleData;\n\n    try {\n      userRoleData = user?.roles ? JSON.parse(user.roles) : [];\n    } catch (error) {\n      console.error(\"Error parsing user.roles:\", error);\n      userRoleData = [];\n    }\n\n    if (!Array.isArray(userRoleData)) {\n      userRoleData = [];\n    }\n\n    const selectedRoleData = userRoleData\n      .map((item) => {\n        try {\n          if (item.selectedRole) {\n            return JSON.parse(item.selectedRole);\n          } else if (item.permission && item.optLabel) {\n            return {\n              id: item.id,\n              code: item.permission,\n              label: item.optLabel,\n              value: item.optValue,\n            };\n          }\n        } catch (err) {\n          console.error(\"Unable to parse selectedRole:\", err);\n          return null;\n        }\n      })\n      .filter(Boolean);\n\n    if (selectedRoleData.length === 0) {\n      const rolesInUserData = userRoleData.map((item) => item.role);\n\n      const usedValues = new Set();\n\n      const matchedRoles = rolesOptions.filter((option) => {\n        if (rolesInUserData.includes(option.value) && !usedValues.has(option.value)) {\n          usedValues.add(option.value);\n          return true;\n        }\n        return false;\n      });\n\n      setSelectedRole(matchedRoles);\n      return;\n    }\n\n    setSelectedRole(selectedRoleData);\n  };\n\n  useEffect(() => {\n    getSelectedRole();\n  }, [user, rolesOptions]);\n\n  const systemUserPermissions = useSelector(userGivenPermission);\n\n  const [permission, setPermission] = useState(userAssignedPermissions);\n\n  const [is2FaEnabled, setIs2FaEnabled] = useState(user?.is2FaEnabled === \"y\" ? true : false);\n\n  const [customPermissionList, setCustomPermissionList] = useState([]);\n\n  useEffect(() => {\n    if (!user.isNew) handleEditRole();\n  }, [user]);\n\n  useEffect(() => {\n    if (CONFIG.isWhiteLabel && user.isNew) {\n      setSelectedRole(\"\");\n    }\n  }, []);\n\n  useEffect(() => {\n    if (message) setError(message);\n  }, [message]);\n\n  const appContext = useContext(AppContext);\n  const sites = appContext.sites;\n  const labs = appContext.labs;\n  const clients = appContext.clients;\n\n  const handleRoleChange = (selectedOption) => {\n    // const permissionList = combinePermissions(selectedOption);\n\n    // setPermission(permissionList);\n\n    setSelectedRole(selectedOption);\n    setNewUser({ ...newUser, role: selectedOption.map((t) => t.value).join(\",\") });\n  };\n\n  const filterPermissionsByRoles = (roles) => {\n    if (customIsEmpty(roles)) {\n      return PERMISSIONS_LIST;\n    }\n\n    if (roles.includes(\"Lab\") || roles.includes(\"Employers\")) {\n      return PERMISSIONS_LIST;\n    }\n\n    const basePermissions = [\"employee\", \"orders\", \"test\", \"pendingResults\", \"completedTests\"];\n    if (roles.includes(\"Provider\")) {\n      return PERMISSIONS_LIST.filter(\n        (permission) => basePermissions.includes(permission.value) || permission.value === \"checkEligibility\"\n      );\n    }\n    if (roles.includes(\"Tester\") || roles.includes(\"LabTech\")) {\n      return PERMISSIONS_LIST.filter((permission) => basePermissions.includes(permission.value));\n    }\n\n    return [];\n  };\n\n  useEffect(() => {\n    setCustomPermissionList(PERMISSIONS_LIST);\n  }, []);\n\n  // useEffect(() => {\n  //   const rolesData = selectedRole ? selectedRole?.map((item) => item.value) : [];\n\n  //   const res = filterPermissionsByRoles(rolesData);\n\n  //   setCustomPermissionList(res);\n  // }, [selectedRole]);\n\n  const handleEditRole = async () => {\n    try {\n      const userData = { ...user };\n\n      let selectedRoleData = [];\n      user.oldRole.forEach((element) => {\n        if (CONFIG.isWhiteLabel) {\n          let roleObj = newRoleOptionsWhiteLabel.find((obj) => obj.value === element);\n          if (roleObj) {\n            selectedRoleData.push(roleObj);\n          }\n        } else {\n          let roleObj = newRoleOptions.find((obj) => obj.value === element);\n          if (roleObj) {\n            selectedRoleData.push(roleObj);\n          }\n        }\n      });\n\n      // setSelectedRole(selectedRoleData);\n      setNewUser({ ...userData, role: selectedRoleData.map((t) => t.value).join(\",\") });\n    } catch (err) {\n      console.log(\"Errr\", err);\n    }\n  };\n\n  const handleMultipleRoles = () => {\n    let mainRoleArray = [];\n\n    if (selectedRole.length === 0) {\n      setError(\"Select Role\");\n      return false;\n    }\n\n    for (const singleRole of selectedRole) {\n      let role = singleRole.value;\n      let roleObj = {};\n\n      if (\n        role === \"Lab\" ||\n        role === HEALTH_AND_SAFTEY ||\n        role === \"Client\" ||\n        role === \"LabTech\" ||\n        role === \"Employers\" ||\n        role === \"Provider\" ||\n        role === \"Tester\"\n      ) {\n        if (role === \"Lab\" || role === \"LabTech\") {\n          if (!newUser.lab) {\n            setError(\"Select lab also\");\n            return false;\n          }\n          roleObj = {\n            role: role,\n            relatedId: newUser.lab.id,\n            title: newUser.lab.name,\n            label: newUser.lab.appPackage ? \"isWhiteLabelLab\" : \"\",\n            id: singleRole?.id || \"\",\n            permission: singleRole?.code || \"\",\n            optLabel: singleRole.label,\n            optValue: singleRole.value,\n          };\n          mainRoleArray.push(roleObj);\n        }\n\n        if (role === HEALTH_AND_SAFTEY || role === \"Employers\") {\n          if (!newUser.show) {\n            setError(\"Select show also\");\n            return false;\n          }\n          roleObj = {\n            role: role,\n            relatedId: newUser.show.id,\n            title: newUser.show.name,\n            id: singleRole?.id || \"\",\n            permission: singleRole?.code || \"\",\n            optLabel: singleRole.label,\n            optValue: singleRole.value,\n          };\n          mainRoleArray.push(roleObj);\n        }\n        if (role === \"Provider\" || role === \"Tester\") {\n          const isProviderSelected = !!newUser.provider;\n          if (!isProviderSelected) {\n            setError(\"Select Associated Client\");\n            return false;\n          }\n\n          let providerRelatedID = Array.isArray(newUser.provider) ? newUser.provider[0].id : newUser.provider.id;\n          const roleObj = {\n            role: role,\n            relatedId: providerRelatedID,\n            title: newUser.provider.name,\n            id: singleRole?.id || \"\",\n            permission: singleRole?.code || \"\",\n            optLabel: singleRole.label,\n            optValue: singleRole.value,\n          };\n          mainRoleArray.push(roleObj);\n        }\n        if (role === \"Client\") {\n          if (!newUser.client) {\n            setError(\"Select client also\");\n            return false;\n          }\n          roleObj = {\n            role: role,\n            relatedId: newUser.client.id,\n            id: singleRole?.id || \"\",\n            permission: singleRole?.code || \"\",\n            optLabel: singleRole.label,\n            optValue: singleRole.value,\n          };\n          mainRoleArray.push(roleObj);\n        }\n      } else {\n        mainRoleArray.push({\n          role: role,\n          id: singleRole?.id || \"\",\n          permission: singleRole?.code || \"\",\n          optLabel: singleRole.label,\n          optValue: singleRole.value,\n        });\n      }\n    }\n\n    // const clientID = appContext.user[\"custom:clientID\"] || CONFIG.clientID;\n    // if (clientID) {\n    //   const isClientAdded = mainRoleArray.find((f) => f.relatedId === clientID);\n    //   if (!isClientAdded) {\n    //     mainRoleArray.push({ role: \"Client\", relatedId: clientID, title: CONFIG.basename });\n    //   }\n    // }\n\n    return mainRoleArray;\n  };\n  const getSelectedRolePermission = useMemo(() => {\n    if (selectedRole?.length === 0 || selectedRole?.length > 1 || !rolesOptions?.length) return null;\n    const userSelectedRole = selectedRole[0];\n    const foundRole = rolesOptions?.find((role) => role.label === userSelectedRole.label);\n    if (!foundRole) return null;\n\n    try {\n      return JSON.parse(foundRole.code); // Parsing the JSON string\n    } catch (error) {\n      console.error(\"Invalid JSON in role code:\", error);\n      return null;\n    }\n  }, [selectedRole]);\n  const onHandleSave = async () => {\n    if (!newUser.isNew && !systemUserPermissions?.systemUsers?.editUserCredentials) {\n      appContext.showErrorMessage(\"You have not permision to edit user.\");\n      return;\n    }\n\n    if (CONFIG.isWhiteLabel) {\n      Object.assign(newUser, {\n        lab: handleLabObj(),\n      });\n    }\n\n    let mainRoleData = handleMultipleRoles();\n    if (!mainRoleData) return;\n    if (!newUser.firstName.trim()) {\n      setError(\"First name is required\");\n      return;\n    }\n\n    if (!newUser.lastName.trim()) {\n      setError(\"Last name is required\");\n      return;\n    }\n\n    if (!newUser.email.trim()) {\n      setError(\"Email  is required\");\n      return;\n    }\n    if (!isValidEmail(newUser.email)) {\n      setError(\"Email is invaild\");\n      return;\n    }\n\n    if (!newUser.phone) {\n      setError(\"Phone number is required\");\n      return;\n    }\n\n    const hasAtLeastOneAccessTrue = Object.values(permission).some(\n      (singlePermission) => singlePermission?.access === true\n    );\n\n    if (!hasAtLeastOneAccessTrue) {\n      setError(\"At least one permission must have access set to true\");\n      return;\n    }\n\n    // Ensure at least one dependent permission is true if settings is true\n    const hasDependentPermissionTrue = dependentPermissionsList.some((item) => permission[item]?.access === true);\n\n    if (permission?.settings?.access && !hasDependentPermissionTrue) {\n      setError(\"If 'settings' is selected, at least one dependent permission must also be selected.\");\n      return;\n    }\n\n    if (!isValidPhoneWithCode(newUser.phone)) {\n      setError(\"Invalid Phone Number\");\n      return;\n    }\n\n    if (newUser.isNew && !newUser.password) {\n      setError(\"Password is requried\");\n      return;\n    }\n\n    if (newUser.isNew) {\n      const isValidPassword = /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\\s).{8,}$/.test(newUser.password);\n\n      if (!isValidPassword) {\n        setError(\n          \"Password must contains at least one lowercase letter, one uppercase letter, one numeric digit, and one special character\"\n        );\n        return;\n      }\n    }\n\n    const systemUser = selectedRole.length === 1 && selectedRole[0].value === \"Employee\" ? 0 : 1;\n\n    const oldUserData = users.find((item) => item.id === newUser.id);\n\n    const fieldsName = {\n      firstName: \"First Name\",\n      lastName: \"Last Name\",\n      email: \"Email\",\n      is2FaEnabled: \"Two Factor Auth\",\n      \"provider.name\": \"Provider\",\n      // role: \"Role\",\n      \"userPermission.employee.access\": \"Patient Access Permission\",\n      \"userPermission.employee.addPatientNote\": \"Add Patient Notes Permission\",\n      \"userPermission.employee.archivePatient\": \"Archive Patients Permissions\",\n      \"userPermission.employee.createPatient\": \"Create New Patient Permission\",\n      \"userPermission.employee.editPatientRecord\": \"Edit Patient Record Permission\",\n      \"userPermission.orders.access\": \"Order Access Permission\",\n      \"userPermission.orders.addOrders\": \"Add Order Permission\",\n      \"userPermission.orders.archiveOrders\": \"Archive Order Permission\",\n      \"userPermission.orders.editOrders\": \"Edit Order Permission\",\n      \"userPermission.orders.loadOrders\": \"Load Order Permission\",\n      \"userPermission.test.archiveTest\": \"Archive Test Permission\",\n      \"userPermission.test.createTest\": \"Create Test Permission\",\n      \"userPermission.test.editTest\": \"Edit Test Permission\",\n      \"userPermission.test.finalizeSendResult\": \"Finalize Or Send Result Permission\",\n      \"userPermission.test.resultTest\": \"Result Test Permission\",\n      \"userPermission.test.access\": \"Access Test Permission\",\n      \"userPermission.pendingResults.access\": \"Pending Result Access Permission\",\n      \"userPermission.completedTests.access\": \"Completed Test Access Permission\",\n      \"userPermission.checkEligibility.access\": \"Check Eligibility Access\",\n      \"userPermission.checkEligibility.write\": \"Check Eligibility Write\",\n      \"userPermission.checkEligibility.delete\": \"Check Eligibility Archive\",\n    };\n\n    let finalUser = {\n      ...newUser,\n      multipleRoles: mainRoleData.length > 0 ? JSON.stringify(mainRoleData) : \"\",\n      systemUser,\n      is2FaEnabled,\n      // userPermission: updateDefaulPermissionOnSave(permission),\n      userPermission: updateDefaulPermissionOnSave(getSelectedRolePermission),\n    };\n    // return;\n\n    const logChangeObj = createChangeObjForLogs({\n      oldRecord: oldUserData\n        ? { ...oldUserData, userPermission: oldUserData.userPermission ? JSON.parse(oldUserData.userPermission) : null }\n        : {},\n      newRecord: { ...finalUser, is2FaEnabled: is2FaEnabled ? \"y\" : \"n\" },\n      fieldsName,\n    });\n\n    let logsObj = {\n      userID: appContext.user?.sub,\n      userName: appContext.user?.name,\n      slug: finalUser.isNew ? \"User Created\" : \"User Updated\",\n    };\n\n    if (!finalUser.isNew) {\n      logsObj.changeObject = logChangeObj;\n    }\n\n    handleSave(finalUser, logsObj);\n  };\n\n  const updateDefaulPermissionOnSave = (selectedPermission) => {\n    const defaulAllKeys = [\n      \"employee\",\n      \"orders\",\n      \"test\",\n      \"pendingResults\",\n      \"completedTests\",\n      \"settings\",\n      \"checkEligibility\",\n      \"providerManagement\",\n      \"clientManagement\",\n      \"payerManagement\",\n      \"diagnosisCodes\",\n      \"procedureCodes\",\n      \"systemUsers\",\n      \"testsManagement\",\n      \"testsDictionary\",\n    ];\n    const cloneSelectedPermission = { ...selectedPermission };\n\n    for (const item of defaulAllKeys) {\n      const exist = customPermissionList.find((val) => val.value === item);\n      if (!exist) {\n        const perm = PERMISSIONS_LIST.find((obj) => obj.value === item);\n        cloneSelectedPermission[item] = perm?.subObject\n          ? transformSubObjectToPermissionObject(perm.subObject)\n          : { access: false, write: false, delete: false };\n      }\n    }\n\n    return cloneSelectedPermission;\n  };\n\n  const handlePhoneinput = (e) => {\n    setNewUser({\n      ...newUser,\n      phone: e,\n    });\n  };\n  const handleLabObj = () => {\n    return {\n      label: appContext.userLab.name,\n      value: appContext.userLab.id,\n      id: appContext.userLab.id,\n      name: appContext.userLab.name,\n      appPackage: appContext.userLab.whiteLabelPackage,\n    };\n  };\n\n  const handleAdditionalFields = (roles) => {\n    let obj = {};\n    for (const role of roles) {\n      if (role.role === HEALTH_AND_SAFTEY || role.role?.toLowerCase().includes(\"employer\")) {\n        const site = getUserSiteName(role?.relatedId);\n        if (site) {\n          let show = { label: site.name, value: site.id, id: site.id, name: site.name };\n          obj = { ...obj, show: show };\n        }\n      }\n\n      if (role.role === USER_ROLE_TYPE.Lab) {\n        const lab = getUserLabName(role?.relatedId);\n        if (lab) {\n          let labData = {\n            label: lab.name,\n            value: lab.id,\n            id: lab.id,\n            name: lab.name,\n            appPackage: lab.whiteLabelPackage,\n          };\n          obj = { ...obj, lab: labData };\n        }\n      }\n\n      if (role.role === USER_ROLE_TYPE.Client) {\n        const client = getUserClientName(role?.relatedId);\n        if (client) {\n          let clientData = { label: client.name, value: client.id, id: client.id, name: client.name };\n          obj = { ...obj, client: clientData };\n        }\n      }\n    }\n    return obj;\n  };\n\n  const getUserLabName = (labId) => {\n    const filterLab = appContext.labs.filter((lab) => lab.id === labId);\n    if (filterLab.length > 0) {\n      return filterLab[0];\n    }\n  };\n\n  const getUserClientName = (clientId) => {\n    return appContext.clients.find((client) => clientId === client.id);\n  };\n\n  const getUserSiteName = (userId) => {\n    if (userId) {\n      const filterSite = appContext.sites.filter((s) => s.id === userId);\n      if (filterSite.length > 0) {\n        return filterSite[0];\n      }\n    }\n  };\n\n  const handelTwoFaChange = (event) => {\n    const checked = event.target.checked;\n    setIs2FaEnabled(checked);\n  };\n\n  return (\n    <Modal\n      show={show}\n      animation={true}\n      onHide={() => {\n        setNewUser(\"\");\n        handleClose();\n      }}\n      style={{ paddingLeft: \"0\" }}\n      centered\n      size={\"lg\"}\n      backdrop=\"static\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {newUser.isNew ? \"Create User\" : \"Update User\"}\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body\n        style={{\n          paddingTop: 0,\n        }}\n      >\n        {loading && <Loader />}\n\n        <div className=\"createClientsWrapper\">\n          <div className=\"leftSide\">\n            <div className=\"row mb-3\">\n              <div className=\"w-100 createClientsWrapper\">\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">First Name: </label>\n                  <input\n                    value={newUser.firstName}\n                    className=\"modalInput\"\n                    placeholder=\"First Name\"\n                    style={{\n                      width: \"100%\",\n                    }}\n                    onChange={(e) => setNewUser({ ...newUser, firstName: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Last Name: </label>\n                  <input\n                    value={newUser.lastName}\n                    className=\"modalInput\"\n                    placeholder=\"Last Name\"\n                    onChange={(e) => setNewUser({ ...newUser, lastName: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Email: </label>\n                  <input\n                    value={newUser.email}\n                    className=\"modalInput\"\n                    placeholder=\"Email\"\n                    style={{\n                      width: \"100%\",\n                    }}\n                    onChange={(e) => setNewUser({ ...newUser, email: e.target.value.trim().toLowerCase() })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Phone #: </label>\n                  {newUser.isNew ? (\n                    <PhoneNoInput handleChange={handlePhoneinput} value={newUser?.phone} disabled={!newUser.isNew} />\n                  ) : (\n                    <input\n                      value={formatPhoneNumber(newUser.phone, \"\", true)}\n                      className=\"modalInput w-100\"\n                      disabled={true}\n                      placeholder=\"Phone\"\n                    />\n                  )}\n                </div>\n                <div className=\"form-group-wrapper\">\n                  {newUser.isNew && (\n                    <>\n                      <label className=\"modalLineHeaders\">Password: </label>\n\n                      <input\n                        type=\"password\"\n                        className=\"modalInput\"\n                        value={newUser.password}\n                        placeholder=\"Password\"\n                        style={{\n                          width: \"100%\",\n                        }}\n                        onChange={(e) => setNewUser({ ...newUser, password: e.target.value })}\n                      />\n                    </>\n                  )}\n                </div>\n                <div\n                  className={`form-group-wrapper ${\n                    newUser.role === \"Employer\" || newUser.role === \"Lab\" ? \"activeEmploye\" : \"\"\n                  }`}\n                >\n                  {systemUserPermissions?.systemUsers?.createNewUserRole && (\n                    <UserRoleSelect\n                      value={selectedRole}\n                      onChange={handleRoleChange}\n                      settingType={TEST_SETTING_TYPES.ROLE}\n                      required={true}\n                      isMulti={true}\n                    />\n                  )}\n\n                  {/* {systemUserPermissions?.systemUsers?.createNewUserRole && (\n                      <div>\n                        <label className=\"modalLineHeaders\">Role:</label>\n                        <Select\n                          options={CONFIG.isWhiteLabel ? newRoleOptionsWhiteLabel : newRoleOptions}\n                          blurInputOnSelect={true}\n                          defaultValue={null}\n                          isMulti\n                          menuPlacement=\"auto\"\n                          placeholder=\"Select a Role\"\n                          onChange={handleRoleChange}\n                          className=\"w-100 roleSelector\"\n                          value={selectedRole}\n                        />\n                      </div>\n                    )} */}\n                </div>\n\n                {/* our permissions */}\n                <div\n                  className={`form-group-wrapper \n          ${newUser?.role?.includes(\"Employers\") || newUser?.role?.includes(\"Lab\") ? \"activeEmploye\" : \"\"}`}\n                >\n                  {(newUser?.role?.includes(HEALTH_AND_SAFTEY) || newUser?.role?.includes(\"Employers\")) && (\n                    <>\n                      <label className=\"modalLineHeaders\">\n                        Select {newUser?.role?.includes(\"Employers\") ? \"Lab Client:\" : \"Show:\"}\n                      </label>\n                      <Select\n                        className=\"w-100 siteSelector\"\n                        options={sites.map((site) => {\n                          return { label: site.name, value: site.id, id: site.id, name: site.name };\n                        })}\n                        value={newUser.show}\n                        blurInputOnSelect={true}\n                        defaultValue={null}\n                        menuPlacement=\"auto\"\n                        placeholder=\"Select a Show\"\n                        onChange={(e) => setNewUser({ ...newUser, show: e })}\n                      />\n                    </>\n                  )}\n                </div>\n\n                {systemUserPermissions?.systemUsers?.createNewUserRole && (\n                  <div\n                    className={`form-group-wrapper  \n                     ${newUser?.role?.includes(\"Provider\") || newUser?.role?.includes(\"Tester\")}`}\n                  >\n                    {(newUser?.role?.includes(\"Provider\") || newUser?.role?.includes(\"Tester\")) && (\n                      <>\n                        <label className=\"modalLineHeaders\">Select Client</label>\n                        <Select\n                          className=\"w-100 siteSelector\"\n                          options={sites.map((site) => {\n                            return { label: site.name, value: site.id, id: site.id, name: site.name };\n                          })}\n                          isMulti\n                          value={newUser.provider}\n                          blurInputOnSelect={true}\n                          defaultValue={null}\n                          menuPlacement=\"auto\"\n                          placeholder=\"Select a Client\"\n                          onChange={(e) => setNewUser({ ...newUser, provider: e })}\n                          components={{\n                            Option: ReactSelectCustomOption,\n                            ValueContainer: ReactSelectCustomContainer,\n                          }}\n                        />\n                        {newUser.provider?.length > 1 && (\n                          <div className=\"selected-values-update-user\">\n                            {newUser.provider?.map((selected) => (\n                              <span key={selected.value} className=\"selected-value-badge\">\n                                {selected.label}\n                                <span\n                                  className=\"badge-remove\"\n                                  onClick={() =>\n                                    setNewUser({\n                                      ...newUser,\n                                      provider: newUser.provider.filter((item) => item.value !== selected.value),\n                                    })\n                                  }\n                                >\n                                  ×\n                                </span>\n                              </span>\n                            ))}\n                          </div>\n                        )}\n                      </>\n                    )}\n                  </div>\n                )}\n\n                <div\n                  className={`form-group-wrapper ${\n                    newUser?.role?.includes(\"Employer\") || newUser?.role?.includes(\"Lab\") ? \"activeEmploye\" : \"\"\n                  }`}\n                >\n                  {newUser?.role?.includes(\"Lab\") && !CONFIG.isWhiteLabel ? (\n                    <>\n                      <label className=\"modalLineHeaders\">Select Lab:</label>\n                      <Select\n                        className=\"w-100  siteSelector\"\n                        options={labs.map((lab) => {\n                          return {\n                            label: lab.name,\n                            value: lab.id,\n                            id: lab.id,\n                            name: lab.name,\n                            appPackage: lab.whiteLabelPackage,\n                          };\n                        })}\n                        blurInputOnSelect={true}\n                        defaultValue={null}\n                        value={newUser.lab}\n                        menuPlacement=\"auto\"\n                        placeholder=\"Select a Lab\"\n                        // onChange={(e) => (console.log(e), setNewUser({ ...newUser, lab: e }))}\n                        onChange={(e) => setNewUser({ ...newUser, lab: e })}\n                      />\n                    </>\n                  ) : (\n                    \"\"\n                  )}\n                </div>\n                <div\n                  className={`form-group-wrapper ${\n                    newUser?.role?.includes(\"Employer\") || newUser?.role?.includes(\"Lab\") ? \"activeEmploye\" : \"\"\n                  }`}\n                >\n                  {newUser?.role?.includes(\"Client\") && (\n                    <>\n                      <label className=\"modalLineHeaders\">Select Client:</label>\n                      <Select\n                        className=\"w-100 siteSelector\"\n                        options={clients.map((client) => {\n                          return { label: client.name, value: client.id, id: client.id, name: client.name };\n                        })}\n                        value={newUser.client}\n                        blurInputOnSelect={true}\n                        defaultValue={null}\n                        menuPlacement=\"auto\"\n                        placeholder=\"Select a Client\"\n                        onChange={(e) => setNewUser({ ...newUser, client: e })}\n                      />\n                    </>\n                  )}\n                </div>\n                <div className=\"d-flex align-items-center column-gap-10 profile-detail\">\n                  <span className=\"section-title\">Two Factor Auth: </span>\n                  <SwitchToggle checked={is2FaEnabled} handleToogleChange={(e) => handelTwoFaChange(e)} />\n                </div>\n              </div>\n            </div>\n          </div>\n\n          {/* <div className=\"leftSide\">\n            <div className=\"row mb-3 permissionBox \">\n              <div className=\"manage-permissions-heading\">Manage Permissions</div>\n              <div className=\"cool-scrollbar\">\n                {customPermissionList.map((m) => (\n                  <UserPermissions\n                    setPermission={setPermission}\n                    permission={permission}\n                    permissionData={m}\n                    value={m.value}\n                    key={m.value}\n                    label={m.label}\n                    isDelete={m.delete}\n                    disabled={m?.disabled || false}\n                    isWrite={m.write}\n                    width=\"41.5%\"\n                  />\n                ))}\n              </div>\n            </div>\n          </div> */}\n\n          {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button\n          style={{ marginBottom: 10 }}\n          variant=\"secondary\"\n          className=\"modalButtons\"\n          onClick={() => {\n            handleClose();\n          }}\n        >\n          Close\n        </Button>\n\n        <div className=\"d-flex gap-3\">\n          {!newUser.isNew && (\n            <Button\n              style={{ marginBottom: 10 }}\n              className=\"modalButtons\"\n              variant=\"primary\"\n              onClick={() => (handleClose(), resetCall(true))}\n            >\n              Reset Password\n            </Button>\n          )}\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            {newUser.isNew ? \"Create\" : \"Update\"}\n          </Button>\n          {newUser.status === \"UNCONFIRMED\" && (\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"primary\"\n              className=\"modalButtons\"\n              onClick={() => (handleConfirmUser(newUser), handleClose())}\n            >\n              Confirm User\n            </Button>\n          )}\n        </div>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default WhiteLabelUserModal;\n","import React, { useContext, useState, useRef } from \"react\";\nimport { AppContext } from \"../../context/app-context\";\nimport { Overlay, Popover } from \"react-bootstrap\";\nimport { PRE_REGISTRATION_STATUS, GENDER_TEXT, TEST_TYPE_VALUE } from \"../../constant\";\nimport {\n  formatPhoneNumber,\n  parseBooleanValue,\n  formatDOB,\n  formatOrderDate,\n  formateDatellll,\n  formatDateMDY,\n  capitalizeLetter,\n  nameToTitleCase,\n} from \"../../utils\";\nimport { Link } from \"react-router-dom\";\n\nconst RenderTd = (props) => {\n  const { item, user, createMoreInfo, handleOrderDetail } = props;\n  const [showPopover, setShowPopover] = useState(false);\n  const childNode = useRef();\n  let setTimeoutConst = null;\n  const handleMouseEnter = () => {\n    setTimeoutConst = setTimeout(() => {\n      setShowPopover(true);\n    }, 500);\n  };\n  const handleMouseLeave = () => {\n    clearTimeout(setTimeoutConst);\n    setShowPopover(false);\n  };\n  const appContext = useContext(AppContext);\n\n  const handleClick = () => {\n    if (item.itemKey === \"orderStatus\" && handleOrderDetail) {\n      const isCheck = user.hasOwnProperty(\"orderTracking\");\n      handleOrderDetail(isCheck ? user.orderTracking : [], user);\n    }\n  };\n\n  const tdEmail = (email) => (\n    <td\n      className={`table-column ellipsis text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none ${item.textAlign}`}\n      onClick={() => email && window.open(`mailto:${email}`)}\n      title={email}\n    >\n      {email}\n    </td>\n  );\n\n  const tdPhone = (phoneNumber, countryCode) => {\n    const phNumber = formatPhoneNumber(phoneNumber, countryCode, true);\n    return (\n      <td\n        className={`ellipsis text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none ${item.textAlign}`}\n        onClick={() => {\n          phoneNumber && window.open(`tel:+${phNumber.replace(/\\D/g, \"\")}`);\n        }}\n        title={phNumber}\n      >\n        {phNumber}\n      </td>\n    );\n  };\n\n  const tdShowName = () => (\n    <td className={`table-column ellipsis ${item.textAlign}`}>\n      <a\n        style={{ color: \"#42cef5\" }}\n        onClick={() => {\n          if (createMoreInfo) createMoreInfo(\"site\", user.showId);\n        }}\n        onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n        title={appContext.getSiteName(user.showId)}\n      >\n        {capitalizeLetter(appContext.getSiteName(user.showId))}\n      </a>\n    </td>\n  );\n\n  const tdLink = () => (\n    <td className={`table-column ellipsis ${item.textAlign}`}>\n      {!user[item.itemKey] || user[item.itemKey] === \"\" ? (\n        \"-\"\n      ) : (\n        <a\n          style={{ color: \"#42cef5\" }}\n          onClick={handleClick}\n          onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n          title={user[item.itemKey]}\n        >\n          {user[item.itemKey]}\n        </a>\n      )}\n    </td>\n  );\n\n  const tdDate = (Date) => (\n    <>\n      <td\n        className={`table-column ellipsis ${item.textAlign}`}\n        onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n        ref={childNode}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        onClick={() => setShowPopover(true)}\n      >\n        {formatDateMDY(Date?.substring(0, 10))}\n      </td>\n      {showPopover && (\n        <Overlay show={showPopover} placement=\"auto\" flip target={childNode.current}>\n          <Popover\n            onMouseEnter={() => {\n              setShowPopover(true);\n            }}\n            onMouseLeave={handleMouseLeave}\n            id=\"popover\"\n            className=\"popOverSchedule\"\n          >\n            <Popover.Header className=\"fw-bold\"></Popover.Header>\n            <Popover.Body>\n              <div>{formatOrderDate(Date)}</div>\n            </Popover.Body>\n          </Popover>\n        </Overlay>\n      )}\n    </>\n  );\n\n  const tdFormat = (item, user) => {\n    if (item === \"sex\") return user.sex ? GENDER_TEXT[user.sex] : \"-\";\n    if (item === \"dob\") return user.dob ? formatDOB(user.dob) : \"-\";\n    if (item === \"isVaccinated\") return parseBooleanValue(user.isVaccinated);\n    if (item === \"isExternalTest\") return parseBooleanValue(user.isExternalTest);\n    if (item === \"step\") return PRE_REGISTRATION_STATUS[user.step];\n    if (item === \"orderId\") return user.orderId !== -1 ? user.orderId : \"-\";\n    if (item === \"vaccinationType\") {\n      return Object.keys(user.vaccinationDetails).length > 0 ? user.vaccinationDetails.vaccinationType : \"-\";\n    }\n    if (item === \"vaccinationDate\") {\n      return Object.keys(user.vaccinationDetails).length > 0 ? formatDOB(user.vaccinationDetails.vaccinationDate) : \"-\";\n    }\n    if (item === \"vaccinationLocation\") {\n      return Object.keys(user.vaccinationDetails).length > 0 ? user.vaccinationDetails.vaccinationLocation : \"-\";\n    }\n    if (item === \"externalTestDate\") {\n      return Object.keys(user.externalTestDate).length > 0 ? formatDOB(user.externalTestDate) : \"-\";\n    }\n    if (item === \"orderKitType\") {\n      return user.orderKitType ? TEST_TYPE_VALUE[user.orderKitType] : \"-\";\n    }\n    if (item === \"firstName\") return user.firstName ? nameToTitleCase(user.firstName) : \"\";\n    if (item === \"lastName\") return user.lastName ? nameToTitleCase(user.lastName) : \"\";\n    return user[item] && user[item] !== \"undefined\" ? capitalizeLetter(user[item]) : \"-\";\n  };\n\n  if (item.itemKey === \"createdAt\") return tdDate(user.createdAt);\n  if (item.itemKey === \"orderStatus\") return tdLink();\n  if (item.itemKey === \"email\") return tdEmail(user.email);\n  if (item.itemKey === \"phone_number\") return tdPhone(user.phone_number, user.countryCode);\n  if (item.itemKey === \"showName\") return tdShowName(user.showId);\n\n  return (\n    <td className={`ellipsis ${item.textAlign}`} title={tdFormat(item.itemKey, user)}>\n      {tdFormat(item.itemKey, user)}\n    </td>\n  );\n};\n\nexport default RenderTd;\n","import api from \"api\";\nimport MainTable from \"components/Table/MainTable\";\nimport { TABLE_QUICK_TOOLS } from \"constant\";\nimport { TEST_SETTING_TYPES } from \"constant\";\nimport { SYSTEM_USER_ROLES_PERSONALIZATION } from \"constants/personalization\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport CreateUserRolesOptions from \"./CreateUserRolesOptions\";\nimport { AppContext } from \"context/app-context\";\nimport { checkRoleAssigned } from \"utils\";\nimport useOptions from \"views/TestTypeSetting/useOptions\";\nimport Icon from \"components/Icon\";\nimport { useDispatch } from \"react-redux\";\nimport { setError } from \"store/features/general/generalSlice\";\n\nconst RolesViewModal = ({ handleClose }) => {\n  const dispatch = useDispatch();\n  const [rolesData, setRolesData] = useState([]);\n  const [addRoleModal, setAddRoleModal] = useState(false);\n  const appContext = useContext(AppContext);\n\n  const { deleteOption } = useOptions(TEST_SETTING_TYPES.SPECIMEN_CONTAINER);\n\n  const [editObj, setEditObj] = useState(null);\n\n  const [loading, setLoading] = useState(false);\n\n  const getOptions = async () => {\n    try {\n      const rolesOptions = await api.getGeneralSetting(TEST_SETTING_TYPES.ROLE);\n      setRolesData(rolesOptions);\n    } catch (error) {\n      console.error(`Error fetching ${TEST_SETTING_TYPES.ROLE}:`, error);\n    }\n  };\n\n  useEffect(async () => {\n    await getOptions();\n  }, []);\n\n  const handleEdit = (item) => {\n    setEditObj(item);\n  };\n  const addOption = async (optionData) => {\n    const { option } = optionData;\n\n    const isExist = rolesData?.some((item) => item?.label?.toLowerCase() === option?.toLowerCase());\n    if (isExist) {\n      dispatch(setError(\"This Role Already Exist.\"));\n      return;\n    }\n    if (!isExist) {\n      await api.createRolesOption(\"role\", optionData);\n    }\n    await getOptions();\n  };\n  const handleDelete = async (item) => {\n    const isRoleAssigned = checkRoleAssigned({ users: appContext.users, roleId: item.id });\n\n    if (isRoleAssigned) {\n      appContext.showErrorMessage(\"This role is currently assigned to a user and cannot be deleted.\");\n      return;\n    }\n    await deleteOption(item.id);\n    await getOptions();\n  };\n  const handelAddOption = (value) => {\n    addOption(value);\n\n    setAddRoleModal(!addRoleModal);\n  };\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        handleEdit(row);\n        break;\n      case TABLE_QUICK_TOOLS.delete:\n        handleDelete(row);\n        break;\n      default:\n        break;\n    }\n  };\n\n  const handelUpdateOption = async (data) => {\n    setLoading(true);\n\n    await api.updateRolesOption({ permission: data.permission, id: editObj.id });\n    await getOptions();\n    setEditObj(null);\n    setLoading(false);\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => handleClose()}\n        backdrop=\"static\"\n        centered\n        size={\"xl\"}\n        keyboard={true}\n        className=\"second-modal\"\n      >\n        <Modal.Header closeButton className=\"mb-0\">\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Roles ({rolesData?.length ?? \"\"})\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body className=\"pt-0\">\n          <div style={{ display: \"flex\", justifyContent: \"space-between\", width: \"100%\" }}>\n            <h4 style={{fontSize : \"20px\"}}>Manage Roles</h4>\n            <Icon\n              handleClick={() => setAddRoleModal(!addRoleModal)}\n              title={\"Create\"}\n              label={\"Create\"}\n              iconType={\"addUserIcon\"}\n            />\n          </div>\n          <div style={{ background: \"#f2f0f0\", paddingLeft: \"4px\", paddingRight: \"4px\" }}>\n            {rolesData?.length > 0 && (\n              <MainTable\n                cssClass=\"table-noresponsive\"\n                trDataWrapperHeader={\"trDataWrapperHeader\"}\n                tools={[TABLE_QUICK_TOOLS.edit, TABLE_QUICK_TOOLS.delete]}\n                columns={SYSTEM_USER_ROLES_PERSONALIZATION}\n                rows={rolesData}\n                handleCellClick={handleCellClick}\n              />\n            )}\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button variant=\"secondary\" className=\"headerButton\" onClick={() => handleClose()}>\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n\n      {editObj && (\n        <CreateUserRolesOptions\n          handleClose={() => setEditObj(null)}\n          title={\"Update Role\"}\n          label={\"Role\"}\n          handleSaveChange={handelUpdateOption}\n          placeholder={\"Update Role\"}\n          editObj={editObj}\n          loading={loading}\n          disabled={true}\n        />\n      )}\n      {addRoleModal && (\n        <CreateUserRolesOptions\n          handleClose={() => setAddRoleModal(!addRoleModal)}\n          title={\"Create New Role\"}\n          label={\"Role\"}\n          handleSaveChange={handelAddOption}\n          placeholder={\"Add Role\"}\n          loading={loading}\n          disabled={true}\n        />\n      )}\n    </>\n  );\n};\n\nexport default RolesViewModal;\n","import React, { useState, useContext, useRef } from \"react\";\nimport { Button, Card, Table, Row, Col, DropdownButton, Dropdown, Modal } from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport api from \"api\";\nimport { Auth } from \"aws-amplify\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport { AppContext } from \"context/app-context\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport WhiteLabelUserModal from \"components/Users/WhiteLabelUserModal\";\nimport UserPasswordModal from \"components/Users/UserPasswordModal\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport TDData from \"components/Table/TDData\";\nimport {\n  EmptyUserObj,\n  USER_ROLE_TYPE,\n  PAGE_LIMIT,\n  HEALTH_AND_SAFTEY,\n  newRoleOptions,\n  SYSTEM_USERS_VALUE,\n} from \"constant\";\nimport { formatPhoneNumber, setPhoneNo, calculateTdWidth, sortingFilterInLC } from \"utils\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\n\nimport Select from \"react-select\";\nimport \"tableStyling.css\";\nimport Loader from \"components/Loader/Loader\";\nimport { createBreakpoint } from \"react-use\";\nimport { CONFIG } from \"constant\";\nimport Icon from \"components/Icon\";\nimport editIcon from \"assets/img/edit-icon.png\";\nimport { toTitleCase } from \"utils\";\nimport RenderTd from \"components/Personalization/RenderTd\";\nimport { useSelector } from \"react-redux\";\nimport { DEFAULT_USER_PERSONALIZATION } from \"constant\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport DropdownMenu from \"components/DropdownMenu/DropdownMenu\";\nimport RolesViewModal from \"components/Users/RolesViewModal\";\n\nconst UsersViewWhiteLabel = ({ isEditPermission, isDeletePermission }) => {\n  const componentRef = useRef();\n  const mainWidth = useRef();\n  const [width, setWidth] = useState(0);\n\n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  useEffect(() => handleResize(), [mainWidth]);\n  const permission = useSelector(userGivenPermission);\n\n  const tdWidth = calculateTdWidth(width - 100, 7);\n\n  const [users, setUsers] = useState([]);\n  const [filteredUsers, setFilteredUsers] = useState([]);\n\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n\n  const [openCreator, setOpenCreator] = useState(false);\n  const [openPasswordModal, setOpenPasswordModal] = useState(false);\n  const [newUser, setNewUser] = useState(EmptyUserObj);\n  const [loading, setLoading] = useState(false);\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n  const [userToDelete, setUserToDelete] = useState(\"\");\n  const [timeFilter, setTimeFilter] = useState(\"All Users\");\n  const [showFilter, setShowFilter] = useState(false);\n  const [showRolesModal, setShowRolesModal] = useState(false);\n  const [filter, setFilter] = useState({});\n  const appContext = useContext(AppContext);\n  const [fullscreen, setFullscreen] = useState(true);\n  const searchTerms = [\"First Name\", \"Last Name\", \"Email\", \"Phone\", \"Role\"];\n  const [currentPage, setCurrentPage] = useState(1);\n  const [errorMessageText, setErrorMessageText] = useState(\"\");\n  const [usersPerPage, setUsersPerPage] = useState(PAGE_LIMIT);\n  const [editUser, setEditUser] = useState(false);\n  const [cloneRoles, setCloneRoles] = useState(\"\");\n  // const [pageNumbers, setPageNumbers] = useState([]);\n\n  useEffect(() => {\n    setTimeout(() => {\n      setErrorMessageText(\"\");\n    }, 2000);\n  }, [errorMessageText]);\n\n  const sortUsers = (users, sortParam) => {\n    if (sortDescending) {\n      return [...users].sort((a, b) => (a[sortParam] < b[sortParam] ? 1 : b[sortParam] < a[sortParam] ? -1 : 0));\n    } else {\n      return [...users].sort((a, b) => (b[sortParam] < a[sortParam] ? 1 : a[sortParam] < b[sortParam] ? -1 : 0));\n    }\n  };\n\n  const getUserLabName = (labId) => {\n    const filterLab = appContext.labs.filter((lab) => lab.id === labId);\n    if (filterLab.length > 0) {\n      return filterLab[0];\n    }\n  };\n\n  const getUserClientName = (clientId) => {\n    return appContext.clients.find((client) => clientId === client.id);\n  };\n\n  const getUserSiteName = (userId) => {\n    if (userId) {\n      const filterSite = appContext.sites.filter((s) => s.id === userId);\n      if (filterSite.length > 0) {\n        return filterSite[0];\n      }\n    }\n  };\n\n  const isJson = (str) => {\n    try {\n      JSON.parse(str);\n    } catch (e) {\n      return false;\n    }\n    return true;\n  };\n\n  const handleAdditionalFields = (user) => {\n    let obj = {};\n    const associated = [];\n    const oldRole = [];\n    if (!user?.roles || user?.roles === \"undefined\") {\n      oldRole.push(user.userRole.slice(0, -1));\n\n      return {\n        ...user,\n        username: user.userID,\n        phone: user.phone_number.replace(/ /g, \"\"),\n        additionalFields: obj,\n        oldRole: oldRole,\n        roleTitle: user.userRole.slice(0, -1),\n        roleValue: user.userRole.slice(0, -1),\n        associated: \"System\",\n      };\n    }\n\n    const userRoles = isJson(user.roles) ? JSON.parse(user.roles) : user.roles;\n\n    for (const role of userRoles) {\n      if (role.role === HEALTH_AND_SAFTEY || role.role?.toLowerCase().includes(\"employer\")) {\n        const site = getUserSiteName(role?.relatedId);\n        if (site) {\n          let show = { label: site.name, value: site.id, id: site.id, name: site.name };\n          associated.push(site.name);\n          Object.assign(user, { show });\n          obj = { ...obj, show: show };\n        }\n      }\n\n      if (role.role === USER_ROLE_TYPE.Lab || role.role === USER_ROLE_TYPE.labTech) {\n        const lab = getUserLabName(role?.relatedId);\n        if (lab) {\n          let labData = {\n            label: lab.name,\n            value: lab.id,\n            id: lab.id,\n            name: lab.name,\n            appPackage: lab.whiteLabelPackage,\n          };\n          associated.push(lab.name);\n          Object.assign(user, { lab: labData });\n          obj = { ...obj, lab: labData };\n        }\n      }\n\n      if (role.role === USER_ROLE_TYPE.Client) {\n        const client = getUserClientName(role?.relatedId);\n        if (client) {\n          let clientData = { label: client.name, value: client.id, id: client.id, name: client.name };\n          associated.push(client.name);\n          Object.assign(user, { client: clientData });\n          obj = { ...obj, client: clientData };\n        }\n      }\n\n      if (role.role === USER_ROLE_TYPE.Provider || role.role === USER_ROLE_TYPE.Tester) {\n        const isProviderExists = !!user.provider;\n        if (!isProviderExists) {\n          const provider = getUserSiteName(role?.relatedId);\n          if (provider) {\n            let providerData = { label: provider.name, value: provider.id, id: provider.id, name: provider.name };\n            associated.push(provider.name);\n\n            Object.assign(user, { provider: [providerData] });\n            obj = { ...obj, provider: providerData };\n          }\n        }\n      }\n    }\n\n    let roleTitle = \"\";\n    let roleHoverTitle = \"\";\n    const ROLE_LABEL = {\n      Lab: \"Admin\",\n      LabTech: \"Lab Technician\",\n    };\n\n    const roleValueToShow = (roleObject) => {\n      if (roleObject?.optLabel) {\n        return roleObject?.optLabel;\n      }\n\n      const value = roleObject?.role;\n      let roleTitle = value.endsWith(\"s\") ? value.slice(0, -1) + \"\" : value;\n      roleTitle = ROLE_LABEL[roleTitle] || roleTitle;\n      return roleTitle;\n    };\n\n    const displayRole = userRoles.filter((r) => r.role !== \"Client\");\n\n    if (displayRole.length > 1) {\n      roleTitle = \"Multi\";\n      roleHoverTitle = displayRole.map((t) => roleValueToShow(t)).join(\",\");\n    } else {\n      roleTitle = roleValueToShow(displayRole[0] || userRoles[0]?.role);\n      roleHoverTitle = roleTitle;\n    }\n\n    let onlyRoles = displayRole?.map((obj) => {\n      return obj.role;\n    });\n\n    let roleValue = displayRole?.map((obj) => {\n      if (obj.role === \"Employee\") return \"Patient\";\n      return obj.role;\n    });\n\n    return {\n      ...user,\n      roleHoverTitle,\n      username: user.userID,\n      phone: user.phone_number.replace(/ /g, \"\"),\n      additionalFields: obj,\n      oldRole: onlyRoles,\n      roleTitle,\n      roleValue,\n      associated: associated.join(\",\") || \"System\",\n    };\n  };\n\n  const formatUsers = () => {\n    const formattedUsers = appContext.users.filter((u) => u.firstName).map((user) => handleAdditionalFields(user));\n    setUsers(sortUsers(formattedUsers, sortBy));\n    setFilteredUsers(sortUsers(nestedFilter(formattedUsers, filter), sortBy));\n  };\n\n  const filterUsers = (searchTerm, searchInput) => {\n    return setFilteredUsers(users.filter((user) => user[searchTerm].includes(searchInput)));\n  };\n\n  const existingLabUser = async (user) => {\n    const searchInput = user.phone;\n    let findExistingUser = users.find((user) => user.phone.includes(searchInput));\n\n    if (findExistingUser && !editUser) {\n      let msg = `Phone Number is already registered`;\n      await appContext.resetUsers(CONFIG.whiteLabelID);\n      appContext.showErrorMessage(msg);\n      resetView();\n      return true;\n    }\n    return false;\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n\n    const filterKeys = Object.keys(filters);\n\n    const valueMap = {\n      \"First Name\": (obj) => obj.firstName,\n      \"Last Name\": (obj) => obj.lastName,\n      phone_number: (obj) => obj.phone_number?.replace(/\\D/g, \"\"),\n      userRole: (obj) => obj.roleTitle,\n    };\n\n    return targetArray.filter((obj) => {\n      return filterKeys.every((key) => {\n        const filterValue = filters[key];\n        if (!filterValue.length) return true;\n\n        const targetValue = valueMap[key] ? valueMap[key](obj) : obj[key];\n\n        return targetValue && targetValue.toLowerCase().includes(filterValue.toLowerCase());\n      });\n    });\n  };\n\n  const formatRoleChangeParams = (roles, userId) => {\n    const roleArrFormat = roles.map((element) => {\n      if (element === HEALTH_AND_SAFTEY || element.toLowerCase().includes(\"employer\")) {\n        return \"Employers\";\n      }\n      return `${element}s`;\n    });\n    return {\n      groupname: roleArrFormat,\n      username: userId,\n    };\n  };\n\n  const getUserBaseRole = (user) => {\n    if (user.role.includes(\"Admin\")) return \"Admins\";\n    if (user.role.includes(\"LabTech\")) return \"LabTechs\";\n    if (user.role.includes(\"Lab\")) return \"Labs\";\n    if (user.role.includes(HEALTH_AND_SAFTEY)) return \"Employers\";\n    if (user.role.includes(\"Client\")) return \"Clients\";\n    if (user.role.includes(\"Tester\")) return \"Testers\";\n    if (user.role.includes(\"Provider\")) return \"Providers\";\n    return \"Employees\";\n  };\n\n  const mergeWithPriority = (array1, array2, key) => {\n    const map = new Map();\n\n    // Add items from array2 to the map (gives array2 higher priority)\n    array2.forEach((item) => map.set(item[key], item));\n\n    // Add items from array1 only if they don't exist in the map\n    array1.forEach((item) => {\n      if (!map.has(item[key])) {\n        map.set(item[key], item);\n      }\n    });\n\n    // Return the merged values as an array\n    return [...map.values()];\n  };\n\n  const concateUsermultipleRoleData = async (rolesData, concateRoles) => {\n    const prevRoles = JSON.parse(cloneRoles).filter((t) => !t.labID || t.labID !== CONFIG.whiteLabelID);\n\n    return concateRoles.concat(prevRoles);\n  };\n\n  const updateLabUserInfo = async (userId, user, userMultipleRolesData) => {\n    let userRolesData = userMultipleRolesData.map((r) => r.role).join(\",\");\n\n    // userMultipleRolesData.push({\n    //   role: \"Lab\",\n    //   relatedId: \"c701eca8-bbc2-48af-aef0-14131c1dc0ad\",\n    //   title: \"Zend Lab\",\n    //   clientID: \"2b99da15-4aef-4ac2-b75e-eab64c0ebc6c\",\n    //   labID: \"c701eca8-bbc2-48af-aef0-14131c1dc0ad\",\n    // });\n\n    let updateStatus = await api.updateUserInfoV1(user, userRolesData, JSON.stringify(userMultipleRolesData));\n\n    // removeMultiUserGroup\n    if (userId && user.oldRole && user.oldRole.length > 0) {\n      const createUniqueRole = [...new Set(user.oldRole)];\n      await api.removeMultipleUserFromGroup(formatRoleChangeParams(createUniqueRole, userId));\n    }\n    // addMultipleUserToGroup\n    if (userId && userRolesData.length > 0) {\n      const createUniqueRole = [...new Set(userRolesData.split(\",\"))];\n      await api.addMultipleUserToGroup(formatRoleChangeParams(createUniqueRole, userId));\n    }\n    resetView();\n    return updateStatus;\n  };\n\n  const resetView = () => {\n    setCloneRoles(\"\");\n    setOpenCreator(false);\n    setEditUser(false);\n    setLoading(false);\n  };\n\n  const createNewUserInCognito = async (user, note) => {\n    try {\n      const attributePayload = {\n        email: user.email,\n        \"custom:role\": user.role,\n        \"custom:autoConfirm\": \"true\",\n        \"custom:firstName\": `${user.firstName}`,\n        \"custom:lastName\": `${user.lastName}`,\n        \"custom:note\": note,\n        \"custom:privilege\": \"whiteLabelUser\",\n        \"custom:clientID\": CONFIG.clientID,\n        \"custom:connectedID\": CONFIG.clientID,\n        \"custom:labID\": CONFIG.whiteLabelID,\n        \"custom:is2FaEnabled\": user?.is2FaEnabled ? \"y\" : \"n\",\n      };\n\n      const signUp = await Auth.signUp({\n        username: user.phone,\n        password: user.password,\n        attributes: attributePayload,\n      });\n\n      return signUp;\n    } catch (e) {\n      console.log(\"Exce\", e);\n    }\n    return null;\n  };\n\n  const checkAndAddUserRoles = async (user, currentRoleData, multipleRoleData) => {\n    const existingRolesData = [...currentRoleData];\n    const newRoles = JSON.parse(multipleRoleData);\n\n    const hasRole = (roleArray, role) => roleArray.some((r) => r.role === role);\n\n    const addOrUpdateRole = (role, relatedId, title) => {\n      const existingRole = existingRolesData.find((r) => r.role === role);\n      if (existingRole) {\n        existingRole.relatedId = relatedId;\n        existingRole.isWhiteLabelLab = true;\n      } else {\n        existingRolesData.push({\n          role,\n          relatedId,\n          title,\n          isWhiteLabelLab: true,\n        });\n      }\n    };\n\n    if (hasRole(newRoles, \"Lab\")) addOrUpdateRole(\"Lab\", user.lab.id, user.lab.label);\n    if (hasRole(newRoles, \"LabTech\")) addOrUpdateRole(\"LabTech\", user.lab.id, user.lab.label);\n    if (hasRole(newRoles, \"Client\")) addOrUpdateRole(\"Client\", CONFIG.clientID, CONFIG.baseName);\n\n    if (hasRole(newRoles, \"Tester\") && !hasRole(existingRolesData, \"Tester\")) {\n      existingRolesData.push({\n        role: \"Tester\",\n        isWhiteLabelLab: true,\n      });\n    }\n\n    return existingRolesData;\n  };\n\n  const addLabIDWithTester = (roles) => {\n    const multipleRoleData = JSON.parse(roles);\n    const newRoles = multipleRoleData.map((r) => {\n      return {\n        ...r,\n        clientID: CONFIG.clientID,\n        labID: CONFIG.whiteLabelID,\n      };\n    });\n\n    return JSON.stringify(newRoles);\n  };\n\n  const createUser = async (user, logObj) => {\n    setLoading(true);\n    let isLabUserExists = await existingLabUser(user);\n    if (isLabUserExists) {\n      setLoading(false);\n      return;\n    }\n\n    try {\n      let userId = null;\n      const phoneNo = user.phone;\n      let rolesData = user.role;\n\n      user.role = getUserBaseRole(user);\n      let multipleRoleData = addLabIDWithTester(user.multipleRoles);\n\n      if (user.isNew) {\n        let userExistsInDB = await api.isUserExistsInDB(phoneNo);\n        if (Object.keys(userExistsInDB).length > 0) {\n          appContext.showErrorMessage(\"Phone Number is already registered in Medflow with defferent particulars\");\n          resetView();\n          return;\n        }\n      }\n\n      //for new User\n      if (user.isNew) {\n        let noteArr = [];\n        let note = \"\";\n        if (user.show) noteArr.push(user.show.label);\n        if (user.lab) noteArr.push(user.lab.label);\n        if (user.client) noteArr.push(user.client.label);\n        if (rolesData.includes(\"Admin\")) noteArr.push(\"System\");\n        if (rolesData.includes(\"LabTech\")) noteArr.push(\"Lab Tech\");\n        if (rolesData.includes(\"Tester\")) noteArr.push(\"Tester\");\n\n        note = noteArr.join(\",\");\n\n        const signUp = await createNewUserInCognito(user, note);\n        if (!signUp) {\n          appContext.showErrorMessage(\"Fail to Create the User\");\n          setLoading(false);\n          return;\n        }\n        userId = signUp.userSub;\n\n        // addEmployeeRoles\n        let modifiedRoleData = JSON.parse(multipleRoleData);\n\n        if (userId && modifiedRoleData.length > 0) {\n          modifiedRoleData = modifiedRoleData.map((u) => {\n            return { ...u, isWhiteLabelLab: true };\n          });\n\n          // const isSingleRole = multipleRoleData.length === 1;\n          const isSingleRole = modifiedRoleData.length === 1;\n          let addRoleObj = {\n            firstName: user.firstName,\n            lastName: user.lastName,\n            phone_number: phoneNo,\n            email: user.email,\n            userRole: `${user.role === HEALTH_AND_SAFTEY ? \"Employer\" : user.role}`,\n            note,\n            username: userId,\n            roles: JSON.stringify(modifiedRoleData),\n            labID: CONFIG.whiteLabelID,\n            clientID: CONFIG.clientID,\n            labPackage: CONFIG.appPackage,\n            is2FaEnabled: user?.is2FaEnabled ? \"y\" : \"n\",\n            personalisation: JSON.stringify(DEFAULT_USER_PERSONALIZATION),\n            ...(isSingleRole && { userPermission: user.userPermission }),\n            provider: user.provider,\n          };\n          await api.addEmployeeRoles(addRoleObj);\n        }\n\n        // addMultipleUserToGroup\n        if (userId && rolesData.length > 0) {\n          await api.addMultipleUserToGroup(formatRoleChangeParams(rolesData.split(\",\"), userId));\n        }\n        appContext.showSuccessMessage(\"User created successfully\");\n      } else {\n        userId = user.username;\n        let concateRoles = JSON.parse(multipleRoleData);\n        let userMultipleRolesData = await concateUsermultipleRoleData(rolesData, concateRoles);\n\n        await updateLabUserInfo(userId, user, userMultipleRolesData);\n        appContext.showSuccessMessage(\"User updated successfully\");\n      }\n\n      if (userId) {\n        let msg = `Hello ${user.firstName}, Please see the below link to access portal. \\nUser Name: ${user.phone} \\nPassword: ${user.password} \\n https://medflow.gosafecamp.com/`;\n        if (user.isNew && !CONFIG.isWhiteLabelLab) {\n          // await api.sendSMSNotification(user.phone, msg);\n        }\n\n        await appContext.resetUsers(CONFIG.whiteLabelID);\n      }\n\n      const newLogObj = { ...logObj, testID: userId };\n      // {\n      //   testID: order?.id,\n      //   changeObject: chngObj,\n      //   slug: \"Order Updated\",\n      //   newValue: \"Updated\",\n      //   userName: dbOrder.updatedByName,\n      //   userID: dbOrder.updatedBy,\n      // }\n      await api.addLogs(newLogObj);\n      setLoading(false);\n\n      resetView();\n    } catch (error) {\n      console.log(\"ERROR:User-\", error);\n      let message = error.message.replace(\"_\", \" \");\n      setErrorMessageText(message);\n    }\n    setLoading(false);\n  };\n\n  const handleResetPassword = (obj) => {\n    console.log(\" Obj\", obj);\n  };\n\n  const handleClose = () => {\n    setOpenCreator(false);\n    setOpenDeleteConfirmation(false);\n  };\n\n  const handlePasswordClose = () => {\n    setOpenPasswordModal(false);\n  };\n\n  const handleChangePage = (number) => {\n    setCurrentPage(number);\n  };\n\n  const indexOfLastUser = currentPage * usersPerPage;\n  const indexOfFirstUser = indexOfLastUser - usersPerPage;\n  const currentUsers = (users) => {\n    return users.slice(indexOfFirstUser, indexOfLastUser);\n  };\n\n  let usersToMap =\n    Object.values(filter).length === 0 || Object.keys(filter).length === 0\n      ? currentUsers(users)\n      : currentUsers(filteredUsers);\n\n  const getPageNumbers = (users) => {\n    const pageNumbers = [];\n    for (let i = 1; i <= Math.ceil(users.length / usersPerPage); i++) {\n      pageNumbers.push(i);\n    }\n    return pageNumbers;\n  };\n\n  let pageNumbers = getPageNumbers(users);\n\n  useEffect(() => {\n    loadPrevSorting();\n    if (CONFIG.whiteLabelID) {\n      appContext.resetUsers(CONFIG.whiteLabelID);\n    }\n  }, [appContext?.userLab]);\n\n  useEffect(() => {\n    formatUsers();\n  }, [appContext?.users]);\n\n  useEffect(() => {\n    if (users.length > 0) {\n      setUsers(sortUsers(users, sortBy));\n    }\n    if (filteredUsers?.length > 0) {\n      setFilteredUsers(sortUsers(filteredUsers, sortBy));\n    }\n\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"users\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n  }, [sortDescending, sortBy]);\n\n  useEffect(() => {\n    if (users.length > 0) {\n      setFilteredUsers(nestedFilter(users, filter));\n      setCurrentPage(1);\n    }\n  }, [filter]);\n\n  const loadPrevSorting = () => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.users.sortBy) {\n      setSortDescending(sortingFilters.users.sortDescending);\n      setSortBy(sortingFilters.users.sortBy);\n    }\n  };\n\n  if (filteredUsers.length > 0) {\n    pageNumbers = getPageNumbers(filteredUsers);\n  }\n\n  const onRoleChange = async (e, user) => {\n    setLoading(true);\n    await api.changeUserRole(user.role, e.value, user.username);\n    setTimeout(() => {\n      appContext.resetUsers(CONFIG.whiteLabelID);\n    }, 1500);\n  };\n\n  const renderPageNumbers = () => {\n    let slicedPages = pageNumbers;\n    if (currentPage === 1) {\n      slicedPages = pageNumbers.slice(0, 3);\n    } else if (currentPage === pageNumbers.length) {\n      slicedPages = pageNumbers.slice(currentPage - 3, currentPage);\n    } else {\n      slicedPages = pageNumbers.slice(currentPage - 2, currentPage + 1);\n    }\n\n    return slicedPages.map((number) => {\n      return (\n        <li\n          key={number}\n          onClick={() => handleChangePage(number)}\n          style={{\n            textDecoration: currentPage === number ? \"none\" : \"underline\",\n            color: currentPage === number ? \"black\" : \"#A82632\",\n            display: \"inline-block\",\n            padding: 5,\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = currentPage === number ? \"none\" : \"underline\";\n          }}\n        >\n          {number}\n        </li>\n      );\n    });\n  };\n\n  const roleChangeOptions = [\n    { value: \"Admin\", label: \"Admin\" },\n    { value: \"Lab\", label: \"Lab\" },\n    { value: \"Tester\", label: \"Tester\" },\n    { value: \"Employee\", label: \"Crew\" },\n    { value: \"Employer\", label: \"Health & Safety\" },\n  ];\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  const handleEditUser = (user) => {\n    const obj = { ...user, isNew: false };\n\n    setCloneRoles(obj.roles);\n    setNewUser(obj);\n    setOpenCreator(true);\n    setEditUser(true);\n  };\n\n  const handleConfirm = async (isConfirm) => {\n    setOpenDeleteConfirmation(false);\n    if (!isConfirm) {\n      setUserToDelete(null);\n      return;\n    }\n    try {\n      let allUserRoles = JSON.parse(userToDelete.roles);\n      setLoading(true);\n      let isUpdated = true;\n      await api.deleteUser(userToDelete.username, userToDelete.id);\n      // if (allUserRoles.length > 1) {\n      //   allUserRoles = allUserRoles.filter((r) => r.relatedId !== CONFIG.whiteLabelID && !r.isWhiteLabelLab);\n\n      //   isUpdated = await updateLabUserInfo(userToDelete.username, { ...userToDelete, lab: null }, allUserRoles);\n      // } else {\n      //   await api.deleteUser(userToDelete.username, userToDelete.id);\n      // }\n\n      setUserToDelete(null);\n      if (isUpdated) {\n        appContext.showSuccessMessage(\"User removed successfully\");\n      } else {\n        appContext.showErrorMessage(\"Fail to remove the User\");\n      }\n      appContext.resetUsers(CONFIG.whiteLabelID);\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n    setLoading(false);\n  };\n\n  const handleDropDownClick = (type, user) => {\n    if (type === \"Archive\") {\n      setOpenDeleteConfirmation(true);\n      setUserToDelete(user);\n    } else if (type === \"Audit Trail\") {\n      appContext.showLogs({ ...user, title: \"Users Logs\", recordType: \"logs\" });\n    }\n  };\n\n  const TableRow = ({ user }) => {\n    return (\n      <tr key={user.username} className=\"trDataWrapper\">\n        <td className=\"icon\">\n          {permission[SYSTEM_USERS_VALUE]?.editUserCredentials === true && (\n            <img\n              src={editIcon}\n              alt=\"edti icon\"\n              className=\"fas fa-edit\"\n              onMouseLeave={(e) => (e.target.style.color = \"black\")}\n              onMouseOver={(e) => {\n                e.target.style.color = \"blue\";\n                e.target.style.cursor = \"pointer\";\n              }}\n              aria-hidden=\"true\"\n              id={user.id}\n              onClick={(e) => handleEditUser(user)}\n            />\n          )}\n        </td>\n\n        <RenderTd item={{ itemKey: \"firstName\" }} user={user} />\n        <RenderTd item={{ itemKey: \"lastName\" }} user={user} />\n        <RenderTd item={{ itemKey: \"email\" }} user={user} />\n        <RenderTd key={user.username} item={{ itemKey: \"phone_number\" }} user={user} />\n        <td className=\"ellipsis\" style={{ textAlign: \"center\", textOverflow: \"visible\" }} title={user.roleHoverTitle}>\n          {user.roleTitle}\n        </td>\n        {/* <td className=\"ellipsis\" style={{ textAlign: \"center\", textOverflow: \"visible\" }} title={user.associated}>\n          {user.associated}\n        </td> */}\n        <td className=\"ellipsis\" style={{ textAlign: \"center\", textOverflow: \"visible\" }} title={user.status}>\n          {toTitleCase(user.status) || \"Confirmed\"}\n        </td>\n        {/* <td className=\"icon\">\n          {permission[SYSTEM_USERS_VALUE]?.archiveUser === true && (\n            <i\n              className=\"fa fa-trash\"\n              onMouseLeave={(e) => (e.target.style.color = \"black\")}\n              onMouseOver={(e) => {\n                e.target.style.color = \"#8B0000\";\n                e.target.style.cursor = \"pointer\";\n              }}\n              aria-hidden=\"true\"\n              id={user.id}\n              onClick={(e) => {\n                setOpenDeleteConfirmation(true);\n                setUserToDelete(user);\n              }}\n            />\n          )}\n        </td> */}\n        <td className=\"icon\">\n          <DropdownMenu\n            options={[\n              { title: \"Archive\", value: \"Archive\" },\n              { title: \"Audit Trail\", value: \"Audit Trail\" },\n            ]}\n            handleDropDownOptions={(type) => handleDropDownClick(type, user)}\n          />\n        </td>\n      </tr>\n    );\n  };\n\n  return (\n    <div style={{ flex: 1 }} ref={mainWidth}>\n      <div className=\"shows-screen-parent\">\n        <Row>\n          <Col>\n            <Card className=\"strpied-tabled-with-hover bg-transparent border-0\">\n              <Card.Header>\n                <Row>\n                  <Card.Title\n                    as=\"h4\"\n                    style={{\n                      marginBottom: 10,\n                      fontWeight: \"bold\",\n                      color: \"#565656\",\n                    }}\n                  >\n                    Users ({filteredUsers && filteredUsers.length > 0 ? filteredUsers.length : users.length})\n                  </Card.Title>\n                  <div className=\"buttonHeader\">\n                    <Icon\n                      handleClick={() => setShowFilter(!showFilter)}\n                      title={\"Filter\"}\n                      label={\"Filter\"}\n                      iconType={\"filter\"}\n                    />\n                    <Icon\n                      handleClick={() => setShowRolesModal(!showRolesModal)}\n                      title={\"Roles\"}\n                      label={\"Roles\"}\n                      iconType={\"roles\"}\n                      imageClass=\"roles-icon\"\n                    />\n\n                    {permission[SYSTEM_USERS_VALUE]?.createNewUser === true && (\n                      <Icon\n                        handleClick={() => {\n                          setNewUser({ ...EmptyUserObj });\n                          setOpenCreator(true);\n                        }}\n                        title={\"Create a User\"}\n                        label={\"Create\"}\n                        iconType={\"addUserIcon\"}\n                      />\n                    )}\n                  </div>\n                  <Col md=\"12\">\n                    {showFilter && (\n                      <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} isUsersTable={true} />\n                    )}\n                  </Col>\n                </Row>\n                <Row className=\"pull-right\" style={{ borderWidth: 1 }}>\n                  <Col></Col>\n                  <Col style={{ textAlign: \"right\" }} md={{ span: 3, offset: 1 }} xl={{ span: 3, offset: 1 }}>\n                    Page\n                    <ul className=\"createButtons pr-0\" style={{ display: \"inline\" }}>\n                      <i\n                        className=\"fas fa-angle-left\"\n                        style={{ color: \"#585858\" }}\n                        onMouseOver={(e) => {\n                          e.target.style.cursor = \"pointer\";\n                          e.target.style.color = \"black\";\n                        }}\n                        onMouseLeave={(e) => (e.target.style.color = \"#585858\")}\n                        onClick={() => {\n                          currentPage !== 1 && handleChangePage(currentPage - 1);\n                        }}\n                      />\n                      {/* {currentPage !== 1 && \"...\"} */}\n                      {currentPage} of {pageNumbers.length}\n                      {/* {pageNumbers.length >= currentPage && \"...\"} */}\n                      <i\n                        className=\"fas fa-angle-right\"\n                        style={{ color: \"#585858\" }}\n                        onMouseOver={(e) => {\n                          e.target.style.cursor = \"pointer\";\n                          e.target.style.color = \"black\";\n                        }}\n                        onMouseLeave={(e) => (e.target.style.color = \"#585858\")}\n                        onClick={() => {\n                          currentPage !== pageNumbers.length && handleChangePage(currentPage + 1);\n                        }}\n                      />\n                    </ul>\n                  </Col>\n                </Row>\n              </Card.Header>\n              <Card.Body className=\"table-full-width px-0 desktop-noScroll mt-0 pt-0\">\n                <div className=\"table-responsive pendingReleaseTable\">\n                  <Table className=\"separate-border-tr\">\n                    <thead ref={componentRef}>\n                      <tr>\n                        <th />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"firstName\"\n                          title=\"First Name\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"lastName\"\n                          title=\"Last Name\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"email\"\n                          title=\"Email\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"phone_number\"\n                          title=\"Phone Number\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"roleTitle\"\n                          title=\"Role\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"associated\"\n                          title=\"Associated\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"status\"\n                          title=\"Status\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <th />\n                      </tr>\n                    </thead>\n                    <tbody className={usersToMap.length === 1 && \"user-table-height\"}>\n                      {usersToMap &&\n                        usersToMap.map((user, i) => {\n                          return (\n                            <TableRow\n                              key={i}\n                              user={user}\n                              isEditPermission={permission[SYSTEM_USERS_VALUE]?.createNewUser === true}\n                              isDeletePermission={permission[SYSTEM_USERS_VALUE]?.archiveUser === true}\n                            />\n                          );\n                        })}\n                    </tbody>\n                  </Table>\n                  {appContext.usersLoading && <Loader />}\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n      </div>\n      {showRolesModal && <RolesViewModal handleClose={() => setShowRolesModal(false)} />}\n\n      {openCreator && (\n        <WhiteLabelUserModal\n          show={openCreator}\n          user={newUser}\n          handleClose={handleClose}\n          handleSave={createUser}\n          resetCall={setOpenPasswordModal}\n          message={errorMessageText}\n          users={users}\n          loading={loading}\n        />\n      )}\n      {openPasswordModal && (\n        <UserPasswordModal user={newUser} handleClose={handlePasswordClose} handleSave={handleResetPassword} />\n      )}\n\n      {openDeleteConfirmation && (\n        <ConfirmationModal\n          show={openDeleteConfirmation}\n          title=\"Delete User\"\n          message=\"Are you sure, you want to remove User?\"\n          handleConfirm={handleConfirm}\n        />\n      )}\n    </div>\n  );\n};\n\nexport default UsersViewWhiteLabel;\n","import React, { useCallback, useEffect, useState, useRef } from \"react\";\nimport Form from \"react-bootstrap/Form\";\nimport styles from \"./InputStyle.module.css\";\nimport { debounce } from \"debounce\";\nimport { ViewportList } from \"react-viewport-list\";\nimport api from \"api\";\nimport { convertToUpper } from \"utils\";\n\nconst InputCPTCodeDropDown = (props) => {\n  const {\n    label,\n    type,\n    placeholder,\n    handleChange,\n    labelStyle,\n    inputStyle,\n    value,\n    maxlength,\n    groupWrapper,\n    optionList,\n    readOnly,\n    selectedDiagnosis,\n    searchtype,\n    required,\n    showLabelOnTop,\n    showLabel,\n    showInput = true,\n    showCross = true,\n    dataIds = [],\n    tooltip=\"\"\n  } = props;\n\n  const [input, setInput] = useState(value || \"\");\n\n  const [description, setDescription] = useState(\"\");\n  const [filteredList, setFilteredList] = useState([]);\n  const [selectedOptionIndex, setSelectedOptionIndex] = useState(-1);\n  const scrollableContainerRef = useRef(null);\n  const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n  const [testResponse, setTestResponse] = useState(null);\n\n  const inputRef = useRef(null);\n  const handleTypeDelay = useCallback(\n    debounce((data, selectedDiagnosis) => {\n      handleChangeInputText(data, selectedDiagnosis);\n    }, 200),\n    []\n  );\n\n  const handleKeyDown = (e) => {\n    if (e.key === \"ArrowDown\") {\n      e.preventDefault();\n      setSelectedOptionIndex((prevIndex) => (prevIndex < filteredList.length - 1 ? prevIndex + 1 : prevIndex));\n      scrollToOption(selectedOptionIndex + 1);\n    } else if (e.key === \"ArrowUp\") {\n      e.preventDefault();\n      setSelectedOptionIndex((prevIndex) => (prevIndex > 0 ? prevIndex - 1 : prevIndex));\n      scrollToOption(selectedOptionIndex - 1);\n    } else if (e.key === \"Enter\") {\n      e.preventDefault();\n      if (selectedOptionIndex !== -1) {\n        const selectedOption = filteredList[selectedOptionIndex];\n        if (selectedOption) {\n          setInput(selectedOption.code);\n          handleChange({\n            ...selectedOption,\n            value: selectedOption.code,\n            label: selectedOption.description,\n          });\n          setFilteredList([]);\n        }\n      }\n    }\n  };\n\n  useEffect(async () => {\n    if (value && value.trim()) {\n      setInput(value);\n    } else {\n      setInput(\"\");\n      setDescription(\"\");\n    }\n    setSelectedOptionIndex(-1);\n  }, [value]);\n\n  useEffect(() => {\n    if (!input || !input.trim()) {\n      setFilteredList([]);\n      setSelectedOptionIndex(-1);\n    }\n  }, [input]);\n\n  useEffect(() => {\n    const handleOutsideClick = (e) => {\n      if (isDropdownOpen && !e.target.closest(\".form-group-wrapper\")) {\n        // Close the dropdown when clicking outside of it\n        setIsDropdownOpen(false);\n      }\n    };\n\n    // Add event listener to detect clicks outside of the dropdown\n    document.addEventListener(\"click\", handleOutsideClick);\n\n    return () => {\n      // Remove the event listener when the component unmounts\n      document.removeEventListener(\"click\", handleOutsideClick);\n    };\n  }, [isDropdownOpen]);\n\n  const scrollToOption = (index) => {\n    if (scrollableContainerRef.current) {\n      const listItem = scrollableContainerRef.current.querySelector(`.listOption-${index}`);\n      if (listItem) {\n        const containerRect = scrollableContainerRef.current.getBoundingClientRect();\n        const listItemRect = listItem.getBoundingClientRect();\n        if (listItemRect.bottom > containerRect.bottom) {\n          // Scroll down to make the selected item visible\n          scrollableContainerRef.current.scrollTop += listItemRect.bottom - containerRect.bottom;\n        } else if (listItemRect.top < containerRect.top) {\n          // Scroll up to make the selected item visible\n          scrollableContainerRef.current.scrollTop -= containerRect.top - listItemRect.top;\n        }\n      }\n    }\n  };\n\n  const getList = async () => {\n    const apiData = await api.getTestTypes();\n    setTestTypesList(apiData);\n  };\n\n  const handleChangeInputText = async (data, selectedDiagnosis) => {\n    if (!data || !data.trim()) {\n      setFilteredList([]);\n      return;\n    }\n\n    let response = {};\n    if (searchtype === \"cpt\") {\n      response = await api.searchCptCode({ search: data });\n    }\n    if (searchtype === \"test\") {\n      const testTypes = await api.getTestTypes();\n\n      // const targetRangeIds = panels.flatMap((panel) => panel.targetRanges.map((range) => range.id));\n\n      const mergedTestArr = testTypes\n        .filter(\n          (item) =>\n            (item.name.toLowerCase().includes(data.toLowerCase()) || item.code === data) &&\n            !dataIds.includes(item.id) &&\n            item.isPanelOnly !== true\n        )\n        .map((item) => ({\n          ...item,\n          description: item.name,\n          label: item.name,\n        }));\n\n      response = {\n        cpt: [],\n        panel: filteredPanelItem,\n        tests: filteredTestItem,\n        rows: mergedTestArr,\n      };\n\n      setTestResponse(response);\n\n      response[\"rows\"] = mergedTestArr;\n\n      // setTestResponse(resObj);\n\n      // response = await api.getCptWithTests({ search: data });\n      // console.log(\"ResponDOwn\", response);\n      // setTestResponse(response);\n\n      // const resRows = [\n      //   ...response?.panel.map((item) => {\n      //     return { ...item, description: item.name };\n      //   }),\n      //   ...response?.tests.map((item) => {\n      //     return { ...item, description: item.name };\n      //   }),\n      // ];\n      // console.log(\"🚀 ~ handleChangeInputText ~ resRows:\", resRows);\n\n      // response[\"rows\"] = resRows;\n    }\n\n    if (searchtype === \"ict\") {\n      response = await api.searchICTCode({ search: data });\n      if (selectedDiagnosis.length > 0 && response && response.rows.length > 0) {\n        response = response.rows.filter((f) => !selectedDiagnosis.includes(f.code));\n      }\n    }\n\n    setFilteredList(response?.rows);\n  };\n\n  const optionRow = (option, index) => {\n    const isSelected = index === selectedOptionIndex;\n    // console.log(\"option\", option);\n    let changeObj = { ...option, value: option.code, label: option.description };\n\n    if (searchtype === \"test\" && changeObj.hasOwnProperty(\"code\") && changeObj.code !== null) {\n      changeObj = { changeObj, testResponse };\n    }\n    return (\n      <li\n        key={index}\n        tabIndex={0}\n        className={`listOption listOption-${index} ${isSelected ? \"selected\" : \"\"}`}\n        onClick={() => {\n          setInput(showInput ? option.code : \"\");\n          handleChange(changeObj);\n          setFilteredList([]);\n        }}\n        title={option.description}\n      >\n        <span className={`fw-bold optListContent ${isSelected ? \"selected\" : \"\"}`}>{option.internalCode}</span>\n        <span className={`fw-light optListContent ${isSelected ? \"selected\" : \"\"}`}>{option.description}</span>\n      </li>\n    );\n  };\n\n  return (\n    <Form.Group className={`${groupWrapper ? groupWrapper : \"form-group-wrapper\"}`}>\n      {!showLabelOnTop && showLabel && label ? (\n        <>\n          <Form.Label className={`test-type-input-label ${labelStyle}`}>{`${label}`}</Form.Label>\n          {required && <span style={{ color: \"red\" }}>*</span>}\n        </>\n      ) : (\n        \"\"\n      )}\n      <div className=\"position-relative w-100\">\n        {showLabelOnTop && label && showLabel ? (\n          <>\n            <Form.Label className={`test-type-input-label ${labelStyle}`}>{`${label}`}</Form.Label>\n            {required && <span style={{ color: \"red\" }}>*</span>}\n          </>\n        ) : (\n          \"\"\n        )}\n        <Form.Control\n          ref={inputRef}\n          type={type}\n          maxLength={maxlength}\n          onKeyDown={handleKeyDown}\n          onClick={() => {\n            setIsDropdownOpen(true);\n          }}\n          title={tooltip} \n          value={input}\n          readOnly={readOnly}\n          placeholder={placeholder}\n          className={`${styles.inputStyling} ${inputStyle}`}\n          onChange={(e) => {\n            const val = convertToUpper(e.target.value);\n            setIsDropdownOpen(true);\n            if (val) {\n              setInput(val);\n              setDescription(\"\");\n              handleTypeDelay(val, selectedDiagnosis);\n            } else {\n              handleTypeDelay(\"\");\n              handleChange(\"\");\n              setInput(val);\n            }\n          }}\n        />\n        {value && !readOnly && showCross && (\n          <i\n            className={`fas fa-times ${showLabel ? \"cancelSearchInputWithLabel\" : \"cancelSearchInput\"}`}\n            onClick={() => {\n              handleTypeDelay(\"\");\n              handleChange(\"\");\n              setInput(\"\");\n              if (inputRef.current) {\n                inputRef.current.focus();\n              }\n            }}\n          />\n        )}\n        {filteredList && !readOnly && isDropdownOpen && filteredList.length > 0 && (\n          <ul\n            className=\"optionListWrapper\"\n            onBlur={() => {\n              setInput(\"\");\n              setFilteredList([]);\n              setIsDropdownOpen(false);\n            }}\n            onKeyDown={handleKeyDown} // Handle keyboard events\n            tabIndex={0} // Make the list focusable\n            ref={scrollableContainerRef}\n          >\n            <ViewportList items={filteredList} overflowAnchor=\"auto\" withCache={true}>\n              {(item, index) => optionRow(item, index)}\n            </ViewportList>\n          </ul>\n        )}\n      </div>\n    </Form.Group>\n  );\n};\n\nexport default InputCPTCodeDropDown;\n","import api from \"api\";\nimport InputCPTCodeDropDown from \"components/InputField/InputCPTCodeDropDown\";\nimport InputField from \"components/InputField/InputField\";\nimport Loader from \"components/Loader/Loader\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { TEST_TYPE_OPT } from \"constant\";\nimport { PROCEDURE_CODE_STATES } from \"constant\";\nimport { useEffect, useState } from \"react\";\nimport { Button, Card, Form, Modal, Table } from \"react-bootstrap\";\nimport { formatOrderDate } from \"utils\";\nimport { parseStringIntoFloat } from \"utils\";\n\nconst DefaultClientSettingModal = (props) => {\n  const { handleClose, data, cssClass } = props;\n  const [obj, setObj] = useState({});\n  const [settingList, setSettingList] = useState([]);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n\n  const fetchClientSetting = async (id) => {\n    try {\n      setLoading(true);\n      const res = await api.getClientTestSettingByCompanyID(id);\n      setSettingList(res);\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error:-\", err.message);\n      setLoading(false);\n    }\n  };\n\n  useEffect(() => {\n    fetchClientSetting(data.id);\n  }, [data]);\n\n  const handleSubmit = (actionState) => {\n    if (!obj.test_type) {\n      setError(\"Test Type is required\");\n      return;\n    }\n    if (!obj.proc_code || !obj.proc_code.trim()) {\n      setError(\"Procedure Code is required\");\n      return;\n    }\n    if (!obj.diag_1) {\n      setError(\" Diagnosis Code  is required\");\n      return;\n    }\n  };\n  const handleTrashSetting = async (id) => {\n    try {\n      setLoading(true);\n      const res = await api.deleteClientTestSetting(id);\n      setSettingList((prev) => prev.filter((f) => f.id !== id));\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error:-\", err.message);\n      setLoading(false);\n    }\n  };\n\n  console.log(\"Obj\", obj);\n\n  const TableRow = ({ item, sr }) => {\n    return (\n      <>\n        <tr>\n          <td className=\"icon\" style={{ width: \"45px\", minWidth: \"45px\", maxWidth: \"45px\" }}>\n            {item.length - sr}\n          </td>\n\n          <td className={`ellipsis `}>{item.test}</td>\n          <td className={`ellipsis`}>{item.defaultCPT[0].proc_code}</td>\n          <td className={`ellipsis`}> {item.defaultICT[0].diag_1}</td>\n          <td onClick={() => handleTrashSetting(item)}>\n            <i className=\"fas fa-trash\" />\n          </td>\n        </tr>\n      </>\n    );\n  };\n\n  return (\n    <>\n      {loading && <Loader />}\n      <Modal\n        show={true}\n        backdrop=\"static\"\n        className={`${cssClass}`}\n        animation={true}\n        onHide={() => handleClose()}\n        centered\n        size={\"xl\"}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Default Procedure Code\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0 }}>\n          <div className=\"crew-form-list crew-profile-again flex-direction row11\">\n            <div className=\"createClientsWrapper w-100\">\n              <InputField\n                type=\"dropDown\"\n                options={TEST_TYPE_OPT}\n                labelStyle=\"text-capitalize\"\n                label=\"Tests\"\n                placeholder=\"Select Test Types\"\n                index={\"test_type\"}\n                optionList={[]}\n                value={obj.test_type ? TEST_TYPE_OPT.find((f) => f.value === obj.test_type) : null}\n                handleChange={(opt) => {\n                  if (opt) {\n                    setObj({\n                      ...obj,\n                      test_type: opt.value,\n                    });\n                  } else {\n                    setObj({ ...obj, test_type: \"\" });\n                  }\n                }}\n                required\n              />\n              <div className=\"w-100 createClientsWrapper\">\n                <InputCPTCodeDropDown\n                  type=\"text\"\n                  inputStyle=\"modalInput\"\n                  labelStyle=\" text-capitalize\"\n                  label={\"PROCEDURE\"}\n                  placeholder={\"PROCEDURE\"}\n                  optionList={[]}\n                  value={obj.internalCode || obj.proc_code || \"\"}\n                  handleChange={(opt) =>\n                    setObj({\n                      ...obj,\n                      proc_code: opt.value,\n                      charge: parseStringIntoFloat(opt.charges),\n                      internalCode: opt.internalCode,\n                    })\n                  }\n                  searchtype=\"cpt\"\n                />\n              </div>\n\n              <div className=\"w-100 createClientsWrapper\">\n                <InputCPTCodeDropDown\n                  type=\"text\"\n                  inputStyle=\"modalInput\"\n                  labelStyle=\"text-capitalize\"\n                  groupWrapper=\"mb-0 form-group-wrapper\"\n                  label={\"Diagnosis\"}\n                  selectedDiagnosis={[...(obj.diag_1 ? [obj.diag_1] : [])]}\n                  placeholder={\"Search Code\"}\n                  optionList={[]}\n                  value={obj.diag_1 || obj.diag_1_internal || \"\"}\n                  handleChange={(opt) =>\n                    setObj({\n                      ...obj,\n                      [`diag_1`]: opt?.value,\n                      diag_1_internal: opt?.internalCode,\n                    })\n                  }\n                  searchtype=\"ict\"\n                />\n              </div>\n            </div>\n          </div>\n          {settingList && settingList.length > 0 && (\n            <Card>\n              <Card.Body>\n                <Table className=\"table\">\n                  <thead>\n                    <tr>\n                      <th\n                        className={`ellipsis border-0`}\n                        style={{\n                          color: \"grey\",\n                          fontWeight: \"bold\",\n                        }}\n                      >\n                        Sr#\n                      </th>\n                      <th\n                        className={`ellipsis border-0`}\n                        style={{\n                          color: \"grey\",\n                          fontWeight: \"bold\",\n                        }}\n                      >\n                        <div>\n                          <span title=\"Order Status\">Tests</span>\n                        </div>\n                      </th>\n                      <th\n                        className={`ellipsis border-0`}\n                        style={{\n                          color: \"grey\",\n                          fontWeight: \"bold\",\n                        }}\n                      >\n                        <div>\n                          <span title=\"Order Status\">Procedure Code</span>\n                        </div>\n                      </th>\n                      <th\n                        className={`ellipsis border-0`}\n                        style={{\n                          color: \"grey\",\n                          fontWeight: \"bold\",\n                        }}\n                      >\n                        <div>\n                          <span title=\"Order Status\">Diagnosis Code</span>\n                        </div>\n                      </th>\n                      <th\n                        className={`ellipsis border-0`}\n                        style={{\n                          color: \"grey\",\n                          fontWeight: \"bold\",\n                        }}\n                      >\n                        <div>\n                          <span title=\"Order Status\"></span>\n                        </div>\n                      </th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {settingList.map((o, index) => {\n                      return <TableRow key={index} item={o} sr={index} />;\n                    })}\n                  </tbody>\n                </Table>\n              </Card.Body>\n            </Card>\n          )}\n        </Modal.Body>\n        <div className=\"px-4 my-2\" style={{ height: \"2vh\" }}>\n          {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n        </div>\n\n        <Modal.Footer>\n          <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n            Close\n          </Button>\n          <Button\n            variant=\"secondary\"\n            className=\"headerButton btn-fill mx-3 ms-auto\"\n            onClick={() => handleSubmit(PROCEDURE_CODE_STATES.PLUS)}\n          >\n            Add\n          </Button>\n          {/* {Object.keys(data).length === 0 ? (\n          <Button\n            variant=\"secondary\"\n            className=\"headerButton btn-fill\"\n            onClick={() => handleSubmit(PROCEDURE_CODE_STATES.ADD)}\n          >\n            Add\n          </Button>\n        ) : (\n          <Button\n            variant=\"secondary\"\n            className=\"headerButton btn-fill\"\n            onClick={() => handleSubmit(PROCEDURE_CODE_STATES.UPDATE)}\n          >\n            Update\n          </Button>\n        )} */}\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default DefaultClientSettingModal;\n","export const COMPANY_SETTING = \"companySetting\";\n\nexport const COMPANY_SETTING_OBJ = \"companySetting/setting\";\n\nexport const COMPANY_SETTING_FETCH = \"companySetting/fetchApiData\";\n\nexport const COMPANY_SETTING_UPDATE = \"companySetting/updateCompanySetting\";\n\nexport const COMPANY_SETTING_UPDATE_CLI_LIST = \"companySetting/updateCompanySettingCLIList\";","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../../api\";\nimport {\n  COMPANY_SETTING,\n  COMPANY_SETTING_FETCH,\n  COMPANY_SETTING_UPDATE,\n  COMPANY_SETTING_UPDATE_CLI_LIST,\n} from \"./companySettingConstants\";\n\nexport const fetchCompanySetting = createAsyncThunk(COMPANY_SETTING_FETCH, async () => {\n  const response = await api.getCompanySetting(); // Your API call logic her\n  return response;\n});\n\nexport const updateCompanySetting = createAsyncThunk(COMPANY_SETTING_UPDATE, async (defaultSetting) => {\n  const response = await api.updateCompnayDefaultSetting(defaultSetting); // Your API call logic here\n  return response;\n});\nexport const updateCompanySettingCLIList = createAsyncThunk(COMPANY_SETTING_UPDATE_CLI_LIST, async (defaultSetting) => {\n  const response = await api.updateCliItem(defaultSetting); // Your API call logic here\n  return response;\n});\n\nconst companyUserSlice = createSlice({\n  name: COMPANY_SETTING,\n  initialState: { setting: null },\n  reducers: {\n    setCliList: (state, action) => {\n      state.setting[\"cliaNumber\"] = action.payload;\n    },\n  },\n  extraReducers: (builder) => {\n    builder.addMatcher(\n      (action) =>\n        [updateCompanySetting, fetchCompanySetting, updateCompanySettingCLIList].some((thunk) =>\n          action.type.startsWith(thunk.fulfilled.type)\n        ),\n      (state, action) => {\n        state.setting = action.payload;\n      }\n    );\n  },\n});\n\nexport const { setCliList } = companyUserSlice.actions;\n\nexport default companyUserSlice.reducer;\n","export const PROVIDER = \"provider\";\n\nexport const PROVIDER_FETCH = \"provider/fetch\";\n\nexport const CREATE_PROVIDER = \"provider/createProvider\";\n\nexport const UPDATE_PROVIDER = \"provider/updateProvider\";\n\nexport const DELETE_PROVIDER = \"provider/deleteProvider\";\n\nexport const UPDATE_PROVIDER_CLIENT = \"provider/updateProviderClient\";\n\nexport const CREATE_PORTAL_PROVIDER = \"provider/portalProvider\";\n\nexport const FETCH_RENDERING_PROVIDER = \"provider/renderingProvider\";","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { MESSAGE_MODES } from \"constant\";\nimport { NEW_PROVIDER_OBJECT, CONFIG } from \"constant\";\nimport { updateCompanySetting } from \"store/features/companySetting/companySettingSlice\";\nimport { callAmplifyAPI, callAmplifyAPIPut, callAmplifyAPIWithError } from \"views/GraphQL/gqApi\";\nimport api from \"../../../api\";\nimport { setMessage } from \"../general/generalAction\";\nimport {\n  CREATE_PROVIDER,\n  DELETE_PROVIDER,\n  PROVIDER,\n  PROVIDER_FETCH,\n  UPDATE_PROVIDER,\n  CREATE_PORTAL_PROVIDER,\n  UPDATE_PROVIDER_CLIENT,\n  FETCH_RENDERING_PROVIDER,\n} from \"./providersContants\";\nimport { toTitleCase } from \"utils\";\n\n// Async thunk to fetch all providers\nexport const fetchAllProviders = createAsyncThunk(PROVIDER_FETCH, async () => {\n  const response = await callAmplifyAPI(\"/providers/list\");\n\n  if (response && response?.rows) {\n    const providers = response.rows.map((item) => {\n      return { ...item, label: toTitleCase(item.name), value: item.id };\n    });\n    return providers;\n  }\n  return {};\n});\n\nexport const createPortalUserAsync = createAsyncThunk(CREATE_PORTAL_PROVIDER, async (provider, { dispatch }) => {\n\n  try {\n    const roles = [\n      {\n        role: \"Provider\",\n        relatedId: provider.associatedClient,\n        clientID: CONFIG.clientID,\n        labID: CONFIG.whiteLabelID,\n        title: CONFIG.basename,\n        id : provider.userRole?.id,\n        optLabel : provider.userRole?.label,\n        permission : provider.userRole?.code,\n        optValue : provider.userRole?.value\n      },\n    ];\n\n    const userObject = {\n      id: provider.id,\n      groupname: \"Providers\",\n      username: provider.phoneNumber,\n      phone_number: provider.phoneNumber,\n      email: provider.email,\n      first: provider.firstName,\n      last: provider.lastName,\n      clientID: CONFIG.clientID,\n      labID: CONFIG.whiteLabelID,\n      connectedID: provider.associatedClient,\n      roles: roles,\n      note: CONFIG.basename,\n      labName: provider?.labName,\n      provider: provider.provider,\n    };\n\n    const response = await callAmplifyAPIWithError(\"/providers/user\", userObject);\n\n    if (provider.isShowMessage) {\n      dispatch(setMessage(response?.message, MESSAGE_MODES?.success));\n    }\n    return { ...response, id: provider.id };\n  } catch (error) {\n    dispatch(setMessage(error.response.data.message, MESSAGE_MODES?.error));\n  }\n});\n\n// Async thunk to create a provider\nexport const createProviderAsync = createAsyncThunk(\n  CREATE_PROVIDER,\n  async ({ provider, defaultSetting }, { dispatch }) => {\n    let providerDefaultSetting = defaultSetting;\n\n    const response = await callAmplifyAPI(\"/providers\", {\n      name: provider.name,\n      clientID: provider.clientID,\n      firstName: provider.firstName,\n      middleName: provider.middleName,\n      lastName: provider.lastName,\n      code: provider.code,\n      email: provider.email,\n      npi: provider.npi,\n      street: provider.street,\n      city: provider.city,\n      state: provider.state,\n      zip: provider.zip,\n      phoneNumber: provider.phoneNumber,\n      fax: provider.fax,\n      isActive: provider.isActive,\n      taxid: provider.taxid,\n      speciality: provider.speciality,\n      npiType: provider.npiType,\n      setting: provider.setting,\n      associatedClient: provider.associatedClient,\n      linkedClient: provider.linkedClient,\n    });\n    Object.keys(defaultSetting).map((m) => {\n      providerDefaultSetting[m] = response?.rows?.id;\n    });\n\n    const providerObject = response?.rows;\n\n    if (provider?.isCheckedUser === \"active\" && providerObject) {\n      dispatch(\n        createPortalUserAsync({\n          ...providerObject,\n          userRole:provider.userRole,\n          isShowMessage: true,\n          provider: provider.provider,\n          labName: provider.labName,\n        })\n      );\n    }\n\n    //TODO:: Functionality Pending to add in Default Setting\n    //dispatch(updateCompanySetting(providerDefaultSetting));\n    return response?.rows;\n  }\n);\n\n// Async thunk to update a provider\nexport const updateProviderAsync = createAsyncThunk(\n  UPDATE_PROVIDER,\n  async ({ provider, defaultSetting }, { dispatch }) => {\n    const response = await callAmplifyAPIPut(\"/providers\", {\n      id: provider.id,\n      name: provider.name,\n      clientID: provider.clientID,\n      firstName: provider.firstName,\n      middleName: provider.middleName,\n      lastName: provider.lastName,\n      code: provider.code,\n      email: provider.email,\n      npi: provider.npi,\n      street: provider.street,\n      city: provider.city,\n      state: provider.state,\n      zip: provider.zip,\n      phoneNumber: provider.phoneNumber,\n      fax: provider.fax,\n      isActive: provider.isActive,\n      taxid: provider.taxid,\n      speciality: provider.speciality,\n      npiType: provider.npiType,\n      setting: provider.setting,\n      associatedClient: provider.associatedClient,\n      linkedClient: provider.linkedClient,\n    });\n    // dispatch(updateCompanySetting(defaultSetting));\n    return response?.rows;\n  }\n);\nexport const updateProviderClientAsync = createAsyncThunk(UPDATE_PROVIDER_CLIENT, async (provider, { dispatch }) => {\n  // let providerDefaultSetting = defaultSetting;\n  const response = await api.updateProviderClient(provider.pId, provider.uId);\n  // Object.keys(defaultSetting).map((m) => {\n  //   providerDefaultSetting[m] = response.id;\n  // });\n  // dispatch(updateCompanySetting(providerDefaultSetting));\n  return response;\n});\nexport const updateProviderNoteAsync = createAsyncThunk(UPDATE_PROVIDER, async (provider, { dispatch }) => {\n  const response = await callAmplifyAPI(\"/providers/note\", {\n    id: provider.id,\n    note: provider.note,\n  });\n  dispatch(setMessage(\"Provider Note Add SuccessFully!\", MESSAGE_MODES.success));\n  return response?.rows;\n});\n\n// Async thunk to delete a provider\nexport const deleteProviderAsync = createAsyncThunk(DELETE_PROVIDER, async (providerId) => {\n  const response = await callAmplifyAPI(\"/providers/remove\", {\n    id: providerId,\n  });\n  return response?.rows;\n});\n\n// Async fetch Rendering Provider\nexport const renderingProviderAsync = createAsyncThunk(FETCH_RENDERING_PROVIDER, async (providerId) => {\n  const response = await callAmplifyAPI(\"/providers/rendering\", {});\n  return response?.rows;\n});\n\nconst providerSlice = createSlice({\n  name: PROVIDER,\n  initialState: {\n    providers: [],\n    filteredProviders: [],\n    openCreator: false,\n    renderingProviders: [],\n    newUser: NEW_PROVIDER_OBJECT,\n  },\n  reducers: {\n    setFilteredProviders: (state, action) => {\n      state.filteredProviders = action.payload;\n    },\n    setOpenCreatorProviderModal: (state, action) => {\n      state.openCreator = action.payload;\n    },\n    setNewUserProvider: (state, action) => {\n      state.newUser = action.payload;\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n\n      .addCase(fetchAllProviders.fulfilled, (state, action) => {\n        state.providers = action.payload;\n        state.filteredProviders = action.payload;\n      })\n      .addCase(createProviderAsync.fulfilled, (state, action) => {\n        state.providers.unshift(action.payload);\n        state.filteredProviders.unshift(action.payload);\n      })\n      .addCase(renderingProviderAsync.fulfilled, (state, action) => {\n        state.renderingProviders = action.payload;\n      })\n      .addCase(deleteProviderAsync.fulfilled, (state, action) => {\n        const deletedproviderId = action.payload.id;\n        const deletedUserSubId = action.payload.subID;\n        if (deletedproviderId) {\n          if (deletedUserSubId) {\n            api.deleteUser(deletedUserSubId, deletedUserSubId);\n          }\n          state.providers = state.providers.filter((provider) => provider.id !== deletedproviderId);\n          state.filteredProviders = state.filteredProviders.filter((provider) => provider.id !== deletedproviderId);\n        }\n      })\n      .addCase(createPortalUserAsync.fulfilled, (state, action) => {\n        const providerId = action.payload?.id; // Assuming the payload contains `id` of the provider\n        const subID = action.payload?.subID || \"\"; // Assuming the payload contains the `subId` to update\n\n        if (providerId) {\n          // Find index of provider with the matching providerId\n          const providerIndex = state.providers.findIndex((provider) => provider.id === providerId);\n\n          if (providerIndex !== -1) {\n            // Update subId within the found provider\n            state.providers[providerIndex].subID = subID;\n            // If you need to do the same for `filteredProviders`, repeat the same logic\n            const filteredProviderIndex = state.filteredProviders.findIndex((provider) => provider.id === providerId);\n\n            if (filteredProviderIndex !== -1) {\n              state.filteredProviders[filteredProviderIndex].subID = subID;\n            }\n          }\n        }\n      })\n      .addCase(updateProviderClientAsync.fulfilled, (state, action) => {\n        // const deletedproviderId = action.payload;\n        // state.providers = state.providers.filter((provider) => provider.id !== deletedproviderId);\n        // state.filteredProviders = state.filteredProviders.filter((provider) => provider.id !== deletedproviderId);\n      })\n      .addMatcher(\n        (action) =>\n          [updateProviderAsync, updateProviderNoteAsync].some((thunk) => action.type.startsWith(thunk.fulfilled.type)),\n        (state, action) => {\n          const updatedprovider = action.payload;\n\n          if (updatedprovider) {\n            const existingproviderIndex = state.providers.findIndex((provider) => provider.id === updatedprovider.id);\n            if (existingproviderIndex !== -1) {\n              state.providers[existingproviderIndex] = updatedprovider;\n            }\n            const existingFilteredProvidersIndex = state.filteredProviders.findIndex(\n              (provider) => provider.id === updatedprovider.id\n            );\n            if (existingFilteredProvidersIndex !== -1) {\n              state.filteredProviders[existingFilteredProvidersIndex] = updatedprovider;\n            }\n          }\n        }\n      );\n  },\n});\n\nexport const { setFilteredProviders, setNewUserProvider, setOpenCreatorProviderModal } = providerSlice.actions;\n\nexport default providerSlice.reducer;\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\nimport { callAmplifyAPI } from 'views/GraphQL/gqApi';\nimport api from '../../../api';\nimport { formatLocations, formatSite } from '../../../utils';\nimport {\n  LOCATION,\n  LOCATION_FECTH,\n  USER_LOCATION_FECTH,\n  IMPORT_LCOATION,\n} from './locationsConstants';\n// Async thunk to fetch all locations\n\nexport const fetchAllLocations = createAsyncThunk(LOCATION_FECTH, async (param, { getState }) => {\n  const clients = getState().clients.clients;\n\n  const models = await api.getSites(param);\n  return models;\n});\n\n//Async thunk to Fetch user location\nexport const fetchUserLocation = createAsyncThunk(\n  USER_LOCATION_FECTH,\n  async (param, { getState }) => {\n    const user = param.user;\n    const location = await api.getUserSiteData(user?.sub);\n    return location;\n  },\n);\n\n// Async thunk to create a location\nexport const createLocationAsync = createAsyncThunk(\n  'location/createLocation',\n  async (location, { getState }) => {\n    const loginUser = getState().auth.user;\n    const response = await api.createLocations(location, loginUser);\n    return response;\n  },\n);\nexport const createLabClient = createAsyncThunk(\n  'location/createLabClient',\n  async (location, { getState }) => {\n    const loginUser = getState().auth.user;\n    const response = await api.createSite(location, loginUser);\n    const formattedSite = formatSite(response?.data?.createSite);\n    return formattedSite;\n  },\n);\n\nexport const importLocationAsync = createAsyncThunk(\n  IMPORT_LCOATION,\n  async (location, { getState }) => {\n    const loginUser = getState().auth.user;\n    const params = location.map((loc) => ({\n      ...loc,\n      createdBy: loginUser.sub,\n      createdByName: loginUser.name,\n    }));\n    const response = await api.importLabClient(params);\n    return response;\n  },\n);\n\n// Async thunk to update a location\nexport const updateLocationAsync = createAsyncThunk(\n  'location/updateLocation',\n  async ({ locationId, updatedlocation }) => {\n    const response = await api.updateLocation(locationId, updatedlocation);\n    return response;\n  },\n);\nexport const updateLabClient = createAsyncThunk(\n  'location/updateLabClient',\n  async (data, { getState, rejectWithValue }) => {\n    try {\n      const loginUser = getState().auth.user;\n      const response = await api.updateSite(data, loginUser);\n      return formatSite(response?.data?.updateSite);\n    } catch (error) {\n      console.error('Error in updateLabClient:', error);\n      return rejectWithValue(error.response?.data || 'Unexpected error occurred');\n    }\n  },\n);\nexport const updateLabClientNotes = createAsyncThunk(\n  'location/updateLabClientNotes',\n  async (data, { getState }) => {\n    const loginUser = getState().auth.user;\n\n    const response = await callAmplifyAPI('/labclient/note', { site: data });\n    return formatSite(response?.data?.updateSite);\n  },\n);\n\n// Async thunk to delete a location\nexport const deleteLocationAsync = createAsyncThunk(\n  'location/deleteLocation',\n  async (locationId) => {\n    const response = await api.deleteLocation(locationId);\n    return response;\n  },\n);\n\nconst locationSlice = createSlice({\n  name: LOCATION,\n  initialState: {\n    locations: [],\n    refLabs: [],\n    userLocation: null,\n    showLocationTestModal: false,\n    showPrinterSettings: false,\n    showBarcodeSettings: false,\n  },\n  reducers: {\n    updateLocationOnSubscription: (state, action) => {\n      let updatedlocation = action.payload.model;\n      if (updatedlocation) {\n        updatedlocation = formatSite(updatedlocation);\n        const existinglocationIndex = state.locations.findIndex(\n          (location) => location.id === updatedlocation.id,\n        );\n\n        if (existinglocationIndex !== -1) {\n          if (updatedlocation.isArchive) {\n            state.locations = state.locations.filter(\n              (location) => location.id !== updatedlocation.id,\n            );\n          } else {\n            state.locations[existinglocationIndex] = updatedlocation;\n          }\n        } else if (action.payload.event === 'INSERT') {\n          state.locations.unshift(updatedlocation);\n        }\n      }\n    },\n    setLocationTestModal: (state, action) => {\n      state.showLocationTestModal = action.payload;\n    },\n    setPrinterSettingsModal: (state, action) => {\n      state.showPrinterSettings = action.payload;\n    },\n    setBarcodeSettingsModal: (state, action) => {\n      state.showBarcodeSettings = action.payload;\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchAllLocations.fulfilled, (state, action) => {\n        const list = action.payload;\n        state.locations = list\n          ?.filter((item) => item.siteType !== 'lab')\n          .sort((a, b) => a.name.localeCompare(b.name));\n        state.refLabs = list\n          ?.filter((item) => item.siteType === 'lab')\n          .sort((a, b) => a.name.localeCompare(b.name));\n      })\n      .addCase(createLocationAsync.fulfilled, (state, action) => {\n        state.locations.push(action.payload);\n      })\n      .addCase(createLabClient.fulfilled, (state, action) => {\n        const updatedlocation = action.payload;\n        if (updatedlocation) {\n          const existinglocationIndex = state.locations.findIndex(\n            (location) => location.id === updatedlocation.id,\n          );\n          if (existinglocationIndex !== -1) {\n            state.locations[existinglocationIndex] = updatedlocation;\n          } else {\n            state.locations.push(action.payload);\n          }\n        }\n      })\n      .addCase(updateLocationAsync.fulfilled, (state, action) => {\n        const updatedlocation = action.payload;\n        if (updatedlocation) {\n          const existinglocationIndex = state.locations.findIndex(\n            (location) => location.id === updatedlocation.id,\n          );\n          if (existinglocationIndex !== -1) {\n            state.locations[existinglocationIndex] = updatedlocation;\n          }\n        }\n      })\n      .addCase(updateLabClient.fulfilled, (state, action) => {\n        const updatedlocation = action.payload;\n        if (updatedlocation) {\n          const existinglocationIndex = state.locations.findIndex(\n            (location) => location.id === updatedlocation.id,\n          );\n          if (existinglocationIndex !== -1) {\n            state.locations[existinglocationIndex] = updatedlocation;\n          }\n        }\n      })\n      .addCase(updateLabClientNotes.fulfilled, (state, action) => {\n        const updatedlocation = action.payload;\n        if (updatedlocation) {\n          const existinglocationIndex = state.locations.findIndex(\n            (location) => location.id === updatedlocation.id,\n          );\n          if (existinglocationIndex !== -1) {\n            state.locations[existinglocationIndex] = updatedlocation;\n          }\n        }\n      })\n      .addCase(deleteLocationAsync.fulfilled, (state, action) => {\n        const deletedlocationId = action.payload;\n        state.locations = state.locations.filter((location) => location.id !== deletedlocationId);\n      })\n      .addCase(fetchUserLocation.fulfilled, (state, action) => {\n        state.locations = [action.payload];\n        state.userLocation = action.payload;\n      });\n  },\n});\nexport const {\n  updateLocationOnSubscription,\n  setLocationTestModal,\n  setPrinterSettingsModal,\n  setBarcodeSettingsModal,\n} = locationSlice.actions;\n\nexport default locationSlice.reducer;\n","export const LOCATION = \"location\";\n\nexport const LOCATION_FECTH = \"location/fetchAllLocations\";\n\nexport const USER_LOCATION_FECTH = \"location/fetchUserLocation\";\n\nexport const IMPORT_LCOATION = \"location/importlocation\";","import api from \"api\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\n// import PreviousNotes from \"components/Note/PreviousNotes\";\nimport RadioButton from \"components/RadioButton/RadioButton\";\nimport Loader from \"components/Loader/Loader\";\nimport { NOTES_MAX_CHARACTER_LENGTH, PAGE_LIMIT } from \"constant\";\nimport graphQLApi from \"graphQLApi\";\nimport moment from \"moment\";\nimport { useState, useEffect } from \"react\";\nimport { Button, Card, Modal } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { updateProviderNoteAsync } from \"store/features/providers/providersSlice\";\nimport { updateLabClientNotes } from \"store/features/locations/locationsSlice\";\nimport MainTable from \"components/Table/MainTable\";\nimport { draggablePersonalizationLocalStorage } from \"utils\";\nimport { providerList } from \"store/features/providers/providersSelectors\";\nimport { PROVIDER_PERSONALIZE } from \"constants/personalization\";\nimport { TABLE_QUICK_TOOLS } from \"constant\";\n\nconst ClientProviderModal = (props) => {\n  const { data, handleClose, user, cssClass, setDefaultProvider } = props;\n\n  const [providers, setProviders] = useState(\"\");\n  const [personalize, setPersonalize] = useState([]);\n  const [defaultProviderID, setDefaultProviderID] = useState(\"\");\n  const [error, setError] = useState(\"\");\n  const [currentPage, setCurrentPage] = useState(1);\n  const [usersPerPage, setUsersPerPage] = useState(PAGE_LIMIT);\n  //   const [status, setStatus] = useState(data.status);\n  //   const [level, setLevel] = useState(emp ? \"patient\" : \"claim\");\n  const [loading, setLoading] = useState(false);\n  const dispatch = useDispatch();\n  const PROVIDER_OPTIONS = useSelector(providerList).filter((provider) => {\n    return provider.associatedClient === data.id;\n  });\n  const quickTools = [TABLE_QUICK_TOOLS.checkbox];\n\n  const indexOfLastUser = currentPage * usersPerPage;\n  const indexOfFirstUser = indexOfLastUser - usersPerPage;\n  const currentUsers = (users) => {\n    return users.slice(indexOfFirstUser, indexOfLastUser);\n  };\n\n  let usersToMap = currentUsers(PROVIDER_OPTIONS);\n\n  const onHandleSave = async (selectedOpt) => {\n    setDefaultProvider(selectedOpt);\n    handleClose();\n  };\n  useEffect(() => {\n    setPersonalize(draggablePersonalizationLocalStorage.get(user, \"provider\", PROVIDER_PERSONALIZE));\n  }, []);\n\n  const handleCellClick = (key, row, event) => {\n    if (key === TABLE_QUICK_TOOLS.checkbox && setDefaultProvider) {\n      if (event.target.checked) {\n        setDefaultProviderID(row);\n      } else {\n        setDefaultProviderID(\"\");\n      }\n    }\n  };\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"phoneNumber\") {\n      return (\n        <td key={`phone${item.id}`} style={{ textAlign: \"center\" }}>\n          {row?.phoneNumber || \"\"}\n        </td>\n      );\n    }\n    if (item.itemKey === \"orders\") {\n      return (\n        <td key={`order_${item.id}`} style={{ textAlign: \"center\" }}>\n          {row?.orders || \"0\"}\n        </td>\n      );\n    }\n  };\n\n\n  return (\n    <>\n      <Modal show backdrop=\"static\" onHide={handleClose} animation={true} size={\"3xl\"} scrollable className={cssClass}>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\">Assoicated Providers </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <div className=\"row textAreaMessageInput\">\n            <div className=\"col-12 mb-3\">\n              <MainTable\n                columns={personalize}\n                rows={usersToMap}\n                // flipSort={flipSort}\n                // sortBy={sortBy}\n                // sortDescending={sortDescending}\n                widthToSkip={160}\n                selectedRows={[defaultProviderID?.id]}\n                // selectedRows={checkboxes}\n                customColumnCellRenderer={customRenderTD}\n                tools={setDefaultProvider ? quickTools : []}\n                handleCellClick={handleCellClick}\n              />\n            </div>\n          </div>\n          {/* <PreviousNotes id={order || claim ? data.employeeID : data.id} user={user} /> */}\n          <div style={{ minHeight: \"3vh\" }}>\n            {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n          </div>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n\n          {setDefaultProvider && (\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"secondary\"\n              disabled={!defaultProviderID}\n              className=\"modalButtons headerButton btn-fill\"\n              onClick={() => onHandleSave(defaultProviderID)}\n            >\n              Set as a Primary\n            </Button>\n          )}\n\n          {loading && <Loader />}\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default ClientProviderModal;\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { ADD_SELECTED_PCS, REMOVE_SELECTED_PCS, SHOW_HIDE_CLIENT_PCS, RESET_CLIENT_PCS } from \"./clientPcsConstant\";\n\nexport const addSelectedPcs = createAsyncThunk(ADD_SELECTED_PCS, async (pcs) => {\n  return pcs;\n});\nexport const removeSelectedPcs = createAsyncThunk(REMOVE_SELECTED_PCS, async (pcs) => {\n  return pcs;\n});\nexport const showHideClientPcsModal = createAsyncThunk(SHOW_HIDE_CLIENT_PCS, async (showHideValue) => {\n  return showHideValue;\n});\n\nexport const resetClientPcsState = createAsyncThunk(RESET_CLIENT_PCS, async () => {});\n","export const CLIENT_PCS = \"client_pcs\";\nexport const ADD_SELECTED_PCS = \"add_selected_pcs\";\nexport const REMOVE_SELECTED_PCS = \"remove_selected_pcs\";\nexport const SHOW_HIDE_CLIENT_PCS = \"show_hide_client_pcs\";\nexport const RESET_CLIENT_PCS = \"client_pcs_reset\";\n","import { API, Auth } from \"aws-amplify\";\nimport { userCompanyID } from \"utils\";\nimport { DataStore } from \"@aws-amplify/datastore\";\n// const apiName = \"apif79b844d\";\n// const publicApiName = \"api4af2df69\";\n\nconst apiName = \"AdminQueries\";\nconst publicApiName = \"usersApi\";\n\nexport const AWS_API_METHODS = {\n  delete: \"del\",\n  get: \"get\",\n  post: \"post\",\n  put: \"put\",\n};\n\nexport const callAmplifyAPI = async (path, payload, method = AWS_API_METHODS.post) => {\n  try {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: { ...payload, clientID: userCompanyID.get() },\n    };\n\n    let apiRes = null;\n\n    apiRes = await API[method](apiName, path, params);\n\n    return apiRes;\n  } catch (err) {\n    throw Error(err);\n  }\n};\n\nexport const callDataStore = async (model, condition) => {\n  try {\n    const models = await DataStore.query(model);\n\n    return models;\n  } catch (err) {\n    throw Error(err);\n  }\n};\n","import { AWS_API_METHODS, callAmplifyAPI } from \"./defaultApi\";\n\nconst createSalePerson = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/saleperson\", params);\n  } catch (err) {\n    console.error(\"Error creating sale person:\", err);\n    return null;\n  }\n};\n\nconst updateSalePerson = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/saleperson\", params, AWS_API_METHODS.put);\n  } catch (err) {\n    console.error(\"Error creating sale person:\", err);\n    return null;\n  }\n};\n\nconst listSalePerson = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/saleperson/list\", params);\n  } catch (err) {\n    console.error(\"Error creating sale person:\", err);\n    return err;\n  }\n};\n\nconst deleteSalePerson = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/saleperson\", params, AWS_API_METHODS.delete);\n  } catch (err) {\n    console.error(\"Error creating sale person:\", err);\n    return err;\n  }\n};\n\nconst linkSalesPerson = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/saleperson/client\", params, AWS_API_METHODS.post);\n  } catch (error) {\n    console.error(\"Error linking sale person:\", error);\n    return null;\n  }\n};\n\nconst unlinkSalesPerson = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/saleperson/client\", params, AWS_API_METHODS.delete);\n  } catch (error) {\n    console.error(\"Error deleting sale person:\", error);\n    return null;\n  }\n};\n\nconst saleReportFilter = async (params) => {\n  try {\n    return await callAmplifyAPI(\"/reports/filter\", params, AWS_API_METHODS.post);\n  } catch (error) {\n    console.error(\"Error deleting sale person:\", error);\n    return null;\n  }\n};\n\nexport default {\n  createSalePerson,\n  updateSalePerson,\n  listSalePerson,\n  deleteSalePerson,\n  linkSalesPerson,\n  unlinkSalesPerson,\n  saleReportFilter\n};\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport saleApi from \"api/saleApi\";\nimport {\n  DELETE_SALE_PERSON,\n  FETCH_SALES_PERSONS,\n  SELECTED_CLIENT_ID,\n  SELECTED_SALE_PERSON,\n  SET_SHOW_SALES_PERSON_ASSIGN_MODAL,\n  SET_SHOW_SALES_PERSON_MODAL,\n  UNLINK_SALES_PERSON,\n  UPDATE_SALES_PERSON_IN_LIST,\n  SALE_REPORT_FILTERS,\n} from \"./salePersonConstant\";\nimport { MESSAGE_MODES } from \"constant\";\nimport { setMessage } from \"../general/generalAction\";\n\nexport const setSelectedSalePerson = createAsyncThunk(SELECTED_SALE_PERSON, async (selectedPerson) => {\n  return selectedPerson;\n});\n\nexport const setSelectedClientId = createAsyncThunk(SELECTED_CLIENT_ID, async (selectedClientId) => {\n  const salesPersonsRes = await saleApi.listSalePerson({ siteID: selectedClientId });\n  return { selectedClientId, salesPersonsList: salesPersonsRes.rows, totalSalesPerson: +salesPersonsRes.total || 0 };\n});\n\nexport const fetchSalePersons = createAsyncThunk(FETCH_SALES_PERSONS, async (obj) => {\n  const salesPersonsRes = await saleApi.listSalePerson(obj);\n  return { salesPersonsList: salesPersonsRes.rows, totalSalesPerson: +salesPersonsRes.total || 0 };\n});\n\nexport const fetchSaleFilter = createAsyncThunk(SALE_REPORT_FILTERS, async (obj) => {\n  const saleReportFilterRes = await saleApi.saleReportFilter(obj);\n  return { ...saleReportFilterRes };\n});\n\nexport const setShowSalesPersonModal = createAsyncThunk(SET_SHOW_SALES_PERSON_MODAL, async (showSalesPersonModal) => {\n  return showSalesPersonModal;\n});\n\nexport const updateSalesPersonInList = createAsyncThunk(UPDATE_SALES_PERSON_IN_LIST, async (updatedSalesPerson) => {\n  return updatedSalesPerson;\n});\n\nexport const deleteSalesPerson = createAsyncThunk(DELETE_SALE_PERSON, async (deletedSalesPerson) => {\n  await saleApi.deleteSalePerson({ id: deletedSalesPerson.id });\n  return deletedSalesPerson;\n});\n\nexport const setSalesPersonAssignDetails = createAsyncThunk(\n  SET_SHOW_SALES_PERSON_ASSIGN_MODAL,\n  async (salesPersonAssignDetails) => {\n    return salesPersonAssignDetails;\n  }\n);\n\nexport const unLinkSalesPerson = createAsyncThunk(UNLINK_SALES_PERSON, async (linkSalesPersonData, thunkApi) => {\n  const { dispatch } = thunkApi;\n  const { siteId, salePersonId } = linkSalesPersonData;\n  const res = await saleApi.unlinkSalesPerson({ siteID: siteId, salePersonID: salePersonId });\n  if (!res) dispatch(setMessage(\"Failed unlinking\", MESSAGE_MODES.error));\n  return { ...linkSalesPersonData, confirmed: !!res };\n});\n","export const SALES_PERSON = \"sale_person\";\nexport const SELECTED_SALE_PERSON = \"selected_sale_person\";\nexport const DELETE_SALE_PERSON = \"delete_sale_person\";\nexport const SELECTED_CLIENT_ID = \"selected_client_id\";\nexport const FETCH_SALES_PERSONS = \"fetch_sales_persons\";\nexport const SET_SHOW_SALES_PERSON_MODAL = \"set_show_sales_person_modal\";\nexport const UPDATE_SALES_PERSON_IN_LIST = \"update_sales_person_in_list\";\nexport const SET_SHOW_SALES_PERSON_ASSIGN_MODAL = \"set_show_sales_person_assign_modal\";\nexport const UNLINK_SALES_PERSON = \"unlink_sales_person\";\nexport const SALE_REPORT_FILTERS = \"sales_report_filter\";\n","export const salePersonDataSelector = (state) => state.salePerson;\nexport const selectedSalePersonSelector = (state) => state.salePerson.selectedSalePerson;\nexport const totalSalesPersonSelector = (state) => state.salePerson.totalSalesPerson;\nexport const salesPersonsListSelector = (state) => state.salePerson.salesPersonsList;\nexport const selectedClientIdSelector = (state) => state.salePerson.selectedClientId;\nexport const salesPersonAssigningSelector = (state) => state.salePerson.assigningDetails;\nexport const saleReportFilterSelector = (state)=> state.salePerson.saleReportFilter;\n","export const messageTemplateListSelector = (state) => state.messageTemplate.messageTemplates;\n\nexport const messageTemplateModalSelector = (state) => state.messageTemplate.showModal;\n\nexport const selectedMessageTemplateSelector = (state) => state.messageTemplate.selectedMessageTemplate;\n","import api from \"api\";\n\nexport const listTemplate = async () => {\n  try {\n    const result = await api.getMessagetTemplate();\n    return result.rows;\n  } catch (err) {\n    console.error(\"Error listing message Template:\", err);\n    return err;\n  }\n};\n\nexport const createMessageTemplateGQL = async (msgTemplate) => {\n  try {\n    const result = await api.createMessagesTemplate(msgTemplate);\n    return result;\n  } catch (error) {\n    console.error(\"Error creating message Template:\", error);\n    return error;\n  }\n};\n\nexport const updateMessageTemplateGQL = async (updatedMessageTemplateData) => {\n  try {\n    const result = await api.updateMessagesTemplate(updatedMessageTemplateData);\n    return result;\n  } catch (error) {\n    console.error(\"Error updating message Template:\", error);\n    throw error; // Rethrow the error for handling it in the calling code\n  }\n};\n\nexport const deleteMessageTemplateGQL = async (messageTemplate) => {\n  try {\n    const result = await api.deleteMessagesTemplate({ id: messageTemplate.id });\n    return result;\n  } catch (error) {\n    console.error(\"Error deleting message Template:\", error);\n    throw error; // Rethrow the error for handling it in the calling code\n  }\n};\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport {\n  listTemplate,\n  createMessageTemplateGQL,\n  updateMessageTemplateGQL,\n  deleteMessageTemplateGQL,\n} from \"../../../api/messageTemplateApi\";\nimport {\n  CREATE_MESSAGE_TEMPLATE,\n  DELETE_MESSAGE_TEMPLATE,\n  GET_MESSAGE_TEMPLATE_LIST,\n  UPDATE_MESSAGE_TEMPLATE,\n} from \"./messageTemplateConstant\";\n\nexport const fetchMessageTemplateLists = createAsyncThunk(GET_MESSAGE_TEMPLATE_LIST, async () => {\n  const res = await listTemplate();\n  return res;\n});\n\nexport const createNewMessageTemplate = createAsyncThunk(CREATE_MESSAGE_TEMPLATE, async (newMessageTemplate) => {\n  const res = await createMessageTemplateGQL(newMessageTemplate);\n  return res;\n});\n\nexport const updateMessageTemplate = createAsyncThunk(UPDATE_MESSAGE_TEMPLATE, async (updatedMessageTemplateData) => {\n  const res = await updateMessageTemplateGQL(updatedMessageTemplateData);\n  return { updatedTemplate: res, prevTemplateId: updatedMessageTemplateData.id };\n});\n\nexport const deleteMessageTemplate = createAsyncThunk(DELETE_MESSAGE_TEMPLATE, async (template) => {\n  await deleteMessageTemplateGQL(template);\n  return template.id;\n});\n","export const MESSAGE_TEMPLATE = \"MESSAGE_TEMPLATE\";\n\nexport const GET_MESSAGE_TEMPLATE_LIST = \"GET_MESSAGE_TEMPLATE_LIST\";\n\nexport const CREATE_MESSAGE_TEMPLATE = \"CREATE_MESSAGE_TEMPLATE\";\n\nexport const UPDATE_MESSAGE_TEMPLATE = \"UPDATE_MESSAGE_TEMPLATE\";\n\nexport const DELETE_MESSAGE_TEMPLATE = \"DELETE_MESSAGE_TEMPLATE\";\n","import React, { useState, useEffect } from \"react\";\nimport Select from \"react-select\";\nimport { toTitleCase } from \"utils\";\n\nconst TestTypeSelector = ({\n  label = \"Select\",\n  value,\n  onChange,\n  placeholder = \"Select an option...\",\n\n  tabIndex = 0,\n  className = \"\",\n  required = false,\n  testTypeList = [],\n  testPanelList = [],\n  selectedPanel = null,\n}) => {\n  const [optionsList, setOptionsList] = useState([]);\n\n  const fetchDetails = async () => {\n    const filteredMainTests = testTypeList.map((item) => ({\n      type: item?.type || \"\",\n      label: toTitleCase(item.name),\n      value: item.id,\n      category: item.category,\n      clientID: item.clientID,\n      code: item.code,\n      custom_notes: item.custom_notes,\n      typeOfTest: item.typeOfTest,\n      _version: item._version,\n      name: item.name,\n      id: item.id,\n      unit: item.units,\n      refInterval: item?.refInterval || \"\",\n      targetRanges: item.targetRanges,\n      sources: item.sources,\n    }));\n\n    const optionsPanelsTest = testPanelList\n      .filter((item) => !selectedPanel || item.id !== selectedPanel.id)\n      .map((item) => ({\n        ...item,\n        label: item.name,\n        value: item.id,\n      }));\n\n    const options = [...optionsPanelsTest, ...filteredMainTests];\n\n    setOptionsList(options);\n  };\n\n  useEffect(() => {\n    fetchDetails();\n  }, []);\n\n  return (\n    <div className=\"row mt-2\">\n      <div className=\"col-sm-6\">\n        <p className=\"testDetailsSelector\">\n          {label}\n          {required && <span style={{ color: \"red\" }}>*</span>}\n        </p>\n        <div className=\"d-flex align-items-center\">\n          <Select\n            className={`w-100 ${className}`}\n            options={optionsList}\n            blurInputOnSelect={true}\n            menuPlacement={\"auto\"}\n            value={value}\n            placeholder={placeholder}\n            onChange={onChange}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default TestTypeSelector;\n","import MainTable from \"components/Table/MainTable\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showLocationTestModalSelectors } from \"store/features/locations/locationsSelectors\";\nimport { setLocationTestModal } from \"store/features/locations/locationsSlice\";\nimport TestTypeSelector from \"views/TestTypeSetting/TestPanels/TestTypeSelector\";\nimport { CREATE_TEST_PANEL_PERSONALIZE } from \"constants/personalization\";\nimport { TABLE_QUICK_TOOLS } from \"constant\";\nimport api from \"api\";\nimport { useEffect, useState } from \"react\";\nimport { formattedString } from \"utils\";\nimport { TYPE_TO_SHOW } from \"constant\";\nimport { updateLabClient } from \"store/features/locations/locationsSlice\";\n\nconst LCTestModal = (props) => {\n  const { handleTest, rowData } = props;\n  const dispatch = useDispatch();\n  const [panelsList, setPanelsList] = useState([]);\n  const [testTypesList, setTestTypesList] = useState([]);\n  const [testPanelList, setTestPanelList] = useState([]);\n\n  const [rowTestsData, setRowTestsData] = useState([]);\n\n  const handleClose = () => {\n    dispatch(setLocationTestModal(false));\n  };\n\n  const getList = async () => {\n    const apiData = await api.getTestTypes();\n    setTestTypesList(apiData);\n  };\n\n  useEffect(() => {\n    getList();\n  }, []);\n\n  const showLocationTestModal = useSelector(showLocationTestModalSelectors);\n\n  const customRenderTD = (item, row) => {\n    if (item.itemKey === \"type\") {\n      return <td key={`type_${item.id}`}>{TYPE_TO_SHOW[row.type]}</td>;\n    }\n    if (item.itemKey === \"name\") {\n      return <td key={`name_${item.id}`}>{formattedString(row?.name) || \"\"}</td>;\n    }\n  };\n\n  const handleDelete = (row) => {\n    setPanelsList((prevPanelsList) => prevPanelsList.filter((panel) => panel.id !== row.id));\n  };\n\n  const handleTestSelect = (test) => {\n    setPanelsList((previousItems) => {\n      const updatedList = new Map(previousItems.map((item) => [item.id, item]));\n      updatedList.set(test.id, test);\n      return Array.from(updatedList.values());\n    });\n  };\n\n  // Function to compare the name fields of two arrays using a loop\n  const compareFn = (oldList = [], newList = []) => {\n    if (oldList.length !== newList.length) return true; // Length mismatch means lists have changed\n\n    // Sort both lists by name for proper comparison\n    const sortedOldList = oldList?.sort((a, b) => a.name.localeCompare(b.name));\n    const sortedNewList = newList?.sort((a, b) => a.name.localeCompare(b.name));\n\n    // Compare each name field in both arrays\n    for (let i = 0; i < sortedOldList.length; i++) {\n      if (sortedOldList[i].name !== sortedNewList[i].name) {\n        return true; // Return true if any name differs\n      }\n    }\n\n    return false; // Return false if no differences are found\n  };\n\n  const handleConfirm = () => {\n    if (!rowData.isNew) {\n      if (compareFn(rowTestsData, panelsList)) {\n        dispatch(\n          updateLabClient({\n            ...rowData,\n            setting: { ...(rowData.setting || {}), tests: panelsList?.map((item) => item.id) },\n          })\n        );\n      }\n    }\n    handleTest(panelsList?.map((item) => item.id));\n    handleClose();\n  };\n\n  useEffect(() => {\n    const testIds = rowData?.setting?.tests;\n    const allOptions = [...(testPanelList || []), ...(testTypesList || [])];\n    // Filter allOptions to only include items that have an id present in the ids array\n    const filteredOptions = allOptions?.filter(({ id }) => testIds?.includes(id));\n    if (filteredOptions?.length > 0) {\n      setRowTestsData(filteredOptions);\n      setPanelsList(filteredOptions);\n    }\n  }, [rowData.setting, testPanelList, testTypesList, showLocationTestModal]);\n\n  return (\n    <>\n      <Modal\n        show={showLocationTestModal}\n        backdrop=\"static\"\n        animation={true}\n        onHide={() => handleClose()}\n        centered\n        size={\"lg\"}\n        className=\"second-modal\"\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Offered Panel\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0 }}>\n          <div style={{ marginTop: \"5px\", paddingLeft: \"20px\", paddingRight: \"20px\", width: \"100%\" }}>\n            <TestTypeSelector\n              label=\"Select Panel\"\n              onChange={handleTestSelect}\n              testTypeList={testTypesList}\n              testPanelList={testPanelList}\n              value={\"\"}\n            />\n          </div>\n          <div style={{ padding: \"20px\" }}>\n            <div\n              style={{\n                maxHeight: \"300px\",\n                background: \"#f2f0f0\",\n                paddingLeft: \"4px\",\n                paddingRight: \"4px\",\n                marginTop: \"10px\",\n                overflowY: \"scroll\",\n              }}\n            >\n              <MainTable\n                columns={CREATE_TEST_PANEL_PERSONALIZE}\n                rows={panelsList}\n                customColumnCellRenderer={customRenderTD}\n                widthToSkip={155}\n                tools={[TABLE_QUICK_TOOLS.delete]}\n                handleCellClick={(key, row) => {\n                  if (key === TABLE_QUICK_TOOLS.delete) {\n                    handleDelete(row);\n                  }\n                }}\n              />\n            </div>\n          </div>\n        </Modal.Body>\n        <Modal.Footer className=\"d-flex justify-content-between\">\n          <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n            Cancel\n          </Button>\n          <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={() => handleConfirm()}>\n            Confirm\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default LCTestModal;\n","import MainTable from \"components/Table/MainTable\";\nimport React, { useState, useEffect, useContext } from \"react\";\nimport { Card, Row, Col, Modal, Button } from \"react-bootstrap\";\nimport { TAB_SETTINGS_COLUMN } from \"constants/personalization\";\nimport InputField from \"components/InputField/InputField\";\nimport { PRINTER_SETTINGS_OPTIONS, PRINTER_LABEL_SIZE_OPTIONS, CONFIG } from \"constant\";\nimport Icon from \"components/Icon\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport api from \"api\";\nimport { customCloneDeep } from \"util/customLodash\";\nimport { useDispatch } from \"react-redux\";\nimport { updateLabClient } from \"store/features/locations/locationsSlice\";\nimport { AppContext } from \"context/app-context\";\n\nconst numberOfPrintOptions = Array.from({ length: 10 }, (_, i) => ({\n  value: i + 1,\n  label: `${i + 1}`,\n}));\nconst TabSettings = ({ strippedTable, widthClass, title, callFor, labClient, setLabClient }) => {\n  const [selectedPrinter, setSelectedPrinter] = useState(null);\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [selectedSize, setSelectedSize] = useState(null);\n\n  const appContext = useContext(AppContext);\n\n  const [clientData, setClientData] = useState(null);\n  const [printQuantity, setPrintQuantity] = useState({ label: \"1\", value: 1 });\n  const dispatch = useDispatch();\n\n  const handlePrinterChange = (selectedOption) => {\n    setSelectedPrinter(selectedOption);\n    setSelectedSize(null);\n  };\n\n  const handleSizeChange = (selectedOption) => {\n    setSelectedSize(selectedOption);\n  };\n  const handleQuantityChange = async (selectedOption) => {\n    setPrintQuantity(selectedOption);\n\n    const cloneClient = customCloneDeep(clientData);\n\n    cloneClient.setting = cloneClient.setting || {};\n    cloneClient.setting.labelPrintingQty = selectedOption.value;\n\n    if (callFor === \"client\") {\n      await api.updateClient(cloneClient);\n    }\n    if (callFor === \"labClient\") {\n      setLabClient(cloneClient);\n      await dispatch(updateLabClient({ ...cloneClient, siteType: \"client\" }));\n    }\n    appContext.reCallClient();\n  };\n  useEffect(() => {\n    const fetchClientData = async () => {\n      if (CONFIG.clientID && callFor === \"client\") {\n        const clientRes = await api.getClientById(CONFIG.clientID);\n        setClientData(clientRes);\n        const labelPrintQty = clientRes?.setting?.labelPrintingQty || 1;\n        if (labelPrintQty) {\n          setPrintQuantity({ label: labelPrintQty?.toString(), value: labelPrintQty });\n        }\n      }\n      if (callFor === \"labClient\") {\n        setClientData(labClient);\n      }\n    };\n    fetchClientData();\n  }, [CONFIG?.clientID]);\n\n  const handleCellClick = () => {};\n\n  const handleAddRow = async () => {\n    if (selectedPrinter && selectedSize) {\n      const newRow = {\n        id: uuidv4(),\n        printer_name: selectedPrinter.label,\n        printer_size: selectedSize.label,\n        labelSize: selectedSize.value,\n        labelPrintingQty: printQuantity.value,\n      };\n\n      const cloneClient = customCloneDeep(clientData);\n\n      cloneClient.setting = cloneClient.setting || {};\n      // cloneClient.setting.labelPrintingQty = printQuantity.value;\n      cloneClient.setting.printerSetting = cloneClient.setting.printerSetting || [];\n\n      const existingIndex = cloneClient.setting.printerSetting.findIndex(\n        (row) => row.printer_name === newRow.printer_name\n      );\n\n      if (existingIndex !== -1) {\n        cloneClient.setting.printerSetting[existingIndex] = newRow;\n      } else {\n        cloneClient.setting.printerSetting.push(newRow);\n      }\n\n      setClientData(cloneClient);\n\n      if (callFor === \"client\") {\n        await api.updateClient(cloneClient);\n      }\n      if (callFor === \"labClient\") {\n        setLabClient(cloneClient);\n        await dispatch(updateLabClient({ ...cloneClient, siteType: \"client\" }));\n      }\n    }\n    appContext.reCallClient();\n    setSelectedSize(null);\n    setIsModalOpen(false);\n  };\n\n  const handleTestRemove = (item) => {\n    const cloneClient = customCloneDeep(clientData);\n\n    cloneClient.setting = cloneClient.setting || {};\n    cloneClient.setting.printerSetting = cloneClient.setting.printerSetting || [];\n\n    cloneClient.setting.printerSetting = cloneClient.setting.printerSetting.filter((row) => row.id !== item.id);\n\n    setClientData(cloneClient);\n    api.updateClient(cloneClient);\n  };\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"action\") {\n      return (\n        <td key={`bin_${item.id}`} style={{ textAlign: \"right\" }}>\n          <Icon\n            iconType={\"binIcon\"}\n            containerClass={\"ms-2 cursor-pointer\"}\n            innerClass={\"\"}\n            imageClass={\"testTabelDeleteIcon\"}\n            handleClick={() => handleTestRemove(row)}\n          />\n        </td>\n      );\n    }\n    return <td key={item.id}>{row?.title || row?.label}</td>;\n  };\n\n  return (\n    <Row>\n      <Col md=\"12\">\n        <Card>\n          {title && (\n            <Card.Header>\n              <Card.Title\n                as=\"h4\"\n                style={{\n                  marginBottom: 10,\n                  fontWeight: \"bold\",\n                }}\n              >\n                {title}\n              </Card.Title>\n            </Card.Header>\n          )}\n          <Card.Body className=\"table-full-width desktop-noScroll\">\n            <div className=\"d-flex justify-content-start flex-wrap align-items-center tabSettings-wrapper gap-3 mb-4\">\n              <div\n                style={{ borderBottom: \"1px solid #f2f2f2\", paddingBottom: \"15px\" }}\n                className=\"d-flex justify-content-between align-items-center w-100\"\n              >\n                <h5\n                  style={{\n                    fontWeight: \"bold\",\n                    fontSize: \"18px\",\n                  }}\n                >\n                  Quantity Of Labels Printed For Barcode\n                </h5>\n                <div className={widthClass}>\n                  <InputField\n                    type=\"dropDown\"\n                    groupWrapper=\"w-100\"\n                    index=\"value\"\n                    options={numberOfPrintOptions}\n                    value={numberOfPrintOptions.find((option) => option.value === printQuantity.value)}\n                    placeholder=\"Number of Print Barcode:\"\n                    handleChange={handleQuantityChange}\n                  />\n                </div>\n              </div>\n\n              <div className=\"w-100 d-flex justify-content-between align-items-center\">\n                <h5\n                  style={{\n                    width: \"40%\",\n                    fontWeight: \"bold\",\n                    fontSize: \"18px\",\n                  }}\n                >\n                  Manage Printers\n                </h5>\n                <div style={{ position: \"relative\", left: \"50px\" }}>\n                  <Icon\n                    iconType={\"createIcon\"}\n                    // containerClass={\"mt-3\"}\n                    innerClass={\"cursor-pointer\"}\n                    imageClass={(selectedPrinter || selectedSize) && \"cursor-pointer\"}\n                    handleClick={() => setIsModalOpen(true)}\n                    // disabled={!selectedPrinter || !selectedSize}\n                  />\n                </div>\n              </div>\n            </div>\n            {isModalOpen && (\n              <Modal\n                close\n                show\n                animation={true}\n                onHide={() => setIsModalOpen(false)}\n                style={{ paddingLeft: \"0\" }}\n                centered\n                className=\"seperateModal\"\n                backdrop=\"static\"\n              >\n                <Modal.Header closeButton>\n                  <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n                    Manage Printers\n                  </Modal.Title>\n                </Modal.Header>\n                <Modal.Body style={{ paddingTop: 0 }}>\n                  <div className=\"row mb-3\">\n                    <div className=\"col-lg-12 col-12 mb-3\">\n                      <InputField\n                        type=\"dropDown\"\n                        groupWrapper=\"w-100\"\n                        options={PRINTER_SETTINGS_OPTIONS}\n                        labelStyle=\"modalLineHeaders mt-0\"\n                        label=\"Printer Name:\"\n                        index=\"value\"\n                        isClearable={true}\n                        value={selectedPrinter}\n                        placeholder=\"Printer Name:\"\n                        handleChange={handlePrinterChange}\n                      />\n                    </div>\n                    <div className=\"col-lg-12 col-12 mb-3\">\n                      <InputField\n                        type=\"dropDown\"\n                        groupWrapper=\"w-100\"\n                        options={PRINTER_LABEL_SIZE_OPTIONS[selectedPrinter?.value] || null}\n                        labelStyle=\"modalLineHeaders mt-0\"\n                        label=\"Label Size:\"\n                        index=\"value\"\n                        isClearable={true}\n                        value={selectedSize}\n                        placeholder=\"Label Size:\"\n                        handleChange={handleSizeChange}\n                        disabled={!selectedPrinter}\n                      />\n                    </div>\n                  </div>\n                </Modal.Body>\n                <Modal.Footer>\n                  <Button variant=\"secondary\" className=\"headerButton\" onClick={() => setIsModalOpen(false)}>\n                    Cancel\n                  </Button>\n                  <Button variant=\"primary\" className=\"modalButtons\" onClick={() => handleAddRow()}>\n                    Save\n                  </Button>\n                </Modal.Footer>\n              </Modal>\n            )}\n            {clientData?.setting?.printerSetting?.length > 0 && (\n              <MainTable\n                columns={TAB_SETTINGS_COLUMN}\n                rows={clientData?.setting?.printerSetting || []}\n                widthToSkip={160}\n                handleCellClick={handleCellClick}\n                customColumnCellRenderer={customRenderTD}\n                strippedTable={strippedTable}\n              />\n            )}\n          </Card.Body>\n        </Card>\n      </Col>\n    </Row>\n  );\n};\nexport default TabSettings;\n","import TabSettings from \"components/TabSettings/TabSettings\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showPrinterSettingsModalSelectors } from \"store/features/locations/locationsSelectors\";\nimport { setPrinterSettingsModal } from \"store/features/locations/locationsSlice\";\n\nconst PrinterSettingsModal = ({ labClient, setLabClient }) => {\n  //   const { handleTest, rowData } = props;\n  const dispatch = useDispatch();\n\n  const showPrinterSettings = useSelector(showPrinterSettingsModalSelectors);\n\n  const handleClose = () => {\n    dispatch(setPrinterSettingsModal(false));\n  };\n\n  return (\n    <>\n      <Modal\n        show={showPrinterSettings}\n        backdrop=\"static\"\n        animation={true}\n        onHide={() => handleClose()}\n        centered\n        size={\"lg\"}\n        className=\"second-modal\"\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Printer Settings\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0 }}>\n          <TabSettings\n            strippedTable={true}\n            widthClass=\"w-40\"\n            callFor=\"labClient\"\n            labClient={labClient}\n            setLabClient={setLabClient}\n          />\n        </Modal.Body>\n        <Modal.Footer className=\"d-flex justify-content-between\">\n          <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n            Cancel\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default PrinterSettingsModal;\n","import React, { useState, useEffect, useContext, useMemo, memo } from 'react';\nimport { Button, Modal, Card, Row, Col } from 'react-bootstrap';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n  showBarcodeSettingsModalSelectors,\n  locationsSelectors,\n} from 'store/features/locations/locationsSelectors';\nimport { setBarcodeSettingsModal, updateLabClient } from 'store/features/locations/locationsSlice';\nimport Icon from 'components/Icon';\nimport InputField from 'components/InputField/InputField';\nimport { customCloneDeep } from 'util/customLodash';\nimport { isBarcodeRangeAssigned, viewBarcodeRange } from 'utils';\nimport { AppContext } from 'context/app-context';\nimport MainTable from 'components/Table/MainTable';\nimport { BARCODE_SETTINGS_COLUMN } from 'constants/personalization';\nimport Loader from 'components/Loader/Loader';\n\nconst BarcodeSettingModal = ({ labClient, setLabClient }) => {\n  const dispatch = useDispatch();\n\n  const labLocations = useSelector(locationsSelectors);\n\n  const [loading, setLoading] = useState(false);\n\n  const showBarcodeSettings = useSelector(showBarcodeSettingsModalSelectors);\n\n  const appContext = useContext(AppContext);\n\n  const [barcodeRange, setBarcodeRange] = useState(null);\n\n  useEffect(() => {\n    if (labClient?.setting?.barcodeRange) {\n      setBarcodeRange(labClient.setting.barcodeRange);\n    } else {\n      setBarcodeRange(null);\n    }\n  }, [labClient]);\n\n  const clientRanges = useMemo(() => {\n    return labLocations\n      .filter((location) => location.id !== labClient.id && location?.setting?.barcodeRange)\n      .map((location) => ({\n        name: location.name || '',\n        id: location.id,\n        barcodeRange: location?.setting?.barcodeRange || '',\n        barcodeRangeToShow: viewBarcodeRange(location?.setting?.barcodeRange),\n      }));\n  }, [labLocations, labClient?.id]);\n\n  const handleClose = () => {\n    dispatch(setBarcodeSettingsModal(false));\n  };\n\n  const handleRangeChange = ({ fieldName, value }) => {\n    if (value.length === 5) return;\n    const numericValue = Number(value);\n    if (numericValue >= 0) {\n      setBarcodeRange((prevRange) => ({ ...prevRange, [fieldName]: numericValue }));\n    }\n  };\n\n  const handleAddBarcodeRange = async () => {\n    setLoading(true);\n\n    if (!barcodeRange?.startRange || !barcodeRange?.endRange) {\n      appContext.showErrorMessage('Please fill both start and end ranges.');\n      return;\n    }\n\n    const { startRange, endRange } = barcodeRange;\n    if (startRange >= endRange) {\n      appContext.showErrorMessage('Start range must be less than end range.');\n      return;\n    }\n\n    const isAlreadyAssigned = isBarcodeRangeAssigned({\n      newRange: barcodeRange,\n      clients: clientRanges,\n    });\n\n    if (isAlreadyAssigned.error) {\n      appContext.showErrorMessage(isAlreadyAssigned.message);\n      return;\n    }\n\n    const updatedClient = customCloneDeep(labClient);\n    updatedClient.setting = updatedClient.setting || {};\n    updatedClient.setting.barcodeRange = barcodeRange;\n\n    await dispatch(updateLabClient(updatedClient));\n    setLabClient(updatedClient);\n    setLoading(false);\n\n    appContext.showSuccessMessage('Accession# updated successfully.');\n    handleClose()\n  };\n\n  const handleBarcodeRemove = async (row) => {\n    const labClient = labLocations.find((item) => item.id === row.id);\n\n    if (labClient) {\n      setLoading(true);\n      const updatedLabClient = {\n        ...labClient,\n        setting: {\n          ...labClient.setting,\n          barcodeRange: null,\n        },\n      };\n      await dispatch(updateLabClient(updatedLabClient));\n      setLoading(false);\n    }\n  };\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === 'action') {\n      return (\n        <td key={`bin_${item.id}`} style={{ textAlign: 'right' }}>\n          <Icon\n            iconType={'binIcon'}\n            containerClass={'ms-2 cursor-pointer'}\n            innerClass={''}\n            imageClass={'testTabelDeleteIcon'}\n            handleClick={() => handleBarcodeRemove(row)}\n          />\n        </td>\n      );\n    }\n    return <td key={item.id}>{row?.title || row?.label}</td>;\n  };\n\n  return (\n    <Modal\n      show={showBarcodeSettings}\n      backdrop=\"static\"\n      animation={true}\n      onHide={handleClose}\n      centered\n      size=\"lg\"\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Accession# Range\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        {loading && <Loader />}\n        <Row>\n          <Col md=\"12\">\n            <Card>\n              <Card.Body className=\"table-full-width desktop-noScroll\">\n                <div className=\"d-flex justify-content-start align-items-center tabSettings-wrapper gap-3\">\n                  <div className=\"w-100\">\n                    <InputField\n                      type=\"number\"\n                      min={0}\n                      inputStyle=\"modalInput\"\n                      groupWrapper=\"w-100\"\n                      label=\"Start Range\"\n                      labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                      placeholder=\"Enter Start Range\"\n                      handleChange={(e) =>\n                        handleRangeChange({ fieldName: 'startRange', value: e.target.value })\n                      }\n                      value={barcodeRange?.startRange || ''}\n                    />\n                  </div>\n                  <div className=\"w-100\">\n                    <InputField\n                      type=\"number\"\n                      min={0}\n                      groupWrapper=\"w-100\"\n                      inputStyle=\"modalInput\"\n                      labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                      label=\"End Range\"\n                      placeholder=\"Enter End Range\"\n                      handleChange={(e) =>\n                        handleRangeChange({ fieldName: 'endRange', value: e.target.value })\n                      }\n                      value={barcodeRange?.endRange || ''}\n                    />\n                  </div>\n\n                  <Icon\n                    iconType=\"saveIcon\"\n                    containerClass=\"mt-4\"\n                    innerClass=\"\"\n                    imageClass=\"cursor-pointer\"\n                    handleClick={handleAddBarcodeRange}\n                  />\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n        {!!clientRanges.length && (\n          <Row style={{ height: '20vh', overflowY: 'auto' }}>\n            <Col md=\"12\">\n              <Card>\n                <Card.Body>\n                  <MainTable\n                    columns={BARCODE_SETTINGS_COLUMN}\n                    rows={clientRanges || []}\n                    widthToSkip={160}\n                    cssClass=\"table-noresponsive\"\n                    trDataWrapperHeader={'trDataWrapperHeader'}\n                    strippedTable={true}\n                    customColumnCellRenderer={customRenderTD}\n                  />\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        )}\n      </Modal.Body>\n\n      <Modal.Footer className=\"d-flex justify-content-between\">\n        <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={handleClose}>\n          Cancel\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default memo(BarcodeSettingModal);\n","import ErrorMessage from \"components/Message/ErrorMessage\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { convertToLower, getValidReg } from \"utils\";\n\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport Select from \"react-select\";\nimport DefaultClientSettingModal from \"./DefaultClientSettingModal\";\nimport { countryListAllIsoData, MESSAGE_MODES } from \"constant\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\n\nimport { BILLING_TYPES_OPT, CONFIG } from \"constant\";\n\nimport api from \"api\";\nimport ClientProviderModal from \"components/Modal/ClientProviderModal\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { providerList } from \"../../store/features/providers/providersSelectors\";\n\nimport { getCptData } from \"api\";\nimport InputField from \"components/InputField/InputField\";\nimport { showHideClientPcsModal } from \"store/features/clientPcs/clientPcsAction\";\nimport { updateLabClient } from \"store/features/locations/locationsSlice\";\nimport { setSelectedClientId, setShowSalesPersonModal } from \"store/features/salePerson/salePersonAction\";\nimport { totalSalesPersonSelector } from \"store/features/salePerson/salePersonSelector\";\nimport { messageTemplateListSelector } from \"store/features/messageTemplate/messageTemplateSelectors\";\nimport { fetchMessageTemplateLists } from \"store/features/messageTemplate/messageTemplateAction\";\nimport { selectedCompanySetting } from \"store/features/companySetting/companySettingSelectors\";\nimport {\n  setLocationTestModal,\n  setPrinterSettingsModal,\n  setBarcodeSettingsModal,\n} from \"store/features/locations/locationsSlice\";\nimport LCTestModal from \"./LCTestModal\";\nimport PrinterSettingsModal from \"./PrinterSettingsModal\";\nimport BarcodeSettingModal from \"./BarcodeSettingModal\";\n\nconst LabClientModal = (props) => {\n  const { handleClose, selectItem, handleSave } = props;\n\n  const loginUser = useSelector(selectLoginUser);\n  const [error, setError] = useState(\"\");\n  const getObject = () => {\n    const country = countryListAllIsoData.find((f) => f.name === selectItem.country) || {\n      code: \"US\",\n    };\n\n    return { ...selectItem, isoCode: country.code };\n  };\n\n  const [newLocation, setNewLocation] = useState(getObject());\n\n  const [provider, setProvider] = useState(null);\n  const [messageTemp, setMessageTemp] = useState(null);\n  const [openAssociateProviderModal, setOpenAssociateProviderModal] = useState(null);\n  const [openDefaultSetting, setOpenDefaultSetting] = useState(null);\n  const dispatch = useDispatch();\n  const providers = useSelector(providerList);\n  const totalSalesPerson = useSelector(totalSalesPersonSelector);\n\n  useEffect(() => getMessageTemplateList(), []);\n\n  const getMessageTemplateList = () => {\n    dispatch(fetchMessageTemplateLists());\n  };\n\n  const messageTemplatesList = useSelector(messageTemplateListSelector);\n\n  useEffect(() => {\n    if (!!selectItem) dispatch(setSelectedClientId(selectItem.id));\n  }, [selectItem]);\n\n  const { otherNPI, cliaNumber } = useSelector(selectedCompanySetting);\n\n  const handleSaveChange = () => {\n    if (!newLocation.name || !newLocation.name.trim()) {\n      setError(\"Client name required\");\n      return;\n    }\n\n    // if (!newLocation.contact_name) {\n    //   setError(\"Main Contact Name is required\");\n    //   return;\n    // }\n\n    // if (!newLocation.contact_email) {\n    //   setError(\"Email is required\");\n    //   return;\n    // }\n    // if (!isValidEmail(newLocation.contact_email)) {\n    //   setError(\"Invalid Email\");\n    //   return;\n    // }\n\n    // if (!newLocation.contactName) {\n    //   setError(\"Main Contact is required\");\n    //   return;\n    // }\n    // if (!isValidPhoneWithCode(newLocation.contactName)) {\n    //   setError(\"Invalid Phone Number\");\n    //   return;\n    // }\n\n    // if (!newLocation.phone_number) {\n    //   setError(\"Main Contact Number is required\");\n    //   return;\n    // }\n\n    // if (!isValidPhoneWithCode(newLocation.phone_number)) {\n    //   setError(\"Invalid Main Contact Number\");\n    //   return;\n    // }\n\n    const primaryPhysician = PROVIDER_OPTIONS.find((f) => f.value === newLocation?.defaultProvider)?.label || \"\";\n\n    handleSave({ ...newLocation, primaryPhysician });\n  };\n\n  const PROVIDER_OPTIONS = useMemo(() => {\n    if (providers && providers.length > 0) {\n      return providers.map((f) => ({\n        label: `${f.npi}-${f.name}`,\n        value: f.id,\n      }));\n    } else {\n      return [];\n    }\n  }, [providers]);\n\n  const MESSAGE_TEMPLATE_OPTIONS = useMemo(() => {\n    if (messageTemplatesList && messageTemplatesList?.length > 0) {\n      return messageTemplatesList.map((f) => {\n        if (f.name) {\n          return { label: f.name, value: f.id };\n        }\n        return { label: \"Unnamed Template\", value: f.id };\n      });\n    } else {\n      return [];\n    }\n  }, [messageTemplatesList]);\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setNewLocation({ ...newLocation, street: val });\n    } else {\n      const address = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zipcode: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setNewLocation({ ...newLocation, ...address });\n    }\n  };\n\n  const handleCreateClientSetting = async () => {\n    const provider = providers.find((f) => f.id === newLocation.defaultProvider);\n    const param = {\n      companyID: newLocation.id,\n      subAgentID: CONFIG.generalSubAgent,\n      defaultProvider: {\n        prov_id: provider.id,\n        prov_name: provider.name,\n        prov_npi: provider.npi,\n        prov_name_f: provider.firstName,\n        prov_name_l: provider.lastName,\n        prov_name_m: provider.middleName,\n        ref_id: provider.id,\n        ref_npi: provider.npi,\n        ref_name: provider.name,\n        ref_name_f: provider.firstName,\n        ref_name_l: provider.lastName,\n        ref_name_m: provider.middleName,\n        ord_prov_id: provider.id,\n        ord_prov_npi: provider.npi,\n        ord_prov_name: provider.name,\n        ord_prov_name_f: provider.firstName,\n        ord_prov_name_l: provider.lastName,\n        ord_prov_name_m: provider.middleName,\n      },\n    };\n    await api.newClientSetting(param);\n  };\n\n  const handleOpenDefaultSetting = () => {\n    setOpenDefaultSetting(newLocation);\n  };\n  const handlePhoneNo = (e) => {\n    setNewLocation({\n      ...newLocation,\n      contactName: e,\n    });\n  };\n\n  const handleChangeDefaultProvider = async (obj) => {\n    const updatedObject = {\n      ...newLocation,\n      defaultProvider: obj.id,\n      primaryPhysician: obj.name,\n    };\n    setNewLocation(updatedObject);\n    await dispatch(updateLabClient(updatedObject));\n  };\n\n  const handleShowClientPcs = async () => {\n    const cptCodes = selectItem?.excludedCPT?.excluded?.map((item) => item.code).join(\",\");\n\n    const cptData = await getCptData({ codes: cptCodes });\n\n    dispatch(\n      showHideClientPcsModal({\n        show: true,\n        clientId: selectItem.id,\n        pcsData: cptData?.rows ?? [],\n      })\n    );\n  };\n\n  const isLocalhost = window.location.href.includes(\"localhost\");\n\n  const handleTests = (panelsList) => {\n    setNewLocation({\n      ...newLocation,\n      setting: { ...(newLocation.setting || {}), tests: panelsList },\n    });\n  };\n\n  return (\n    <Modal show backdrop=\"static\" animation={true} onHide={() => handleClose()} centered size={\"xl\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {newLocation.isNew ? \" Create New Lab Client Data\" : \"Edit Lab Client Data\"}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"createClientsWrapper\">\n          <div className=\"ModalLeftSide\">\n            <strong>Client Contact information:</strong>\n            <div className=\"row mb-3\">\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Practice Name</label>\n                <input\n                  value={newLocation?.name}\n                  className=\"modalInput\"\n                  placeholder=\"Client Name\"\n                  style={{\n                    width: \"100%\",\n                  }}\n                  onChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      name: getValidReg(e.target.value),\n                    })\n                  }\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Practice ID</label>\n                <input\n                  value={newLocation?.practiceID}\n                  className=\"modalInput\"\n                  placeholder=\"Client Practice ID\"\n                  style={{\n                    width: \"100%\",\n                  }}\n                  onChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      practiceID: e.target.value,\n                    })\n                  }\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders mt-0\">Address:</label>\n                <AutoCompleteAddress\n                  cssClass=\"modalInput\"\n                  value={newLocation.street}\n                  // value={newLocation.city}\n                  handleChange={handleUpdateAddress}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders mt-0\">City:</label>\n                <input\n                  type=\"text\"\n                  className=\"modalInput\"\n                  value={newLocation.city}\n                  placeholder=\"City\"\n                  onChange={(e) => setNewLocation({ ...newLocation, city: e.target.value })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders mt-0\">Zip:</label>\n                <input\n                  type=\"text\"\n                  className=\"modalInput\"\n                  value={newLocation.zipcode}\n                  placeholder=\"Zip\"\n                  onChange={(e) => setNewLocation({ ...newLocation, zipcode: e.target.value })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders mt-0\">Country:</label>\n                <input\n                  type=\"text\"\n                  className=\"modalInput\"\n                  value={newLocation.country}\n                  placeholder=\"Country\"\n                  onChange={(e) => setNewLocation({ ...newLocation, country: e.target.value })}\n                />\n              </div>\n              {/* <div className=\"form-group-wrapper phoneInput position-relative\">\n                <label className=\"modalLineHeaders\">Phone Number:</label>\n                <PhoneNoInput\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      phone_number: e,\n                    })\n                  }\n                  value={newLocation?.phone_number}\n                />\n              </div> */}\n              <div className=\"form-group-wrapper phoneInput position-relative\">\n                <label className=\"modalLineHeaders\">Phone Number:</label>\n                <PhoneNoInput\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      phone_number: e,\n                    })\n                  }\n                  value={newLocation?.phone_number}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Fax:</label>\n                <PhoneNoInput\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      fax: e,\n                    })\n                  }\n                  value={newLocation?.fax}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Email:</label>\n                <input\n                  type=\"text\"\n                  className=\"modalInput\"\n                  placeholder=\"Client Email\"\n                  value={newLocation?.email}\n                  onChange={(e) => {\n                    setNewLocation({\n                      ...newLocation,\n                      email: e.target.value,\n                    });\n                  }}\n                />\n              </div>\n              <InputField\n                type=\"dropDown\"\n                labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                inputStyle=\"w-100\"\n                label=\"Billing Type :\"\n                options={BILLING_TYPES_OPT}\n                value={\n                  newLocation.setting?.billType\n                    ? BILLING_TYPES_OPT.find((f) => f.value === newLocation.setting?.billType)\n                    : null\n                }\n                index=\"billType\"\n                placeholder=\"Select Billing Type\"\n                // disabled={editButton}\n                handleChange={(e) => {\n                  setNewLocation({\n                    ...newLocation,\n                    setting: {\n                      ...(newLocation.setting || {}),\n                      billType: e.value,\n                    },\n                  });\n                }}\n              />\n            </div>\n            {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n          </div>\n          <div className=\"ModalLeftSide\">\n            <div className=\"row mb-3\">\n              <strong>Main Contact information:</strong>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Main Contact Name:</label>\n                <input\n                  value={newLocation?.contact_name}\n                  className=\"modalInput\"\n                  placeholder=\"Main Contact Name\"\n                  style={{\n                    width: \"100%\",\n                  }}\n                  onChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      contact_name: getValidReg(e.target.value),\n                    })\n                  }\n                />\n              </div>\n              <div className=\"form-group-wrapper phoneInput position-relative\">\n                <label className=\"modalLineHeaders\">Main Contact Phone Number:</label>\n                <PhoneNoInput handleChange={handlePhoneNo} value={newLocation.contactName} />\n              </div>\n\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Main Contact Email: </label>\n                <input\n                  value={newLocation.contact_email}\n                  className={`modalInput \n                                    ${\n                                      // newLocation.isNew &&\n                                      \"pd-right-30\"\n                                    }`}\n                  placeholder=\"Email\"\n                  style={{\n                    width: \"100%\",\n                    flexShrink: \"initial\",\n                  }}\n                  onChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      contact_email: convertToLower(e.target.value),\n                    })\n                  }\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Main Contact Fax: </label>\n                <PhoneNoInput\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      contact_fax: e,\n                    })\n                  }\n                  value={newLocation?.contact_fax}\n                />\n              </div>\n\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Discount %:</label>\n                <input\n                  type=\"number\"\n                  value={newLocation.discount}\n                  className={`modalInput`}\n                  placeholder=\"1%\"\n                  style={{\n                    width: \"100%\",\n                    flexShrink: \"initial\",\n                  }}\n                  onChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      discount: Number(e.target.value),\n                    })\n                  }\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <div>\n                  <label className=\"modalLineHeaders\" style={{ marginBottom: \"10px\" }}>\n                    Commission %:{\" \"}\n                  </label>\n\n                  <label\n                    style={{\n                      color: \"green\",\n                      cursor: \"pointer\",\n                      float: \"right\",\n                    }}\n                    onClick={handleShowClientPcs}\n                  >\n                    Excluded CPT\n                  </label>\n                  <input\n                    type=\"number\"\n                    value={newLocation.commission}\n                    className={`modalInput`}\n                    placeholder=\"1%\"\n                    style={{\n                      width: \"100%\",\n                      flexShrink: \"initial\",\n                    }}\n                    onChange={(e) =>\n                      setNewLocation({\n                        ...newLocation,\n                        commission: Number(e.target.value),\n                      })\n                    }\n                  />\n                </div>\n              </div>\n              {!newLocation.isNew && (\n                <div className=\"form-group-wrapper\">\n                  <label\n                    className=\"modalLineHeaders cursor-pointer\"\n                    onClick={() => newLocation?.associatedClients && setOpenAssociateProviderModal(newLocation)}\n                  >\n                    Associated Provider: {newLocation?.associatedClients || 0}\n                  </label>\n                  {newLocation.defaultProvider && (\n                    <label className=\"modalLineHeaders fw-bold\">\n                      {`Primary Provider: \n                    ${PROVIDER_OPTIONS.find((f) => f.value === newLocation.defaultProvider)?.label || \"\"}`}\n                    </label>\n                  )}\n                  <div style={{ display: \"flex\" }}>\n                    <Select\n                      options={PROVIDER_OPTIONS}\n                      blurInputOnSelect={true}\n                      className=\"referring-provider-select w-100\"\n                      value={PROVIDER_OPTIONS.find((item) => item.value === provider)}\n                      isClearable={true}\n                      // isDisabled={editButton}\n                      menuPlacement=\"auto\"\n                      autoComplete=\"none\"\n                      placeholder=\"Select Associate Provider\"\n                      onChange={(e) => {\n                        setProvider(e?.value);\n                      }}\n                    />\n                  </div>\n                  <Button\n                    variant=\"secondary\"\n                    className=\"headerButton  btn-fill mx-2 mt-2\"\n                    style={{ marginLeft: \"10px\" }}\n                    onClick={async () => {\n                      // dispatch(udpateProviderClient({ pId: newLocation.associatedClients, uId: newLocation.id }));\n                      if (!provider) return;\n                      const apiResponse = await api.updateProviderClient(provider, newLocation.id);\n                      const prevRes = apiResponse?.rows;\n                      \n                      if (prevRes?.id) {\n                        if (prevRes.associatedClient !== newLocation.id) {\n                          setNewLocation({\n                            ...newLocation,\n                            associatedClients: newLocation.associatedClients + 1,\n                          });\n                        }\n                        dispatch(setMessage(\"Provider Associated Successfully\", MESSAGE_MODES.success));\n                      }\n                    }}\n                  >\n                    Add\n                  </Button>\n                </div>\n              )}\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders my-3\">Associated Sales persons: {totalSalesPerson || \"0\"}</label>\n                <div>\n                  <Button\n                    variant=\"secondary\"\n                    className=\"headerButton btn-fill mx-2\"\n                    style={{ marginLeft: \"10px\" }}\n                    onClick={() => dispatch(setShowSalesPersonModal(true))}\n                  >\n                    Manage\n                  </Button>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"ModalLeftSide\">\n            <strong>Settings</strong>\n            <div className=\"row mb-3\">\n              <div\n                className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n              >\n                <span>Active:</span>\n                <SwitchToggle\n                  checked={newLocation.isActive}\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      isActive: e.target.checked,\n                    })\n                  }\n                />\n              </div>\n              <div\n                className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n              >\n                <span>Auto Release Result:</span>\n                <SwitchToggle\n                  checked={newLocation.setting?.autoRelease}\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      setting: {\n                        ...(newLocation.setting || {}),\n                        autoRelease: e.target.checked,\n                      },\n                    })\n                  }\n                />\n              </div>\n              <div\n                className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n              >\n                <span>Schedule Testing:</span>\n                <SwitchToggle\n                  checked={newLocation.isTesting}\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      isTesting: e.target.checked,\n                    })\n                  }\n                />\n              </div>\n\n              <div\n                className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n              >\n                <span>Insurance Required:</span>\n                <SwitchToggle\n                  checked={newLocation.insurance_required}\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      insurance_required: e.target.checked,\n                    })\n                  }\n                />\n              </div>\n              <div\n                className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n              >\n                <span>Send Insurance Card:</span>\n                <SwitchToggle\n                  checked={newLocation.sendInsuranceCard}\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      sendInsuranceCard: e.target.checked,\n                    })\n                  }\n                />\n              </div>\n              <div\n                className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n              >\n                <span>HIPAA Required:</span>\n                <SwitchToggle\n                  checked={newLocation?.setting?.hippaRequired}\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      setting: {\n                        ...(newLocation.setting || {}),\n                        hippaRequired: e?.target?.checked,\n                      },\n                    })\n                  }\n                />\n              </div>\n              <div\n                className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n              >\n                <span>Offered Tests:</span>\n                <span className=\"linkedTextU\" onClick={() => dispatch(setLocationTestModal(true))}>\n                  Manage\n                </span>\n              </div>\n\n              <div\n                className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n              >\n                <span>Printer Settings:</span>\n                <span className=\"linkedTextU\" onClick={() => dispatch(setPrinterSettingsModal(true))}>\n                  Manage\n                </span>\n              </div>\n\n              <div\n                className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n              >\n                <span>Accession# Range:</span>\n                <span className=\"linkedTextU\" onClick={() => dispatch(setBarcodeSettingsModal(true))}>\n                  Manage\n                </span>\n              </div>\n            </div>\n            <div className={\"row mb-3\"}>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Specimen Collected:</label>\n                <Select\n                  options={MESSAGE_TEMPLATE_OPTIONS}\n                  blurInputOnSelect={true}\n                  className=\"referring-provider-select w-100\"\n                  value={\n                    newLocation.setting?.specimen\n                      ? MESSAGE_TEMPLATE_OPTIONS.find((f) => f.value === newLocation.setting?.specimen)\n                      : null\n                  }\n                  isClearable={true}\n                  // isDisabled={editButton}\n                  menuPlacement=\"auto\"\n                  autoComplete=\"none\"\n                  placeholder=\"Select Message Template\"\n                  onChange={(e) => {\n                    setNewLocation({\n                      ...newLocation,\n                      setting: {\n                        ...(newLocation.setting || {}),\n                        specimen: e?.value,\n                      },\n                    });\n                  }}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Tests Completed:</label>\n                <Select\n                  options={MESSAGE_TEMPLATE_OPTIONS}\n                  blurInputOnSelect={true}\n                  className=\"referring-provider-select w-100\"\n                  value={\n                    newLocation.setting?.testCompleted\n                      ? MESSAGE_TEMPLATE_OPTIONS.find((f) => f.value === newLocation.setting?.testCompleted)\n                      : null\n                  }\n                  isClearable={true}\n                  menuPlacement=\"auto\"\n                  autoComplete=\"none\"\n                  placeholder=\"Select Message Template\"\n                  onChange={(e) => {\n                    setNewLocation({\n                      ...newLocation,\n                      setting: {\n                        ...(newLocation.setting || {}),\n                        testCompleted: e?.value,\n                      },\n                    });\n                  }}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Physician Contact:</label>\n                <Select\n                  options={MESSAGE_TEMPLATE_OPTIONS}\n                  blurInputOnSelect={true}\n                  className=\"referring-provider-select w-100\"\n                  value={\n                    newLocation.setting?.physicianContact\n                      ? MESSAGE_TEMPLATE_OPTIONS.find((f) => f.value === newLocation.setting?.physicianContact)\n                      : null\n                  }\n                  isClearable={true}\n                  // isDisabled={editButton}\n                  menuPlacement=\"auto\"\n                  autoComplete=\"none\"\n                  placeholder=\"Select Message Template\"\n                  onChange={(e) => {\n                    setNewLocation({\n                      ...newLocation,\n                      setting: {\n                        ...(newLocation.setting || {}),\n                        physicianContact: e?.value,\n                      },\n                    });\n                  }}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Laboratory Contact:</label>\n                <Select\n                  options={MESSAGE_TEMPLATE_OPTIONS}\n                  blurInputOnSelect={true}\n                  className=\"referring-provider-select w-100\"\n                  value={\n                    newLocation.setting?.laboratoryContact\n                      ? MESSAGE_TEMPLATE_OPTIONS.find((f) => f.value === newLocation.setting?.laboratoryContact)\n                      : null\n                  }\n                  isClearable={true}\n                  // isDisabled={editButton}\n                  menuPlacement=\"auto\"\n                  autoComplete=\"none\"\n                  placeholder=\"Select Message Template\"\n                  onChange={(e) => {\n                    setNewLocation({\n                      ...newLocation,\n                      setting: {\n                        ...(newLocation.setting || {}),\n                        laboratoryContact: e?.value,\n                      },\n                    });\n                  }}\n                />\n              </div>\n            </div>\n          </div>\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <div>\n          {/* <Button variant=\"secondary\" className=\"headerButton btn-fill me-1\" onClick={() => handleOpenDefaultSetting()}>\n            Open Default Setting\n          </Button> */}\n          <Button variant=\"secondary\" className=\"headerButton btn-fill\" onClick={handleSaveChange}>\n            {newLocation.isNew ? \"Create\" : \"Update\"}\n          </Button>\n        </div>\n      </Modal.Footer>\n      {openAssociateProviderModal && (\n        <ClientProviderModal\n          handleClose={(obj) => {\n            setOpenAssociateProviderModal(null);\n          }}\n          cssClass=\"seperateModal\"\n          user={loginUser}\n          data={openAssociateProviderModal}\n          setDefaultProvider={handleChangeDefaultProvider}\n        />\n      )}\n      {openDefaultSetting && (\n        <DefaultClientSettingModal\n          data={openDefaultSetting}\n          handleClose={() => setOpenDefaultSetting(null)}\n          cssClass=\"seperateModal\"\n        />\n      )}\n      <LCTestModal handleTest={handleTests} rowData={newLocation} />\n      <PrinterSettingsModal labClient={newLocation} setLabClient={(value) => setNewLocation(value)} />\n      <BarcodeSettingModal labClient={newLocation} setLabClient={(value) => setNewLocation(value)} />\n    </Modal>\n  );\n};\n\nexport default LabClientModal;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport { Button, Modal, Card, Table, Row, Col } from \"react-bootstrap\";\nimport { AppContext } from \"context/app-context\";\n\nconst ImportErrorModal = ({ data, handleClose, title }) => {\n  const { successData, errData } = data;\n  const appContext = useContext(AppContext);\n\n  const TableRow = ({ err, index }) => {\n    return (\n      <tr>\n        <td>{index + 1}</td>\n        <td>{err.message}</td>\n      </tr>\n    );\n  };\n  const successMessage = () => {\n    if (successData.length === 0) return \"No Data Import\";\n    return `Successfully Import ${successData.length} ${title}${successData.length === 1 ? \"\" : \"s\"}`;\n  };\n  return (\n    <>\n      <Modal show animation={true} onHide={() => handleClose()} size={\"lg\"} scrollable>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Import {title}\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body className=\"marginTop0\">\n          <>\n            <h4 style={{ margin: 0, marginBottom: \"10px\" }}>{successMessage()}</h4>\n            <div style={{ flex: 1 }}>\n              <Row>\n                <Col md=\"12\">\n                  <Card className=\"strpied-tabled-with-hover\">\n                    <Card.Body>\n                      {errData && errData?.length > 0 && (\n                        <div className=\"form-group-wrapper d-block\">\n                          <div className=\"table-responsive\" style={{ overflow: \"hidden\" }}>\n                            <span>Errors Details</span>\n                            <Table className=\"table-hover table-striped\">\n                              <thead>\n                                <tr>\n                                  <th style={{ width: \"10%\" }}>Sr#</th>\n                                  <th>Error</th>\n                                </tr>\n                              </thead>\n                              <tbody>\n                                {errData.length > 0 &&\n                                  errData.map((err, index) => <TableRow err={err} key={index} index={index} />)}\n                              </tbody>\n                            </Table>\n                          </div>\n                        </div>\n                      )}\n                    </Card.Body>\n                  </Card>\n                </Col>\n              </Row>\n            </div>\n          </>\n        </Modal.Body>\n\n        <Modal.Footer className=\"flex-row-reverse\">\n          <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleClose()}>\n            Ok\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default ImportErrorModal;\n","import { MESSAGE_MODES } from \"constant\";\nimport { useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { CSVReader } from \"react-papaparse\";\nimport { useDispatch } from \"react-redux\";\nimport Select from \"react-select\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { userCompanyID } from \"utils\";\n\nconst LocationImportModal = (props) => {\n  const { handleClose, handleImport, handleDownloadSample } = props;\n  const dispatch = useDispatch();\n\n  const handleOnDrop = (data) => {\n    handleImport(data);\n  };\n  const handleOnError = (err) => {\n    console.log(err);\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n  };\n\n  return (\n    <Modal show animation={true} backdrop=\"static\" onHide={() => handleClose()} centered size={\"lg\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Import Client Data\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"form-group-wrapper d-block\">\n          <div className=\"d-flex align-items-center justify-content-around mb-3\">\n            <div\n              style={{\n                textAlign: \"right\",\n                color: \"#42cef5\",\n                textAlign: \"center\",\n                cursor: \"Pointer\",\n              }}\n              onClick={() => handleDownloadSample(1)}\n            >\n              Download Template Info\n            </div>\n            <div\n              style={{\n                textAlign: \"right\",\n                color: \"#42cef5\",\n                textAlign: \"center\",\n                cursor: \"Pointer\",\n              }}\n              onClick={() => handleDownloadSample(2)}\n            >\n              Download Upload Template\n            </div>\n          </div>\n          <CSVReader\n            onDrop={handleOnDrop}\n            onError={handleOnError}\n            addRemoveButton\n            config={{\n              header: true,\n              skipEmptyLines: true,\n            }}\n            onRemoveFile={handleOnRemoveFile}\n          >\n            <span>Drop CSV file here or click to upload.</span>\n          </CSVReader>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer className=\"flex-row-reverse\">\n        <Button variant=\"secondary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n          OK\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default LocationImportModal;\n","import api from \"api\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport RadioButton from \"components/RadioButton/RadioButton\";\nimport Loader from \"components/Loader/Loader\";\nimport { NOTES_MAX_CHARACTER_LENGTH } from \"constant\";\nimport moment from \"moment\";\nimport { useState, useContext } from \"react\";\nimport { Button, Card, Modal } from \"react-bootstrap\";\nimport PreviousNotes from \"./PreviousNotes\";\nimport { useDispatch } from \"react-redux\";\nimport { updateProviderNoteAsync } from \"store/features/providers/providersSlice\";\nimport { updateLabClientNotes } from \"store/features/locations/locationsSlice\";\nimport { AppContext } from \"context/app-context\";\n\nconst NotesModal = (props) => {\n  const { data, handleClose, user, emp, order, claim, provider, labClient } = props;\n\n  const [notes, setNotes] = useState((emp || claim || provider || labClient ? data.note : data.note?.message) || \"\");\n  const [error, setError] = useState(\"\");\n  const [status, setStatus] = useState(data.status);\n  const [loading, setLoading] = useState(false);\n  const dispatch = useDispatch();\n  const appContext = useContext(AppContext);\n\n  const onHandleSave = async () => {\n    setLoading(true);\n    const obj = {\n      id: data.mdID,\n      ...((emp || claim) && { note: notes.trim(), status }),\n      updatedBy: appContext.user?.sub,\n      updatedByName: appContext.user?.name,\n    };\n\n    try {\n      if (emp) {\n        const res = await api.updateEmployeeRecord(obj);\n        if (res) await api.patientUpdateAPI(res);\n      } else if (provider) {\n        dispatch(updateProviderNoteAsync({ ...data, note: notes.trim() }));\n      } else if (labClient) await dispatch(updateLabClientNotes({ ...data, note: notes.trim() }));\n\n      setLoading(false);\n      handleClose(obj);\n    } catch (err) {\n      console.log(\"Error:-\", err);\n      setLoading(false);\n    }\n  };\n\n  return (\n    <>\n      <Modal show backdrop=\"static\" onHide={handleClose} animation={true} size={\"lg\"} scrollable>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\">\n            Notes{\" \"}\n            {data &&\n              `for ${data[claim ? \"pat_name_f\" : labClient ? \"name\" : \"firstName\"]} ${\n                !labClient ? data[claim ? \"pat_name_l\" : labClient ? \"\" : \"lastName\"] : \"\"\n              }`}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          {emp && (\n            <Card>\n              <div className=\"form-group-wrapper mb-0 p-2\">\n                <label className=\"modalLineHeaders mt-0 text-capitalize\">Status:</label>\n                <div className=\"d-flex justify-content-between w-50 flex-wrap\">\n                  <RadioButton\n                    name=\"status\"\n                    id=\"active\"\n                    label=\"Active\"\n                    checked={status === \"active\" ? true : false}\n                    handleRadioButtonChange={(e) => setStatus(e.target.checked ? \"active\" : \"\")}\n                  />\n                  <RadioButton\n                    name=\"status\"\n                    id=\"inactive\"\n                    checked={status !== \"active\" ? true : false}\n                    label=\"InActive\"\n                    handleRadioButtonChange={(e) => {\n                      setStatus(e.target.checked ? \"inactive\" : \"\");\n                    }}\n                  />\n                </div>\n              </div>\n            </Card>\n          )}\n\n          <div className=\"row textAreaMessageInput\">\n            <div className=\"col-12 mb-3\">\n              <textarea\n                placeholder={\"Note!\"}\n                className=\"MessageInput\"\n                value={notes}\n                onChange={(e) => setNotes(e.target.value)}\n                maxLength={NOTES_MAX_CHARACTER_LENGTH}\n              />\n            </div>\n          </div>\n          <PreviousNotes id={order || claim ? data.employeeID : data.id} user={user} />\n          <div style={{ minHeight: \"3vh\" }}>\n            {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n          </div>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <div className=\"d-flex\">\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"secondary\"\n              className=\"modalButtons headerButton btn-fill\"\n              onClick={onHandleSave}\n            >\n              Save\n            </Button>\n          </div>\n          {loading && <Loader />}\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default NotesModal;\n","import API from \"api\";\nimport logo from \"assets/img/logo.jpg\";\nimport { Auth } from \"aws-amplify\";\nimport Loader from \"components/Loader/Loader\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport LabClientModal from \"./LabClientModal\";\nimport { CONFIG, PAGE_LIMIT, TEST_ORDER_LIMIT_CATEGORY_VALUE, newLabClientObject, CLIENT_MANAGEMENT } from \"constant\";\nimport { AppContext } from \"context/app-context\";\nimport { useContext, useEffect, useState, useMemo } from \"react\";\nimport { Card, Col, Row } from \"react-bootstrap\";\nimport { QRCode } from \"react-qrcode-logo\";\nimport {\n  checkValidity,\n  emailMsgToCreatedFacility,\n  getPreRegistrationLink,\n  sortingFilterInLC,\n  convertLabClientObject,\n  onHandleDownloadSample,\n} from \"utils\";\nimport Filter from \"../../components/Filter\";\nimport { t } from \"../../stringConstants\";\n\nimport ImportErrorModal from \"components/Modal/ImportErrorModal\";\nimport LocationImportModal from \"components/Modal/LocationImportModal\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport MainTable from \"components/Table/MainTable\";\nimport { MESSAGE_MODES, LAB_CLIENT_CSV_COLUMNS, TABLE_QUICK_TOOLS, LAB_CLIENT_DROPDOWN_OPTIONS } from \"constant\";\nimport { LAB_CLIENT_PERSONALIZE } from \"constants/personalization\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { downloadDataAsCSV, formatNumber, getValidReg, tdLink } from \"utils\";\nimport Icon from \"../../components/Icon\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport { fetchAllLocations, createLabClient, updateLabClient } from \"store/features/locations/locationsSlice\";\nimport { locationsSelectors } from \"store/features/locations/locationsSelectors\";\nimport NotesModal from \"components/Notes/NotesModal\";\nimport ClientProviderModal from \"components/Modal/ClientProviderModal\";\nimport { providerList } from \"store/features/providers/providersSelectors\";\nimport { draggablePersonalizationLocalStorage } from \"utils\";\nimport { PERSONALISATION_KEY } from \"constant\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport { sortSettingsList } from \"utils\";\n\nconst LabClient = () => {\n  const appContext = useContext(AppContext);\n  const [locations, setLocations] = useState([]);\n  const [filteredLocations, setFilteredLocations] = useState([]);\n  const [filterTabIndex, setFilterTabIndex] = useState(0);\n  const [itemToDelete, setItemToDelete] = useState(null);\n  const [loading, setLoading] = useState(false);\n  const [openCreateModal, setOpenCreateModal] = useState(false);\n  const [selectItem, setSelectItem] = useState(newLabClientObject);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [triggerFilter, setTriggerFilter] = useState(false);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [showCopyText, setShowCopyText] = useState(\"\");\n  const [personalize, setPersonalize] = useState([]);\n  const [usersPerPage, setUsersPerPage] = useState(PAGE_LIMIT);\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n  const [orders, setOrders] = useState([]);\n  const [openImportModal, setOpenImportModal] = useState(false);\n  const [openErrModal, setOpenErrModal] = useState(false);\n  const [title, setTitle] = useState(\"\");\n  const [errorData, setErrorData] = useState([]);\n  const [successData, setsuccessData] = useState([]);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [noteModal, setNoteModal] = useState(null);\n  const [providerModal, setProviderModal] = useState(null);\n  const dispatch = useDispatch();\n  const permission = useSelector(userGivenPermission);\n\n  const quickTools = [\n    TABLE_QUICK_TOOLS.checkbox,\n    permission[CLIENT_MANAGEMENT]?.write && TABLE_QUICK_TOOLS.edit,\n    permission[CLIENT_MANAGEMENT]?.write && TABLE_QUICK_TOOLS.notes,\n    \"provider\",\n  ];\n\n  const user = useSelector(selectLoginUser);\n\n  const labLocations = useSelector(locationsSelectors);\n\n  const PROVIDER_OPTIONS = useSelector(providerList);\n\n  const searchTerms = [\"Name\", \"Contact Name\", \"Contact Email\", \"Contact Phone\", \"practiceID\"];\n\n  const currentItems = (locs) => {\n    const indexOfLastUser = currentPage * PAGE_LIMIT;\n    const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n    if (!locs || locs.length === 0) return [];\n    return locs.slice(indexOfFirstUser, indexOfLastUser);\n  };\n\n  let locationsToMap = currentItems(filteredLocations);\n  const getLabClients = async () => {\n    try {\n      await dispatch(fetchAllLocations());\n    } catch (err) {\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  useEffect(() => {\n    const sortLS = sortingFilterInLC.get();\n    if (sortLS.facilities && sortLS.facilities.sortBy) {\n      setSortBy(sortLS.facilities.sortBy);\n      setSortDescending(sortLS.facilities.sortDescending);\n    }\n    // if (sortLS.facilities && sortLS.facilities.filter) {\n    //   setFilter(sortLS.facilities.filter);\n    // }\n    getLabClients();\n    const response = draggablePersonalizationLocalStorage.get(\n      user,\n      PERSONALISATION_KEY.LAB_CLIENT,\n      LAB_CLIENT_PERSONALIZE\n    );\n    setPersonalize(response);\n  }, [appContext?.company]);\n\n  const getPageNumbers = (users) => {\n    const pageNumbers = users.length > PAGE_LIMIT ? Math.ceil(users.length / PAGE_LIMIT) : 1;\n    return pageNumbers;\n  };\n\n  let pageNumbers = getPageNumbers(locations);\n\n  if (filteredLocations && filteredLocations.length > 0) {\n    pageNumbers = getPageNumbers(filteredLocations);\n  }\n\n  useEffect(() => {\n    if (labLocations && labLocations.length > 0) {\n      formatFacility();\n    }\n    // setLocations(\n    //   appContext.locations?.filter((f) => f.id !== CONFIG.generalFacility)\n    // );\n    // setFilteredLocations(\n    //   appContext.locations?.filter((f) => f.id !== CONFIG.generalFacility)\n    // );\n  }, [labLocations, orders]);\n\n  // useEffect(() => {\n  //   const hasDeletePermission = permission[CLIENT_MANAGEMENT]?.delete;\n  //   const deleteOptionIndex = LAB_CLIENT_DROPDOWN_OPTIONS.findIndex((option) => option.value === \"delete\");\n  //   console.log(\"I am here in client management\");\n  //   if (!hasDeletePermission && deleteOptionIndex !== -1) {\n  //     LAB_CLIENT_DROPDOWN_OPTIONS.splice(deleteOptionIndex, 1); // Remove the delete option if it exists\n  //   } else if (hasDeletePermission && deleteOptionIndex === -1) {\n  //     LAB_CLIENT_DROPDOWN_OPTIONS.push({ value: \"delete\", title: \"Archive\" });\n  //   }\n  // }, [CLIENT_MANAGEMENT]);\n\n  const LAB_CLIENT_DROPDOWN = useMemo(() => {\n    const hasDeletePermission = permission[CLIENT_MANAGEMENT]?.delete;\n    const deleteOption = { value: \"delete\", title: \"Archive\" };\n\n    const newDropdownOptions = LAB_CLIENT_DROPDOWN_OPTIONS.filter((option) => option.value !== \"delete\");\n\n    if (hasDeletePermission) {\n      newDropdownOptions.push(deleteOption);\n    }\n\n    return newDropdownOptions;\n  }, [permission[CLIENT_MANAGEMENT]?.delete]);\n\n  const getAssociateClient = (id) => {\n    let res = PROVIDER_OPTIONS.filter((provider) => {\n      return provider.associatedClient === id;\n    });\n    return res.length;\n  };\n\n  const formatFacility = () => {\n    let facilities = labLocations.map((item) => ({ ...item, associatedClients: getAssociateClient(item?.id) }));\n\n    setLocations(facilities);\n    // setFilteredLocations(sortData(nestedFilter(facilities, filter), sortBy));\n    setFilteredLocations(sortSettingsList(sortBy, sortDescending, nestedFilter(facilities, filter)));\n  };\n\n  const handleSaveFilter = () => {\n    const pervSortLS = sortingFilterInLC.get();\n    pervSortLS.facilities = { sortBy, sortDescending, filter };\n    sortingFilterInLC.save(pervSortLS);\n  };\n\n  useEffect(() => {\n    if (locations.length > 0) {\n      setFilteredLocations(sortSettingsList(sortBy, sortDescending, nestedFilter(locations, filter)));\n      setCurrentPage(1);\n    }\n  }, [filter]);\n\n  useEffect(() => {\n    if (filteredLocations.length > 0) {\n      handleSaveFilter();\n      setFilteredLocations(sortSettingsList(sortBy, sortDescending, filteredLocations));\n    }\n  }, [sortBy, sortDescending]);\n\n  const handleConfirmDelete = async (isConfirm) => {\n    const deletedItemRow = itemToDelete;\n    setItemToDelete(null);\n    if (!isConfirm) {\n      return;\n    }\n    try {\n      setLoading(true);\n\n      const isDeleted = await API.updateSiteArchive(deletedItemRow.id, true);\n      dispatch(setMessage(\"Client Archived successfully\", MESSAGE_MODES.success));\n      if (isDeleted) {\n        setFilteredLocations((prevLocations) => prevLocations.filter((location) => location.id !== deletedItemRow.id));\n        setLocations((prevLocations) => prevLocations.filter((location) => location.id !== deletedItemRow.id));\n      }\n      getLabClients();\n      appContext?.resetSites();\n      setLoading(false);\n    } catch (error) {\n      setLoading(false);\n      dispatch(setMessage(error.message, MESSAGE_MODES.error));\n    }\n  };\n\n  const OnHandleLocation = async (loc) => {\n    const findVal = locations.find((f) => loc.id !== f.id && checkValidity(f.name) == checkValidity(loc.name));\n    if (findVal) {\n      dispatch(setMessage(\"Client already exist\", MESSAGE_MODES.error));\n      return;\n    }\n    setOpenCreateModal(false);\n\n    try {\n      if (loc.isNew) {\n        const res = await dispatch(createLabClient({ ...loc, siteType: \"client\" }));\n        if (res) {\n          dispatch(setMessage(\"Client Created Successfully\", MESSAGE_MODES.success));\n        }\n      } else {\n        await dispatch(updateLabClient({ ...loc, siteType: \"client\" }));\n        dispatch(setMessage(\"Client Updated Successfully\", MESSAGE_MODES.success));\n      }\n      setSelectItem(newLabClientObject);\n      appContext.resetSites();\n    } catch (err) {\n      console.log(\"Error\", err);\n      dispatch(setMessage(err.message, MESSAGE_MODES.error));\n    }\n  };\n\n  const createUser = async (newUser) => {\n    const firstName = newUser.contact_name.split(\" \")[0] || \"\";\n    const lastName = newUser.contact_name.split(\" \")[1] || \"\";\n    const attributePayload = {\n      preferred_username: newUser.phone_number,\n      email: newUser.contact_email,\n      phone_number: newUser.phone_number,\n      \"custom:role\": \"Employers\",\n      \"custom:autoConfirm\": \"true\",\n      \"custom:firstName\": `${firstName}`,\n      \"custom:lastName\": `${lastName}`,\n      \"custom:note\": `${newUser.contact_name}`,\n      \"custom:labID\": newUser.id,\n      \"custom:personalisation\": JSON.stringify({\n        personalize: \"1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17\",\n      }),\n    };\n\n    try {\n      const signUp = await Auth.signUp({\n        username: newUser.phone_number,\n        password: newUser.password,\n        attributes: attributePayload,\n      });\n      if (signUp) {\n        const message = emailMsgToCreatedFacility(\n          newUser.contact_name,\n          newUser.phone_number.replaceAll(/[^0-9]/gi, \"\"),\n          newUser.password\n        );\n        await API.sendEmail([\n          {\n            email: newUser.contact_email,\n            subject: \"SafeCamp LTC Team\",\n            msg: message,\n          },\n        ]);\n      }\n      return true;\n    } catch (error) {\n      console.log(\"ERROR createUser: \", error);\n      dispatch(setMessage(error.message, MESSAGE_MODES.error));\n      return false;\n    }\n  };\n\n  const handleEdit = (item) => {\n    setSelectItem({ ...item, isNew: false });\n    setOpenCreateModal(true);\n  };\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n    handleChangePage(1);\n  };\n\n  const downloadQRCode = (site) => {\n    const canvas = document.getElementById(\"qr-gen\");\n    const pngUrl = canvas.toDataURL(\"image/png\").replace(\"image/png\", \"image/octet-stream\");\n    let downloadLink = document.createElement(\"a\");\n    downloadLink.href = pngUrl;\n    downloadLink.download = `${site.name}.png`;\n    document.body.appendChild(downloadLink);\n    downloadLink.click();\n    document.body.removeChild(downloadLink);\n  };\n\n  const handleCopyPRLink = (id) => {\n    navigator.clipboard.writeText(getPreRegistrationLink(id));\n    setShowCopyText(id);\n    setTimeout(() => setShowCopyText(null), 2000);\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n\n    const models = targetArray.filter((obj) => {\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (\n          key === \"orders\" ||\n          key === \"discount\" ||\n          key === \"totalOrders\" ||\n          key === \"associatedClients\" ||\n          key === \"discount\" ||\n          key === \"commission\"\n        ) {\n          return parseFloat(obj[key]) === parseFloat(filters[key]);\n        }\n        if (key === \"claimAmount\" || key === \"openAmount\" || key === \"paid\") {\n          if (obj[key] == null || filters[key] == null) {\n            return false;\n          }\n\n          return obj[key].toString().includes(filters[key].toString());\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n    return models;\n  };\n\n  const handleChangePage = (number) => {\n    setCurrentPage(number);\n  };\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n    const personalisationData = draggablePersonalizationLocalStorage.saveAs(data, PERSONALISATION_KEY.LAB_CLIENT);\n    setOpenPersonalizationModal(false);\n    draggablePersonalizationLocalStorage.save(JSON.stringify(personalisationData));\n    await API.saveUserPersonalisation(appContext.user.sub, personalisationData);\n  };\n\n  const parseClient = (item) => {\n    if (item.client) item.client.name;\n    if (!item.clientID) return \"N/A\";\n\n    if (appContext.companies) {\n      const client = appContext.companies.find((c) => c.id === item.clientID);\n      if (client) {\n        return client.name;\n      }\n    }\n    return \"N/A\";\n  };\n\n  const handleClientImport = async ({ locData, clientID }) => {\n    const arr = [];\n    const arrdata = [];\n    const locList = [...locations];\n    const locationKeysArr = Object.keys(locData[0].data);\n    if (locationKeysArr.length > 0) {\n      let err = false;\n      LAB_CLIENT_CSV_COLUMNS.forEach((f, i) => {\n        if (!locationKeysArr.includes(f)) {\n          dispatch(setMessage(`Column Header must be ${f}`, MESSAGE_MODES.error));\n          setOpenImportModal(null);\n          err = true;\n          return;\n        }\n      });\n      if (err) return;\n    }\n\n    setOpenImportModal(null);\n    setLoading(true);\n    const ttlLength = locData.length;\n\n    for (let index = 0; index < ttlLength; index++) {\n      const { data } = locData[index];\n\n      if (Object.values(data).every((c) => c.length == 0)) continue;\n\n      const loc = convertLabClientObject(data, clientID);\n\n      if (loc.name) {\n        loc.name = getValidReg(loc.name);\n\n        const findVal = locList.find((f) => {\n          const isNameExists = false; // checkValidity(f.name) == checkValidity(loc.name);\n          const isPracticeID = f.practiceID === loc.practiceID;\n          return isNameExists || isPracticeID;\n        });\n\n        if (findVal) {\n          arr.push({\n            message: `Client name record already exists on row ${index + 2}`,\n            data: loc,\n          });\n          continue;\n        }\n      } else {\n        arr.push({\n          message: `name is required on row ${index + 2}`,\n          data: loc,\n        });\n        continue;\n      }\n\n      // if (!loc.phone_number) {\n      //   arr.push({\n      //     message: `phone number is required on row ${index + 2}.`,\n      //     data: loc,\n      //   });\n      //   continue;\n      // }\n      if (loc.phone_number) {\n        const phone = formatPhoneNumberIntl(loc.phone_number);\n\n        const phoneArr = phone.split(\" \");\n        loc.countryCode = phoneArr[0];\n      }\n\n      // if (loc.phone_number && !validatePhone(loc.phone_number)) {\n      //   arr.push({\n      //     message: `phone number is invalid ${loc.phone_number} on row ${index + 2}`,\n      //     data: loc,\n      //   });\n      //   continue;\n      // }\n\n      arrdata.push(loc);\n      locList.push(loc);\n    }\n\n    setOpenImportModal(null);\n    if (arrdata.length == 0 && arr.length === 0) {\n      dispatch(setMessage(t(\"emptyFile\"), MESSAGE_MODES.error));\n      setLoading(false);\n      return;\n    }\n\n    if (arr.length > 0) {\n      setErrorData(arr);\n      setTitle(\"Client\");\n      setOpenErrModal(true);\n      setsuccessData([]);\n      setLoading(false);\n      return;\n    }\n\n    let sucessfullyProcessed = [];\n\n    try {\n      const res = await API.importLabClient({ clients: arrdata });\n      // const res = [];\n      arrdata.forEach((item) => {\n        if (!res[item.uuid].status) {\n          arr.push({\n            message: `Fail to save the record`,\n            data: item,\n          });\n        } else {\n          sucessfullyProcessed.push(item);\n        }\n      });\n    } catch (ex) {\n      console.log(\"Ex\", ex);\n      dispatch(setMessage(t(\"failtoimportdata\"), MESSAGE_MODES.error));\n    }\n    setLoading(false);\n    if (arr.length > 0 || sucessfullyProcessed.length > 0) {\n      setErrorData(arr);\n      setTitle(\"Client\");\n      setsuccessData(sucessfullyProcessed);\n      setOpenErrModal(true);\n    }\n  };\n\n  const handleImport = async (locData) => {\n    const clientID = CONFIG.clientID;\n\n    if (locData.length === 0) {\n      dispatch(setMessage(t(\"emptyFile\"), MESSAGE_MODES.error));\n      setOpenImportModal(false);\n      return;\n    }\n    if (!clientID) {\n      dispatch(setMessage(\"Client was not selected\", MESSAGE_MODES.error));\n      return;\n    }\n\n    handleClientImport({ locData, clientID });\n  };\n\n  const tdPreRegisteration = (user) => {\n    return (\n      <td className=\"ellipsis position-relative\" style={{ textAlign: \"center\" }}>\n        {user.preRegistration && (\n          <div className=\"d-flex align-items-center justify-content-evenly qr-code-download\">\n            {showCopyText && showCopyText === user.id && (\n              <div className=\"copy-link-text clipBoard-copy\">Copied to clipboard!</div>\n            )}\n            <div onClick={() => handleCopyPRLink(user.id)}>\n              <i className=\"fas fa-copy maroon\" />\n            </div>\n            <div onClick={() => downloadQRCode(user)}>\n              <i className=\"fas fa-download maroon\"></i>\n            </div>\n            <span style={{ display: \"none\" }}>\n              <QRCode\n                id=\"qr-gen\"\n                ecLevel={\"H\"}\n                value={getPreRegistrationLink(user.id)}\n                enableCORS={true}\n                logoImage={logo}\n                size=\"250\"\n                logoHeight={\"70\"}\n                logoWidth={\"70\"}\n                fgColor={\"#000\"}\n                bgColor={\"#fff\"}\n              />\n            </span>\n          </div>\n        )}\n      </td>\n    );\n  };\n\n  const tdFormat = (item, user) => {\n    if (item === \"testOrderCategory\") return TEST_ORDER_LIMIT_CATEGORY_VALUE[user.testOrderCategory];\n    return user[item];\n  };\n\n  const renderTd = (item, user) => {\n    if (item.itemKey === \"monthToDate\") return tdLink(user.monthToDate, \"month\", user.id, \"siteID\");\n    if (item.itemKey === \"yearToDate\") return tdLink(user.yearToDate, \"year\", user.id, \"siteID\");\n    if (item.itemKey === \"totalOrders\") return tdLink(user.totalOrders, \"\", user.id, \"siteID\");\n    if (item.itemKey === \"preRegisterationLink\") return tdPreRegisteration(user);\n    return (\n      <td\n        className=\"ellipsis\"\n        style={{\n          textAlign: item.textAlign,\n          textOverflow: item.textOverflow,\n        }}\n        title={tdFormat(item.itemKey, user)}\n      >\n        {tdFormat(item.itemKey, user)}\n      </td>\n    );\n  };\n  const handleCheckboxChange = (e, row) => {\n    const filteredList = checkboxes.filter((c) => c !== row.id);\n    if (e.target.checked) {\n      filteredList.push(row.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const showClientLogs = () => {\n    // Show client logs modals call here\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        if (row.id !== \"596daf9b-8f9d-451c-a28f-a458bac57ce4\" && row.id !== \"a081f285-4949-45bd-9516-ba2ff3e8d0b1\") {\n          handleEdit(row);\n        }\n        break;\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n      case TABLE_QUICK_TOOLS.notes:\n        setNoteModal(row);\n        break;\n      case \"associatedClients\":\n        if (row[\"associatedClients\"]) setProviderModal(row);\n        break;\n      default:\n        break;\n    }\n  };\n\n  return (\n    <div style={{ flex: 1 }}>\n      <Row>\n        <Col md=\"12\">\n          {!loading ? (\n            <Card\n              className={`strpied-tabled-with-hover  ${\n                locationsToMap?.length === 1 || locationsToMap?.length === 2 ? \"test-details-table\" : \"\"\n              }`}\n            >\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  {t(\"labClient\")} ({filteredLocations ? formatNumber(filteredLocations.length) : 0})\n                </Card.Title>\n                <div className=\"buttonHeader\">\n                  <Icon\n                    handleClick={() => setShowFilter(!showFilter)}\n                    title={\"Filter\"}\n                    label={\"Filter\"}\n                    iconType={\"filter\"}\n                  />\n                  <Icon\n                    handleClick={() => setOpenPersonalizationModal(true)}\n                    title={t(\"personalize\")}\n                    iconType=\"personalizeIcon\"\n                    label={t(\"personalize\")}\n                  />\n\n                  {permission[CLIENT_MANAGEMENT]?.write && (\n                    <Icon\n                      handleClick={() => {\n                        const obj = { ...newLabClientObject };\n\n                        setSelectItem({ ...obj, clientID: CONFIG.clientID });\n\n                        setOpenCreateModal(true);\n                      }}\n                      label={\"Create\"}\n                      title={\"Create Facility\"}\n                      iconType={\"addUserIcon\"}\n                    />\n                  )}\n\n                  {/* <Icon\n                    handleClick={handleDownloadSample}\n                    title={\"Download Csv Sample\"}\n                    iconType=\"downloadIcon\"\n                    label=\"Download\"\n                  /> */}\n\n                  {permission[CLIENT_MANAGEMENT]?.write && (\n                    <Icon\n                      handleClick={() => {\n                        setOpenImportModal(true);\n                      }}\n                      title={\"Import Client\"}\n                      iconType=\"importIcon\"\n                      label=\"Load Clients\"\n                    />\n                  )}\n                </div>\n                {showFilter && (\n                  <Filter\n                    filterTerms={searchTerms}\n                    personalisationData={personalize}\n                    setFilter={setFilter}\n                    filter={filter}\n                    triggerFilter={triggerFilter}\n                    setTriggerFilter={setTriggerFilter}\n                    isGrouped={true}\n                    filterTabIndex={filterTabIndex}\n                    setFilterTabIndex={(value) => setFilterTabIndex(value)}\n  \n                  />\n                )}\n                <MFPagination currentPage={currentPage} handleChangePage={handleChangePage} totalPages={pageNumbers} />\n              </Card.Header>\n              <Card.Body className=\"table-full-width desktop-noScroll\">\n                <MainTable\n                  cssClass={locations.length === 0 && \"overFlow-y-hidden\"}\n                  columns={personalize}\n                  rows={locationsToMap}\n                  flipSort={flipSort}\n                  sortBy={sortBy}\n                  sortDescending={sortDescending}\n                  widthToSkip={160}\n                  selectedRows={checkboxes}\n                  draggable\n                  resizable\n                  personalisationKey={PERSONALISATION_KEY.LAB_CLIENT}\n                  handleSaveDragAndResize={(personalizeArr) => setPersonalize(personalizeArr)}\n                  tools={quickTools}\n                  dropDownOptions={LAB_CLIENT_DROPDOWN}\n                  handleDropDownClick={(type, row) => {\n                    if (type === \"Archive\") {\n                      if (\n                        row.id !== \"596daf9b-8f9d-451c-a28f-a458bac57ce4\" &&\n                        row.id !== \"a081f285-4949-45bd-9516-ba2ff3e8d0b1\"\n                      ) {\n                        setItemToDelete(row);\n                      }\n                    }\n                    if (type === \"Audit Trail\") {\n                      console.log(\"row\", row);\n                      appContext.showLogs({ ...row, recordType: \"logs\", title: `Client Logs: ${row.name}` });\n                    }\n                  }}\n                  handleCellClick={handleCellClick}\n                  customColumnCellRenderer={renderTd}\n                />\n              </Card.Body>\n            </Card>\n          ) : (\n            <Loader />\n          )}\n\n          {itemToDelete && (\n            <ConfirmationModal\n              show={itemToDelete ? true : false}\n              title=\"Remove Client\"\n              message=\"Are you sure, you want to remove Client?\"\n              handleConfirm={handleConfirmDelete}\n            />\n          )}\n\n          {noteModal && (\n            <NotesModal\n              handleClose={(obj) => {\n                setNoteModal(null);\n              }}\n              labClient={true}\n              user={user}\n              data={noteModal}\n            />\n          )}\n          {providerModal && (\n            <ClientProviderModal\n              handleClose={(obj) => {\n                setProviderModal(null);\n              }}\n              user={user}\n              data={providerModal}\n            />\n          )}\n          {openCreateModal && (\n            <LabClientModal\n              handleClose={() => {\n                setSelectItem(newLabClientObject), setOpenCreateModal(false);\n              }}\n              selectItem={selectItem}\n              handleSave={OnHandleLocation}\n              appContext={appContext}\n            />\n          )}\n\n          {openPersonalizationModal && (\n            <PersonalizationModal\n              data={personalize}\n              handleChange={handlePersonalization}\n              show={openPersonalizationModal}\n              handleClose={() => setOpenPersonalizationModal(false)}\n            />\n          )}\n          {openImportModal && (\n            <LocationImportModal\n              handleClose={() => setOpenImportModal(false)}\n              handleImport={handleImport}\n              appContext={appContext}\n              handleDownloadSample={() => onHandleDownloadSample()}\n            />\n          )}\n\n          {openErrModal && (\n            <ImportErrorModal\n              location\n              title={title}\n              data={{ errorData, successData }}\n              handleClose={async () => {\n                setOpenErrModal(false);\n                setErrorData([]);\n                setsuccessData([]);\n                setTitle(\"\");\n                dispatch(fetchAllLocations());\n              }}\n            />\n          )}\n        </Col>\n      </Row>\n    </div>\n  );\n};\n\nexport default LabClient;\n","import React, { useState, useEffect } from \"react\";\nimport { Modal, Button, Table, Row, Col } from \"react-bootstrap\";\nimport { CSVReader } from \"react-papaparse\";\nimport Select from \"react-select\";\nimport DatePicker from \"react-date-picker\";\nimport { userCompanyID } from \"utils\";\nimport moment from \"moment\";\nimport { LAB_CLAIM_STATUS_OPT } from \"constant\";\nimport RadioButton from \"components/RadioButton/RadioButton\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { selectedSubAgent } from \"store/features/subAgents/subAgentsSelectors\";\nimport { authSelector, selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport { downloadDataAsCSV } from \"utils\";\n\nconst OrderImportModal = (props) => {\n  const { handleClose, handleImport, title, noSelectDate, claim, trackingImport, handleDownloadSample } = props;\n\n  const getSelectedCompany = () => {\n    return userCompanyID.get();\n  };\n  const [selectedLocation, setSelectedLocation] = useState(getSelectedCompany());\n\n  const [orderMonth, setOrderMonth] = useState();\n  const [shipmentDate, setShipmentDate] = useState();\n  const [claimStatus, setClaimStatus] = useState(\"\");\n\n  const handleOnDrop = (data) => {\n    handleImport(data, selectedLocation, orderMonth, shipmentDate, claimStatus);\n  };\n  const handleOnError = (err) => {\n    console.log({ err });\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n  };\n\n  const downloadTemplateInfo = async () => {\n    const data = [\n      { \"Filed Name\": \"npi\", STATUS: \"( required )\", VALUE: \"1093937708\" },\n      { \"Filed Name\": \"code\", STATUS: \"( required )\", VALUE: \"1234\" },\n    ];\n\n    await downloadDataAsCSV(data, \"Import Provider Sample Info\");\n  };\n\n  return (\n    <Modal show animation={true} backdrop=\"static\" onHide={() => handleClose()} centered size={\"lg\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {title}\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"form-group-wrapper d-block\">\n          {!noSelectDate && (\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Select {claim ? \"Claim Date\" : \"Order Month\"}: </label>\n              <DatePicker\n                className=\"w-100 orderTestDob\"\n                openCalendarOnFocus={false}\n                dayPlaceholder=\"dd\"\n                monthPlaceholder=\"mm\"\n                yearPlaceholder=\"yyyy\"\n                format=\"MM/dd/y\"\n                onChange={(e) => setOrderMonth(moment(e).format(\"YYYY-MM-DD\"))}\n                value={\n                  orderMonth && new Date(orderMonth) != \"Invalid Date\"\n                    ? moment(orderMonth, \"YYYY-MM-DD\").toDate()\n                    : null\n                }\n                maxDate={new Date()}\n                minDate={new Date(\"1900-01-01\")}\n              />\n            </div>\n          )}\n          {trackingImport && (\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Select Shipment Date: </label>\n              <DatePicker\n                className=\"w-100 orderTestDob\"\n                openCalendarOnFocus={false}\n                dayPlaceholder=\"dd\"\n                monthPlaceholder=\"mm\"\n                yearPlaceholder=\"yyyy\"\n                format=\"MM/dd/y\"\n                onChange={(e) => setShipmentDate(moment(e).format(\"YYYY-MM-DD\"))}\n                value={\n                  shipmentDate && new Date(shipmentDate) != \"Invalid Date\"\n                    ? moment(shipmentDate, \"YYYY-MM-DD\").toDate()\n                    : null\n                }\n                maxDate={new Date()}\n                minDate={new Date(\"1900-01-01\")}\n              />\n            </div>\n          )}\n\n          {/* <div className=\"col-lg-12 col-12 mb-3\">\n            <label className=\"modalLineHeaders mt-0\">Upload File Below</label>\n          </div> */}\n\n          <div className=\"d-flex align-items-center justify-content-around mb-3\">\n            <div\n              style={{\n                textAlign: \"right\",\n                color: \"#42cef5\",\n                textAlign: \"center\",\n                cursor: \"Pointer\",\n              }}\n              onClick={() => downloadTemplateInfo()}\n            >\n              Download Template Info\n            </div>\n            {handleDownloadSample && (\n              <div\n                style={{\n                  textAlign: \"right\",\n                  color: \"#42cef5\",\n                  textAlign: \"center\",\n                  cursor: \"Pointer\",\n                }}\n                onClick={() => handleDownloadSample()}\n              >\n                Download Upload Template\n              </div>\n            )}\n          </div>\n\n          <CSVReader\n            onDrop={handleOnDrop}\n            onError={handleOnError}\n            addRemoveButton\n            config={{\n              header: true,\n              skipEmptyLines: true,\n            }}\n            onRemoveFile={handleOnRemoveFile}\n          >\n            <span>Drop CSV file here or click to upload.</span>\n          </CSVReader>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer className=\"flex-row-reverse\">\n        <Button variant=\"secondary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n          OK\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default OrderImportModal;\n","import {\n  createProviderAsync,\n  updateProviderAsync,\n  deleteProviderAsync,\n  updateProviderClientAsync,\n  createPortalUserAsync,\n  renderingProviderAsync,\n} from \"./providersSlice\";\n\nexport const createProvider = (provider, defaultSetting) => async (dispatch) => {\n  await dispatch(createProviderAsync({ provider, defaultSetting }));\n};\n\nexport const updateProvider = (provider, defaultSetting) => async (dispatch) => {\n  await dispatch(updateProviderAsync({ provider, defaultSetting }));\n};\n\nexport const deleteProvider = (providerId) => async (dispatch) => {\n  await dispatch(deleteProviderAsync(providerId));\n};\nexport const udpateProviderClient = (data) => async (dispatch) => {\n  await dispatch(updateProviderClientAsync(data));\n};\n\nexport const createPortalNewUser = (data) => async (dispatch) => {\n  await dispatch(createPortalUserAsync(data));\n};\n\nexport const fetchRenderingProviders = (data) => async (dispatch) => {\n  await dispatch(renderingProviderAsync(data));\n};\n","export default __webpack_public_path__ + \"static/media/search.653f3f76.svg\";","import API from \"api\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { useContext, useRef } from \"react\";\n// import ProviderSearchRecord from \"components/ProviderSearchRecord\";\nimport InputField from \"components/InputField/InputField\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport { DEFAULT_PROVIDERS, DEFAULT_PROVIDERS_ARR, PARSE_PROVIDER } from \"constant\";\nimport { useEffect, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Form from \"react-bootstrap/Form\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Select from \"react-select\";\nimport { createProvider, updateProvider, createPortalNewUser } from \"store/features/providers/providersActions\";\nimport { setOpenCreatorProviderModal as setOpenCreator } from \"store/features/providers/providersSlice\";\nimport { formatPhoneNumber } from \"utils\";\nimport { CONFIG, MESSAGE_MODES, NPI_TYPE_OPTIONS, TEST_SETTING_TYPES } from \"../../../src/constant\";\nimport { setMessage } from \"../../../src/store/features/general/generalAction\";\nimport { setLoader } from \"../../../src/store/features/general/generalSlice\";\nimport { locationsSelectors } from \"../../../src/store/features/locations/locationsSelectors\";\nimport { t } from \"../../../src/stringConstants\";\nimport { fetchAllLocations } from \"store/features/locations/locationsSlice\";\nimport searchIcon from \"../../assets/img/search.svg\";\nimport { selectedProvider } from \"store/features/providers/providersSelectors\";\nimport { AppContext } from \"context/app-context\";\nimport api from \"api\";\nimport {\n  ReactSelectCustomContainer,\n  Option,\n  customStyles,\n} from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\n\nconst ProviderModal = (props) => {\n  const [providerRoles, setProviderRoles] = useState([]);\n  const { show, user, handleClose, setting, readOnly, cssClass, providers } = props;\n  const dispatch = useDispatch();\n\n  const [newUser, setNewUser] = useState(user);\n  const [error, setError] = useState(\"\");\n  const [defaultSetting, setDefaultSetting] = useState(user.isNew ? {} : setting.defaultSetting);\n  const [phoneError, setPhoneError] = useState(\"\");\n  const [recordData, setRecordData] = useState([]);\n  const [selectSearchData, setSelectSearchData] = useState(null);\n  const childNode = useRef();\n  const appContext = useContext(AppContext);\n\n  const CLIENT_OPTIONS = useSelector(locationsSelectors).map((f) => ({ label: f.name, value: f.id }));\n  useEffect(() => {\n    if (CLIENT_OPTIONS && CLIENT_OPTIONS?.length === 0) {\n      dispatch(fetchAllLocations());\n    }\n  }, []);\n\n  useEffect(() => {\n    setNewUser({ ...user, labName: appContext?.userLabName || \"Medflow\" });\n  }, [user]);\n\n  useEffect(() => {\n    if (!newUser?.isNew) {\n      const findProvider = providers.find((f) => f.id === newUser?.id);\n      setNewUser({ ...newUser, subID: findProvider?.subID });\n    }\n  }, [providers]);\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setNewUser({ ...newUser, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setNewUser({ ...newUser, ...addressObj });\n    }\n  };\n\n  const handleSave = async (user, defaultSetting) => {\n    try {\n      if (user.isNew) {\n        dispatch(createProvider(user, defaultSetting));\n        dispatch(setMessage(t(\"providerCreatedSuccessfully\"), MESSAGE_MODES.success));\n      } else {\n        dispatch(updateProvider(user, defaultSetting));\n        dispatch(setMessage(t(\"providerUpdatedSuccessfully\"), MESSAGE_MODES.success));\n      }\n    } catch (error) {\n      console.log(\"ERROR:User-\", error);\n      dispatch(setMessage(error.message, MESSAGE_MODES.error));\n      dispatch(setOpenCreator(true));\n    }\n  };\n  useEffect(() => {\n    const fetchUserRoles = async () => {\n      const roles = await api.getGeneralSetting(TEST_SETTING_TYPES.ROLE);\n      if (roles?.length > 0) {\n        setProviderRoles(roles.filter((role) => role.value === \"Provider\"));\n      }\n    };\n    fetchUserRoles();\n  }, []);\n  const populate = (record) => {\n    setSelectSearchData(null);\n    setRecordData([]);\n\n    const { basic, addresses, taxonomies } = record;\n\n    // Find the LOCATION address if available\n    const locationAddress = addresses?.find((address) => address.address_purpose === \"LOCATION\") || addresses[0];\n\n    // Determine the primary taxonomy\n    const primaryTaxonomy = taxonomies.find((taxonomy) => taxonomy.primary) || taxonomies[0];\n\n    // Format phone numbers if they exist\n    const formattedPhoneNumber = locationAddress?.telephone_number\n      ? formatPhoneNumber(`+1${locationAddress.telephone_number}`)\n      : \"\";\n\n    const formattedFaxNumber = locationAddress?.fax_number ? formatPhoneNumber(`+1${locationAddress.fax_number}`) : \"\";\n\n    // Create the user object\n    const obj = {\n      ...newUser,\n      firstName: basic.first_name,\n      middleName: basic.middle_name,\n      lastName: basic.last_name,\n      street: locationAddress?.address_1,\n      city: locationAddress?.city,\n      zip: locationAddress?.postal_code,\n      state: locationAddress?.state,\n      phoneNumber: formattedPhoneNumber,\n      fax: formattedFaxNumber,\n      taxid: primaryTaxonomy?.code,\n      npi: record.number,\n      npiType: record.enumeration_type,\n      speciality: primaryTaxonomy?.desc,\n      isFinder: true,\n    };\n\n    setNewUser(obj);\n  };\n\n  const searchProvider = async (provider) => {\n    let record = [];\n    dispatch(setLoader(true));\n    try {\n      record = await API.searchProviderAPI(provider);\n      dispatch(setLoader(false));\n    } catch (err) {\n      console.log(err.message);\n      dispatch(setLoader(false));\n    }\n\n    if (record.length === 0) {\n      setError(\"records Not Found!\");\n      return;\n    }\n\n    if (record && record.length === 1) {\n      populate(record[0]);\n    }\n    if (record && record.length > 1) {\n      setRecordData(record);\n    }\n  };\n\n  const handleFindProvider = (newUSer) => {\n    const keys = [\"firstName\", \"lastName\", \"npi\"];\n    if (keys.some((e) => newUser[e])) {\n      searchProvider(newUser);\n    } else {\n      dispatch(setMessage(\"Please Fill Provider Name Or NPI\", MESSAGE_MODES.info));\n    }\n  };\n\n  const onHandleSave = () => {\n    let roles = [];\n\n    const provider = getProviderForUser();\n\n    const objToSave = { ...newUser, provider };\n\n    Object.assign(objToSave, {\n      name: `${newUser.firstName.trim()} ${newUser?.middleName?.trim() || \"\"} ${newUser?.lastName.trim()}`,\n    });\n\n    if (!newUser.npi || !newUser.npi.trim()) {\n      setError(\"NPI is required\");\n      return;\n    }\n\n    // Find Existing NPI Number\n    const findProvider = providers.find((f) => f.npi === newUser.npi);\n    const isPortalCall = newUser.isCheckedUser === \"active\" || newUser?.subID;\n\n    if (findProvider && (newUser.isNew || (!newUser.isNew && newUser.id !== user.id))) {\n      setError(\"NPI is already exist\");\n      return;\n    }\n    if (newUser?.isCheckedUser === \"active\" && !newUser.userRole) {\n      setError(\"Provider is required\");\n      return;\n    }\n    if (!newUser.firstName || !newUser.firstName.trim()) {\n      setError(\"First Name is required\");\n      return;\n    }\n\n    if (!newUser.lastName || !newUser.lastName.trim()) {\n      setError(\"Last Name is required\");\n      return;\n    }\n\n    if (isPortalCall) {\n      if (!newUser.associatedClient) {\n        setError(\"Please select the Associated Client\");\n        return;\n      }\n\n      if (!newUser.email) {\n        setError(\"Please enter the email\");\n        return;\n      }\n    }\n\n    if (!newUser.phoneNumber) {\n      setError(\"Please enter the phone number\");\n      return;\n    }\n\n    let provDefaultSetting = defaultSetting;\n    if (!newUser.isNew && setting.defaultSetting && Object.keys(setting.defaultSetting).length > 0) {\n      const obj = {};\n      DEFAULT_PROVIDERS_ARR.forEach((key) => {\n        if (defaultSetting[key] === setting.defaultSetting[key]) {\n          obj[key] = defaultSetting[key] || \"\";\n        } else if (defaultSetting[key] !== setting.defaultSetting[key] && setting.defaultSetting[key] === newUser.id) {\n          obj[key] = defaultSetting[key] || \"\";\n        } else if (defaultSetting[key] && defaultSetting[key] !== setting.defaultSetting[key]) {\n          obj[key] = defaultSetting[key] || \"\";\n        } else {\n          obj[key] = setting.defaultSetting[key] || \"\";\n        }\n      });\n      provDefaultSetting = obj;\n    }\n\n    handleSave(objToSave, provDefaultSetting);\n    handleClose();\n  };\n\n  const handleResultReportingChange = (e) => {\n    const checked = e.target.checked;\n    if (!checked) {\n      setNewUser({\n        ...newUser,\n        setting: { ...newUser.setting, resultReportingPatient: checked, portalOnly: false, patientPreference: false },\n      });\n      return;\n    }\n\n    setNewUser({\n      ...newUser,\n      setting: { ...newUser.setting, resultReportingPatient: checked },\n    });\n  };\n\n  const handleUserCreate = (e) => {\n    const { name, checked } = e.target;\n    const value = checked ? \"active\" : \"inactive\";\n    setNewUser({ ...newUser, [name]: value, password: \"\", isCheckedUser: value });\n  };\n\n  const handleSelectChange = (selectedValue) => {\n    if (!selectedValue) {\n      setNewUser((prevUser) => ({ ...prevUser, userRole: null }));\n      return;\n    }\n\n    const { id, value, label, code } = selectedValue;\n    setNewUser((prevUser) => ({ ...prevUser, userRole: { id, value, label, code } }));\n  };\n\n  const getProviderForUser = () => {\n    return CLIENT_OPTIONS.filter(\n      (f) => f.value === newUser.associatedClient || newUser?.linkedClient?.split(\",\").includes(f.value)\n    ).map((p) => {\n      return { ...p, id: p.value, name: p.label };\n    });\n  };\n\n  const createUserForPortal = async () => {\n    if (!newUser.associatedClient) {\n      setError(\"Please select the Associated Client\");\n      return;\n    }\n\n    if (!newUser.email) {\n      setError(\"Please enter the email\");\n      return;\n    }\n    // const response = await dispatch(createPortalNewUser({ ...newUser, isShowMessage: true })).unwrap();\n\n    const provider = getProviderForUser();\n\n    dispatch(createPortalNewUser({ ...newUser, provider, isShowMessage: true }));\n  };\n\n  return (\n    <>\n      <Modal\n        show={show}\n        backdrop=\"static\"\n        animation={true}\n        onHide={() => {\n          setNewUser(\"\");\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        className={cssClass ?? \"\"}\n        size={\"2xl\"}\n        keyboard={false}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {newUser.isNew ? \"Create Provider\" : \"Update Provider\"}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"createClientsWrapper\">\n            <div\n              className=\"leftSide\"\n              style={{\n                flex: \"0 0 calc(70% - 15px)\",\n                maxWidth: \"calc(70% - 15px)\",\n              }}\n            >\n              <div style={{ display: \"flex\", width: \"100%\", justifyContent: \"space-between\", gap: \"10px\" }}>\n                <div style={{ display: \"flex\", width: \"100%\" }}>\n                  <div style={{ display: \"flex\", width: \"33.33%\", paddingRight: \"12px\" }}>\n                    <InputField\n                      type=\"text\"\n                      groupWrapper={\"form-group-wrapper\"}\n                      inputStyle=\"modalInput\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"NPI:\"\n                      value={newUser.npi}\n                      index=\"npi\"\n                      maxLength={20}\n                      placeholder=\"Search By NPI\"\n                      handleChange={(e) => setNewUser({ ...newUser, npi: e.target.value })}\n                      required\n                    />\n                    <img\n                      src={searchIcon}\n                      style={{ width: \"30px\", marginLeft: \"10px\", marginTop: \"5px\", cursor: \"pointer\" }}\n                      onClick={() => handleFindProvider(newUser)}\n                    />\n                  </div>\n                </div>\n              </div>\n              <div className=\"row\">\n                <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n                  <div className={\" crew-profile-row4 crew-profile-again\"}>\n                    <InputField\n                      type=\"text\"\n                      inputStyle=\"modalInput w-100\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"First Name\"\n                      value={newUser.firstName}\n                      index=\"firstName\"\n                      maxLength={30}\n                      placeholder=\"First Name\"\n                      handleChange={(e) => setNewUser({ ...newUser, firstName: e.target.value })}\n                      required\n                    />\n\n                    <InputField\n                      type=\"text\"\n                      inputStyle=\"modalInput w-100\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"Middle Name\"\n                      value={newUser.middleName}\n                      index=\"middleName\"\n                      maxLength={30}\n                      placeholder=\"Middle Name\"\n                      handleChange={(e) => setNewUser({ ...newUser, middleName: e.target.value })}\n                    />\n\n                    <InputField\n                      type=\"text\"\n                      inputStyle=\"modalInput w-100\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"Last Name\"\n                      value={newUser.lastName}\n                      index=\"lastName\"\n                      maxLength={30}\n                      placeholder=\"Last Name\"\n                      handleChange={(e) => setNewUser({ ...newUser, lastName: e.target.value })}\n                      required\n                    />\n                  </div>\n                </div>\n                <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n                  <div className={\" crew-profile-row4 crew-profile-again\"}>\n                    {/* <InputField\n                  type=\"address\"\n                  inputStyle=\"modalInput w-100\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"Address\"\n                  value={newUser.street}\n                  index=\"street\"\n                  maxLength={65}\n                  placeholder=\"Address\"\n                  handleChange={(val, flag) => handleUpdateAddress(val, flag)}\n                /> */}\n                    <InputField\n                      type=\"address\"\n                      inputStyle=\"modalInput w-100\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"Address\"\n                      value={newUser.street}\n                      index=\"city\"\n                      placeholder=\"City\"\n                      handleChange={(val, flag) => handleUpdateAddress(val, flag)}\n                    />\n\n                    <InputField\n                      type=\"text\"\n                      inputStyle=\"modalInput w-100\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"City\"\n                      value={newUser.city}\n                      index=\"city\"\n                      placeholder=\"City\"\n                      handleChange={(e) => setNewUser({ ...newUser, city: e.target.value })}\n                    />\n                    <InputField\n                      type=\"text\"\n                      inputStyle=\"modalInput\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"State\"\n                      value={newUser.state}\n                      index=\"state\"\n                      maxLength={20}\n                      placeholder=\"State\"\n                      handleChange={(e) => setNewUser({ ...newUser, state: e.target.value })}\n                    />\n                  </div>\n                </div>\n\n                <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n                  <div className={\" crew-profile-row4 crew-profile-again\"}>\n                    <InputField\n                      type=\"text\"\n                      inputStyle=\"modalInput\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"Zip Code\"\n                      value={newUser.zip}\n                      index=\"zip\"\n                      maxLength={20}\n                      placeholder=\"Zip Code\"\n                      handleChange={(e) => setNewUser({ ...newUser, zip: e.target.value })}\n                    />\n\n                    <InputField\n                      type=\"phone\"\n                      inputStyle=\"modalInput\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"Phone Number\"\n                      value={newUser.phoneNumber}\n                      index=\"phoneNumber\"\n                      maxLength={20}\n                      placeholder=\"Enter Phone\"\n                      handleChange={(e) => setNewUser({ ...newUser, phoneNumber: e })}\n                      required\n                    />\n\n                    <InputField\n                      type=\"text\"\n                      inputStyle=\"modalInput\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"Email\"\n                      value={newUser.email}\n                      index=\"email\"\n                      maxLength={100}\n                      placeholder=\"Email\"\n                      handleChange={(e) => setNewUser({ ...newUser, email: e.target.value })}\n                    />\n                  </div>\n                </div>\n\n                <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n                  <div className={\" crew-profile-row4 crew-profile-again\"}>\n                    <InputField\n                      type=\"dropDown\"\n                      options={NPI_TYPE_OPTIONS}\n                      inputStyle=\"\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"NPI Type:\"\n                      isClearable={true}\n                      value={NPI_TYPE_OPTIONS.find((f) => f.value === newUser.npiType) || \"\"}\n                      index=\"npiType\"\n                      placeholder=\"NPI\"\n                      handleChange={(e) => setNewUser({ ...newUser, npiType: e?.value })}\n                    />\n\n                    <InputField\n                      type=\"text\"\n                      inputStyle=\"modalInput\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"Taxonomy ID:\"\n                      value={newUser.taxid}\n                      index=\"taxid\"\n                      maxLength={20}\n                      placeholder=\"Taxonomy ID\"\n                      handleChange={(e) => setNewUser({ ...newUser, taxid: e.target.value })}\n                    />\n                    <InputField\n                      type=\"text\"\n                      label=\"Speciality:\"\n                      inputStyle=\"modalInput\"\n                      labelStyle=\"text-capitalize\"\n                      value={newUser.speciality || \"\"}\n                      placeholder=\"Enter Speciality\"\n                      index=\"specialitypi\"\n                      handleChange={(e) => setNewUser({ ...newUser, speciality: e.target.value })}\n                    />\n                  </div>\n                </div>\n\n                <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n                  <div className={\"crew-profile-row4 crew-profile-again\"}>\n                    {/* <Form.Group className=\"form-group-wrapper\">\n                  <Form.Label>Default:</Form.Label>\n\n                  <Select\n                    options={DEFAULT_PROVIDERS}\n                    blurInputOnSelect={true}\n                    isClearable={true}\n                    isMulti\n                    menuPlacement=\"auto\"\n                    value={\n                      defaultSetting && Object.keys(defaultSetting).length > 0\n                        ? Object.entries(defaultSetting)\n                            .filter(([key, value]) => value === newUser.id || (newUser.isNew && value))\n                            .map(([key, val]) => ({ value: key, label: PARSE_PROVIDER[key] }))\n                        : null\n                    }\n                    placeholder=\"Select Defualt Provider\"\n                    onChange={(e) => {\n                      let obj = {};\n                      e.map((m) => {\n                        obj[m.value] = newUser.id || true;\n                      });\n\n                      setDefaultSetting(obj);\n                    }}\n                  />\n                </Form.Group> */}\n\n                    <InputField\n                      type=\"phone\"\n                      inputStyle=\"modalInput\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"Fax\"\n                      value={newUser.fax}\n                      index=\"fax\"\n                      maxLength={20}\n                      placeholder=\"Enter Fax\"\n                      handleChange={(e) => setNewUser({ ...newUser, fax: e })}\n                    />\n\n                    <Form.Group className=\"form-group-wrapper\">\n                      <Form.Label>Associated Client:</Form.Label>\n\n                      <Select\n                        styles={customStyles}\n                        options={CLIENT_OPTIONS}\n                        blurInputOnSelect={true}\n                        isClearable={true}\n                        isMulti\n                        menuPlacement=\"auto\"\n                        hideSelectedOptions={false}\n                        value={\n                          CLIENT_OPTIONS.filter(\n                            (f) =>\n                              f.value === newUser.associatedClient ||\n                              newUser?.linkedClient?.split(\",\").includes(f.value)\n                          ) || []\n                        }\n                        components={{ Option, ValueContainer: ReactSelectCustomContainer }}\n                        placeholder=\"Select Client\"\n                        onChange={(selectedOptions) => {\n                          const associatedClientValues = selectedOptions?.[0]?.value || \"\";\n                          const linkedClientValue = selectedOptions\n                            ? selectedOptions.map((option) => option.value).join(\",\")\n                            : \"\";\n                          setNewUser({\n                            ...newUser,\n                            linkedClient: linkedClientValue,\n                            associatedClient: associatedClientValues,\n                          });\n                        }}\n                      />\n                    </Form.Group>\n                    <InputField\n                      type=\"text\"\n                      groupWrapper={\"form-group-wrapper \"}\n                      inputStyle=\"modalInput\"\n                      labelStyle=\"text-capitalize\"\n                      label=\"Internal Reference Code:\"\n                      value={newUser.code}\n                      index=\"code\"\n                      maxLength={8}\n                      placeholder=\"Internal Reference Code\"\n                      handleChange={(e) => setNewUser({ ...newUser, code: e.target.value })}\n                    />\n                  </div>\n                </div>\n              </div>\n              <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n                <div className=\"crew-profile-row4 crew-profile-again\">\n                  <div className=\"d-flex align-items-center column-gap-10 profile-detail\">\n                    <span className=\"section-title\">Active: </span>\n                    <SwitchToggle\n                      checked={newUser.isActive}\n                      handleChange={(e) =>\n                        setNewUser({\n                          ...newUser,\n                          isActive: e.target.checked,\n                        })\n                      }\n                    />\n                  </div>\n\n                  {newUser?.isNew && (\n                    <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n                      {/* Toggle & Select Provider in a single row */}\n                      <div className=\"d-flex align-items-center justify-content-between gap-3\">\n                        {/* Toggle with increased width */}\n\n                        <div className=\"d-flex align-items-center gap-2 flex-grow-1\" style={{ minWidth: \"200px\" }}>\n                          <span style={{ whiteSpace: \"nowrap\", flexShrink: 0 }}>Create Portal Access?</span>\n\n                          {/* Toggle Switch with Explicit Width & Alignment */}\n                          <div style={{ minWidth: \"50px\", display: \"flex\", justifyContent: \"center\" }}>\n                            <SwitchToggle\n                              id=\"isCheckedUser\"\n                              name=\"isCheckedUser\"\n                              handleToogleChange={handleUserCreate}\n                              checked={newUser?.isCheckedUser === \"active\"}\n                            />\n                          </div>\n                        </div>\n\n                        {/* Select Provider (right-shifted) */}\n                      </div>\n                    </div>\n                  )}\n\n                  {!newUser?.isNew && !newUser?.subID && (\n                    <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper d-flex align-items-center justify-content-between\">\n                      <span>Portal Access</span>\n                      <span\n                        className=\"modalButtons cursor-pointer text-decoration-underline text-primary\"\n                        variant=\"secondary\"\n                        onClick={createUserForPortal}\n                      >\n                        Create User\n                      </span>\n                    </div>\n                  )}\n\n                  <Form.Group\n                    style={{\n                      visibility: newUser?.isCheckedUser === \"active\" ? \"visible\" : \"hidden\",\n                      opacity: newUser?.isCheckedUser === \"active\" ? 1 : 0,\n                      height: \"auto\",\n                    }}\n                    className=\" form-group-wrapper mb-0 flex-grow-1\"\n                  >\n                    <Form.Label className=\"mb-0\">\n                      Access Role <span style={{ fontSize: \"20px\", color: \"maroon\" }}>*</span>:\n                    </Form.Label>\n\n                    <Select\n                      options={providerRoles}\n                      blurInputOnSelect={true}\n                      isClearable={true}\n                      menuPlacement=\"auto\"\n                      value={providerRoles?.find((role) => role.id === newUser?.userRole?.id)}\n                      placeholder=\"Select Provider\"\n                      onChange={handleSelectChange}\n                      getOptionLabel={(option) => option.label}\n                      getOptionValue={(option) => option.id}\n                    />\n                  </Form.Group>\n                </div>\n              </div>\n            </div>\n            <div\n              className=\"leftSide\"\n              style={{\n                flex: \"0 0 calc(30% - 15px )\",\n                maxWidth: \"calc(30% - 15px )\",\n              }}\n            >\n              <div className=\"p-3 permissionBox\">\n                <strong>Result Reporting</strong>\n                <div>\n                  <div className=\"d-flex align-items-center justify-content-between userPermission\">\n                    <span className=\"mx-1 font-bold\">Provider</span>\n                    <SwitchToggle\n                      checked={newUser?.setting?.resultReportingProvider}\n                      handleChange={(e) =>\n                        setNewUser({\n                          ...newUser,\n                          setting: { ...newUser.setting, resultReportingProvider: e.target.checked },\n                        })\n                      }\n                    />\n                  </div>\n                  <div className=\"userPermission d-block\">\n                    <div className=\"d-flex align-items-center justify-content-between\">\n                      <span className=\"mx-1 font-bold\">Patient</span>\n                      <SwitchToggle\n                        checked={newUser?.setting?.resultReportingPatient}\n                        handleChange={handleResultReportingChange}\n                      />\n                    </div>\n                    <div style={{ marginLeft: \"10px\" }}>\n                      <div className=\"d-flex align-items-center justify-content-between\">\n                        <span className=\"mx-1\">Portal Only</span>\n                        <SwitchToggle\n                          checked={newUser?.setting?.portalOnly}\n                          handleChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              setting: { ...newUser.setting, portalOnly: e.target.checked },\n                            })\n                          }\n                          disabled={!newUser?.setting?.resultReportingPatient}\n                        />\n                      </div>\n\n                      <div className=\"d-flex align-items-center justify-content-between\">\n                        <span className=\"mx-1\">Patient Preference</span>\n                        <SwitchToggle\n                          checked={newUser?.setting?.patientPreference}\n                          handleChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              setting: { ...newUser.setting, patientPreference: e.target.checked },\n                            })\n                          }\n                          disabled={!newUser?.setting?.resultReportingPatient}\n                        />\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </Modal.Body>\n        <div className=\"px-4\" style={{ minHeight: \"3vh\" }}>\n          {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n        </div>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n\n          {!readOnly && (\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"secondary\"\n              className=\"modalButtons headerButton btn-fill\"\n              onClick={onHandleSave}\n            >\n              {newUser.isNew ? \"Create\" : \"Update\"}\n            </Button>\n          )}\n        </Modal.Footer>\n      </Modal>\n      {recordData.length > 1 && (\n        <ProviderSearchRecord\n          data={recordData}\n          handleSelect={populate}\n          handleClose={() => {\n            setRecordData([]), setSelectSearchData(null);\n          }}\n          setSelectSearchData={setSelectSearchData}\n          selectSearchdata={selectSearchData}\n        />\n      )}\n    </>\n  );\n};\n\nexport default ProviderModal;\n","import api from \"api\";\nimport Loader from \"components/Loader/Loader\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport NotesModal from \"components/Notes/NotesModal\";\nimport OrderImportModal from \"components/Modal/Order/OrderImportModal\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport ProviderModal from \"components/Modal/ProviderModal\";\nimport MainTable from \"components/Table/MainTable\";\nimport UserPasswordModal from \"components/Users/UserPasswordModal\";\nimport { PROVIDER_PERSONALIZE } from \"constants/personalization\";\nimport { useEffect, useState, useContext, useMemo } from \"react\";\nimport { Card, Col, Row } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { selectedCompanySetting } from \"store/features/companySetting/companySettingSelectors\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { createProvider, deleteProvider, updateProvider } from \"store/features/providers/providersActions\";\nimport { newUserProviderSelector } from \"store/features/providers/providersSelectors\";\nimport { openCreatorProviderSelector } from \"store/features/providers/providersSelectors\";\nimport { selectedProvider } from \"store/features/providers/providersSelectors\";\nimport {\n  setOpenCreatorProviderModal as setOpenCreator,\n  setNewUserProvider as setNewUser,\n  setFilteredProviders,\n  fetchAllProviders,\n} from \"store/features/providers/providersSlice\";\nimport \"../../src/tableStyling.css\";\nimport Filter from \"../components/Filter\";\nimport moment from \"moment\";\nimport Icon from \"../components/Icon\";\nimport {\n  MESSAGE_MODES,\n  NEW_PROVIDER_OBJECT,\n  PAGE_LIMIT,\n  PERSONALISATION_KEY,\n  TABLE_QUICK_TOOLS,\n  USER_ROLE_TITLE,\n  PROVIDER_MANAGEMENT,\n  PROVIDER_DROPDOWN_OPTIONS,\n  TEST_SETTING_TYPES,\n  TEST_CATEGORY_OPTIONS,\n  TEST_SOURCE_OPTIONS,\n  TESTS_UNITS_SET,\n  CANCEL_REASON_OPTIONS,\n} from \"../constant\";\nimport { t } from \"../stringConstants\";\nimport {\n  formatNumber,\n  personalisationInLC,\n  personalizationLocalStorage,\n  userCompanyID,\n  downloadDataAsCSV,\n  draggablePersonalizationLocalStorage,\n  sortSettingsList,\n} from \"../utils\";\nimport { setLoader } from \"store/features/general/generalSlice\";\nimport { AppContext } from \"context/app-context\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\n\nconst Provider = (props) => {\n  const [triggerFilter, setTriggerFilter] = useState(false);\n  const [filterTabIndex, setFilterTabIndex] = useState(0);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [openPasswordModal, setOpenPasswordModal] = useState(false);\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n  const [userToDelete, setUserToDelete] = useState(\"\");\n  const [timeFilter, setTimeFilter] = useState(\"All Users\");\n  const [showFilter, setShowFilter] = useState(false);\n  const [noteModal, setNoteModal] = useState(null);\n  const [filter, setFilter] = useState({});\n  const dispatch = useDispatch();\n  const [openImportModal, setOpenImportModal] = useState(false);\n  const [personalize, setPersonalize] = useState([]);\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const appContext = useContext(AppContext);\n  const user = appContext?.user;\n  const company = useSelector(selectedCompanySetting);\n  const permission = useSelector(userGivenPermission);\n\n  const quickTools = [\n    TABLE_QUICK_TOOLS.checkbox,\n    permission[PROVIDER_MANAGEMENT]?.write && TABLE_QUICK_TOOLS.edit,\n    permission[PROVIDER_MANAGEMENT]?.write && TABLE_QUICK_TOOLS.notes,\n    // permission[PROVIDER_MANAGEMENT]?.delete && TABLE_QUICK_TOOLS.delete,\n  ];\n\n  const PROVIDER_DROPDOWN = useMemo(() => {\n    const hasDeletePermission = permission[PROVIDER_MANAGEMENT]?.delete;\n    const deleteOption = { value: \"delete\", title: \"Archive\" };\n\n    const newDropdownOptions = PROVIDER_DROPDOWN_OPTIONS.filter((option) => option.value !== \"delete\");\n\n    if (hasDeletePermission) {\n      newDropdownOptions.push(deleteOption);\n    }\n\n    return newDropdownOptions;\n  }, [permission[PROVIDER_MANAGEMENT]?.delete]);\n\n  const openCreator = useSelector(openCreatorProviderSelector);\n  const newUser = useSelector(newUserProviderSelector);\n  const { providers, filteredProviders } = useSelector(selectedProvider);\n\n  const searchTerms = [\"Name\", \"NPI\"];\n\n  const [currentPage, setCurrentPage] = useState(1);\n  const [usersPerPage, setUsersPerPage] = useState(PAGE_LIMIT);\n\n  const handleCheckboxChange = (e, row) => {\n    const filteredList = checkboxes.filter((c) => c !== row.id);\n    if (e.target.checked) {\n      filteredList.push(row.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n\n    const models = targetArray.filter((obj) => {\n      return filterKeys.every((key) => {\n        if (!filters[key] || filters[key].length === 0) {\n          return true;\n        }\n\n        if (key === \"First Name\") {\n          return obj.firstName && obj.firstName.toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"Last Name\") {\n          return obj.lastName && obj.lastName.toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"userRole\") {\n          return obj.userRole && USER_ROLE_TITLE[obj.userRole].toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"orders\") {\n          return parseFloat(obj[key]) === parseFloat(filters[key]);\n        }\n\n        if (key === \"claimAmount\" || key === \"openAmount\" || key === \"paid\") {\n          if (obj[key] == null || filters[key] == null) {\n            return false;\n          }\n          return obj[key].toString().includes(filters[key].toString());\n        }\n\n        // Handling npiType as a simple string comparison\n        if (key === \"npiType\") {\n          return obj.npiType && obj.npiType === filters[key];\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n\n    return models;\n  };\n\n  const createProviderInfo = async (user, defaultSetting) => {\n    try {\n      if (user.isNew) {\n        dispatch(createProvider(user, defaultSetting));\n        dispatch(setMessage(t(\"providerCreatedSuccessfully\"), MESSAGE_MODES.success));\n      } else {\n        dispatch(updateProvider(user, defaultSetting));\n        dispatch(setMessage(t(\"providerUpdatedSuccessfully\"), MESSAGE_MODES.success));\n      }\n    } catch (error) {\n      console.log(\"ERROR:User-\", error);\n      dispatch(setMessage(error.message, MESSAGE_MODES.error));\n      dispatch(setOpenCreator(true));\n    }\n  };\n\n  const handleClose = () => {\n    dispatch(setOpenCreator(false));\n    setOpenDeleteConfirmation(false);\n  };\n\n  const handlePasswordClose = () => {\n    setOpenPasswordModal(false);\n  };\n\n  const handleChangePage = (number) => {\n    setCurrentPage(number);\n  };\n\n  const indexOfLastUser = currentPage * usersPerPage;\n  const indexOfFirstUser = indexOfLastUser - usersPerPage;\n  const currentUsers = (users) => {\n    if (!users || !Array.isArray(users)) return [];\n    return users.slice(indexOfFirstUser, indexOfLastUser);\n  };\n\n  let usersToMap = currentUsers(filteredProviders);\n\n  const getPageNumbers = (users) => {\n    const pageNumbers = users.length > PAGE_LIMIT ? Math.ceil(users.length / PAGE_LIMIT) : 1;\n    return pageNumbers;\n  };\n\n  let pageNumbers = getPageNumbers(providers);\n\n  useEffect(() => {\n    // if (filteredProviders.length > 0) dispatch(setFilteredProviders(sortUsers(filteredProviders, sortBy)));\n    if (filteredProviders.length > 0)\n      dispatch(setFilteredProviders(sortSettingsList(sortBy, sortDescending, filteredProviders)));\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (providers.length > 0) {\n      dispatch(setFilteredProviders(nestedFilter(providers, filter)));\n      setCurrentPage(1);\n    }\n  }, [filter]);\n\n  const getAllProviders = async () => {\n    try {\n      await dispatch(fetchAllProviders());\n    } catch (err) {\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  useEffect(() => {\n    getAllProviders();\n    const response = draggablePersonalizationLocalStorage.get(user, PERSONALISATION_KEY.PROVIDER, PROVIDER_PERSONALIZE);\n    setPersonalize(response);\n  }, []);\n\n  if (filteredProviders.length > 0) {\n    pageNumbers = getPageNumbers(filteredProviders);\n  }\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n    handleChangePage(1);\n  };\n\n  const handleImport = async (providerData) => {\n    setOpenImportModal(false);\n    try {\n      if (providerData.length === 0) return;\n      dispatch(setLoader(true));\n      const arr = [];\n      const notNpiFound = [];\n      const ttlLength = providerData.length;\n      for (let index = 0; index < ttlLength; index++) {\n        const { data } = providerData[index];\n        const provider = { ...data };\n\n        if (!provider.npi || !provider.npi.trim()) {\n          notNpiFound.push(provider);\n          continue;\n        }\n\n        if (providers.find((f) => f.npi === provider.npi)) {\n          notNpiFound.push(provider);\n          continue;\n        }\n\n        arr.push({\n          ...provider,\n          npi: provider.npi.replace(/[^A-Z0-9]/gi, \"\"),\n          clientID: userCompanyID.get(),\n          requestedBy: user.sub,\n          requestedByName: user.name,\n        });\n      }\n\n      const fileName = `provider/provider_import${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}.csv`;\n      console.log(\"import Array\", arr);\n      await api.saveFileOnBucket(arr, fileName);\n      dispatch(setLoader(false));\n      if (notNpiFound.length > 0) {\n        dispatch(\n          setMessage(`${notNpiFound.length} Provider(s) is Invalid  Not Found NPI or Already Exist`, MESSAGE_MODES.info)\n        );\n      }\n    } catch (err) {\n      dispatch(setMessage(err, MESSAGE_MODES.error));\n      dispatch(setLoader(false));\n    }\n  };\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n    setOpenPersonalizationModal(false);\n    const personalisationData = personalisationInLC.saveAs(data, \"provider\");\n    await api.saveUserPersonalisation(appContext.user.sub, personalisationData);\n  };\n\n  const handleOpenCreateModal = () => {\n    const obj = NEW_PROVIDER_OBJECT;\n    dispatch(setNewUser({ ...obj, isNew: true }));\n    dispatch(setOpenCreator(true));\n  };\n\n  const handleEditUser = (user) => {\n    const obj = {\n      ...user,\n      isNew: false,\n    };\n    dispatch(setNewUser(obj));\n    dispatch(setOpenCreator(true));\n  };\n\n  const handleConfirm = async (isConfirm) => {\n    setOpenDeleteConfirmation(false);\n\n    if (!isConfirm) {\n      setUserToDelete(null);\n      return;\n    }\n    try {\n      setUserToDelete(null);\n      await dispatch(deleteProvider(userToDelete.id));\n      dispatch(setMessage(\"Provider Archived Successfully\", MESSAGE_MODES.success));\n    } catch (error) {\n      dispatch(setMessage(error.message, MESSAGE_MODES.error));\n    }\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n\n      case TABLE_QUICK_TOOLS.edit:\n        handleEditUser(row);\n        break;\n\n      case TABLE_QUICK_TOOLS.delete:\n        setOpenDeleteConfirmation(true);\n        setUserToDelete(row);\n        break;\n\n      case TABLE_QUICK_TOOLS.notes:\n        setNoteModal(row);\n        break;\n\n      default:\n        break;\n    }\n  };\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"phoneNumber\") {\n      return (\n        <td key={`phone${item.id}`} style={{ textAlign: \"center\" }}>\n          {row?.phoneNumber || \"\"}\n        </td>\n      );\n    }\n    if (item.itemKey === \"orders\") {\n      return (\n        <td key={`order_${item.id}`} style={{ textAlign: \"center\" }}>\n          {row?.orders || \"0\"}\n        </td>\n      );\n    }\n  };\n\n  const onHandleDownloadSample = async (type = 2) => {\n    // if template info\n    if (type === 1) {\n      const data = [\n        { \"Filed Name\": \"npi\", STATUS: \"( required )\", VALUE: \"1093937708\" },\n        { \"Filed Name\": \"code\", STATUS: \"( required )\", VALUE: \"1234\" },\n      ];\n\n      await downloadDataAsCSV(data, \"Import Provider Template Info\");\n    } else {\n      const data = [\n        { npi: \"1093937708\", code: 1234 },\n        { npi: \"3434341111\", code: 1235 },\n      ];\n\n      await downloadDataAsCSV(data, \"Import Provider Sample Info\");\n    }\n  };\n\n  const processDefaultDictionayData = async ({ list, type }) => {\n    for (let i = 0; i < list.length; i++) {\n      await api.createOption(type, list[i].label);\n    }\n  };\n\n  const addDefaultData = () => {\n    processDefaultDictionayData({ list: TESTS_UNITS_SET, type: TEST_SETTING_TYPES.UNIT });\n    processDefaultDictionayData({ list: TEST_SOURCE_OPTIONS, type: TEST_SETTING_TYPES.SOURCE });\n    processDefaultDictionayData({ list: TEST_CATEGORY_OPTIONS, type: TEST_SETTING_TYPES.DEPARTMENT });\n    processDefaultDictionayData({ list: CANCEL_REASON_OPTIONS, type: TEST_SETTING_TYPES.CANCEL_REASON });\n  };\n\n  return (\n    <div style={{ flex: 1 }}>\n      <Row>\n        <Col>\n          <Card\n            className={`strpied-tabled-with-hover ${\n              usersToMap?.length === 1 || usersToMap?.length === 2 ? \"test-details-table\" : \"\"\n            }`}\n          >\n            <Card.Header>\n              <Card.Title\n                as=\"h4\"\n                style={{\n                  marginBottom: 10,\n                  fontWeight: \"bold\",\n                }}\n              >\n                {t(\"provider\")} ({filteredProviders ? formatNumber(filteredProviders.length) : providers.length})\n              </Card.Title>\n              <div className=\"buttonHeader\">\n                <Icon\n                  handleClick={() => setShowFilter(!showFilter)}\n                  title={\"Filter\"}\n                  label={\"Filter\"}\n                  iconType={\"filter\"}\n                />\n\n                <Icon\n                  handleClick={() => setOpenPersonalizationModal(true)}\n                  title={t(\"personalize\")}\n                  label={t(\"personalize\")}\n                  iconType={\"personalizeIcon\"}\n                />\n                {permission[PROVIDER_MANAGEMENT]?.write && (\n                  <Icon\n                    handleClick={() => handleOpenCreateModal()}\n                    title={\"Create Provider\"}\n                    label={\"Create\"}\n                    iconType={\"createIcon\"}\n                  />\n                )}\n                {permission[PROVIDER_MANAGEMENT]?.write && (\n                  <Icon\n                    handleClick={() => {\n                      setOpenImportModal(true);\n                    }}\n                    title={t(\"loadProviderData\")}\n                    iconType=\"loadCrewIcon\"\n                    label={t(\"loadClient\")}\n                  />\n                )}\n              </div>\n\n              {showFilter && (\n                <Filter\n                  filterTerms={searchTerms}\n                  setFilter={setFilter}\n                  filter={filter}\n                  isUsersTable={true}\n                  personalisationData={personalize}\n                  triggerFilter={triggerFilter}\n                  setTriggerFilter={setTriggerFilter}\n                  isGrouped={true}\n                  filterTabIndex={filterTabIndex}\n                  setFilterTabIndex={(value) => setFilterTabIndex(value)}\n                />\n              )}\n\n              <Row className=\"pull-right\" style={{ borderWidth: 1 }}>\n                <Col></Col>\n                <Col style={{ textAlign: \"right\" }} md={{ span: 3, offset: 1 }} xl={{ span: 3, offset: 1 }}>\n                  Page\n                  <ul className=\"createButtons pr-0\" style={{ display: \"inline\" }}>\n                    <i\n                      className=\"fas fa-angle-left\"\n                      style={{ color: \"#585858\" }}\n                      onMouseOver={(e) => {\n                        e.target.style.cursor = \"pointer\";\n                        e.target.style.color = \"black\";\n                      }}\n                      onMouseLeave={(e) => (e.target.style.color = \"#585858\")}\n                      onClick={() => {\n                        currentPage !== 1 && handleChangePage(currentPage - 1);\n                      }}\n                    />\n                    {/* {currentPage !== 1 && \"...\"} */}\n                    {currentPage} of {pageNumbers}\n                    {/* {pageNumbers.length >= currentPage && \"...\"} */}\n                    <i\n                      className=\"fas fa-angle-right\"\n                      style={{ color: \"#585858\" }}\n                      onMouseOver={(e) => {\n                        e.target.style.cursor = \"pointer\";\n                        e.target.style.color = \"black\";\n                      }}\n                      onMouseLeave={(e) => (e.target.style.color = \"#585858\")}\n                      onClick={() => {\n                        currentPage !== pageNumbers && handleChangePage(currentPage + 1);\n                      }}\n                    />\n                  </ul>\n                </Col>\n              </Row>\n            </Card.Header>\n            <Card.Body className=\"table-full-width desktop-noScroll\">\n              <MainTable\n                columns={personalize}\n                rows={usersToMap}\n                flipSort={flipSort}\n                sortBy={sortBy}\n                sortDescending={sortDescending}\n                widthToSkip={160}\n                draggable\n                resizable\n                personalisationKey={PERSONALISATION_KEY.PROVIDER}\n                handleSaveDragAndResize={(personalizeArr) => setPersonalize(personalizeArr)}\n                selectedRows={checkboxes}\n                tools={quickTools}\n                handleCellClick={handleCellClick}\n                customColumnCellRenderer={customRenderTD}\n                dropDownOptions={PROVIDER_DROPDOWN}\n                handleDropDownClick={(type, row) => {\n                  if (type === \"Audit Trail\") {\n                    appContext.showLogs({ ...row, recordType: \"logs\", title: \"Provider Logs\" });\n                  }\n                  if (type === \"Archive\") {\n                    setOpenDeleteConfirmation(true);\n                    setUserToDelete(row);\n                  }\n                }}\n              />\n            </Card.Body>\n          </Card>\n        </Col>\n      </Row>\n\n      {openCreator && (\n        <ProviderModal\n          show={openCreator}\n          user={newUser}\n          handleClose={handleClose}\n          handleSave={createProviderInfo}\n          providers={providers}\n          setting={{}}\n        />\n      )}\n      {openPasswordModal && (\n        <UserPasswordModal user={newUser} handleClose={handlePasswordClose} handleSave={handleResetPassword} />\n      )}\n      {openPersonalizationModal && (\n        <PersonalizationModal\n          data={personalize}\n          handleChange={handlePersonalization}\n          show={openPersonalizationModal}\n          handleClose={() => setOpenPersonalizationModal(false)}\n        />\n      )}\n      {noteModal && (\n        <NotesModal\n          handleClose={(obj) => {\n            setNoteModal(null);\n          }}\n          provider\n          user={user}\n          data={noteModal}\n        />\n      )}\n      {openImportModal && (\n        <OrderImportModal\n          handleClose={() => setOpenImportModal(false)}\n          handleImport={handleImport}\n          title=\"Import Provider Data\"\n          noSelectDate={true}\n          handleDownloadSample={() => onHandleDownloadSample()}\n        />\n      )}\n      {openDeleteConfirmation && (\n        <ConfirmationModal\n          show={openDeleteConfirmation}\n          title=\"Archive Provider\"\n          message=\"Are you sure, you want to Archive Provider?\"\n          handleConfirm={handleConfirm}\n        />\n      )}\n    </div>\n  );\n};\n\nexport default Provider;\n","import Icon from \"components/Icon\";\nimport React from \"react\";\n\nconst AddResultDisclaimer = ({ onClick, label = \"Add Text\", icon = null, className=\"test-component-element\" }) => {\n  return (\n    <div className={className}>\n      <div style={{ display: \"flex\", height: \"100%\", alignItems: \"center\", marginTop: \"15px\" }}>\n        {icon && (\n          <Icon\n            iconType={icon}\n            containerClass={\"ms-2 cursor-pointer\"}\n            innerClass={\"test-selector-edit-icon\"}\n            handleClick={onClick}\n          />\n        )}\n\n        <p\n          style={{\n            color: \"#5b90fa\",\n            fontWeight: \"500\",\n            fontSize: \"24px\",\n            margin: \"0px\",\n            padding: \"0px\",\n            marginLeft: \"10px\",\n            lineHeight: 1,\n            cursor: \"pointer\",\n          }}\n          onClick={onClick}\n        >\n          {label}\n        </p>\n      </div>\n    </div>\n  );\n};\n\nexport default AddResultDisclaimer;\n","import { CPT_CODE_SEARCH_TYPE } from \"constant\";\nimport React from \"react\";\n\nconst TestTypeInput = ({\n  onChange,\n  tabIndex = 0,\n  placeholder = \"\",\n  value = \"\",\n  label = null,\n  required = false,\n  disabled = false,\n  searchType,\n  handleShowCPT,\n  readOnly,\n  ...rest\n}) => {\n  return (\n    <div className=\"test-component-element position-relative\">\n      {label && (\n        <p className={`test-type-input-label ${searchType && \"d-flex align-items-center\"}`}>\n          {label}\n          {required && <span style={{ color: \"red\" }}>*</span>}\n          {\n\n            searchType && (searchType === CPT_CODE_SEARCH_TYPE.CPT || searchType === \"elementPosition\")\n\n\n\n            && (\n              <label className=\"manageText\" onClick={handleShowCPT}>\n                Manage\n              </label>\n            )}\n        </p>\n      )}\n      <input\n        className=\"modalInput\"\n        value={value}\n        placeholder={placeholder}\n        style={{ width: \"100%\" }}\n        onChange={onChange}\n        tabIndex={tabIndex}\n        disabled={disabled}\n        readOnly={readOnly}\n        {...rest}\n      />\n    </div>\n  );\n};\n\nexport default TestTypeInput;\n","import SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport React from \"react\";\nimport TestTypeInput from \"./TestTypeInput\";\n\nconst ResultDisclaimerSwitch = ({\n  handleChange,\n  checked = false,\n  disabled = false,\n  placeholder,\n  label,\n  inlineLabel,\n  noBorder,\n  required = false\n}) => {\n  return (\n    <div\n      className={`test-component-element ${\n        inlineLabel &&\n        `d-flex justify-content-between switch-wrapper border-b-1 align-items-center ${noBorder && \"border-0\"}`\n      }`}\n      style={{ position: \"relative\" }}\n    >\n      {label && !inlineLabel && <TestTypeInput label={label} placeholder={placeholder} disabled={true} required={required} />}\n\n      {inlineLabel && (\n        <p className=\"testInlineLabel mb-0\">\n          {label}\n          {required && <span style={{ color: \"red\" }}>*</span>}\n        </p>\n      )}\n\n      <div className={`leading-0 ${!inlineLabel && \"notInlineLabel\"}`}>\n        <SwitchToggle checked={checked} handleChange={handleChange} disabled={disabled} />\n      </div>\n    </div>\n  );\n};\n\nexport default ResultDisclaimerSwitch;\n","export const panelSelector = (state) => state.testAssay.panelsList;\n","import React from 'react';\n\nimport { toTitleCase } from 'utils';\nimport Select from 'react-select';\nimport { panelSelector } from 'store/features/testAssay/testAssaySelector';\nimport { useSelector } from 'react-redux';\n\nimport { ELEMENT_TYPE } from 'constant';\n\nconst TestDetailsSelector = ({\n  label = 'Select',\n  value,\n  onChange,\n  placeholder = 'Select an option...',\n  className = '',\n  filterOption,\n}) => {\n  const testPanels = useSelector(panelSelector);\n\n  const panelsOptions = testPanels\n    ?.filter((item) => {\n      if (ELEMENT_TYPE[filterOption]) {\n        return item.antibioticResistanceType === ELEMENT_TYPE[filterOption];\n      }\n      return true;\n    })\n    .map((item) => {\n      return {\n        ...item,\n        label: item.name,\n        value: item.id,\n      };\n    });\n\n  return (\n    <div className=\"row mt-2\">\n      <div>\n        <p className=\"testDetailsSelector\">{filterOption}</p>\n        <div className=\"d-flex align-items-center\">\n          <Select\n            className={`w-100 ${className}`}\n            options={panelsOptions}\n            blurInputOnSelect={true}\n            menuPlacement={'auto'}\n            value={value}\n            placeholder={placeholder}\n            onChange={onChange}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default TestDetailsSelector;\n","import React, { memo } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport MainTable from \"components/Table/MainTable\";\nimport { CREATE_TEST_PERSONALIZE } from \"constants/personalization\";\nimport Icon from \"components/Icon\";\nimport { renderSourcesCell, renderPlatformCell } from \"utils\";\n\nimport { TABLE_QUICK_TOOLS } from \"constant\";\nimport TestDetailsSelector from \"../TestDetailsSelector\";\n\nconst TestElementViewModal = ({\n  handleClose,\n  handleTestRemove,\n  organismsRows,\n  resistanceRows,\n  associatedRows,\n  additionalRows,\n  onChange,\n  handleCellClick,\n  filterOption,\n}) => {\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"action\") {\n      return (\n        <td key={`bin_${item.id}`} style={{ textAlign: \"center\" }}>\n          <Icon\n            iconType={\"binIcon\"}\n            containerClass={\"ms-2 cursor-pointer\"}\n            innerClass={\"\"}\n            imageClass={\"testTabelDeleteIcon\"}\n            handleClick={() => handleTestRemove(row)}\n          />\n        </td>\n      );\n    }\n    if (item.itemKey === \"units\") {\n      return <td key={`unit_${item.id}`}>{row?.units?.label ? row.units.label : \"\"}</td>;\n    }\n    if (item.itemKey === \"lonicCode\") {\n      return <td key={`lonicCode_${item.id}`}>{row?.setting?.lonicCode || \"\"}</td>;\n    }\n    if (item.itemKey === \"ctValue\") {\n      return <td key={`ctValue_${item.id}`}>{row?.setting?.ctValue || \"\"}</td>;\n    }\n    if (item.itemKey === \"platform\") {\n      return renderPlatformCell(row);\n    }\n\n    if (item.itemKey === \"sources\") {\n      return renderSourcesCell(item, row);\n    }\n\n  };\n\n  const quickTools = [TABLE_QUICK_TOOLS.edit];\n\n  return (\n    <Modal\n      show\n      animation={true}\n      onHide={() => handleClose()}\n      centered\n      size={\"2xl\"}\n      backdrop=\"static\"\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 h4\" id=\"contained-modal-title-vcenter\">\n          Test Elements\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body\n        className=\"testAndAssayManagementModal\"\n        style={{ padding: \"10px\", paddingTop: \"0px\", paddingLeft: \"30px\", paddingRight: \"30px\", paddingBottom: \"30px\" }}\n      >\n        <TestDetailsSelector\n          label=\"Select Pathogen & Resistance Markers\"\n          onChange={onChange}\n          value={null}\n          filterOption={filterOption}\n          placeholder=\"Select Element\"\n        />\n\n        {organismsRows.length > 0 && filterOption === \"Bacteria/Organisms\" && (\n          <>\n            <p className=\"mt-2 h4\">Bacteria/Organisms ({organismsRows.length})</p>\n            <div style={PATHOGEN_TABLE_STYLE}>\n              <MainTable\n                columns={CREATE_TEST_PERSONALIZE}\n                rows={organismsRows || []}\n                customColumnCellRenderer={customRenderTD}\n                tools={quickTools}\n                widthToSkip={155}\n                handleCellClick={handleCellClick}\n\n\n              />\n            </div>\n          </>\n        )}\n\n        {resistanceRows.length > 0 && filterOption === \"Resistance Genes\" && (\n          <>\n            <p className=\"mt-2 h4\">Resistance Genes ({resistanceRows.length})</p>\n            <div style={PATHOGEN_TABLE_STYLE}>\n              <MainTable\n                columns={CREATE_TEST_PERSONALIZE}\n                rows={resistanceRows || []}\n                customColumnCellRenderer={customRenderTD}\n                tools={quickTools}\n                widthToSkip={155}\n                handleCellClick={handleCellClick}\n\n\n              />\n            </div>\n          </>\n        )}\n        {associatedRows.length > 0 && filterOption === \"Associated Test\" && (\n          <>\n            <p className=\"mt-2 h4\">Associated Test ({associatedRows.length})</p>\n            <div style={PATHOGEN_TABLE_STYLE}>\n              <MainTable\n                columns={CREATE_TEST_PERSONALIZE}\n                rows={associatedRows || []}\n                customColumnCellRenderer={customRenderTD}\n                tools={quickTools}\n                widthToSkip={155}\n                handleCellClick={handleCellClick}\n\n\n              />\n            </div>\n          </>\n        )}\n        {additionalRows.length > 0 && filterOption === \"Additional Variable\" && (\n          <>\n            <p className=\"mt-2 h4\">Additional Test ({additionalRows.length})</p>\n            <div style={PATHOGEN_TABLE_STYLE}>\n              <MainTable\n                columns={CREATE_TEST_PERSONALIZE}\n                rows={additionalRows || []}\n                customColumnCellRenderer={customRenderTD}\n                tools={quickTools}\n                widthToSkip={155}\n                handleCellClick={handleCellClick}\n\n\n              />\n            </div>\n          </>\n        )}\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"modalButtons\" onClick={() => handleClose()}>\n          Close\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default memo(TestElementViewModal);\n\nconst PATHOGEN_TABLE_STYLE = { background: \"#f2f0f0\", paddingLeft: \"4px\", paddingRight: \"4px\", maxHeight: \"60vh\", overflow: \"auto\" };\n","import React, { useState, memo } from \"react\";\nimport TestElementViewModal from \"./TestElementViewModal\";\nimport { ANTIBIOTIC_RESISTANCE_TYPE } from \"../../../constant\";\n\nconst TestElemensInput = ({\n  resistanceRows,\n  organismsRows,\n  associatedRows,\n  additionalRows,\n  handleTestRemove,\n  onChange,\n  handleCellClick,\n  required=false\n}) => {\n  const [selectedOption, setSelectedOption] = useState(\"\");\n\n  const [showTestElementModal, setShowTestElementModal] = useState(false);\n\n  const handleSelectedOption = (option) => {\n    setSelectedOption(option);\n    setShowTestElementModal(true);\n  };\n\n  return (\n    <>\n      {showTestElementModal && (\n        <TestElementViewModal\n          handleClose={() => setShowTestElementModal(false)}\n          resistanceRows={resistanceRows}\n          organismsRows={organismsRows}\n          associatedRows={associatedRows}\n          additionalRows={additionalRows}\n          handleTestRemove={handleTestRemove}\n          onChange={onChange}\n          handleCellClick={handleCellClick}\n          filterOption={selectedOption}\n        />\n      )}\n\n      <div>\n        <p className=\"test-type-input-label\">\n          Test Elements\n          {required && <span style={{ color: \"red\" }}>*</span>}\n        </p>\n        <div className=\"test-element-container w-full\">\n          <TestElementOptions\n            label={`Bacteria/Organisms (${organismsRows.length})`}\n            option={`Bacteria/Organisms`}\n            onClick={handleSelectedOption}\n            selected={selectedOption === \"Bacteria/Organisms\"}\n          />\n          <TestElementOptions\n            option={`Resistance Genes`}\n            label={`Resistance Genes (${resistanceRows.length})`}\n            onClick={handleSelectedOption}\n            selected={selectedOption === \"Resistance Genes\"}\n          />\n          <TestElementOptions\n            option={`Associated Test`}\n            label={`Associated Test (${associatedRows.length})`}\n            onClick={handleSelectedOption}\n            selected={selectedOption === \"Associated Test\"}\n          />\n          <TestElementOptions\n            option={ANTIBIOTIC_RESISTANCE_TYPE.ADDITIONAL}\n            label={`Additional Variable (${additionalRows.length})`}\n            onClick={handleSelectedOption}\n            selected={selectedOption === \"Additional Variable\"}\n          />\n\n\n\n\n          {/* <p className=\"test-element-view-label\" onClick={() => setShowTestElementModal(true)}>\n            View\n          </p> */}\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default memo(TestElemensInput);\n\nconst TestElementOptions = memo(({ option, label, selected = false, onClick }) => {\n  return (\n    <div\n      className={`test-element-option-container ${selected ? \"test-element-option-container-selected\" : \"\"}`}\n      onClick={() => onClick(option)}\n    >\n      <p>{label}</p>\n    </div>\n  );\n});\n","import deleteIcon from \"assets/img/trash-icon.png\";\nimport InputCPTCodeDropDown from \"components/InputField/InputCPTCodeDropDown\";\nimport { CPT_CODE_SEARCH_TYPE } from \"constant\";\n\nconst CptList = (props) => {\n  const {\n    item,\n    setItem,\n    cssClass,\n    showSelection,\n    title,\n    searchtype,\n    groupWrapper,\n    showLabelOnTop = false,\n    showCptSelectedCode = true,\n    showLabel = true,\n    searchCodeKey,\n    showInput = true,\n    showCross = true,\n    required = false,\n    placeholder=\"\"\n  } = props;\n  let codeKey = searchCodeKey || `${searchtype}Codes`;\n\n  const removeCPTCode = (codeToRemove) => {\n    setItem((prevItem) => ({\n      ...prevItem,\n      codeKey: prevItem[codeKey].filter((c) => c.code !== codeToRemove),\n    }));\n  };\n\n  const showSelectedCPTCodes = () => {\n    if (!item || !item[codeKey]?.length) {\n      return \"\";\n    }\n    return item[codeKey].map((c, index) => (\n      <span key={index} title={c.title} className=\"cptCodeTag mt-0 mx-1 mb-1\">\n        {c.code}\n        <img src={deleteIcon} alt=\"delete\" onClick={() => removeCPTCode(c.code)} />\n      </span>\n    ));\n  };\n\n  const handleAddCPT = (opt) => {\n    if (!opt) {\n      setItem(null);\n      return;\n    }\n\n    if (searchtype === \"test\") {\n      setItem(opt);\n      return;\n    }\n\n    if (!opt?.code) return;\n\n    const updatedItem = item ?? {};\n\n    const isItemExists = updatedItem[codeKey]?.some((item) => item?.code === opt?.code);\n\n    if (!isItemExists) {\n      setItem({\n        ...updatedItem,\n        [codeKey]: [\n          ...(updatedItem[codeKey] ?? []),\n          {\n            code: opt.code,\n            internalCode: opt.internalCode,\n            title: opt.title,\n            charges: opt.charges,\n            ...(searchtype === CPT_CODE_SEARCH_TYPE.CPT && { referenceCharge: opt.referenceCharge }),\n          },\n        ],\n      });\n    }\n  };\n\n  return (\n    <div className={cssClass}>\n      {!showSelection && (\n        <InputCPTCodeDropDown\n          type=\"text\"\n          inputStyle=\"modalInput\"\n          labelStyle=\" text-capitalize\"\n          groupWrapper={groupWrapper ? groupWrapper : \"mt-4 \"}\n          label={title}\n          placeholder={title || placeholder}\n          optionList={[]}\n          handleChange={handleAddCPT}\n          searchtype={searchtype}\n          selectedDiagnosis={[]}\n          showLabelOnTop={showLabelOnTop}\n          showLabel={showLabel}\n          showInput={showInput}\n          value={searchtype === CPT_CODE_SEARCH_TYPE.TEST && item ? item.name : item ? item.code : \"\"}\n          showCross={showCross}\n          required={required}\n        />\n      )}\n      {showCptSelectedCode && <p className=\"d-flex flex-wrap m-0 w-full\">{showSelectedCPTCodes()}</p>}\n    </div>\n  );\n};\n\nexport default CptList;\n","import CptList from \"components/CPT/CptList\";\nimport React from \"react\";\n\nconst TestIctOrCptSelector = ({ searchType, setItem, item, label,placeholder }) => {\n\n  return (\n    <div className=\"test-component-element\">\n      <p className=\"test-type-input-label\">{label}</p>\n      <CptList\n        item={item}\n        setItem={setItem}\n        searchtype={searchType}\n        groupWrapper=\"mt-1 form-group-wrapper margin-bottom-1\"\n        showLabelOnTop={true}\n        showInput={true}\n        showLabel={true}\n        showCross={false}\n        totalSelected={true}\n        placeholder={placeholder}\n      />\n    </div>\n  );\n};\n\nexport default TestIctOrCptSelector;\n","import Icon from \"components/Icon\";\nimport React from \"react\";\nimport { Form } from \"react-bootstrap\";\nimport \"./procedureCodeDetail.css\";\nimport { formatCurrency } from \"utils\";\n\nconst ProcedureCodeDetailView = ({ handelDeleteCpt, cptCodeList, className = \"\", handelUpdateCpt }) => {\n  return (\n    <div className={className ? className : \"procedure-view-container table-fixed\"}>\n      <table className=\"procedure-view-table\">\n        <thead>\n          <tr>\n            <th className=\"procedure-view-th\">Code</th>\n\n            <th className=\"procedure-view-th realtionTdWidth\">Name</th>\n            <th className=\"procedure-view-th\">Unit</th>\n            <th className=\"procedure-view-th\">Max Unit</th>\n\n            <th className=\"procedure-view-th\">Internal Charge</th>\n\n            <th className=\"procedure-view-th\">Reference Charge</th>\n            <th className=\"procedure-view-th text-center\">Is PanelCpt</th>\n            {handelDeleteCpt && <th className=\"procedure-view-th text-center\">Action</th>}\n          </tr>\n        </thead>\n        <tbody>\n          {cptCodeList.map((item, index) => {\n            return (\n              <tr key={`cpt_detail_${index}`}>\n                <td className=\"procedure-view-td\">{item?.internalCode || \"\"}</td>\n\n                <td className=\"procedure-view-td\" title={item?.title || \"\"}>\n                  {item?.title || \"\"}\n                </td>\n\n                <td className=\"procedure-view-td-small\">\n                  <input\n                    className=\"w-100 modalInput no-arrow\"\n                    placeholder=\"Enter Unit\"\n                    value={item?.unit}\n                    onChange={(event) => handelUpdateCpt({ keyName: \"unit\", value: event.target.value, index: index })}\n                    type=\"number\"\n                  />\n                </td>\n\n                <td className=\"procedure-view-td-small\">\n                  <input\n                    className=\"w-100 modalInput no-arrow\"\n                    placeholder=\"Enter Max Unit\"\n                    value={item?.maxUnit}\n                    onChange={(event) =>\n                      handelUpdateCpt({ keyName: \"maxUnit\", value: event.target.value, index: index })\n                    }\n                    type=\"number\"\n                  />\n                </td>\n\n                <td className=\"procedure-view-td\">{formatCurrency(item?.charges || \"\")}</td>\n\n                <td className=\"procedure-view-td\">{formatCurrency(item?.referenceCharge || \"\")}</td>\n\n                <td className=\"procedure-view-td text-center\">\n                  <Form.Check>\n                    <Form.Check.Input\n                      type=\"checkbox\"\n                      checked={!!item?.isPanelCpt}\n                      onChange={(event) =>\n                        handelUpdateCpt({ keyName: \"isPanelCpt\", value: event.target.checked, index: index })\n                      }\n                    />\n                  </Form.Check>\n                </td>\n\n                {handelDeleteCpt && (\n                  <td className=\"procedure-view-td procedure-text-center\">\n                    <Icon\n                      iconType={\"binIcon\"}\n                      containerClass={\"cursor-pointer\"}\n                      innerClass={\"\"}\n                      imageClass={\"delete-icon-small \"}\n                      handleClick={() => handelDeleteCpt(index)}\n                    />\n                  </td>\n                )}\n              </tr>\n            );\n          })}\n        </tbody>\n      </table>\n    </div>\n  );\n};\n\nexport default ProcedureCodeDetailView;\n","import CptList from \"components/CPT/CptList\";\nimport { CPT_CODE_SEARCH_TYPE } from \"constant\";\nimport React, { useState, memo } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport ProcedureCodeDetailView from \"../ProcedureCode/ProcedureCodeDetailView\";\n\nconst TestCptSelectorModal = ({ handleClose, cptData, saveCptData }) => {\n  const [cptList, setCptList] = useState(cptData || []);\n\n  const handleCptCode = (e) => {\n    const cptObj = e.cptCodes[0];\n    const isAlreadyExist = cptList.some((item) => item.code === cptObj.code);\n    if (!isAlreadyExist) {\n      setCptList([...cptList, { ...cptObj, unit: \"1\", maxUnit: \"1\" }]);\n    }\n  };\n\n  const removeCptCode = (index) => {\n    setCptList((prevItems) => {\n      const newItems = [...prevItems];\n      newItems.splice(index, 1);\n      return newItems;\n    });\n  };\n\n  const saveCpt = () => {\n    saveCptData({ cptList });\n    handleClose();\n  };\n\n  const handelUpdateCpt = ({ keyName, value, index }) => {\n    setCptList((prevCptList) => prevCptList.map((item, i) => (i === index ? { ...item, [keyName]: value } : item)));\n  };\n\n  return (\n    <Modal\n      show\n      className=\"second-modal\"\n      onHide={() => handleClose()}\n      animation={true}\n      centered\n      size={\"1xl\"}\n      backdrop=\"static\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 h4\" id=\"contained-modal-title-vcenter\">\n          Linked Cpt\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <h4\n          className=\"test-component-title\"\n          style={{\n            margin: \"0px\",\n            borderTopLeftRadius: \"5px\",\n            borderTopRightRadius: \"5px\",\n            padding: \"10px 10px 0 10px\",\n          }}\n        >\n          Linked CPT Code {cptList.length > 0 ? `(${cptList.length})` : \"\"}\n        </h4>\n        <div style={{ border: \"1px solid gray\", marginTop: \"5px\", borderRadius: \"5px\" }}>\n          <div style={{ padding: \"10px\" }}>\n            <div className=\"w-50\">\n              <CptList\n                item={{}}\n                setItem={handleCptCode}\n                title=\"Lookup Procedure Code\"\n                searchtype={CPT_CODE_SEARCH_TYPE.CPT}\n                groupWrapper=\"form-group-wrapper margin-bottom-1\"\n                showLabelOnTop={true}\n                showInput={false}\n              />\n            </div>\n            {cptList && cptList.length > 0 && (\n              <ProcedureCodeDetailView\n                cptCodeList={cptList}\n                handelDeleteCpt={removeCptCode}\n                handelUpdateCpt={handelUpdateCpt}\n              />\n            )}\n          </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"modalButtons\" onClick={() => handleClose()}>\n          Close\n        </Button>\n\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={saveCpt}>\n          Save\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default memo(TestCptSelectorModal);\n","import React from 'react';\n\nconst ElementPositionDraggableView = ({ elementData = [], onReorder }) => {\n\n    const handleDragStart = (e, index) => {\n        e.dataTransfer.effectAllowed = 'move';\n        e.dataTransfer.setData('text/plain', index);\n    };\n\n    const handleDragOver = (e, index) => {\n        e.preventDefault();\n    };\n\n    const handleDrop = (e, dropIndex) => {\n        e.preventDefault();\n        const dragIndex = parseInt(e.dataTransfer.getData('text/plain'), 10);\n\n        if (isNaN(dragIndex) || dragIndex === dropIndex) {\n            return;\n        }\n\n        const updatedItems = [...elementData];\n        const [draggedItem] = updatedItems.splice(dragIndex, 1);\n        updatedItems.splice(dropIndex, 0, draggedItem);\n\n        const reorderedItems = updatedItems.map((item, index) => ({\n            ...item,\n            position: index + 1,\n        }));\n\n        onReorder(reorderedItems);\n    };\n\n    return (\n        <div>\n            <ul style={{ listStyleType: 'none', padding: 0 }}>\n                <li className={`draggable-item draggable-item-gray`}>\n                    <span>Element Name</span>\n                    {/* <span> Instrument Platform</span> */}\n                    <span> Associated Instrument</span>\n                </li>\n                {elementData.map((item, index) => {\n                    if (item?.setting?.platform?.length) {\n                        return (\n                            <li\n                                key={item.id}\n                                draggable\n                                onDragStart={(e) => handleDragStart(e, index)}\n                                onDragOver={(e) => handleDragOver(e, index)}\n                                onDrop={(e) => handleDrop(e, index)}\n                                className=\"draggable-item\"\n                            >\n                                <span>{item.name}</span>\n                                <span>\n                                    {item?.setting?.platform\n                                        ?.map((platform) => platform.label)\n                                        .join(', ')}\n                                </span>\n                            </li>\n                        )\n                    }\n                }\n\n\n                )}\n            </ul>\n        </div>\n    );\n};\n\nexport default ElementPositionDraggableView;\n","\nimport React, { useState, memo, useEffect } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport ElementPositionDraggableView from './ElementPositionDraggableView'\n\nconst TestElementPositionModal = ({ handleClose, testElementData, saveTestElementPosition }) => {\n\n\n  const [elementData, setElementData] = useState([]);\n\n  useEffect(() => {\n\n    let itemsWithPosition = testElementData.filter(\n        (item) => item.position !== null && item.position !== undefined\n    );\n    let itemsWithoutPosition = testElementData.filter(\n        (item) => item.position === null || item.position === undefined\n    );\n\n    itemsWithoutPosition = shuffleArray(itemsWithoutPosition);\n\n    const maxPosition = itemsWithPosition.length;\n    itemsWithoutPosition = itemsWithoutPosition.map((item, index) => ({\n        ...item,\n        position: maxPosition + index + 1,\n    }));\n\n    const combinedItems = [...itemsWithPosition, ...itemsWithoutPosition].sort(\n        (a, b) => a.position - b.position\n    );\n\n    setElementData(combinedItems);\n}, [testElementData]);\n\n\n\nconst shuffleArray = (array) => {\n  const shuffled = [...array];\n  for (let i = shuffled.length - 1; i > 0; i--) {\n      const j = Math.floor(Math.random() * (i + 1));\n      [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];\n  }\n  return shuffled;\n};\n\n\nconst handleReorder = (reorderedItems) => {\n  setElementData(reorderedItems);\n};\n\n\nconst saveElementPosition = ()=>{\n  saveTestElementPosition(elementData)\n}\n\n\n\n  return (\n    <Modal\n      show\n      className=\"second-modal\"\n      onHide={() => handleClose()}\n      animation={true}\n      centered\n      size={\"lg\"}\n      backdrop=\"static\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 h4\" id=\"contained-modal-title-vcenter\">\n        Test Element Position\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n\n        <div style={{ border: \"1px solid gray\", marginTop: \"5px\", borderRadius: \"5px\" }}>\n          <div style={{ padding: \"10px\" }}>\n            <ElementPositionDraggableView\n              elementData={elementData}\n              onReorder={handleReorder}\n\n            />\n          </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"modalButtons\" onClick={() => handleClose()}>\n          Close\n        </Button>\n\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={saveElementPosition}>\n          Save\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  )\n}\n\nexport default TestElementPositionModal","import Icon from \"components/Icon\";\nimport moment from \"moment\";\nimport { useRef } from \"react\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\n\nmoment;\nconst TestTypeInputDate = ({\n  onChange,\n  disabled = false,\n  isFutureDateAllowed = true,\n  error = false,\n  value,\n  label,\n  icon,\n}) => {\n  const datePickerRef = useRef(null);\n\n  const openCalendar = () => {\n    if (datePickerRef.current) {\n      datePickerRef.current.setOpen(true);\n    }\n  };\n\n  return (\n    <>\n      {label && (\n        <p className={`test-type-input-label ${icon && \"d-flex align-items-center justify-content-between\"}`}>\n          {label}\n\n          {icon && (\n            <Icon handleClick={openCalendar} iconType={\"calendarDateIcon\"} containerClass={\"ms-2 cursor-pointer\"} />\n          )}\n        </p>\n      )}\n      <DatePicker\n        ref={datePickerRef}\n        className=\"modalInput w-100\"\n        openCalendarOnFocus={false}\n        dayPlaceholder=\"dd\"\n        monthPlaceholder=\"mm\"\n        yearPlaceholder=\"yyyy\"\n        dateFormat=\"MM/dd/y\"\n        selected={value && new Date(value) != \"Invalid Date\" ? moment(value, \"YYYY-MM-DD\").toDate() : null}\n        onChange={onChange}\n        disabled={disabled}\n        maxDate={!isFutureDateAllowed ? new Date() : undefined}\n        minDate={new Date(\"1900-01-01\")}\n        isClearable\n        placeholderText=\"Select a date\"\n      />\n    </>\n  );\n};\n\nexport default TestTypeInputDate;\n","import React, { useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\n\nconst RangeBacteriaSelector = ({ options = [], onChange }) => {\n  const [inputValue, setInputValue] = useState(\"\");\n\n  const [selectedOption, setSelectedOption] = useState(null);\n\n  const handleChangeSourceSite = (option) => {\n    setSelectedOption(option);\n    setInputValue(\"\");\n  };\n\n  const handleInputChange = (newValue, { action }) => {\n    if (action === \"input-change\") {\n      setSelectedOption(null);\n      setInputValue(newValue);\n    }\n  };\n\n  const addBacteriaInRange = () => {\n    const value = selectedOption ? selectedOption.label : inputValue;\n    onChange(value);\n  };\n\n  return (\n    // <div className=\"form-group-wrapper\">\n    //   {/* <label className=\"modalLineHeaders\">Select Or Type Bacteria</label> */}\n\n    // </div>\n    <Select\n      className=\"w-100 siteSelector\"\n      options={options}\n      blurInputOnSelect={true}\n      menuPlacement=\"auto\"\n      placeholder=\"Name\"\n      value={selectedOption}\n      inputValue={inputValue}\n      onChange={handleChangeSourceSite}\n      onInputChange={handleInputChange}\n      onBlur={addBacteriaInRange}\n    />\n  );\n};\n\nexport default RangeBacteriaSelector;\n","import React from \"react\";\nimport \"./TestDetailsRangeView.css\";\nimport Icon from \"components/Icon\";\nimport Select from \"react-select\";\nimport { GENDER_OPTIONS } from \"constant\";\nimport RangeBacteriaSelector from \"./RangeBacteriaSelector\";\n\n\n\n\n\nconst TestDetailsRangeView = ({\n  onChange,\n  data,\n  handelRemoveView,\n  handleAddRange,\n  onChangeGender,\n  onChangeBacteria,\n}) => {\n  const rangesArr = [\"Low\", \"Normal\", \"High\", \"Panic\", \"Repeat\"];\n\n  return (\n    <div style={{ border: \"1px solid gray\", padding: \"10px\", marginTop: \"10px\", borderRadius: \"10px\", height: data.length ==0 ? \"100px\" :\"\" }}>\n      <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n        <h4 style={{ margin: 0 }}>Range Setup</h4>\n\n        <Icon\n          iconType={\"createIcon\"}\n          containerClass={\"ms-2 cursor-pointer\"}\n          innerClass={\"\"}\n          handleClick={handleAddRange}\n        />\n      </div>\n      {data && data.length ? (\n        <div className=\"range-view-container\">\n          <table className=\"range-view-table\">\n            <thead>\n              <tr>\n                <th className=\"range-view-th range-special-bg\" colSpan=\"2\">\n                  Name\n                </th>\n                <th className=\"range-view-th range-special-bg\" colSpan=\"2\">\n                  Gender\n                </th>\n                <th className=\"range-view-th range-special-bg\" colSpan=\"2\">\n                  Age Range\n                </th>\n\n                {rangesArr.map((range, index) => (\n                  <th className=\"range-view-th\" colSpan=\"2\" key={`range_${index}`}>\n                    {range}\n                  </th>\n                ))}\n                <th className=\"range-view-th\">Action</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                <td className=\"range-view-td text-center range-special-bg\" colSpan=\"2\"></td>\n                <td className=\"range-view-td text-center range-special-bg\" colSpan=\"2\"></td>\n                <td className=\"range-view-td text-center range-special-bg\">Start</td>\n                <td className=\"range-view-td text-center range-special-bg\">End</td>\n\n                {rangesArr.map((item, index) => (\n                  <>\n                    <td className=\"range-view-td text-center\" key={`low_${index}`}>\n                      Low\n                    </td>\n                    <td className=\"range-view-td text-center\" key={`high_${index}`}>\n                      High\n                    </td>\n                  </>\n                ))}\n\n                <td style={{ border: \"none\" }}></td>\n              </tr>\n\n              {data.map(\n                (\n                  {\n                    id,\n                    Gender,\n                    AgeStart,\n                    AgeEnd,\n\n                    NormalLow,\n                    NormalHigh,\n\n                    HighLow,\n                    HighHigh,\n\n                    PanicLow,\n                    PanicHigh,\n\n                    RepeatLow,\n                    RepeatHigh,\n\n                    LowLow,\n                    LowHigh,\n                  },\n                  index\n                ) => {\n                  return (\n                    <tr key={index}>\n                      <td colSpan=\"2\" style={{ minWidth: \"150px\" }} className=\"text-center range-special-bg\">\n                        <RangeBacteriaSelector onChange={(e) => onChangeBacteria(e, index)} />\n                      </td>\n\n                      <td colSpan=\"2\" style={{ minWidth: \"150px\" }} className=\"text-center range-special-bg\">\n                        <Select\n                          className=\"w-100 siteSelector\"\n                          options={GENDER_OPTIONS}\n                          blurInputOnSelect={true}\n                          defaultValue={null}\n                          menuPlacement=\"auto\"\n                          value={Gender}\n                          name=\"Gender\"\n                          placeholder=\"Gender\"\n                          onChange={(e) => onChangeGender(e, index)}\n                        />\n                      </td>\n                      <td className=\"text-center range-special-bg\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"AgeStart\"\n                          value={AgeStart}\n                          onChange={(e) => onChange(e, index)}\n                          type=\"number\"\n                        />\n                      </td>\n                      <td className=\"text-center range-special-bg\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"AgeEnd\"\n                          value={AgeEnd}\n                          onChange={(e) => onChange(e, index)}\n                          type=\"number\"\n                        />\n                      </td>\n\n                      <td className=\"text-center\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"LowLow\"\n                          value={LowLow}\n                          onChange={(e) => onChange(e, index)}\n                        />\n                      </td>\n                      <td className=\"text-center\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"LowHigh\"\n                          value={LowHigh}\n                          onChange={(e) => onChange(e, index)}\n                        />\n                      </td>\n\n                      <td className=\"text-center\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"NormalLow\"\n                          value={NormalLow}\n                          onChange={(e) => onChange(e, index)}\n                        />\n                      </td>\n                      <td className=\"text-center\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"NormalHigh\"\n                          value={NormalHigh}\n                          onChange={(e) => onChange(e, index)}\n                        />\n                      </td>\n\n                      <td className=\"text-center\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"HighLow\"\n                          value={HighLow}\n                          onChange={(e) => onChange(e, index)}\n                        />\n                      </td>\n                      <td className=\"text-center\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"HighHigh\"\n                          value={HighHigh}\n                          onChange={(e) => onChange(e, index)}\n                        />\n                      </td>\n\n                      <td className=\"text-center\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"PanicLow\"\n                          value={PanicLow}\n                          onChange={(e) => onChange(e, index)}\n                        />\n                      </td>\n                      <td className=\"text-center\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"PanicHigh\"\n                          value={PanicHigh}\n                          onChange={(e) => onChange(e, index)}\n                        />\n                      </td>\n\n                      <td className=\"text-center\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"RepeatLow\"\n                          value={RepeatLow}\n                          onChange={(e) => onChange(e, index)}\n                        />\n                      </td>\n                      <td className=\"text-center\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"RepeatHigh\"\n                          value={RepeatHigh}\n                          onChange={(e) => onChange(e, index)}\n                        />\n                      </td>\n\n                      <td className=\"text-center\">\n                        <Icon\n                          iconType={\"binIcon\"}\n                          containerClass={\"cursor-pointer\"}\n                          innerClass={\"\"}\n                          imageClass={\"delete-icon \"}\n                          handleClick={() => handelRemoveView(id)}\n                        />\n                      </td>\n                    </tr>\n                  );\n                }\n              )}\n            </tbody>\n          </table>\n        </div>\n      ) : (\n        \"\"\n      )}\n    </div>\n  );\n};\nexport default TestDetailsRangeView;","import React from \"react\";\nimport \"./TestDetailsRangeView.css\";\nimport { Button, Modal} from \"react-bootstrap\";\nimport TestDetailsRangeView from \"./TestDetailsRangeView\";\n\nconst TestRangeModal = ({\n  onChange,\n  data,\n  handelRemoveView,\n  handleClose,\n  handleAddRange,\n  onChangeGender,\n  onChangeBacteria,\n}) => {\n\n  return (\n    <Modal\n      show\n      animation={true}\n      className=\"second-modal modal-padding-0\"\n      onHide={() => handleClose()}\n      centered\n      size={\"full\"}\n      backdrop=\"static\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 h4\" id=\"contained-modal-title-vcenter\">\n          Test Ranges\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <TestDetailsRangeView\n          data={data}\n          onChange={onChange}\n          onChangeGender={onChangeGender}\n          onChangeBacteria={onChangeBacteria}\n          handelRemoveView={handelRemoveView}\n          handleAddRange={handleAddRange}\n        />\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"modalButtons\" onClick={() => handleClose()}>\n          Close\n        </Button>\n\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={() => handleClose()}>\n          Save\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\nexport default TestRangeModal;\n","import React from \"react\";\nimport { Button } from \"react-bootstrap\";\n\nconst InputBadge = ({ options, handleRemoveOption }) => {\n  return (\n    <div className=\"d-flex gap-2 mt-3 flex-wrap\">\n      {options?.length > 0\n        ? options?.map((option, index) => (\n            <Button style={{ fontSize: \"18px\" }} className=\"px-2 py-1\" variant=\"secondary\" onClick={() => handleRemoveOption(index)}>\n              <span key={index} size=\"sm\" className=\"badge\" style={{color : \"black\", fontWeight : \"500\"}}>\n                {option.label}\n              </span>\n              x\n            </Button>\n          ))\n        : \"\"}\n    </div>\n  );\n};\n\nexport default InputBadge;\n","import ErrorMessage from \"components/Message/ErrorMessage\";\nimport React, { useState, useEffect } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport Select from \"react-select\";\nimport { PANEL_QUESTION_ANSWERS_OPTIONS } from \"constant\";\nimport InputBadge from \"./InputBadge\";\nimport Icon from \"components/Icon\";\nimport RadioButton from \"components/RadioButton/RadioButton\";\n\nconst AddQuestionModal = ({ editObj, handleSaveChange, handleClose }) => {\n  const [question, setQuestion] = useState({ id: \"\", title: \"\", type: \"\", options: [], required: false });\n  const [error, setError] = useState(\"\");\n  const [newOption, setNewOption] = useState(\"\");\n\n  useEffect(() => {\n    if (editObj?.title) {\n      setQuestion(editObj);\n    }\n  }, [editObj]);\n\n  const onSaveChange = () => {\n    if (!question?.title) {\n      setError(\"Enter question\");\n      return;\n    }\n    if (!question?.type) {\n      setError(\"Select answer type\");\n      return;\n    }\n    if (question.type === \"dropdown\" && question.options.length === 0) {\n      setError(\"Dropdown must have at least one option\");\n      return;\n    }\n\n    const updatedQuestion = {\n      ...question,\n      id: editObj?.id || uuidv4(),\n      type: question.type || \"radio\",\n    };\n\n    handleSaveChange(updatedQuestion);\n    handleClose();\n  };\n\n  const handleAddOption = () => {\n    const trimmedOption = newOption.trim();\n    if (trimmedOption === \"\") return;\n    if (question.options.some((opt) => opt.value === trimmedOption)) {\n      return;\n    }\n\n    setQuestion((prev) => ({\n      ...prev,\n      options: [...prev.options, { label: trimmedOption, value: trimmedOption }],\n    }));\n\n    setNewOption(\"\");\n  };\n\n  const handleRemoveOption = (index) => {\n    setQuestion((prev) => ({\n      ...prev,\n      options: prev.options.filter((_, i) => i !== index),\n    }));\n  };\n\n  return (\n    <Modal\n      show\n      animation={true}\n      onHide={handleClose}\n      style={{ paddingLeft: \"0\" }}\n      centered\n      className=\"seperateModal\"\n      backdrop=\"static\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {editObj?.title ? \"Update\" : \"Add\"} Question\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"row mb-3\">\n          <div className=\"d-flex justify-content-between\">\n            <div style={{ width: \"45%\" }}>\n              <label>Is this question required?</label>\n            </div>\n            <div className=\"mb-3 d-flex gap-3\">\n              <RadioButton\n                type=\"radio\"\n                name={`yes`}\n                id={`yes`}\n                label=\"Yes\"\n                checked={question.required === true}\n                handleRadioButtonChange={() => setQuestion({ ...question, required: true })}\n              />\n              <RadioButton\n                name={`no`}\n                id={`no`}\n                label=\"No\"\n                checked={question.required === false}\n                handleRadioButtonChange={() => setQuestion({ ...question, required: false })}\n              />\n            </div>\n          </div>\n\n          <div className=\"col-lg-12 col-12 mb-3\">\n            <label className=\"modalLineHeaders mt-0\">Question</label>\n            <textarea\n              type=\"text\"\n              value={question?.title}\n              className=\"modalInput\"\n              placeholder=\"Enter Question\"\n              style={{ width: \"100%\", minHeight: \"160px\", lineHeight: \"1.5\" }}\n              onChange={(e) => setQuestion({ ...question, title: e.target.value })}\n            />\n          </div>\n\n          {/* Select Answer Type */}\n          <div className=\"col-lg-12 col-12 mb-3\">\n            <label>Answer Type</label>\n            <Select\n              className=\"w-100 siteSelector\"\n              options={PANEL_QUESTION_ANSWERS_OPTIONS}\n              blurInputOnSelect={true}\n              menuPlacement=\"auto\"\n              value={PANEL_QUESTION_ANSWERS_OPTIONS.find((item) => item.value === question.type)}\n              placeholder=\"Select Answer Types\"\n              onChange={(e) =>\n                setQuestion({\n                  ...question,\n                  type: e.value,\n                  options: e.value === \"dropdown\" ? question.options : [],\n                })\n              }\n            />\n          </div>\n\n          {question.type === \"dropdown\" && (\n            <div className=\"col-lg-12 col-12\">\n              <label>Options</label>\n              <div className=\"d-flex mb-1 align-items-center justify-content-evenly\">\n                <input\n                  type=\"text\"\n                  className=\"modalInput\"\n                  placeholder=\"Enter option\"\n                  value={newOption}\n                  onChange={(e) => setNewOption(e.target.value)}\n                  onKeyDown={(e) => e.key === \"Enter\" && handleAddOption()}\n                  style={{ flex: 1, marginRight: \"10px\" }}\n                />\n                <div style={{ position: \"relative\", left: \"-10px\" }}>\n                  <Icon\n                    iconType={\"createIconBlue\"}\n                    containerClass={\"ms-2 cursor-pointer\"}\n                    innerClass={\"test-selector-add-icon\"}\n                    handleClick={() => handleAddOption()}\n                  />\n                </div>\n              </div>\n              <InputBadge options={question.options} handleRemoveOption={handleRemoveOption} />\n            </div>\n          )}\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"modalButtons\" onClick={handleClose}>\n          Close\n        </Button>\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={onSaveChange}>\n          Save\n        </Button>\n        <div style={{ width: \"100%\" }}>{error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}</div>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default React.memo(AddQuestionModal);\n","import {\n  ANTIBIOTIC_RESISTANCE_TYPE,\n  CPT_CODE_SEARCH_TYPE,\n  TABLE_QUICK_TOOLS,\n  TEST_SETTING_TYPES,\n  TEST_TYPE_OPTIONS,\n  TYPE_OF_TEST,\n} from \"constant\";\nimport { AppContext } from \"context/app-context\";\nimport moment from \"moment\";\nimport { memo, useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport { Accordion, Button, Modal } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { selectedCompanySetting } from \"store/features/companySetting/companySettingSelectors\";\nimport { refLabsSelectors } from \"store/features/locations/locationsSelectors\";\nimport { customCloneDeep } from \"util/customLodash\";\nimport {\n  formatTargetRanges,\n  generateRefIntervalByRanges,\n  getTestPanelType,\n  formatTestSource,\n  getUniqueSources,\n} from \"utils\";\nimport AddResultDisclaimer from \"./TestTypeComponent/AddResultDisclaimer\";\nimport ResultDisclaimerSwitch from \"./TestTypeComponent/ResultDisclaimerSwitch\";\nimport TestElemensInput from \"./TestTypeComponent/TestElemensInput\";\nimport TestIctOrCptSelector from \"./TestTypeComponent/TestIctOrCptSelector\";\nimport TestTypeInput from \"./TestTypeComponent/TestTypeInput\";\nimport TestTypeSelect from \"./TestTypeComponent/TestTypeSelect\";\nimport TestCptSelectorModal from \"./TestCptSelector/TestCptSelectorModal\";\nimport TestElementPositionModal from \"./TestElementPositionModal/TestElementPositionModal\";\nimport TestTypeInputDate from \"./TestTypeComponent/TestTypeInputDate\";\nimport TextEditor from \"views/TextEditor\";\nimport TestRangeModal from \"./TestDetailsRangeView/TestRangeModal\";\nimport { selectClient } from \"store/features/authentication/authenticationSelectors\";\nimport MainTable from \"components/Table/MainTable\";\nimport { PANEL_QUESTIONS_PERSONALIZATION } from \"constants/personalization\";\nimport Icon from \"components/Icon\";\nimport AddQuestionModal from \"components/Modal/AddQuestionModal\";\n\nconst TestTypeModal = ({\n  item,\n  handleSave,\n  handleClose,\n  openDetailModal,\n  isDetailModalOpen,\n  mainTests,\n  setTestPanelData,\n}) => {\n  const [editObj, setEditObj] = useState({});\n  const [activeKey, setActiveKey] = useState(null);\n  const [newItem, setNewItem] = useState({\n    ...item,\n    isAssociatedPanel: item.hasOwnProperty(\"isAssociatedPanel\") ? item.isAssociatedPanel : false,\n    custom_notes: item.custom_notes || \"\",\n    showDisclaimer: !!item.custom_notes,\n  });\n  const [questionModalOpen, setQuestionModalOpen] = useState(false);\n  const userClientData = useSelector(selectClient);\n\n  const [showRangesModal, setShowRangesModal] = useState(false);\n\n  const [showCptModal, setShowCptModal] = useState(false);\n\n  const [showElementPositionModal, setShowElementPositionModal] = useState(false);\n\n  const [ranges, setRanges] = useState(\n    item?.ranges || [\n      {\n        id: 1,\n\n        AgeStart: \"\",\n        AgeEnd: \"\",\n\n        Gender: \"\",\n        Bacteria: \"\",\n\n        NormalLow: \"\",\n        NormalHigh: \"\",\n\n        HighLow: \"\",\n        HighHigh: \"\",\n\n        PanicLow: \"\",\n        PanicHigh: \"\",\n\n        RepeatLow: \"\",\n        RepeatHigh: \"\",\n\n        LowLow: \"\",\n        LowHigh: \"\",\n      },\n    ]\n  );\n\n  const [ictCodes, setIctCodes] = useState([]);\n\n  const appContext = useContext(AppContext);\n\n  const [showEditor, setShowEditor] = useState(null);\n\n  const [cptList, setCptList] = useState([]);\n\n  const companySettings = useSelector(selectedCompanySetting);\n  const labLocations = useSelector(refLabsSelectors);\n\n  useEffect(() => {\n    const { ictCodes, cptCodes } = item;\n\n    if (ictCodes?.length > 0) {\n      setIctCodes(ictCodes);\n      setCptList(ictCodes[0]?.cptCodes || cptCodes || []);\n    } else if (cptCodes?.length > 0) {\n      setCptList(cptCodes);\n    }\n  }, []);\n\n  useEffect(() => {\n    const { targetRanges } = item;\n\n    setNewItem((prevNewItem) => ({\n      ...prevNewItem,\n      targetRanges: targetRanges ? targetRanges.slice() : [],\n    }));\n  }, [item]);\n\n  useEffect(() => {\n    const uniqueSources =\n      newItem.targetRanges.length > 0 && (!newItem.sources || newItem.sources.length === 0)\n        ? getUniqueSources(newItem.targetRanges)\n        : newItem.sources;\n\n    setNewItem({\n      ...newItem,\n      sources: uniqueSources,\n      isAssociatedPanel: newItem.targetRanges.length > 0,\n    });\n  }, [newItem.targetRanges]);\n\n  const clientDetails = useMemo(() => {\n    if (appContext && Array.isArray(appContext.clients) && appContext.clients.length > 0) {\n      return appContext.clients[0];\n    }\n    return {};\n  }, [appContext?.clients]);\n\n  const getSiteOptions = useMemo(() => {\n    return labLocations.map((l) => {\n      return { value: l.id, label: l.name };\n    });\n  }, [labLocations]);\n\n  const getCliaNumber = useMemo(() => {\n    if (!companySettings.cliaNumber) return [];\n    return companySettings.cliaNumber.map((l) => {\n      return { value: l.cliCode, label: l.label || l.cliCode };\n    });\n  }, [companySettings]);\n\n  const validateInput = (newItem) => {\n    if (!newItem.name) {\n      appContext.showErrorMessage(\"Enter valid test name\");\n\n      return;\n    }\n    if (!newItem.code) {\n      appContext.showErrorMessage(\"Enter valid test code\");\n      return;\n    }\n    if (!newItem.category) {\n      appContext.showErrorMessage(\"Select the department\");\n      return;\n    }\n\n    if (!newItem.typeOfTest) {\n      appContext.showErrorMessage(\"Select the valid Result Methodology\");\n      return;\n    }\n\n    if (!newItem.sources || newItem.sources.length === 0) {\n      appContext.showErrorMessage(\"Select at least one source.\");\n      return;\n    }\n\n    if (newItem.code && newItem.code.length > 4) {\n      appContext.showErrorMessage(\"Test Code should not be greater then 4\");\n      return;\n    }\n\n    if (newItem.custom_notes == \"\" && newItem.typeOfTest !== TYPE_OF_TEST.EXTERNAL) {\n      appContext.showErrorMessage(\"Please add disclaimer\");\n      return;\n    }\n\n    if (newItem.targetRanges?.length === 0 && newItem.typeOfTest !== TYPE_OF_TEST.EXTERNAL) {\n      appContext.showErrorMessage(\"Add Atleast One Pathogen.\");\n      return;\n    }\n\n    if (newItem.typeOfTest === TYPE_OF_TEST.EXTERNAL && newItem?.setting?.sendOut !== true) {\n      appContext.showErrorMessage(\"External Result Must Be Send Out.\");\n      return;\n    }\n\n    if (\n      newItem?.setting?.sendOut === true &&\n      (!newItem.setting.referenceLab || newItem.setting.referenceLab === null) &&\n      (!newItem?.setting?.referenceLabID || newItem?.setting?.referenceLabID === null)\n    ) {\n      appContext.showErrorMessage(\"Add Reference Lab for send out.\");\n      return;\n    }\n\n    if (getCliaNumber.length > 1 && !newItem.location) {\n      appContext.showErrorMessage(\"Select Location.\");\n      return;\n    }\n\n    const formatedTargetRanges = formatTargetRanges(\n      newItem.targetRanges,\n      newItem.typeOfTest,\n      newItem.isAssociatedPanel\n    );\n\n    // const refInt = generateRefInterval(newItem);\n    const refInt = generateRefIntervalByRanges(ranges);\n    // const uniqueSources = getUniqueSources(newItem.targetRanges);\n\n    const testObj = {\n      ...newItem,\n      // sources: uniqueSources,\n      // units: !newItem.isAssociatedPanel ? newItem.units : null,\n      ictCodes: ictCodes && ictCodes.length > 0 ? [{ ...ictCodes[0], cptCodes: cptList }] : [],\n      refInterval: newItem?.typeOfTest === TYPE_OF_TEST.QUANTITATIVE ? refInt : \"Not Detected\",\n      targetRanges: newItem.typeOfTest === TYPE_OF_TEST.EXTERNAL ? [] : formatedTargetRanges,\n      custom_notes: newItem.typeOfTest === TYPE_OF_TEST.EXTERNAL ? null : newItem.custom_notes,\n      showDisclaimer: newItem.typeOfTest === TYPE_OF_TEST.EXTERNAL ? false : newItem.showDisclaimer,\n      type: getTestPanelType(newItem.typeOfTest, newItem.isAssociatedPanel),\n      ranges: !newItem.isAssociatedPanel ? ranges : null,\n      cptCodes: cptList,\n    };\n\n    if (newItem.isNew) {\n      const isAlreadyExist = mainTests.some(({ name }) => name.toLowerCase().includes(newItem.name.toLowerCase()));\n      if (isAlreadyExist) {\n        appContext.showErrorMessage(\"Test with same name already exists\");\n        return;\n      }\n    }\n\n    return testObj;\n  };\n\n  const handleTestRemove = (item) => {\n    setNewItem((prevNewItem) => {\n      const updatedTargetRanges = prevNewItem?.targetRanges?.filter((x) => x.id !== item.id);\n      return { ...prevNewItem, targetRanges: updatedTargetRanges };\n    });\n  };\n  const handleTestSelect = (item) => {\n    const itemExists = newItem?.targetRanges?.some((x) => x.id === item.id);\n\n    if (!itemExists) {\n      handleEditAssociatedPanels({ ...item, ranges: null });\n    }\n  };\n\n  const handleDisclaimerSave = (val, type) => {\n    setShowEditor(null);\n    setNewItem({ ...newItem, custom_notes: val });\n  };\n\n  const handleEditCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        handleEditAssociatedPanels(row);\n        break;\n      default:\n        break;\n    }\n  };\n\n  const handleEditAssociatedPanels = (accPanel) => {\n    setTestPanelData({\n      isNew: false,\n      ...accPanel,\n      typeOfTest: newItem.typeOfTest,\n      currentRanges: newItem.targetRanges,\n    });\n    openDetailModal();\n  };\n\n  const handelEffectiveDate = (e, fieldName) => {\n    const effectiveDate = moment(e).format(\"YYYY-MM-DD\") != \"Invalid date\" ? moment(e).format(\"YYYY-MM-DD\") : \"\";\n\n    setNewItem({ ...newItem, setting: { ...newItem.setting, [fieldName]: effectiveDate } });\n  };\n\n  const handelLoincCode = (e) => {\n    const value = e.target.value;\n\n    const numericValue = value.replace(/[^0-9]/g, \"\");\n\n    setNewItem({ ...newItem, lonicCode: numericValue });\n  };\n\n  const handelCtValue = (e) => {\n    const value = e.target.value;\n\n    const numericValue = value.replace(/[^0-9.]/g, \"\");\n\n    const sanitizedValue =\n      numericValue.split(\".\").length > 2 ? numericValue.substring(0, numericValue.lastIndexOf(\".\")) : numericValue;\n\n    setNewItem({ ...newItem, setting: { ...newItem.setting, ctValue: sanitizedValue } });\n  };\n\n  const handelRemoveGrid = (id) => {\n    if (ranges.length > 1) {\n      const filteredRanges = ranges.filter((item) => item.id !== id);\n      setRanges(filteredRanges);\n    }\n  };\n\n  const handleChangeRanges = (e, index) => {\n    const { name, value } = e.target;\n    let copyRanges = customCloneDeep(ranges);\n    copyRanges[index][name] = value;\n    setRanges(copyRanges);\n  };\n\n  const handleChangeGender = (e, index) => {\n    let copyRanges = customCloneDeep(ranges);\n    copyRanges[index].Gender = e;\n    setRanges(copyRanges);\n  };\n\n  const handleChangeBacteria = (e, index) => {\n    let copyRanges = customCloneDeep(ranges);\n    copyRanges[index][\"Bacteria\"] = e;\n    setRanges(copyRanges);\n  };\n\n  const handleAddRange = (rangeValue) => {\n    setRanges((prevRanges) => [\n      ...prevRanges,\n      {\n        id: prevRanges.length + 1,\n\n        ...rangeValue,\n\n        AgeStart: \"\",\n        AgeEnd: \"\",\n\n        NormalLow: \"\",\n        NormalHigh: \"\",\n\n        HighLow: \"\",\n        HighHigh: \"\",\n\n        PanicLow: \"\",\n        PanicHigh: \"\",\n\n        RepeatLow: \"\",\n        RepeatHigh: \"\",\n\n        LowLow: \"\",\n        LowHigh: \"\",\n      },\n    ]);\n  };\n\n  // Pathogens and Reactive Data\n\n  const organismsRows = useMemo(\n    () =>\n      newItem?.targetRanges?.filter((item) => item?.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ORGANISM) ||\n      [],\n    [newItem?.targetRanges]\n  );\n\n  const resistanceRows = useMemo(\n    () =>\n      newItem?.targetRanges?.filter(\n        (item) => item?.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.RESISTANCE\n      ) || [],\n    [newItem?.targetRanges]\n  );\n\n  const associatedRows = useMemo(\n    () =>\n      newItem?.targetRanges?.filter(\n        (item) => item?.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ASSOCIATED\n      ) || [],\n    [newItem?.targetRanges]\n  );\n\n  const additionalRows = useMemo(\n    () =>\n      newItem?.targetRanges?.filter(\n        (item) => item?.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ADDITIONAL\n      ) || [],\n    [newItem?.targetRanges]\n  );\n\n  const handleSaveCptAndIct = ({ cptList }) => {\n    setCptList(cptList);\n  };\n  const handleSaveTestElementPositions = (data) => {\n    setNewItem({ ...newItem, targetRanges: data });\n    setShowElementPositionModal(false);\n  };\n\n  const handleDiagCode = (e) => {\n    if (!e) {\n      setIctCodes([]);\n      return;\n    }\n    setIctCodes([e.ictCodes[0]]);\n  };\n  const handleManageText = () => {\n    setIsManageModal(true);\n  };\n\n  const handelChangeResultType = (e) => {\n    const newItemUpdate = {\n      ...newItem,\n      typeOfTest: e.label,\n      setting:\n        e.label === TYPE_OF_TEST.EXTERNAL\n          ? { ...newItem.setting, sendOut: true }\n          : {\n              ...newItem.setting,\n              sendOut: false,\n              referenceLab: null,\n              referenceLabID: null,\n            },\n    };\n\n    setNewItem(newItemUpdate);\n  };\n  const handleEdit = (row) => {\n    setEditObj(row);\n    setQuestionModalOpen(true);\n  };\n\n  const handleCloseQuestionModal = useCallback(() => {\n    setQuestionModalOpen(false);\n    setEditObj({});\n  }, []);\n\n  const handleSaveChange = useCallback(\n    (questionObj) => {\n      setNewItem((prevItem) => {\n        const prevQuestions = prevItem.setting?.additionalQuestion || [];\n\n        let updatedQuestions;\n\n        if (editObj?.id) {\n          updatedQuestions = prevQuestions.map((q) => (q.id === editObj.id ? { ...q, ...questionObj } : q));\n        } else {\n          updatedQuestions = [...prevQuestions, questionObj];\n        }\n\n        const itemObj = {\n          ...prevItem,\n          setting: {\n            ...prevItem.setting,\n            additionalQuestion: updatedQuestions,\n          },\n        };\n        const updatedPanelObj = validateInput(itemObj);\n        if(!newItem?.isNew)\n        {\n          handleSave(updatedPanelObj, false);\n        }\n        return itemObj;\n      });\n\n      setEditObj({});\n    },\n    [editObj]\n  );\n\n  const handleDelete = (row) => {\n    const filteredQuestions = newItem?.setting?.additionalQuestion.filter((q) => q.id !== row.id);\n\n    setNewItem((prevItem) => ({\n      ...prevItem,\n      setting: {\n        ...prevItem.setting,\n        additionalQuestion: filteredQuestions,\n      },\n    }));\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        handleEdit(row);\n        break;\n      case TABLE_QUICK_TOOLS.delete:\n        handleDelete(row);\n        break;\n      default:\n        break;\n    }\n  };\n  const handleSaveTestPanel = () => {\n    const testObj = validateInput(newItem);\n    if (testObj) {\n      handleSave(testObj);\n    }\n  };\n  return (\n    <Modal show animation={true} onHide={() => handleClose()} centered size={\"2xl\"} backdrop=\"static\">\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 h4\" id=\"contained-modal-title-vcenter\">\n          Panel Management\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body className=\"testAndAssayManagementModal\" style={{ padding: \"10px\", paddingTop: \"0px\" }}>\n        <div className=\"test-type-container\">\n          <div className=\"test-type-column test-type-column-70\">\n            <p className=\"test-component-title\">Panel Information</p>\n            <div className=\"test-component-container\">\n              <div className=\"test-component-elements\">\n                <TestTypeInput\n                  label={\"Panel Name\"}\n                  placeholder=\"Enter Name\"\n                  onChange={(e) => setNewItem({ ...newItem, name: e.target.value })}\n                  value={newItem?.name}\n                  required={true}\n                />\n                <TestTypeInput\n                  label={\"Internal Panel Code\"}\n                  placeholder=\"Enter Internal Code\"\n                  onChange={(e) => setNewItem({ ...newItem, code: e.target.value })}\n                  value={newItem?.code}\n                  required={true}\n                  maxLength={4}\n                />\n\n                <TestTypeSelect\n                  value={newItem.category ? { label: newItem.category, value: newItem.category } : null}\n                  onChange={(e) => setNewItem({ ...newItem, category: e.label })}\n                  settingType={TEST_SETTING_TYPES.DEPARTMENT}\n                  label={\"Department\"}\n                  title={\"Create Department\"}\n                  placeholder=\"Select Department\"\n                  updateMainTest={(value) => setNewItem({ ...newItem, category: value })}\n                  required={true}\n                />\n\n                <TestTypeSelect\n                  value={newItem.typeOfTest ? TEST_TYPE_OPTIONS.find((f) => f.label === newItem.typeOfTest) : null}\n                  onChange={handelChangeResultType}\n                  label={\"Result Type\"}\n                  placeholder=\"Select Result Type\"\n                  defaultOptions={TEST_TYPE_OPTIONS}\n                  showAddIcon={false}\n                  required={true}\n                />\n\n                <ResultDisclaimerSwitch\n                  label=\"Result Disclaimer\"\n                  placeholder={\"Result Disclaimer\"}\n                  checked={newItem?.showDisclaimer ? true : false}\n                  handleChange={(e) => setNewItem({ ...newItem, showDisclaimer: e.target.checked })}\n                  disabled={newItem?.custom_notes?.trim() !== \"\"}\n                  required={newItem.typeOfTest !== TYPE_OF_TEST.EXTERNAL}\n                />\n\n                {newItem?.showDisclaimer || newItem?.custom_notes?.trim() !== \"\" ? (\n                  <AddResultDisclaimer onClick={() => setShowEditor(true)} icon=\"editIconBlue\" />\n                ) : (\n                  <div className=\"test-component-element\"> </div>\n                )}\n              </div>\n\n              <div className=\"mt-2 test-component-elements\">\n                <TestTypeSelect\n                  value={newItem?.sources || null}\n                  onChange={(e) => setNewItem({ ...newItem, sources: e })}\n                  settingType={TEST_SETTING_TYPES.SOURCE}\n                  label={\"Sources\"}\n                  title={\"Create Source\"}\n                  placeholder=\"Select Source\"\n                  isMulti={true}\n                  updateMainTest={(value) => setNewItem({ ...newItem, sources: { label: value, value: value } })}\n                  required={true}\n                  // mainClass={getCliaNumber.length > 1 ? \"test-component-element-66\" : \"test-component-element\"}\n                />\n                <TestTypeSelect\n                  value={newItem?.sampleContainer || null}\n                  onChange={(e) => setNewItem({ ...newItem, sampleContainer: e })}\n                  settingType={TEST_SETTING_TYPES.SPECIMEN_CONTAINER}\n                  label={\"Specimen Container\"}\n                  title={\"Create Specimen Container\"}\n                  placeholder=\"Select Specimen Container\"\n                  isMulti={true}\n                  // updateMainTest={(value) => setNewItem({ ...newItem, sampleContainer: { label: value, value: value } })}\n                  required={true}\n                  // mainClass={getCliaNumber.length > 1 ? \"test-component-element-66\" : \"test-component-element\"}\n                />\n\n                {getCliaNumber.length > 1 && (\n                  <TestTypeSelect\n                    label=\"Location\"\n                    placeholder=\"Select Location\"\n                    showAddIcon={false}\n                    defaultOptions={getCliaNumber}\n                    value={newItem?.location ? getCliaNumber.find((f) => f.value === newItem.location) : null}\n                    required={true}\n                    onChange={(e) =>\n                      setNewItem({\n                        ...newItem,\n                        location: e.value,\n                      })\n                    }\n                  />\n                )}\n              </div>\n              <div className=\"test-component-elements mt-2\">\n                <TestElemensInput\n                  resistanceRows={resistanceRows}\n                  organismsRows={organismsRows}\n                  associatedRows={associatedRows}\n                  additionalRows={additionalRows}\n                  handleTestRemove={(item) => handleTestRemove(item)}\n                  onChange={handleTestSelect}\n                  handleCellClick={handleEditCellClick}\n                  required={newItem.typeOfTest !== TYPE_OF_TEST.EXTERNAL}\n                />\n              </div>\n            </div>\n\n            <div style={{ marginTop: \"20px\" }}>\n              <Accordion defaultActiveKey=\"1\">\n                <Accordion.Item eventKey=\"0\">\n                  <Accordion.Header className=\"mt-0 test-component-title ms-0\">Additional Information</Accordion.Header>\n                  <Accordion.Body>\n                    <div className=\"test-component-container\">\n                      <div className=\"test-component-elements\">\n                        <TestIctOrCptSelector\n                          searchType={CPT_CODE_SEARCH_TYPE.ICT}\n                          setItem={handleDiagCode}\n                          item={ictCodes.length > 0 ? ictCodes[0] : {}}\n                          label=\"ICD / Diagnosis Code\"\n                          placeholder=\"Enter ICD / Diagnosis Code\"\n                        />\n\n                        <TestTypeInput\n                          searchType={CPT_CODE_SEARCH_TYPE.CPT}\n                          label={\"CPT Code\"}\n                          readOnly\n                          placeholder={\"Click Mange to add CPT\"}\n                          handleShowCPT={() => setShowCptModal(true)}\n                          value={cptList.length ? `Linked CPT Code (${cptList.length})` : \"\"}\n                        />\n\n                        <TestTypeInput\n                          label={\"LONIC Code\"}\n                          placeholder=\"LONIC Code\"\n                          onChange={handelLoincCode}\n                          value={newItem?.lonicCode}\n                        />\n\n                        <div className=\"test-component-element\">\n                          <TestTypeInputDate\n                            label=\"Effective from Date\"\n                            onChange={(event) => handelEffectiveDate(event, \"effectiveFrom\")}\n                            value={newItem?.setting?.effectiveFrom}\n                            icon\n                          />\n                        </div>\n\n                        <div className=\"test-component-element\">\n                          <TestTypeInputDate\n                            label=\"Effective to Date\"\n                            onChange={(event) => handelEffectiveDate(event, \"effectiveTo\")}\n                            value={newItem?.setting?.effectiveTo}\n                            icon\n                          />\n                        </div>\n\n                        <TestTypeInput\n                          label={\"Test Reagent\"}\n                          placeholder=\"Test Reagent\"\n                          value={newItem?.setting?.reagent || \"\"}\n                          onChange={(e) =>\n                            setNewItem({ ...newItem, setting: { ...newItem.setting, reagent: e.target.value } })\n                          }\n                        />\n\n                        <TestTypeInput\n                          label={\"Cutoff CT Value\"}\n                          placeholder=\"Cutoff CT Value\"\n                          onChange={handelCtValue}\n                          value={newItem?.setting?.ctValue || \"\"}\n                        />\n\n                        <TestTypeInput\n                          searchType={\"elementPosition\"}\n                          label={\"Element Position\"}\n                          readOnly\n                          placeholder={\"Click To Change Test Element Positions\"}\n                          handleShowCPT={() => setShowElementPositionModal(true)}\n                          // value={cptList.length ? `Linked CPT Code (${cptList.length})` : \"\"}\n                        />\n                      </div>\n                    </div>\n                  </Accordion.Body>\n                </Accordion.Item>\n              </Accordion>\n            </div>\n            {questionModalOpen && (\n              <AddQuestionModal\n                editObj={editObj}\n                handleClose={handleCloseQuestionModal}\n                handleSaveChange={handleSaveChange}\n              />\n            )}\n            <div style={{ marginTop: \"20px\" }}>\n              <Accordion activeKey={activeKey} onSelect={(key) => setActiveKey(key)}>\n                <Accordion.Item eventKey=\"0\">\n                  <Accordion.Header className=\"mt-0 test-component-title ms-0\">\n                    <div className=\"d-flex\" style={{ justifyContent: \"space-between\", width: \"100%\" }}>\n                      <div>Additional Screening Information</div>\n\n                      {/* Show icon when the accordion is expanded */}\n                      {activeKey === \"0\" && (\n                        <div style={{ position: \"relative\", right: \"10px\" }} onClick={(e) => e.stopPropagation()}>\n                          <Icon\n                            iconType={\"createIconBlue\"}\n                            containerClass={\"ms-2 cursor-pointer\"}\n                            innerClass={\"test-selector-add-icon\"}\n                            handleClick={() => setQuestionModalOpen(true)}\n                          />\n                        </div>\n                      )}\n                    </div>\n                  </Accordion.Header>\n\n                  <Accordion.Body>\n                    <div\n                      className=\"d-block\"\n                      style={{ backgroundColor: \"#f2f2f2\", maxHeight: \"250px\", overflowY: \"auto\" }}\n                    >\n                      {newItem?.setting?.additionalQuestion && (\n                        <div className=\"table-responsive addquestionmodal\">\n                          <MainTable\n                            trDataWrapperHeader=\"bg-white\"\n                            columns={PANEL_QUESTIONS_PERSONALIZATION}\n                            rows={newItem?.setting?.additionalQuestion || []}\n                            handleCellClick={handleCellClick}\n                            tools={[TABLE_QUICK_TOOLS.edit, TABLE_QUICK_TOOLS.delete]}\n                          />\n                        </div>\n                      )}\n                    </div>\n                  </Accordion.Body>\n                </Accordion.Item>\n              </Accordion>\n            </div>\n          </div>\n\n          <div className=\"test-type-column test-type-column-30\">\n            <p className=\"test-component-title\">Panel Setting</p>\n            <div className=\"test-component-container column-full-height\">\n              <ResultDisclaimerSwitch\n                inlineLabel\n                label=\"Active\"\n                checked={newItem?.isActive}\n                handleChange={(e) => setNewItem({ ...newItem, isActive: e.target.checked })}\n              />\n              {userClientData?.setting?.arkstone === \"y\" && (\n                <ResultDisclaimerSwitch\n                  inlineLabel\n                  label=\"Arkstone\"\n                  checked={newItem?.isARKStone}\n                  handleChange={(e) => setNewItem({ ...newItem, isARKStone: e.target.checked })}\n                />\n              )}\n              <ResultDisclaimerSwitch\n                inlineLabel\n                label=\"Send Out\"\n                checked={newItem?.setting?.sendOut}\n                handleChange={(e) => {\n                  const isChecked = e.target.checked;\n                  setNewItem({\n                    ...newItem,\n                    setting: {\n                      ...newItem.setting,\n                      sendOut: isChecked,\n                      referenceLab: isChecked ? newItem?.setting?.referenceLab : null,\n                      referenceLabID: isChecked ? newItem?.setting?.referenceLabID : null,\n                    },\n                    typeOfTest: isChecked ? TYPE_OF_TEST.EXTERNAL : newItem.typeOfTest,\n                  });\n                }}\n              />\n              {newItem?.setting?.sendOut && (\n                <div className=\"border-b-1 pb-3 pt-3\">\n                  <TestTypeSelect\n                    label=\"\"\n                    placeholder=\"Select Reference Lab\"\n                    showAddIcon={false}\n                    defaultOptions={getSiteOptions}\n                    value={\n                      newItem?.setting?.referenceLabID\n                        ? getSiteOptions.find((f) => f.value === newItem.setting?.referenceLabID)\n                        : null\n                    }\n                    onChange={(e) =>\n                      setNewItem({\n                        ...newItem,\n                        setting: { ...newItem.setting, referenceLab: e.label, referenceLabID: e.value },\n                      })\n                    }\n                  />\n                </div>\n              )}\n\n              <ResultDisclaimerSwitch\n                inlineLabel\n                label=\"H&S\"\n                checked={newItem?.setting?.hs || false}\n                noBorder\n                handleChange={(e) =>\n                  setNewItem({\n                    ...newItem,\n                    setting: { ...newItem.setting, hs: e.target.checked },\n                  })\n                }\n              />\n            </div>\n          </div>\n        </div>\n\n        {showCptModal && (\n          <TestCptSelectorModal\n            cptData={cptList}\n            handleClose={() => setShowCptModal(false)}\n            saveCptData={handleSaveCptAndIct}\n          />\n        )}\n\n        {showElementPositionModal && (\n          <TestElementPositionModal\n            testElementData={newItem?.targetRanges || []}\n            handleClose={() => setShowElementPositionModal(false)}\n            saveTestElementPosition={handleSaveTestElementPositions}\n          />\n        )}\n\n        {showRangesModal && (\n          <TestRangeModal\n            data={ranges}\n            onChange={handleChangeRanges}\n            onChangeGender={handleChangeGender}\n            onChangeBacteria={handleChangeBacteria}\n            handelRemoveView={(data) => handelRemoveGrid(data)}\n            handleClose={() => setShowRangesModal(false)}\n            handleAddRange={() => handleAddRange()}\n          />\n        )}\n\n        {showEditor && (\n          <TextEditor\n            text={newItem?.custom_notes || \"\"}\n            handleSave={handleDisclaimerSave}\n            handleClose={() => setShowEditor(null)}\n            type={showEditor.type}\n          />\n        )}\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"modalButtons\" onClick={handleClose}>\n          Close\n        </Button>\n\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={handleSaveTestPanel}>\n          {item.isNew ? \"Create\" : \"Update\"}\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default memo(TestTypeModal);\n","import React from \"react\";\n\nconst TestInputField = ({ label, value, onChange, type = \"text\", name = \"\", required = false }) => (\n  <div>\n    <p className=\"modalLineHeaders\">\n      {label}\n\n      {required && <span style={{ color: \"red\" }}>*</span>}\n    </p>\n    <input\n      className=\"modalInput\"\n      value={value}\n      placeholder={label}\n      style={{ width: \"100%\" }}\n      type={type}\n      name={name}\n      onChange={onChange}\n    />\n  </div>\n);\n\nexport default TestInputField;\n","import React from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport Select from \"react-select\";\n\nconst TestCollapsibleMenu = ({ className, placeholder, value, onChange, options }) => {\n  return (\n    <Select\n      className={`${className}`}\n      options={options}\n      blurInputOnSelect={true}\n      menuPlacement={\"auto\"}\n      value={value}\n      placeholder={placeholder}\n      onChange={onChange}\n    />\n  );\n};\n\nexport default TestCollapsibleMenu;\n","import React, { useMemo, useEffect } from \"react\";\nimport \"./TestDetailsRangeView.css\";\nimport Icon from \"components/Icon\";\nimport TestCollapsibleMenu from \"./TestCollapsibleMenu\";\nimport { Button } from \"react-bootstrap\";\nimport { rangeDataOptions } from \"constant\";\nimport { getSelectedValues } from \"../../../util/rangeUtil\";\n\nconst TestDetailsRangeViewNew = ({\n  onChange,\n  data,\n  handelRemoveView,\n  handleAddRange,\n  setFilter,\n  handelRemoveNode,\n  handleAddNode,\n  handelCollaspeNode,\n  handleAddNewRow,\n  handelRemoveRow,\n}) => {\n  // const {\n  //   AgeStart,\n  //   AgeEnd,\n  //   NormalLow,\n  //   NormalHigh,\n  //   HighLow,\n  //   HighHigh,\n  //   PanicLow,\n  //   PanicHigh,\n  //   RepeatLow,\n  //   RepeatHigh,\n  //   LowLow,\n  //   LowHigh,\n  //   RangesAdded,\n  //   collapse,\n  //   FilterKey = [null],\n  // } = data;\n\n  const { RangesAdded, collapse, FilterKey = [null], RangeArr } = data;\n\n  const rangesArr = [\"Low\", \"Normal\", \"High\", \"Panic\", \"Repeat\"];\n\n  const getFilteredOptions = (includedValues, excludeValues) => {\n    const exdValue = [...excludeValues].filter((item) => item !== includedValues?.keyType).filter(Boolean);\n\n    return rangeDataOptions.filter((option) => !exdValue.includes(option.keyType));\n    // if (!includedValues) return rangeDataOptions.filter((option) => option.keyType === includedValues.keyType);\n  };\n\n  const hasAgeFilter = useMemo(() => {\n    return FilterKey.some((item) => item?.keyType === \"age\");\n  }, [FilterKey]);\n\n  const handleSelectChange = (selectedOption, index) => {\n\n    const updatedBlocks = [...FilterKey];\n\n    updatedBlocks[index] = selectedOption;\n\n    const excludeValues = updatedBlocks?.map((value) => value?.keyType).filter(Boolean);\n    const options = getFilteredOptions(null, excludeValues);\n\n    if (\n      options.length &&\n      !RangesAdded &&\n      (updatedBlocks[index + 1] === null || updatedBlocks[index + 1] === undefined)\n    ) {\n      updatedBlocks[index + 1] = null;\n    }\n\n    setFilter(updatedBlocks);\n  };\n\n  const renderDropdowns = (block, index, options) => {\n    const isSelected = block !== null;\n\n    const selectedValues = getSelectedValues({ FilterKey, RangeArr, index, collapse });\n\n    const displayValue = selectedValues ? { label: selectedValues, value: selectedValues } : block;\n\n    return (\n      <div className=\"d-flex align-items-center\" key={index}>\n        <Icon\n          iconType={!isSelected || collapse ? \"rightArrow\" : \"downArrow\"}\n          containerClass={\"cursor-pointer ml-5\"}\n          innerClass={\"test-selector-add-icon\"}\n          imageClass={\"delete-icon \"}\n          handleClick={handelCollaspeNode}\n        />\n\n        <TestCollapsibleMenu\n          key={index}\n          options={options}\n          onChange={(selectedOption) => handleSelectChange(selectedOption, index)}\n          value={displayValue}\n          className=\"minWidth50\"\n        />\n      </div>\n    );\n  };\n\n  return (\n    <div style={{ padding: \"10px\", borderRadius: \"10px\" }}>\n      {FilterKey?.map((block, blockIndex) => {\n        const excludeValues = FilterKey?.map((value) => value?.keyType).filter(Boolean);\n\n        const options = getFilteredOptions(block, excludeValues);\n        if (!collapse || blockIndex === 0) {\n          return (\n            <div\n              key={blockIndex}\n              className=\"block-section\"\n              style={{\n                marginLeft: blockIndex === 0 ? \"0px\" : `${blockIndex * 40}px`,\n              }}\n            >\n              <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n                <div className=\"w-50 d-flex align-items-center\">\n                  {renderDropdowns(block, blockIndex, options)}\n\n                  <Icon\n                    iconType={\"binIcon\"}\n                    containerClass={\"cursor-pointer ms-2\"}\n                    imageClass={\"delete-icon \"}\n                    handleClick={() => handelRemoveNode(blockIndex)}\n                  />\n\n                  {FilterKey.length - 1 === blockIndex && options.length > 0 && (\n                    <Icon\n                      iconType={\"createIcon\"}\n                      containerClass={\"ms-2 cursor-pointer\"}\n                      innerClass={\"test-selector-add-icon\"}\n                      handleClick={handleAddNode}\n                    />\n                  )}\n                </div>\n\n                {RangesAdded === false && blockIndex === FilterKey.length - 1 && (\n                  <div\n                    className=\"d-flex justify-content-end\"\n                    style={{\n                      minWidth: \"350px\",\n                      width: FilterKey?.length > 2 ? `${370 + (FilterKey.length - 2) * 80}px` : \"370px\",\n                    }}\n                  >\n                    <Button\n                      className=\"border-0 px-0 text-decoration-underline\"\n                      variant=\"primary\"\n                      disabled={RangesAdded}\n                      onClick={handleAddRange}\n                    >\n                      Add Ranges\n                    </Button>\n                  </div>\n                )}\n              </div>\n            </div>\n          );\n        }\n      })}\n\n      {(RangesAdded || RangesAdded === undefined) && !collapse && (\n        <div\n          className=\"range-view-container\"\n          style={{\n            marginLeft: FilterKey.filter(Boolean).length * 40,\n          }}\n        >\n          <table className=\"range-view-table\">\n            <thead>\n              <tr>\n                {hasAgeFilter && (\n                  <th className=\"range-view-th range-special-bg\" colSpan=\"2\">\n                    Age Range\n                  </th>\n                )}\n\n                {rangesArr.map((range, index) => (\n                  <th className=\"range-view-th\" colSpan=\"2\" key={`range_${index}`}>\n                    {range}\n                  </th>\n                ))}\n                <th className=\"range-view-th\">Action</th>\n              </tr>\n            </thead>\n            <tbody>\n              <tr>\n                {hasAgeFilter && (\n                  <>\n                    <td className=\"range-view-td text-center range-special-bg\">Start</td>\n                    <td className=\"range-view-td text-center range-special-bg\">End</td>\n                  </>\n                )}\n\n                {rangesArr.map((item, index) => (\n                  <>\n                    <td className=\"range-view-td text-center\" key={`low_${index}`}>\n                      Low\n                    </td>\n                    <td className=\"range-view-td text-center\" key={`high_${index}`}>\n                      High\n                    </td>\n                  </>\n                ))}\n\n                <td className=\"range-view-td\"></td>\n              </tr>\n\n              {RangeArr &&\n                RangeArr.map((item, rowIndex) => {\n                  const {\n                    AgeStart,\n                    AgeEnd,\n                    NormalLow,\n                    NormalHigh,\n                    HighLow,\n                    HighHigh,\n                    PanicLow,\n                    PanicHigh,\n                    RepeatLow,\n                    RepeatHigh,\n                    LowLow,\n                    LowHigh,\n                  } = item;\n\n                  return (\n                    <tr>\n                      {hasAgeFilter && (\n                        <>\n                          <td className=\"text-center range-special-bg\">\n                            <input\n                              className=\"range-view-input\"\n                              name=\"AgeStart\"\n                              value={AgeStart}\n                              type=\"number\"\n                              onChange={(e) => onChange(e, rowIndex)}\n                            />\n                          </td>\n                          <td className=\"text-center range-special-bg\">\n                            <input\n                              className=\"range-view-input\"\n                              name=\"AgeEnd\"\n                              value={AgeEnd}\n                              type=\"number\"\n                              onChange={(e) => onChange(e, rowIndex)}\n                            />\n                          </td>\n                        </>\n                      )}\n\n                      <td className=\"text-center bg-white\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"LowLow\"\n                          value={LowLow}\n                          onChange={(e) => onChange(e, rowIndex)}\n                        />\n                      </td>\n                      <td className=\"text-center bg-white\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"LowHigh\"\n                          value={LowHigh}\n                          onChange={(e) => onChange(e, rowIndex)}\n                        />\n                      </td>\n\n                      <td className=\"text-center bg-white\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"NormalLow\"\n                          value={NormalLow}\n                          onChange={(e) => onChange(e, rowIndex)}\n                        />\n                      </td>\n                      <td className=\"text-center bg-white\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"NormalHigh\"\n                          value={NormalHigh}\n                          onChange={(e) => onChange(e, rowIndex)}\n                        />\n                      </td>\n\n                      <td className=\"text-center bg-white\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"HighLow\"\n                          value={HighLow}\n                          onChange={(e) => onChange(e, rowIndex)}\n                        />\n                      </td>\n                      <td className=\"text-center bg-white\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"HighHigh\"\n                          value={HighHigh}\n                          onChange={(e) => onChange(e, rowIndex)}\n                        />\n                      </td>\n\n                      <td className=\"text-center bg-white\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"PanicLow\"\n                          value={PanicLow}\n                          onChange={(e) => onChange(e, rowIndex)}\n                        />\n                      </td>\n                      <td className=\"text-center bg-white\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"PanicHigh\"\n                          value={PanicHigh}\n                          onChange={(e) => onChange(e, rowIndex)}\n                        />\n                      </td>\n\n                      <td className=\"text-center bg-white\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"RepeatLow\"\n                          value={RepeatLow}\n                          onChange={(e) => onChange(e, rowIndex)}\n                        />\n                      </td>\n                      <td className=\"text-center bg-white\">\n                        <input\n                          className=\"range-view-input\"\n                          name=\"RepeatHigh\"\n                          value={RepeatHigh}\n                          onChange={(e) => onChange(e, rowIndex)}\n                        />\n                      </td>\n\n                      <td className=\"text-center bg-white\">\n                        <div className=\"d-flex align-items-center\">\n                          <Icon\n                            iconType={\"binIcon\"}\n                            containerClass={\"cursor-pointer\"}\n                            innerClass={\"\"}\n                            imageClass={\"delete-icon \"}\n                            handleClick={() => handelRemoveRow(rowIndex)}\n                          />\n                          {hasAgeFilter && rowIndex === RangeArr.length - 1 && (\n                            <Icon\n                              iconType={\"createIcon\"}\n                              containerClass={\"cursor-pointer ms-2\"}\n                              imageClass={\"delete-icon \"}\n                              handleClick={handleAddNewRow}\n                            />\n                          )}\n                        </div>\n                      </td>\n                    </tr>\n                  );\n                })}\n            </tbody>\n          </table>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default TestDetailsRangeViewNew;\n","import React, { useEffect, useState } from 'react';\nimport Select from 'react-select';\nimport api from 'api';\nimport Icon from 'components/Icon';\nimport { TEST_SETTING_TYPES } from 'constant';\n\nimport CreateOptions from './CreateOptions';\nimport { customUniqBy } from 'util/customLodash';\n\n\nconst useOptions = (settingType) => {\n  const [options, setOptions] = useState([]);\n\n  const getOptions = async () => {\n    try {\n      const optionList = await api.getGeneralSetting(settingType);\n      let uniqueOptions = customUniqBy(optionList, \"label\")\n      setOptions(uniqueOptions);\n    } catch (error) {\n      console.error(`Error fetching ${settingType}:`, error);\n    }\n  };\n\n  const addOption = async (optionName, id = null) => {\n\n    try {\n      const isExist = options.some(\n        (item) => item.label.toLowerCase() === optionName.toLowerCase(),\n      );\n      if (!isExist) {\n        await api.createOption(settingType, optionName);\n      }\n    } catch (error) {\n      console.error(`Error adding ${settingType}:`, error);\n    }\n\n    getOptions();\n  };\n\n  useEffect(() => {\n    getOptions();\n  }, [settingType]);\n\n  return { options, addOption };\n};\n\nconst TestSelector = ({\n  settingType,\n  onChange,\n  value,\n  tabIndex = 1,\n  label = 'Units',\n  className = '',\n  title = 'Create New Unit',\n  placeholder = 'Select Units',\n  updateMainTest,\n  required = false,\n  isMulti = false,\n  defaultValue = null,\n  showCreateButton = true\n}) => {\n  const { options, addOption } = useOptions(settingType);\n\n  const [showCreateOptionModal, setShowCreateOptionModal] = useState(false);\n\n  const handelAddOption = (value) => {\n    addOption(value);\n    updateMainTest(value);\n    setShowCreateOptionModal(false);\n  };\n\n  return (\n    <div className=\"row mt-2\">\n      <p className=\"testDetailsSelector\">\n        {label}\n        {required && <span style={{ color: 'red' }}>*</span>}\n      </p>\n      <div className=\"d-flex align-items-center\">\n        <Select\n          className={`w-100 ${className}`}\n          options={options}\n          blurInputOnSelect={true}\n          menuPlacement={'auto'}\n          defaultValue={defaultValue}\n          value={value}\n          placeholder={placeholder}\n          onChange={onChange}\n          tabIndex={tabIndex}\n          isMulti={isMulti}\n        />\n        {\n          showCreateButton &&\n          <Icon\n            iconType={'createIcon'}\n            containerClass={'ms-2 cursor-pointer'}\n            innerClass={'test-selector-add-icon'}\n            handleClick={() => setShowCreateOptionModal(true)}\n          />\n        }\n      </div>\n      {showCreateOptionModal && settingType !== TEST_SETTING_TYPES.OPTIONS && (\n        <CreateOptions\n          handleClose={() => setShowCreateOptionModal(false)}\n          title={title}\n          label={label}\n          handleSaveChange={handelAddOption}\n          placeholder={placeholder}\n        />\n      )}\n\n\n    </div>\n  );\n};\n\nexport default TestSelector;\n","import { ANTIBIOTIC_RESISTANCE_GENES_TYPE, TEST_SETTING_TYPES, TYPE_OF_TEST, TEST_TYPE_OPTIONS_ONLY } from \"constant\";\nimport React, { memo, useContext, useEffect, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { generateRefInterval } from \"utils\";\nimport TestInputField from \"./TestInputField\";\nimport TestDetailsRangeView from \"./TestDetailsRangeView/TestDetailsRangeView\";\nimport TestDetailsRangeViewNew from \"./TestDetailsRangeView/TestDetailsRangeViewNew\";\nimport { AppContext } from \"context/app-context\";\nimport { customIsEmpty } from \"util/customLodash\";\nimport TestSelector from \"./TestUnitSelector/TestSelector\";\nimport { customCloneDeep } from \"util/customLodash\";\nimport TestTypeSelect from \"./TestTypeComponent/TestTypeSelect\";\n\nimport Loader from \"components/Loader/Loader\";\n\nimport Icon from \"components/Icon\";\n\nconst TestDetailsModal = ({ data, handleSaveTestDetail, handleClose, loading }) => {\n  const appContext = useContext(AppContext);\n\n  const emptyRowObj = {\n    AgeStart: \"\",\n    AgeEnd: \"\",\n    NormalLow: \"\",\n    NormalHigh: \"\",\n    HighLow: \"\",\n    HighHigh: \"\",\n    PanicLow: \"\",\n    PanicHigh: \"\",\n    RepeatLow: \"\",\n    RepeatHigh: \"\",\n    LowLow: \"\",\n    LowHigh: \"\",\n  };\n\n  const emptyNode = {\n    RangesAdded: false,\n    FilterKey: [null],\n    collapse: false,\n    RangeArr: [emptyRowObj],\n  };\n\n  const [newItem, setNewItem] = useState({\n    isNew: true,\n    name: \"\",\n    units: null,\n    refInterval: \"\",\n    isActive: \"\",\n  });\n\n  const [ranges, setRanges] = useState(() => {\n    const defaultRangeObj = {\n      RangesAdded: false,\n      FilterKey: [null],\n      collapse: false,\n      RangeArr: [emptyRowObj],\n    };\n\n    const keysToMoveToRangeArr = [\n      \"LowLow\",\n      \"HighLow\",\n      \"LowHigh\",\n      \"HighHigh\",\n      \"PanicLow\",\n      \"NormalLow\",\n      \"PanicHigh\",\n      \"RepeatLow\",\n      \"NormalHigh\",\n      \"RepeatHigh\",\n      \"AgeStart\",\n      \"AgeEnd\",\n    ];\n\n    const moveKeysToRangeArr = (parentObj) => {\n      const newRangeArr = {};\n      keysToMoveToRangeArr.forEach((key) => {\n        if (parentObj[key] !== undefined) {\n          newRangeArr[key] = parentObj[key];\n        }\n      });\n      return [newRangeArr];\n    };\n\n    if (data?.ranges && data.ranges.length > 0) {\n      const rangeData = data.ranges.map((range) => ({\n        RangesAdded: range.RangesAdded || true,\n        FilterKey: range.FilterKey,\n        // collapse: range.collapse || false,\n        collapse: range?.FilterKey?.length === 0 ? false : true,\n        RangeArr: range.RangeArr || moveKeysToRangeArr(range),\n      }));\n\n      return [...rangeData, defaultRangeObj];\n    }\n\n    return [defaultRangeObj];\n  });\n\n  const [refIntervalSelection, setRefIntervalSelection] = useState(\"ctscore\");\n\n  const [resultType, setResultType] = useState(\"\");\n\n  const setRefInterval = (data) => {\n    let refType;\n\n    try {\n      refType = JSON.parse(data.refType);\n    } catch (error) {\n      refType = \"ctscore\";\n    }\n    setRefIntervalSelection(refType);\n  };\n\n  useEffect(() => {\n    if (data) {\n      setNewItem({\n        ...newItem,\n        ...data,\n        possibleValues: data.typeOfTest === TYPE_OF_TEST.BOTH ? data.possibleValues : data.typeOfTest,\n      });\n      setRefInterval(data);\n      setResultType(data?.resultType || \"\");\n    }\n  }, []);\n\n  const hasDuplicateFilterKeys = (data) => {\n    const filterKeySet = new Set();\n\n    for (const item of data) {\n      const filterKey = item.FilterKey || [];\n\n      const filteredFilterKey = filterKey.filter((obj) => obj !== null);\n      if (filteredFilterKey.length === 0) continue;\n\n      const serializedFilterKey = JSON.stringify(\n        filteredFilterKey.map((obj) => ({\n          label: obj.label,\n          value: obj.value,\n          keyType: obj.keyType,\n        }))\n      );\n\n      if (filterKeySet.has(serializedFilterKey)) {\n        return true;\n      }\n\n      filterKeySet.add(serializedFilterKey);\n    }\n\n    return false;\n  };\n\n  const checkRanges = (data) => {\n    const keysOrder = [\n      \"LowLow\",\n      \"LowHigh\",\n      \"NormalLow\",\n      \"NormalHigh\",\n      \"HighLow\",\n      \"HighHigh\",\n      \"PanicLow\",\n      \"PanicHigh\",\n      \"RepeatLow\",\n      \"RepeatHigh\",\n    ];\n\n    for (const obj of data) {\n      if (!obj.RangesAdded) continue;\n\n      const hasAgeFilter = obj?.FilterKey?.some((filter) => filter && filter.keyType === \"age\");\n\n      if (hasAgeFilter) {\n        const ageRanges = obj.RangeArr.map((range) => {\n          const ageStart = parseFloat(range.AgeStart);\n          const ageEnd = parseFloat(range.AgeEnd);\n          return { ageStart, ageEnd };\n        })\n          .filter(({ ageStart, ageEnd }) => !isNaN(ageStart) && !isNaN(ageEnd))\n          .sort((a, b) => a.ageStart - b.ageStart);\n\n        if (ageRanges.length === 0) {\n          return { valid: false, reason: \"Enter Age.\" };\n        }\n\n        for (let i = 0; i < ageRanges.length; i++) {\n          const { ageStart, ageEnd } = ageRanges[i];\n          if (ageEnd <= ageStart) {\n            return {\n              valid: false,\n              reason: \"Age group is invalid: AgeEnd should be greater than AgeStart.\",\n            };\n          }\n\n          if (i > 0 && ageStart <= ageRanges[i - 1].ageEnd) {\n            return { valid: false, reason: \"Duplicate Age: Overlapping age ranges found.\" };\n          }\n        }\n      }\n\n      for (const range of obj.RangeArr) {\n        let previousValue = null;\n        let isAllKeysEmpty = true;\n\n        for (const key of keysOrder) {\n          const value = range[key];\n          // if (!value) continue;\n          if (value === null || value === undefined || value === \"\") continue;\n\n          const currentValue = parseFloat(value);\n\n          if (isNaN(currentValue)) {\n            return { valid: false, reason: \"Invalid Range Value: Non-numeric value found.\" };\n          }\n\n          if (previousValue !== null && currentValue <= previousValue) {\n            return {\n              valid: false,\n              reason: \"Invalid Range Value: Values are not in increasing order.\",\n            };\n          }\n\n          previousValue = currentValue;\n\n          isAllKeysEmpty = false;\n        }\n\n        if (isAllKeysEmpty) {\n          return { valid: false, reason: \"Invalid Range Value: All range values are empty.\" };\n        }\n      }\n    }\n\n    return { valid: true, reason: \"All ranges are valid.\" };\n  };\n\n  const validateInput = () => {\n    const { callFrom } = newItem;\n\n    // console.log(\"Ranges\", ranges);\n\n    // return;\n\n    if (!newItem?.name?.trim()) {\n      appContext.showErrorMessage(\"Enter valid pathogen name\");\n      return;\n    }\n\n    if (callFrom === \"pathegon\" && !newItem.antibioticResistanceType) {\n      appContext.showErrorMessage(\"Select Antibiotic Resistance Gens\");\n      return;\n    }\n\n    if (callFrom === \"test\" && (!newItem.units || customIsEmpty(newItem.units))) {\n      appContext.showErrorMessage(\"Select Element units\");\n      return;\n    }\n\n    // if (callFrom === 'test' && (!newItem.sources || customIsEmpty(newItem.sources))) {\n    //   appContext.showErrorMessage('Select Element Source');\n    //   return;\n    // }\n\n    if (callFrom === \"test\" && (newItem.possibleValues === \"\" || newItem.possibleValues === null)) {\n      appContext.showErrorMessage(\"Select Result Type.\");\n      return;\n    }\n\n    if (newItem.possibleValues === \"Quantitative\") {\n      const duplicateFilter = hasDuplicateFilterKeys(ranges);\n\n      if (duplicateFilter) {\n        appContext.showErrorMessage(\"Ranges variables should be unique\");\n\n        return;\n      }\n\n      const isDuplicateRange = checkRanges(ranges);\n\n      if (!isDuplicateRange.valid) {\n        appContext.showErrorMessage(isDuplicateRange.reason);\n        return;\n      }\n    }\n\n    const referenceInterval = ranges && ranges.length > 0 ? generateRefInterval({ ...newItem, ranges: ranges[0] }) : \"\";\n\n    const testObj = {\n      ...newItem,\n      units: newItem?.units,\n\n      refType: newItem?.typeOfTest === \"Qualitative\" ? \"Not Detected\" : refIntervalSelection,\n      ranges:\n        newItem?.typeOfTest === TYPE_OF_TEST.QUANTITATIVE\n          ? ranges.filter((item) => item.RangesAdded === true || item.RangesAdded === undefined)\n          : null,\n      resultType,\n      possibleValues: newItem.typeOfTest === \"Both\" ? newItem.possibleValues : newItem.typeOfTest,\n      isActive: true,\n    };\n    handleSaveTestDetail(testObj);\n  };\n\n  const handleInputChange = (field, value) => {\n    setNewItem((prev) => ({ ...prev, [field]: value }));\n  };\n  const handleChangeRanges = (e, rowIndex, index) => {\n    const { name, value } = e.target;\n    let copyRanges = customCloneDeep(ranges);\n\n    copyRanges[index][\"RangeArr\"][rowIndex][name] = value;\n    setRanges(copyRanges);\n  };\n\n  const handleAddRange = (index) => {\n    let copyRanges = customCloneDeep(ranges);\n\n    copyRanges[index].RangesAdded = true;\n    copyRanges[index].FilterKey = copyRanges[index]?.FilterKey?.filter(Boolean) || [];\n\n    const emptyRangeObj = {\n      RangesAdded: false,\n      FilterKey: [null],\n      collapse: false,\n      RangeArr: [emptyRowObj],\n    };\n    copyRanges.push(emptyRangeObj);\n\n    setRanges(copyRanges);\n    // setRanges((prevRanges) => [\n    //   ...prevRanges,\n    //   {\n    //     id: prevRanges.length + 1,\n\n    //     Bacteria: \"\",\n\n    //     AgeStart: \"\",\n    //     AgeEnd: \"\",\n\n    //     NormalLow: \"\",\n    //     NormalHigh: \"\",\n\n    //     HighLow: \"\",\n    //     HighHigh: \"\",\n\n    //     PanicLow: \"\",\n    //     PanicHigh: \"\",\n\n    //     RepeatLow: \"\",\n    //     RepeatHigh: \"\",\n\n    //     LowLow: \"\",\n    //     LowHigh: \"\",\n    //   },\n    // ]);\n  };\n\n  const handelFilterData = (data, index) => {\n    let copyRanges = customCloneDeep(ranges);\n\n    copyRanges[index][\"FilterKey\"] = data;\n\n    if (index > 0) {\n      for (let i = 0; i < copyRanges.length; i++) {\n        if (i === index) continue;\n        copyRanges[i][\"collapse\"] = copyRanges[i].FilterKey.length > 0 ? true : false;\n      }\n    }\n\n    setRanges(copyRanges);\n  };\n\n  const handelRemoveNode = (filterIndex, index) => {\n    let copyRanges = customCloneDeep(ranges);\n    if (filterIndex === 0) {\n      copyRanges.splice(index, 1);\n    } else if (copyRanges[index][\"FilterKey\"]?.length > 1) {\n      copyRanges[index][\"FilterKey\"].splice(filterIndex, 1);\n    }\n    setRanges(copyRanges);\n  };\n\n  const handleAddNode = (index) => {\n    let copyRanges = customCloneDeep(ranges);\n\n    if (!Array.isArray(copyRanges[index][\"FilterKey\"])) {\n      copyRanges[index][\"FilterKey\"] = [];\n    }\n\n    const filterKeyLength = copyRanges[index][\"FilterKey\"].length;\n    if (filterKeyLength === 0 || copyRanges[index][\"FilterKey\"][filterKeyLength - 1] !== null) {\n      copyRanges[index][\"FilterKey\"].push(null);\n      setRanges(copyRanges);\n    } else {\n      appContext.showErrorMessage(\"Fill value in last field.\");\n    }\n  };\n\n  const handelRemoveGrid = (index) => {\n    let copyRanges = customCloneDeep(ranges);\n\n    copyRanges.splice(index, 1);\n\n    setRanges(copyRanges);\n  };\n  const handelCollaspeNode = (index) => {\n    let copyRanges = customCloneDeep(ranges);\n    copyRanges[index].collapse = !copyRanges[index].collapse;\n    // copyRanges.splice(index, 1);\n\n    setRanges(copyRanges);\n  };\n\n  const handleAddNewRow = (index) => {\n    let copyRanges = customCloneDeep(ranges);\n    copyRanges[index][\"RangeArr\"].push(emptyRowObj);\n    setRanges(copyRanges);\n  };\n\n  const handelRemoveRow = (rowIndex, index) => {\n    let copyRanges = customCloneDeep(ranges);\n\n    if (copyRanges[index][\"RangeArr\"].length > 1) {\n      copyRanges[index][\"RangeArr\"].splice(rowIndex, 1);\n    } else {\n      copyRanges.splice(index, 1);\n    }\n    setRanges(copyRanges);\n  };\n\n  const handleChangeGender = (e, index) => {\n    let copyRanges = customCloneDeep(ranges);\n    copyRanges[index].Gender = e;\n    setRanges(copyRanges);\n  };\n  const handleChangeBacteria = (e, index) => {\n    let copyRanges = customCloneDeep(ranges);\n    copyRanges[index][\"Bacteria\"] = e;\n    setRanges(copyRanges);\n  };\n  const handleAddNewNode = () => {\n    let copyRanges = customCloneDeep(ranges);\n\n    copyRanges.push(emptyNode);\n    setRanges(copyRanges);\n  };\n  const handelCtValue = (e) => {\n    const value = e.target.value;\n\n    const numericValue = value.replace(/[^0-9.]/g, \"\");\n\n    const sanitizedValue =\n      numericValue.split(\".\").length > 2 ? numericValue.substring(0, numericValue.lastIndexOf(\".\")) : numericValue;\n\n    setNewItem({ ...newItem, setting: { ...newItem.setting, ctValue: sanitizedValue } });\n  };\n\n  const handelLoincCode = (e) => {\n    const value = e.target.value;\n\n    const numericValue = value.replace(/[^0-9]/g, \"\");\n\n    setNewItem({ ...newItem, setting: { ...newItem.setting, lonicCode: numericValue } });\n  };\n\n  return (\n    <Modal\n      show\n      animation={true}\n      className=\"second-modal modal-padding-0\"\n      onHide={() => handleClose()}\n      centered\n      size={data?.callFrom === \"pathegon\" ? \"xl\" : \"2xl\"}\n      backdrop=\"static\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 h4\" id=\"contained-modal-title-vcenter\">\n          Test Element Creation\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        {/* First row */}\n\n        {loading && <Loader />}\n\n        <div style={{ display: \"flex\", gap: \"16px\" }}>\n          <div style={{ flex: 1 }}>\n            <TestInputField\n              label=\"Name\"\n              value={newItem.name}\n              onChange={(e) => handleInputChange(\"name\", e.target.value)}\n              required={true}\n            />\n          </div>\n          <div style={{ flex: 1 }}>\n            <TestSelector\n              value={newItem?.units || null}\n              onChange={(e) => setNewItem({ ...newItem, units: e })}\n              settingType={\"unit\"}\n              placeholder=\"Enter Unit Name\"\n              required={true}\n              updateMainTest={(value) => setNewItem({ ...newItem, units: { label: value, value: value } })}\n            />\n          </div>\n\n          {/* <div style={{ flex: 1 }}>\n            <TestSelector\n              value={newItem.sources}\n              tabIndex={3}\n              onChange={(e) => setNewItem({ ...newItem, sources: e })}\n              settingType={TEST_SETTING_TYPES.SOURCE}\n              label={'Source'}\n              // required={true}\n              isMulti\n              title={'Create Source'}\n              placeholder=\"Enter Source Name\"\n              updateMainTest={(value) =>\n                setNewItem({ ...newItem, sources: { label: value, value: value } })\n              }\n            />\n          </div> */}\n          {data.typeOfTest === TYPE_OF_TEST.BOTH && (\n            <div style={{ flex: 1 }}>\n              <TestTypeSelect\n                value={TEST_TYPE_OPTIONS_ONLY.find((f) => f.label === newItem.possibleValues)}\n                onChange={(e) => setNewItem({ ...newItem, possibleValues: e.label })}\n                label={\"Result Type\"}\n                placeholder=\"Select Result Type\"\n                defaultOptions={TEST_TYPE_OPTIONS_ONLY}\n                showAddIcon={false}\n                required={true}\n              />\n            </div>\n          )}\n\n          {/* {newItem.callFrom === 'pathegon' && (\n            <div style={{ flex: 1 }}>\n              <>\n                <p className=\"modalLineHeaders\">Antibiotic-Resistance Genes</p>\n                <Select\n                  className=\"w-100\"\n                  options={ANTIBIOTIC_RESISTANCE_GENES_TYPE}\n                  blurInputOnSelect={true}\n                  defaultValue={null}\n                  menuPlacement=\"auto\"\n                  value={\n                    newItem.antibioticResistanceType\n                      ? {\n                          label: newItem.antibioticResistanceType,\n                          value: newItem.antibioticResistanceType,\n                        }\n                      : null\n                  }\n                  placeholder=\"Select\"\n                  onChange={(e) =>\n                    setNewItem({\n                      ...newItem,\n                      antibioticResistanceType: e.value,\n                    })\n                  }\n                />\n              </>\n            </div>\n          )} */}\n        </div>\n\n        <div style={{ display: \"flex\", gap: \"16px\" }}>\n          <div style={{ flex: 1 }}>\n            <TestInputField label={\"LONIC Code\"} value={newItem.setting?.lonicCode || \"\"} onChange={handelLoincCode} />\n          </div>\n          <div style={{ flex: 1 }}>\n            <TestInputField label={\"Cutoff CT Value\"} value={newItem.setting?.ctValue || \"\"} onChange={handelCtValue} />\n          </div>\n\n          <div style={{ flex: 1 }}>\n            <TestSelector\n              value={newItem?.setting?.platform || []}\n              tabIndex={3}\n              onChange={(e) => setNewItem({ ...newItem, setting: { ...newItem.setting, platform: e } })}\n              settingType={TEST_SETTING_TYPES.INSTRUMENT}\n              label={\"Associated Instrument\"}\n              // required={true}\n              isMulti\n              title={\"Create Instrument\"}\n              placeholder=\"Select Associated Instrument\"\n              // updateMainTest={(value) =>\n              //   setNewItem({ ...newItem, sources: { label: value, value: value } })\n              // }\n              showCreateButton={false}\n            />\n          </div>\n        </div>\n        {newItem.possibleValues === \"Quantitative\" && (\n          <>\n            <div style={{ display: \"flex\", justifyContent: \"space-between\", marginTop: \"20px\" }}>\n              <h4 style={{ margin: 0 }}>Range Setup</h4>\n\n              <Icon\n                iconType={\"createIcon\"}\n                containerClass={\"ms-2 cursor-pointer\"}\n                innerClass={\"test-selector-add-icon\"}\n                handleClick={handleAddNewNode}\n              />\n            </div>\n\n            <div\n              style={{\n                border: \"1px solid gray\",\n                marginTop: \"10px\",\n                borderRadius: \"10px\",\n                minHeight: \"20vh\",\n                maxHeight: \"60vh\",\n                overflow: \"unset\",\n              }}\n            >\n              {ranges &&\n                ranges.map((item, index) => {\n                  return (\n                    <TestDetailsRangeViewNew\n                      data={item}\n                      onChange={(e, rowIndex) => handleChangeRanges(e, rowIndex, index)}\n                      handelRemoveView={() => handelRemoveGrid(index)}\n                      handleAddRange={() => handleAddRange(index)}\n                      setFilter={(filterData) => handelFilterData(filterData, index)}\n                      handelRemoveNode={(filterIndex) => handelRemoveNode(filterIndex, index)}\n                      handleAddNode={() => handleAddNode(index)}\n                      handelCollaspeNode={() => handelCollaspeNode(index)}\n                      handleAddNewRow={() => handleAddNewRow(index)}\n                      handelRemoveRow={(rowIndex) => handelRemoveRow(rowIndex, index)}\n                    />\n                  );\n                })}\n            </div>\n          </>\n        )}\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"modalButtons\" onClick={() => handleClose()}>\n          Close\n        </Button>\n\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={validateInput}>\n          {newItem.isNew ? \"Create\" : \"Update\"}\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default memo(TestDetailsModal);\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { TEST_ASSAY, GET_ASSOCIATED_PANEL } from \"./testAssayConstant\";\nimport api from \"api\";\n\nexport const getTestAssociatePanel = createAsyncThunk(GET_ASSOCIATED_PANEL, async () => {\n  const response = await api.getTestsDetails({ search: \"\" });\n  if (response) return response.rows;\n});\n\nconst testAssaySlice = createSlice({\n  name: TEST_ASSAY,\n  initialState: {\n    panelsList: [],\n  },\n  reducers: {},\n  extraReducers: (builder) => {\n    builder.addCase(getTestAssociatePanel.fulfilled, (state, action) => {\n      state.panelsList = action.payload;\n    });\n  },\n});\n\nexport default testAssaySlice.reducer;\n","export const TEST_ASSAY = \"TestAssay\";\nexport const GET_ASSOCIATED_PANEL = \"GetAssociatedPanel\";\n","import API from \"api\";\nimport Filter from \"components/Filter\";\nimport Icon from \"components/Icon\";\nimport { AppContext } from \"context/app-context\";\nimport React, { useContext, useEffect, useRef, useState } from \"react\";\nimport { Card, Col, Container, Row, Table } from \"react-bootstrap\";\nimport TestTypeModal from \"views/TestTypeSetting/TestTypeModal\";\nimport Loader from \"../../components/Loader/Loader\";\nimport {\n  calculateTdWidth,\n  loadReqFormTest,\n  formatNumber,\n  draggablePersonalizationLocalStorage,\n  personalisationInLC,\n} from \"../../utils\";\nimport { t } from \"stringConstants\";\n\nimport TestDetailsModal from \"./TestDetailsModal\";\nimport MainTable from \"components/Table/MainTable\";\nimport { TEST_MANAGEMENT_PERSONALIZATION } from \"constants/personalization\";\nimport { TABLE_QUICK_TOOLS } from \"constant\";\nimport { TEST_ASSAY_LOGS_SLUG } from \"constant\";\nimport { CONFIG, TESTS_MANAGEMENT } from \"constant\";\n\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { getTestAssociatePanel } from \"store/features/testAssay/testAssaySlice\";\nimport Status from \"components/Status\";\n\nimport { showConfirmationModal } from \"store/features/general/generalAction\";\nimport { setClearConfirmation } from \"store/features/general/generalSlice\";\nimport { panelSelector } from \"store/features/testAssay/testAssaySelector\";\nimport { PERSONALISATION_KEY } from \"../../constant\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport { customIsEmpty } from \"util/customLodash\";\n\nconst TestTypeSetting = () => {\n  const componentRef = useRef();\n  const mainWidth = useRef();\n  const [width, setWidth] = useState(0);\n  const appContext = useContext(AppContext);\n  const [openImportModal, setOpenImportModal] = useState(false);\n  const [testSources, setTestSources] = useState([]);\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const permission = useSelector(userGivenPermission);\n  const [filterListData, setFilterList] = useState([]);\n  const testElements = useSelector(panelSelector);\n  const [filterTabIndex, setFilterTabIndex] = useState(0);\n  const [sortBy, setSortBy] = useState(\"\");\n\n  const [sortDescending, setSortDescending] = useState(true);\n\n  const [personalize, setPersonalize] = useState([]);\n\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n\n  const user = appContext?.user;\n\n  const [openDetailModal, setOpenDetailModal] = useState(false);\n\n  const [testPanelData, setTestPanelData] = useState(null);\n\n  const searchTerms = [\"Name\"];\n\n  const dispatch = useDispatch();\n\n  const getTestsPanesl = async () => {\n    dispatch(getTestAssociatePanel());\n  };\n\n  const setPersonalizeOnLoad = () => {\n    const response = draggablePersonalizationLocalStorage.get(\n      user,\n      PERSONALISATION_KEY.PANEL,\n      TEST_MANAGEMENT_PERSONALIZATION\n    );\n    setPersonalize(response);\n  };\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  useEffect(() => handleResize(), [mainWidth]);\n\n  const changeSort = ({ dataList, sortBy, sortDescending = false }) => {\n    const sortedList = [...dataList].sort((a, b) => {\n      let aValue, bValue;\n\n      if (sortBy === \"icdCodes\") {\n        aValue = Array.isArray(a.ictCodes) && a.ictCodes.length > 0 ? a.ictCodes[0].code : \"\";\n        bValue = Array.isArray(b.ictCodes) && b.ictCodes.length > 0 ? b.ictCodes[0].code : \"\";\n      } else if (sortBy === \"source\") {\n        const groupA = Array.isArray(a.sources) ? (a.sources.length === 1 ? 1 : 2) : 2;\n        const groupB = Array.isArray(b.sources) ? (b.sources.length === 1 ? 1 : 2) : 2;\n\n        if (groupA !== groupB) {\n          return groupA - groupB;\n        }\n        const getLabel = (obj) =>\n          Array.isArray(obj.sources) && obj.sources.length > 0 ? obj.sources[0].label.toLowerCase() : \"\";\n\n        aValue = getLabel(a);\n        bValue = getLabel(b);\n      } else if (sortBy === \"lastUsed\") {\n        // Convert date string into a Date object for proper sorting\n        const parseDate = (dateStr) => (dateStr ? new Date(dateStr) : null);\n\n        aValue = parseDate(a.lastUsed);\n        bValue = parseDate(b.lastUsed);\n\n        // If either value is null, push nulls to the end\n        if (!aValue && !bValue) return 0;\n        if (!aValue) return sortDescending ? -1 : 1;\n        if (!bValue) return sortDescending ? 1 : -1;\n\n        // Compare dates\n        return sortDescending ? bValue - aValue : aValue - bValue;\n      } else {\n        // Default dynamic sorting\n        aValue = a[sortBy];\n        bValue = b[sortBy];\n      }\n\n      // Ensure comparison is always between strings\n      return sortDescending\n        ? String(bValue).localeCompare(String(aValue))\n        : String(aValue).localeCompare(String(bValue));\n    });\n\n    setFilterList(sortedList);\n  };\n\n  useEffect(() => {\n    changeSort({ dataList: filterListData, sortBy, sortDescending });\n  }, [sortBy, sortDescending]);\n\n  const tdWidth = calculateTdWidth(width - 50, 5);\n\n  const [loading, setLoading] = useState();\n  const [list, setList] = useState([]);\n\n  const [editObj, setEditObj] = useState(null);\n\n  const getList = async (filtersData) => {\n    const apiData = await API.getTestTypes(filtersData);\n\n    setList(apiData);\n    setFilterList(apiData);\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n\n    const filterKeys = Object.keys(filters);\n\n    const models = targetArray.filter((obj) => {\n      return filterKeys.every((key) => {\n        if (!filters[key]) return true;\n        if (typeof filters[key] === \"string\" && !filters[key].trim()) return true;\n        if (Array.isArray(filters[key]) && filters[key].length === 0) return true;\n\n        if (key === \"isActive\") {\n          const filterIsActive = filters[key].toLowerCase() === \"active\";\n          return obj[key] === filterIsActive;\n        }\n        if (key === \"isARKStone\") {\n          const filterIsArcstone = filters[key] === \"Processed\";\n          return obj[key] === filterIsArcstone;\n        }\n        if (key === \"source\") {\n          return (\n            Array.isArray(obj.sources) &&\n            Array.isArray(filters[key]) &&\n            filters[key].some((selectedSource) => obj.sources.some(({ value }) => value === selectedSource))\n          );\n        }\n\n        if (key === \"lastUsed\") {\n          if (customIsEmpty(filters[key])) return obj;\n\n          const start = new Date(filters[key].startDate).getTime();\n          const end = new Date(filters[key].endDate).getTime();\n          const lastUsedTime = new Date(obj[key]).getTime();\n\n          return lastUsedTime >= start && lastUsedTime <= end;\n        }\n        if (Array.isArray(filters[key])) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n        return (\n          typeof obj[key] === \"string\" &&\n          typeof filters[key] === \"string\" &&\n          obj[key]?.toLowerCase().includes(filters[key]?.toLowerCase())\n        );\n      });\n    });\n\n    return models;\n  };\n\n  useEffect(() => {\n    if (filter) {\n      const filteredData = nestedFilter(list, filter);\n      setFilterList(filteredData);\n    } else {\n      getList();\n    }\n  }, [filter]);\n\n  useEffect(() => {\n    setPersonalizeOnLoad();\n    getSourceType();\n    getList();\n    getTestsPanesl();\n  }, []);\n\n  const getSourceType = async () => {\n    const sources = await API.getTestSources();\n    setTestSources(sources);\n  };\n\n  const handleEdit = (item) => {\n    setEditObj(item);\n  };\n\n  const addCPTInTargetRanges = (list) => {\n    const cptLookup = testElements.reduce((acc, item) => {\n      acc[item.id] = item;\n      return acc;\n    }, {});\n\n    return list.map((item) => ({\n      ...item,\n      cpt: cptLookup[item.id]?.cpt,\n      antibioticResistanceType: cptLookup[item.id]?.antibioticResistanceType,\n    }));\n  };\n\n  const handleSave = async (item, showLoading = true) => {\n    const obj = { ...item, targetRanges: addCPTInTargetRanges(item?.targetRanges) };\n\n    if(showLoading)\n    {\n      setEditObj(null);\n    }\n    setLoading(true);\n    try {\n      let res;\n      let message = \"Panel created successfully\";\n      let logObj = {\n        updatedBy: appContext.user?.sub,\n        updatedByName: appContext.user?.name,\n        userID: appContext.user?.sub,\n        userName: appContext.user?.name,\n      };\n\n      if (item.isNew) {\n        res = await API.addTestTypes(obj);\n\n        logObj = {\n          ...logObj,\n          testID: res.id,\n          slug: \"Create\",\n          newValue: TEST_ASSAY_LOGS_SLUG.TEST_CREATED,\n        };\n      } else {\n        res = await API.updateTestTypes(obj);\n        logObj = {\n          ...logObj,\n          testID: res.id,\n          slug: \"Update\",\n          newValue: TEST_ASSAY_LOGS_SLUG.TEST_UPDATED,\n          changeObject: res,\n        };\n        message = \"Panel updated successfully\";\n      }\n\n      await API.addLogs(logObj);\n\n      const updatedList = await API.getTestTypes();\n\n      // const formattedTests = await loadReqFormTest({ clientID: CONFIG.clientID, tests: updatedList });\n      // dispatch(updateTestNames({ tests: formattedTests }));\n\n      setLoading(false);\n      setList(updatedList);\n      setFilterList(updatedList);\n      if(showLoading)\n      {\n        appContext.showSuccessMessage(message);\n      }\n    } catch (error) {\n      setEditObj(obj);\n      appContext.showErrorMessage(error.message);\n    }\n    setLoading(false);\n  };\n\n  const handleClose = async (newSource) => {\n    setShowSourceModal(null);\n\n    if (newSource) {\n      appContext.showSuccessMessage(\"Source added successfully\");\n      setTestSources([...testSources, newSource]);\n    }\n  };\n\n  const handleCloseTestTypeModal = async () => {\n    setEditObj(null);\n    setList(await API.getTestTypes());\n  };\n\n  const handleSaveTestDetail = async (testDetailsData) => {\n    const { isNew } = testDetailsData;\n    const action = isNew ? \"create\" : \"update\";\n    setLoading(true);\n    try {\n      // Not save the Pathegon on base table because it is being customized for this test\n      // const result = await (isNew ? createTestsDetails : updateTestsDetails)(testDetailsData);\n\n      const updatedPathegons = editObj?.targetRanges?.map((item) =>\n        item.id === testDetailsData.id ? testDetailsData : item\n      );\n\n      setEditObj((prevEditObj) => {\n        const itemExists = prevEditObj?.targetRanges?.some((item) => item.id === testDetailsData.id);\n\n        const updatedTargetRanges = itemExists\n          ? prevEditObj?.targetRanges?.map((item) => (item.id === testDetailsData.id ? testDetailsData : item))\n          : [...(prevEditObj?.targetRanges || []), testDetailsData];\n\n        return {\n          ...prevEditObj,\n          targetRanges: updatedTargetRanges,\n        };\n      });\n\n      if (!editObj.isNew) {\n        try {\n          await API.updateTestPathegon({ id: editObj.id, targetRanges: updatedPathegons });\n        } catch (error) {\n          console.error(\"Failed to update Test Pathegon:\", error);\n        }\n      }\n\n      setOpenDetailModal(false);\n      setTestPanelData(null);\n      setLoading(false);\n    } catch (error) {\n      console.error(\"Error\", error);\n      setLoading(false);\n\n      appContext.showErrorMessage(`Unable to ${action} panel test.`);\n    }\n  };\n\n  const handleSetTestPanelData = (data) => {\n    if (data?.id && data.currentRanges) {\n      setEditObj((prevEditObj) => {\n        const exists = [...data.currentRanges];\n        return {\n          ...prevEditObj,\n          typeOfTest: data.typeOfTest,\n          targetRanges: exists,\n        };\n      });\n    }\n    const copyObject = { ...data };\n    delete copyObject.currentRanges;\n    setTestPanelData(copyObject);\n  };\n\n  const getIctLabelAndTitle = (ictCodes) => {\n    const codes = ictCodes?.map((item) => item.code) || [];\n\n    const ictLabel = !codes || codes.length === 0 ? \"\" : codes.length === 1 ? codes[0] : \"Multi\";\n\n    const title = !codes || codes.length === 0 ? \"\" : codes.length === 1 ? codes[0] : codes.join(\", \");\n\n    return { ictLabel, title };\n  };\n\n  const getSources = (sources) => {\n    let sourceTitle;\n    let source;\n    if (Array.isArray(sources)) {\n      if (sources.length === 1) {\n        sourceTitle = sources[0]?.label;\n        source = sources[0]?.label;\n      } else {\n        sourceTitle = sources.map((item) => item.label).join(\", \");\n        source = \"Multi\";\n      }\n    } else {\n      sourceTitle = \"\";\n      source = sources?.label;\n    }\n    return { sourceTitle, source };\n  };\n\n  const ImageTD = ({ row, item }) => {\n    const testStatusColor = row[item.itemKey] ? \"green\" : \"maroon\";\n\n    return (\n      <td\n        key={item.id}\n        className=\"ellipsis\"\n        style={{\n          textAlign: item.textAlign,\n          textOverflow: item.textOverflow,\n          cursor: \"pointer\",\n        }}\n      >\n        <Status\n          type=\"circle\"\n          size=\"md\"\n          color={testStatusColor}\n          tickIcon={testStatusColor === \"green\"}\n          crossIcon={testStatusColor !== \"green\"}\n        />\n      </td>\n    );\n  };\n\n  const customRenderTD = (item, row) => {\n    const { ictLabel, title } = getIctLabelAndTitle(row?.ictCodes);\n    const { sourceTitle, source } = getSources(row?.sources);\n    if (item.itemKey === \"icdCodes\") {\n      return (\n        <td\n          key={item.id}\n          className=\"ellipsis\"\n          style={{\n            textAlign: item.textAlign,\n            textOverflow: item.textOverflow,\n            cursor: \"pointer\",\n          }}\n          title={title}\n        >\n          {ictLabel}\n        </td>\n      );\n    }\n\n    if (item.itemKey === \"isARKStone\" || item.itemKey === \"isActive\") {\n      return ImageTD({ row, item });\n    }\n\n    if (item.itemKey === \"source\") {\n      return (\n        <td\n          key={item.id}\n          className=\"ellipsis\"\n          style={{\n            textAlign: item.textAlign,\n            textOverflow: item.textOverflow,\n            cursor: \"pointer\",\n          }}\n          title={sourceTitle}\n        >\n          {source}\n        </td>\n      );\n    }\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        handleEdit(row);\n        break;\n      default:\n        break;\n    }\n  };\n\n  const handleArchive = async (item) => {\n    dispatch(setClearConfirmation());\n    try {\n      setLoading(true);\n      const res = await API.archiveTestType(item);\n\n      const logObj = {\n        updatedBy: appContext.user?.sub,\n        updatedByName: appContext.user?.name,\n        userID: appContext.user?.sub,\n        userName: appContext.user?.name,\n        testID: res.id,\n        slug: \"Archived\",\n        newValue: TEST_ASSAY_LOGS_SLUG.TEST_ARCHIVED,\n        changeObject: res,\n      };\n\n      await API.addLogs(logObj);\n\n      const updatedList = await API.getTestTypes();\n\n      // const formattedTests = await loadReqFormTest({ clientID: CONFIG.clientID, tests: updatedList });\n\n      setLoading(false);\n      setList(updatedList);\n      setFilterList(updatedList);\n      appContext.showSuccessMessage(\"Test Archived successfully\");\n\n      // dispatch(updateTestNames({ tests: formattedTests }));\n    } catch (ex) {\n      console.log(\"Ex\", ex);\n      setLoading(false);\n    }\n  };\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n    setOpenPersonalizationModal(false);\n    const personalisationData = personalisationInLC.saveAs(data, PERSONALISATION_KEY.PANEL);\n    await API.saveUserPersonalisation(appContext.user.sub, personalisationData);\n  };\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  return (\n    <>\n      {!loading ? (\n        <div className=\"shows-screen-parent\">\n          <Row className=\"\">\n            <Col md=\"12\">\n              <Card className=\"strpied-tabled-with-hover bg-transparent border-0\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md-=\"12\">\n                      <Card.Title\n                        as=\"h4\"\n                        style={{\n                          marginBottom: 10,\n                          fontWeight: \"bold\",\n                        }}\n                      >\n                        Panels ({formatNumber(filterListData.length)})\n                      </Card.Title>\n                      <div className=\"shows-filter-wrapper\">\n                        <div className=\"shows-filter-inner\">\n                          <Icon\n                            handleClick={() => setShowFilter(!showFilter)}\n                            title={\"Filter\"}\n                            label={\"Filter\"}\n                            iconType={\"filter\"}\n                          />\n                          <Icon\n                            handleClick={() => setOpenPersonalizationModal(true)}\n                            title={t(\"personalize\")}\n                            label={t(\"personalize\")}\n                            iconType={\"personalizeIcon\"}\n                          />\n                          {permission[TESTS_MANAGEMENT]?.write && (\n                            <Icon\n                              handleClick={() =>\n                                setEditObj({\n                                  isNew: true,\n                                  typeOfTest: \"Qualitative\",\n                                  targetRanges: [],\n                                  isActive: true,\n                                })\n                              }\n                              title={\"Create Panel\"}\n                              label={\"Create Panel\"}\n                              iconType={\"createIcon\"}\n                            />\n                          )}\n                        </div>\n                      </div>\n                      <div>\n                        {showFilter && (\n                          <Filter\n                            filterTerms={searchTerms}\n                            setFilter={setFilter}\n                            filter={filter}\n                            personalisationData={personalize}\n                            // isGrouped={true}\n                            filterTabIndex={filterTabIndex}\n                            setFilterTabIndex={(value) => setFilterTabIndex(value)}\n                          />\n                        )}\n                      </div>\n                    </Col>\n                  </Row>\n                </Card.Header>\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll pt-0 mt-0\">\n                  <div className=\"table-responsive pendingReleaseTable\">\n                    <MainTable\n                      // columns={TEST_MANAGEMENT_PERSONALIZATION}\n                      columns={personalize}\n                      rows={filterListData}\n                      flipSort={flipSort}\n                      sortBy={sortBy}\n                      sortDescending={sortDescending}\n                      // selectedRows={checkboxes}\n                      tools={[TABLE_QUICK_TOOLS.edit]}\n                      // personalisationKey={\"orderpersonalize\"}\n                      // individualRowCssClass={(row) =>\n                      //   row.employee_demographics?.stat && !row.result ? \"trDataWrapper isStatRow\" : \"trDataWrapper\"\n                      // }\n                      draggable\n                      resizable\n                      handleSaveDragAndResize={(personalizeArr) => {\n                        setPersonalize(personalizeArr);\n                      }}\n                      personalisationKey={PERSONALISATION_KEY.PANEL}\n                      dropDownOptions={[\n                        { value: \"Logs\", title: \"Audit Trail\" },\n                        { value: \"Archive\", title: \"Archive\" },\n                      ]}\n                      handleDropDownClick={(type, row) => {\n                        if (type === \"Audit Trail\") {\n                          appContext.showLogs({ ...row, title: \"Test Management Logs\", ordID: row.id });\n                        } else {\n                          let deletedItems = { ...row };\n                          deletedItems = { ...deletedItems, isActive: false, isArchive: true, isNew: false };\n                          const confirmationModalData = {\n                            showModal: true,\n                            onConfirm: () => handleArchive(deletedItems),\n                            title: \"Archive Test \",\n                            message: \"Are you sure, you want to archive that Test?\",\n                          };\n                          dispatch(showConfirmationModal(confirmationModalData));\n                        }\n                      }}\n                      customColumnCellRenderer={customRenderTD}\n                      handleCellClick={handleCellClick}\n                    />\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n            {/* {CONFIG.isWhiteLabel ? <TestResultSetting /> : <LabBarCodeAlertSetting />} */}\n          </Row>\n        </div>\n      ) : (\n        <Loader />\n      )}\n      {editObj && (\n        <TestTypeModal\n          item={editObj}\n          handleSave={handleSave}\n          handleClose={handleCloseTestTypeModal}\n          testSources={testSources}\n          openDetailModal={() => setOpenDetailModal(true)}\n          mainTests={list}\n          setTestPanelData={(data) => handleSetTestPanelData(data)}\n          isDetailModalOpen={openDetailModal}\n        />\n      )}\n      {openDetailModal && (\n        <TestDetailsModal\n          data={{ ...testPanelData, callFrom: \"test\" }}\n          handleSaveTestDetail={handleSaveTestDetail}\n          loading={loading}\n          handleClose={() => {\n            setOpenDetailModal(false);\n            setTestPanelData(null);\n          }}\n        />\n      )}\n\n      {openPersonalizationModal && (\n        <PersonalizationModal\n          data={personalize}\n          handleChange={handlePersonalization}\n          show={openPersonalizationModal}\n          handleClose={() => setOpenPersonalizationModal(false)}\n        />\n      )}\n    </>\n  );\n};\n\nexport default TestTypeSetting;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { AppContext } from \"context/app-context\";\n\nconst CreateLabelOption = ({ handleClose, handleSaveChange, selectedValue, settingType }) => {\n  const [option, setOption] = useState({ source: \"\", code: \"\" });\n\n  const appContext = useContext(AppContext);\n\n  useEffect(() => {\n    if (selectedValue) {\n      setOption(selectedValue);\n    }\n  }, [selectedValue]);\n\n  const handleSave = () => {\n    if (!option.code) {\n      appContext.showErrorMessage(\"Enter valid code\");\n\n      return;\n    }\n    if (!option.source) {\n      appContext.showErrorMessage(\"Enter the Source\");\n      return;\n    }\n    handleSaveChange(option);\n  };\n\n  return (\n    <Modal\n      show\n      animation={true}\n      onHide={() => handleClose()}\n      backdrop=\"static\"\n      centered\n      size={\"md\"}\n      keyboard={true}\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {settingType && settingType.value === \"source\" ? \"Create Source\" : \"Create Label\"}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"row mb-3\">\n          <div className=\"col-lg-12 col-12 mb-3\">\n            <label className=\"modalLineHeaders mt-0\">Source:</label>\n            <input\n              value={option.source}\n              className=\"modalInput\"\n              placeholder=\"Enter Title\"\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setOption({ ...option, source: e.target.value })}\n            />\n\n            <div className=\"col-lg-12 col-12 mt-3\">\n              <label className=\"modalLineHeaders mt-0\">Source Code:</label>\n              <input\n                value={option.code}\n                className=\"modalInput\"\n                placeholder=\"Enter Label Code\"\n                style={{\n                  width: \"100%\",\n                }}\n                maxLength={5}\n                onChange={(e) => setOption({ ...option, code: e.target.value.toLocaleUpperCase() })}\n              />\n            </div>\n          </div>\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"headerButton\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={handleSave}>\n          Save\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default CreateLabelOption;\n","import { ANTIBIOTIC_RESISTANCE_GENES_TYPE, CPT_CODE_SEARCH_TYPE } from \"constant\";\nimport React, { useContext, useEffect, useState, useRef } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { getPanelElementType, createChangeObjForLogs } from \"utils\";\nimport API from \"api\";\nimport TestInputField from \"./TestInputField\";\nimport CptList from \"components/CPT/CptList\";\nimport { AppContext } from \"context/app-context\";\nimport Loader from \"components/Loader/Loader\";\n\nconst TestElementModal = ({ data, handleSaveTestDetail, handleClose, loading }) => {\n  const appContext = useContext(AppContext);\n\n  const isMounted = useRef(false);\n\n  const [newItem, setNewItem] = useState({\n    isNew: true,\n    name: \"\",\n    units: null,\n    refInterval: \"\",\n    isActive: \"\",\n  });\n\n  const [resultType, setResultType] = useState(\"\");\n\n  useEffect(() => {\n    if (data && !isMounted.current) {\n      setNewItem((prev) => ({ ...prev, ...data }));\n      setResultType(data?.resultType || \"\");\n      isMounted.current = true;\n    }\n  }, [data]);\n\n  const saveLogs = () => {\n    const fieldsName = {\n      name: \"Element Name\",\n      antibioticResistanceType: \"Element Type\",\n    };\n\n    const chngObj = createChangeObjForLogs({\n      oldRecord: data,\n      newRecord: newItem,\n      fieldsName,\n    });\n\n    if (chngObj.length > 0) {\n      const logObj = {\n        updatedBy: appContext?.user?.sub,\n        updatedByName: appContext?.user?.name,\n        userID: appContext?.user?.sub,\n        userName: appContext?.user?.name,\n        testID: newItem.id,\n        slug: \"Update\",\n        changeObject: chngObj,\n      };\n      API.addLogs(logObj);\n    }\n  };\n\n  const validateInput = () => {\n    const { callFrom } = newItem;\n\n    if (!newItem.name?.trim()) {\n      appContext.showErrorMessage(\"Enter valid element name\");\n      return;\n    }\n    // if (!newItem.cpt) {\n    //   appContext.showErrorMessage('Enter valid cpt');\n    //   return;\n    // }\n    if (callFrom === \"pathegon\" && !newItem.antibioticResistanceType) {\n      appContext.showErrorMessage(\"Select Test Element Type\");\n      return;\n    }\n\n    const testObj = {\n      ...newItem,\n      resultType,\n      isActive: true,\n    };\n\n    saveLogs();\n    handleSaveTestDetail(testObj);\n  };\n\n  const handleInputChange = (field, value) => {\n    setNewItem((prev) => ({ ...prev, [field]: value }));\n  };\n  const handleCptCode = (cptItem) => {\n    const cptCode = cptItem?.cptCodes?.[0] || null;\n\n    if (cptCode) {\n      setNewItem((prev) => ({ ...prev, cpt: cptCode.code }));\n    } else {\n      setNewItem((prev) => ({ ...prev, cpt: null }));\n    }\n  };\n\n  return (\n    <Modal\n      show\n      animation={true}\n      className=\"second-modal modal-padding-0\"\n      onHide={() => handleClose()}\n      centered\n      size={data?.callFrom === \"pathegon\" ? \"xl\" : \"2xl\"}\n      backdrop=\"static\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 h4\" id=\"contained-modal-title-vcenter\">\n          Panel Element Management\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        {/* First row */}\n\n        {loading && <Loader />}\n\n        <div style={{ display: \"flex\", gap: \"16px\" }}>\n          <div style={{ flex: 1 }}>\n            <TestInputField\n              label=\"Name\"\n              value={newItem.name}\n              onChange={(e) => handleInputChange(\"name\", e.target.value)}\n              required={true}\n            />\n          </div>\n          <div style={{ flex: 1 }}>\n            <TestInputField\n              label=\"Short Name\"\n              value={newItem?.csv_name ?? \"\"}\n              onChange={(e) => handleInputChange(\"csv_name\", e.target.value)}\n            />\n          </div>\n          <div style={{ flex: 1 }}>\n            <p className=\"modalLineHeaders\">Element Type</p>\n            <Select\n              className=\"w-100\"\n              options={ANTIBIOTIC_RESISTANCE_GENES_TYPE}\n              blurInputOnSelect={true}\n              defaultValue={null}\n              menuPlacement=\"auto\"\n              value={getPanelElementType(newItem.antibioticResistanceType)}\n              placeholder=\"Select\"\n              onChange={(e) =>\n                setNewItem({\n                  ...newItem,\n                  antibioticResistanceType: e.value,\n                })\n              }\n            />\n          </div>\n\n          <div style={{ flex: 1 }}>\n            <CptList\n              item={newItem?.cpt && newItem.cpt !== \"null\" ? { code: newItem.cpt } : {}}\n              setItem={handleCptCode}\n              title=\"Procedure Code\"\n              searchtype={CPT_CODE_SEARCH_TYPE.CPT}\n              groupWrapper=\"form-group-wrapper margin-bottom-1\"\n              showLabelOnTop={true}\n              showInput={false}\n            />\n          </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"modalButtons\" onClick={() => handleClose()}>\n          Close\n        </Button>\n\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={validateInput}>\n          {newItem.isNew ? \"Create\" : \"Update\"}\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default TestElementModal;\n","import { MESSAGE_MODES } from \"constant\";\nimport { useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { CSVReader } from \"react-papaparse\";\nimport { useDispatch } from \"react-redux\";\nimport Select from \"react-select\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { userCompanyID } from \"utils\";\n\nconst LoadTestPanels = (props) => {\n  const { handleClose, handleImport, handleDownloadSample } = props;\n  const dispatch = useDispatch();\n\n  const handleOnDrop = (data) => {\n    handleImport(data);\n  };\n  const handleOnError = (err) => {\n    console.log(err);\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n  };\n\n  return (\n    <Modal show animation={true} backdrop=\"static\" onHide={() => handleClose()} centered size={\"lg\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Load Panel Elements\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"form-group-wrapper d-block\">\n          <div className=\"d-flex align-items-center justify-content-around mb-3\">\n            {/* <div\n              style={{\n                textAlign: \"right\",\n                color: \"#42cef5\",\n                textAlign: \"center\",\n                cursor: \"Pointer\",\n              }}\n              onClick={() => handleDownloadSample(1)}\n            >\n              Download Template Info\n            </div> */}\n            <div\n              style={{\n                textAlign: \"right\",\n                color: \"#42cef5\",\n                textAlign: \"center\",\n                cursor: \"Pointer\",\n              }}\n              onClick={() => handleDownloadSample(2)}\n            >\n              Download Upload Template\n            </div>\n          </div>\n          <CSVReader\n            onDrop={handleOnDrop}\n            onError={handleOnError}\n            addRemoveButton\n            config={{\n              header: true,\n              skipEmptyLines: true,\n            }}\n            onRemoveFile={handleOnRemoveFile}\n          >\n            <span>Drop CSV file here or click to upload.</span>\n          </CSVReader>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer className=\"flex-row-reverse\">\n        <Button variant=\"secondary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n          OK\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default LoadTestPanels;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { AppContext } from \"context/app-context\";\nimport { CANCEL_REASON_OPTIONS, CONFIG } from \"constant\";\nimport api from \"api\";\nimport { capitalizeLetter } from \"../../../utils\";\n\nconst CancelledReasonModal = ({ handleClose, handleSaveChange, selectedValue }) => {\n  const [option, setOption] = useState({ title: \"\", label: \"\" });\n  const appContext = useContext(AppContext);\n\n  useEffect(() => {\n    if (selectedValue) {\n      setOption(selectedValue);\n    }\n  }, [selectedValue]);\n\n  const handleSave = () => {\n    if (!option.label) {\n      appContext.showErrorMessage(\"Enter the reason\");\n\n      return;\n    }\n    if (!option.title) {\n      appContext.showErrorMessage(\"Enter the details\");\n      return;\n    }\n\n    handleSaveChange({ ...option, label: capitalizeLetter(option.label), title:   capitalizeLetter(option.title)});\n  };\n\n  // const handleSaveBulk = async () => {\n  //   const type = \"cancelled\";\n  //   for (const item of CANCEL_REASON_OPTIONS) {\n  //     console.log(\"item\", {...item, clientID : CONFIG.clientID});\n  //     await api.createOption(type, item);\n\n  //   }\n  // };\n\n  return (\n    <Modal\n      show\n      animation={true}\n      onHide={() => handleClose()}\n      backdrop=\"static\"\n      centered\n      size={\"md\"}\n      keyboard={true}\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Cancelled/Rejected Reason\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"row mb-3\">\n          <div className=\"col-lg-12 col-12 mb-3\">\n            <label className=\"modalLineHeaders mt-0\">Reason:</label>\n            <input\n              value={option.label}\n              className=\"modalInput\"\n              placeholder=\"Enter Reason\"\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setOption({ ...option, label: e.target.value })}\n            />\n\n            <div className=\"col-lg-12 col-12 mt-3\">\n              <label className=\"modalLineHeaders mt-0\">Details:</label>\n              <input\n                value={option.title}\n                className=\"modalInput\"\n                placeholder=\"Enter Details\"\n                style={{\n                  width: \"100%\",\n                }}\n                onChange={(e) => setOption({ ...option, title: e.target.value })}\n              />\n            </div>\n          </div>\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"headerButton\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={handleSave}>\n          Save\n        </Button>\n        {/* <Button variant=\"primary\" className=\"modalButtons\" onClick={handleSaveBulk}>\n          Save Bulk\n        </Button> */}\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default CancelledReasonModal;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { AppContext } from \"context/app-context\";\nimport { CANCEL_REASON_OPTIONS, CONFIG } from \"constant\";\nimport api from \"api\";\n\n\nconst CreateInstrumentModal = ({ handleClose, handleSaveChange, selectedValue }) => {\n  const [platformData, setPlatFormData] = useState({ instrument: \"\", platform: \"\" });\n\n  const appContext = useContext(AppContext);\n\n  useEffect(() => {\n    if (selectedValue) {\n      setPlatFormData(selectedValue);\n    }\n  }, [selectedValue]);\n\n  const handleSave = () => {\n    if (!platformData.instrument) {\n      appContext.showErrorMessage(\"Enter instrument name.\");\n      return;\n    }\n    if (!platformData.platform) {\n      appContext.showErrorMessage(\"Enter platform name.\");\n      return;\n    }\n\n    handleSaveChange(platformData);\n  };\n\n\n\n  return (\n    <Modal\n      show\n      animation={true}\n      onHide={() => handleClose()}\n      backdrop=\"static\"\n      centered\n      size={\"md\"}\n      keyboard={true}\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Create Instruments\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"row mb-3\">\n          <div className=\"col-lg-12 col-12 mb-3\">\n            <label className=\"modalLineHeaders mt-0\">Instrument:</label>\n            <input\n              value={platformData.instrument}\n              className=\"modalInput\"\n              placeholder=\"Enter Instrument Name\"\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setPlatFormData({ ...platformData, instrument: e.target.value })}\n            />\n\n            <div className=\"col-lg-12 col-12 mt-3\">\n              <label className=\"modalLineHeaders mt-0\">Platform:</label>\n              <input\n                value={platformData.platform}\n                className=\"modalInput\"\n                placeholder=\"Enter Platform Name\"\n                style={{\n                  width: \"100%\",\n                }}\n                onChange={(e) => setPlatFormData({ ...platformData, platform: e.target.value })}\n              />\n            </div>\n          </div>\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"headerButton\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={handleSave}>\n          Save\n        </Button>\n\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default CreateInstrumentModal;\n","import Filter from \"components/Filter\";\nimport Icon from \"components/Icon\";\nimport Loader from \"components/Loader/Loader\";\nimport ProcedureImportModal from \"components/Modal/ProcedureImportModal\";\nimport SpecimanContainerModal from \"views/TestTypeSetting/SpecimanContainer/SpecimanContainerModal\";\nimport MainTable from \"components/Table/MainTable\";\nimport { useContext, useEffect, useState, useMemo } from \"react\";\nimport { Card, Col, Row } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport api from \"api\";\nimport InputField from \"components/InputField/InputField\";\nimport useOptions from \"../TestTypeSetting/useOptions\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\n\nimport CreateOptions from \"../TestTypeSetting/TestUnitSelector/CreateOptions\";\nimport CreateLabelOption from \"../TestTypeSetting/LabelIDSelector/CreateLabelOption\";\nimport {\n  TEST_SETTING_TYPES,\n  DICTIONARY_COLUMNS,\n  DICTIONARY_OPTIONS,\n  SOURCE_DICTIONARY_COLUMNS,\n  CANCELLED_DICTIONARY_COLUMNS,\n  RESULT_OPTIONS_COLUMNS,\n  SPECIMEN_CONTAINER_COLUMNS,\n  TESTS_DICTIONARY,\n  INSTRUMENT_PLATFORM_COLUMNS,\n} from \"constant\";\nimport { fetchGeneralSettings } from \"store/features/testDictionary/testDictionarySlice\";\nimport { generalSettings } from \"store/features/testDictionary/testDictionarySelectors\";\nimport \"../../../src/tableStyling.css\";\nimport { TABLE_QUICK_TOOLS, MESSAGE_MODES, OPTIONS_PLACEHOLDER } from \"../../constant\";\nimport { t } from \"../../stringConstants\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport { TEST_PANEL_PERSONALIZE } from \"constants/personalization\";\nimport { renderSourcesCell, formatNumber } from \"utils\";\nimport { createTestsDetails, updateTestsDetails } from \"api\";\nimport { AppContext } from \"context/app-context\";\nimport TestElementModal from \"views/TestTypeSetting/TestElementModal\";\nimport LoadTestPanels from \"./LoadTestPanels\";\nimport { createBulkTestsDetails } from \"api\";\nimport { panelSelector } from \"store/features/testAssay/testAssaySelector\";\nimport { getTestAssociatePanel } from \"store/features/testAssay/testAssaySlice\";\nimport { getLoginUserInfoFromLocal, downloadDataAsCSV } from \"utils\";\nimport { parseTestUnit } from \"utils\";\nimport { customKeyBy } from \"util/customLodash\";\nimport CancelledReasonModal from \"views/TestTypeSetting/CancelledReasonModal/CancelledReasonModal\";\nimport CreateInstrumentModal from \"views/TestTypeSetting/CreateInstrumentModal/CreateInstrumentModal\";\n\nconst TestDictionary = () => {\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n\n  const [showFilter, setShowFilter] = useState(false);\n  const [loading, setLoading] = useState(false);\n  const [filter, setFilter] = useState({});\n\n  const [openImportModal, setOpenImportModal] = useState(false);\n  const [openPanelImportModal, setOpenPanelImportModal] = useState(false);\n  const dispatch = useDispatch();\n  const generalSettingsData = useSelector(generalSettings);\n\n  const permission = useSelector(userGivenPermission);\n  const [openDetailModal, setOpenDetailModal] = useState(false);\n  const [testPanelData, setTestPanelData] = useState(null);\n\n  const loginUserInfo = getLoginUserInfoFromLocal();\n\n  const quickTools = [permission[TESTS_DICTIONARY]?.write && TABLE_QUICK_TOOLS.edit];\n\n  const [createTestDictionary, setCreateTestDictionary] = useState(false);\n  const [selectedTDItems, setSelectedTDItems] = useState();\n\n  const [settingType, setSettingType] = useState(TEST_SETTING_TYPES.DEPARTMENT);\n\n  const [filterValues, setFilterValues] = useState([]);\n\n  const { addOption, updateOption, deleteOption } = useOptions(settingType.value);\n\n  const [searchTerms, setSearchTerms] = useState([\"Code\", \"Title\"]);\n\n  const [filterColumns, setFilterColumns] = useState(DICTIONARY_COLUMNS);\n\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n  const [userToDelete, setUserToDelete] = useState(\"\");\n\n  const appContext = useContext(AppContext);\n\n  const testPanels = useSelector(panelSelector);\n\n  const getTestsPanesl = async () => {\n    dispatch(getTestAssociatePanel());\n  };\n\n  const fetchSettings = () => {\n    dispatch(fetchGeneralSettings());\n    getTestsPanesl();\n  };\n  useEffect(() => {\n    fetchSettings();\n  }, []);\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  useEffect(() => {\n    setSettingType(DICTIONARY_OPTIONS[0]);\n  }, []);\n\n  const handleCellClick = (key, row) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        if (settingType.value === \"testPanels\") {\n          // setTestPanelData(row);\n          setOpenDetailModal(true);\n\n          setTestPanelData({\n            ...row,\n            typeOfTest: row.possibleValues ? row.possibleValues : \"Quantitative\",\n            isNew: false,\n          });\n        } else {\n          setSelectedTDItems({ item: row });\n          setCreateTestDictionary(true);\n        }\n        break;\n\n      default:\n        break;\n    }\n  };\n\n  const handelAddOption = (value) => {\n    const id = selectedTDItems?.item?.id;\n    const action = id ? updateOption : addOption;\n\n    action(value, id);\n    setCreateTestDictionary(false);\n  };\n\n  const handelUpdateSpecimen = (value) => {\n    setSelectedTDItems({\n      ...selectedTDItems,\n      item: {\n        ...selectedTDItems?.item,\n        title: \"\",\n      },\n    });\n\n    const id = selectedTDItems?.item?.id;\n\n    const action = updateOption;\n\n    action(value, id);\n  };\n\n  useEffect(() => {\n    setFilterValues(generalSettingsData?.filter((item) => item?.settingType === settingType?.value));\n  }, [settingType, generalSettingsData]);\n\n  const searchRecords = (records, searchParams) => {\n    const matchesSearchParams = (record) => {\n      return Object.keys(searchParams).every((key) => {\n        const searchValue = searchParams[key];\n        if (!searchValue) {\n          return true;\n        }\n        const recordValue = record[\"name\"]?.toString().toLowerCase();\n        return recordValue && recordValue.includes(searchValue.toLowerCase());\n      });\n    };\n\n    return records.filter((record) => {\n      if (settingType?.value === \"testPanels\") {\n        return matchesSearchParams(record);\n      }\n      if (settingType?.value === \"cancelled\" && record.settingType === \"cancelled\") {\n        const isMatched =\n          record?.settingType === settingType?.value &&\n          record?.label?.toLowerCase().includes(searchParams?.Label?.toLowerCase() ?? \"\") &&\n          record?.title?.toLowerCase().includes(searchParams?.Title?.toLowerCase() ?? \"\");\n\n        return isMatched ? true : false;\n      }\n      if (settingType?.value === \"department\" && record.settingType === \"department\") {\n        const isMatched =\n          record?.settingType === settingType?.value &&\n          record?.label?.toLowerCase().includes(searchParams?.Code?.toLowerCase() ?? \"\") &&\n          record?.label?.toLowerCase().includes(searchParams?.Title?.toLowerCase() ?? \"\");\n\n        return isMatched ? true : false;\n      }\n      if (settingType?.value === \"source\" && record.settingType === \"source\") {\n        const isMatched =\n          record?.settingType === settingType?.value &&\n          record?.label?.toLowerCase().includes(searchParams?.Source?.toLowerCase() ?? \"\");\n\n        return isMatched ? true : false;\n      }\n\n      if (settingType?.value === \"unit\" && record.settingType === \"unit\") {\n        const isMatched =\n          record?.settingType === settingType?.value &&\n          record?.label?.toLowerCase().includes(searchParams?.Code?.toLowerCase() ?? \"\") &&\n          record?.label?.toLowerCase().includes(searchParams?.Title?.toLowerCase() ?? \"\");\n\n        return isMatched ? true : false;\n      }\n\n      if (settingType?.value === \"instrumentPlatform\" && record.settingType === \"instrumentPlatform\") {\n        const isMatched =\n          record?.settingType === settingType?.value &&\n          record?.title?.toLowerCase().includes(searchParams?.Instrument?.toLowerCase() ?? \"\") &&\n          record?.label?.toLowerCase().includes(searchParams?.Platform?.toLowerCase() ?? \"\");\n        return isMatched ? true : false;\n      }\n      if (settingType?.value === \"specimenContainer\" && record.settingType === \"specimenContainer\") {\n        const isMatched =\n          record?.settingType === settingType?.value &&\n          record?.value?.toLowerCase().includes(searchParams?.name?.toLowerCase() ?? \"\") &&\n          record?.code?.toLowerCase().includes(searchParams?.Type?.toLowerCase() ?? \"\");\n        return isMatched ? true : false;\n      }\n      return record?.settingType === settingType?.value && matchesSearchParams(record);\n    });\n  };\n\n  useEffect(() => {\n    const filterRecords = searchRecords(\n      settingType.value === \"testPanels\" ? [...testPanels] : generalSettingsData,\n      filter\n    );\n    setFilterValues(filterRecords);\n  }, [filter]);\n\n  useEffect(() => {\n    const sourceDictionaryKeys = [\"department\", \"unit\"];\n\n    const sourceDictionaryValues = DICTIONARY_OPTIONS.filter((option) => sourceDictionaryKeys.includes(option.value));\n\n    if (sourceDictionaryValues.includes(settingType.value)) {\n      setSearchTerms([\"Title\"]);\n      setFilterColumns(DICTIONARY_COLUMNS);\n    } else if (settingType.value === \"testPanels\") {\n      setFilterColumns(TEST_PANEL_PERSONALIZE);\n      setFilterValues(testPanels);\n      setSearchTerms([\"Element Name\"]);\n    } else if (settingType.value === \"source\") {\n      setFilterColumns(SOURCE_DICTIONARY_COLUMNS);\n      setSearchTerms([\"Source\"]);\n    } else if (settingType.value === \"instrumentPlatform\") {\n      setFilterColumns(INSTRUMENT_PLATFORM_COLUMNS);\n      setSearchTerms([\"Instrument\", \"Platform\"]);\n    } else if (settingType.value === \"cancelled\") {\n      setFilterColumns(CANCELLED_DICTIONARY_COLUMNS);\n      setSearchTerms([\"Label\", \"Title\"]);\n    } else if (settingType.value === \"options\") {\n      setFilterColumns(RESULT_OPTIONS_COLUMNS);\n      setSearchTerms([\"Label\", \"Code\"]);\n    } else if (settingType.value === \"specimenContainer\") {\n      setFilterColumns(SPECIMEN_CONTAINER_COLUMNS);\n      setSearchTerms([\"Name\", \"Type\"]);\n    } else {\n      setFilterColumns(DICTIONARY_COLUMNS);\n      setSearchTerms([\"Code\", \"Title\"]);\n    }\n  }, [settingType, testPanels]);\n\n  const renderCreateOptions = () => {\n    if (!createTestDictionary) return null;\n\n    if (settingType.value === \"specimenContainer\") {\n      return (\n        <SpecimanContainerModal\n          modalTitle={\"Specimen Container\"}\n          handleClose={() => setCreateTestDictionary(false)}\n          handleSaveChange={handelAddOption}\n          setLoading={setLoading}\n          handelUpdate={handelUpdateSpecimen}\n          selectedValue={{\n            name: selectedTDItems?.item?.value, // Speciman Container name\n            type: selectedTDItems?.item?.code, // Type\n            image: selectedTDItems?.item?.title,\n          }}\n        />\n      );\n    }\n    if (settingType.value === \"source\") {\n      return (\n        <CreateLabelOption\n          handleClose={() => setCreateTestDictionary(false)}\n          handleSaveChange={handelAddOption}\n          selectedValue={{\n            source: selectedTDItems?.item?.label,\n            code: selectedTDItems?.item?.code,\n          }}\n          settingType={settingType}\n        />\n      );\n    }\n    if (settingType.value === \"cancelled\") {\n      return (\n        <CancelledReasonModal\n          handleClose={() => setCreateTestDictionary(false)}\n          handleSaveChange={handelAddOption}\n          selectedValue={{\n            title: selectedTDItems?.item?.title,\n            label: selectedTDItems?.item?.label,\n          }}\n        />\n      );\n    }\n    if (settingType.value === \"instrumentPlatform\") {\n      return (\n        <CreateInstrumentModal\n          handleClose={() => setCreateTestDictionary(false)}\n          handleSaveChange={handelAddOption}\n          selectedValue={{\n            instrument: selectedTDItems?.item?.title,\n            platform: selectedTDItems?.item?.label,\n          }}\n        />\n      );\n    }\n\n    return (\n      <CreateOptions\n        handleClose={() => setCreateTestDictionary(false)}\n        handleSaveChange={handelAddOption}\n        title={settingType.label}\n        selectedValue={selectedTDItems?.item?.label}\n        label={settingType.label}\n        placeholder={OPTIONS_PLACEHOLDER[settingType.label] || \"Enter Option\"}\n      />\n    );\n  };\n\n  const handleConfirm = async (isConfirm) => {\n    if (!isConfirm) {\n      setUserToDelete(null);\n      setOpenDeleteConfirmation(false);\n      return;\n    }\n    try {\n      if (settingType && settingType.label === \"Test Pathogen\") {\n        const deleteAssay = await api.deleteTestAssay([userToDelete.id]);\n        dispatch(setMessage(\"Archived Successfully\", MESSAGE_MODES.success));\n        setUserToDelete(null);\n        setOpenDeleteConfirmation(false);\n        return;\n      }\n      deleteOption(userToDelete.id);\n      setUserToDelete(null);\n      setOpenDeleteConfirmation(false);\n      dispatch(setMessage(\"Archived Successfully\", MESSAGE_MODES.success));\n    } catch (error) {\n      dispatch(setMessage(error?.response?.data?.error, MESSAGE_MODES.error));\n    }\n  };\n\n  // const renderTd = (item, row) => {\n  //   return <td key={item.id}>{row?.title || row?.label}</td>;\n  // };\n\n  const handleSaveTestDetail = async (testDetailsData) => {\n    let { isNew } = testDetailsData;\n    const action = isNew ? \"create\" : \"update\";\n\n    setLoading(true);\n    try {\n      await (isNew ? createTestsDetails : updateTestsDetails)(testDetailsData);\n      getTestsPanesl();\n      // if (result?.data) {\n      //   setEditObj((prevEditObj) => ({\n      //     ...prevEditObj,\n      //     targetRanges: prevEditObj?.targetRanges?.map((item) => (item.id === result.data.id ? result.data : item)),\n      //   }));\n      // }\n\n      setOpenDetailModal(false);\n      setTestPanelData(null);\n      setLoading(false);\n    } catch (error) {\n      setLoading(false);\n      console.error(\"Error\", error);\n      appContext.showErrorMessage(`Unable to ${action} panel test.`);\n    }\n  };\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"action\") {\n      return (\n        <td key={`bin_${item.id}`} style={{ textAlign: \"right\" }}>\n          <Icon\n            iconType={\"binIcon\"}\n            containerClass={\"ms-2 cursor-pointer\"}\n            innerClass={\"\"}\n            imageClass={\"testTabelDeleteIcon\"}\n            // handleClick={() => handleTestRemove(row)}\n          />\n        </td>\n      );\n    }\n    if (item.itemKey === \"units\") {\n      return <td key={`unit_${item.id}`}>{parseTestUnit(row.units)}</td>;\n    }\n    if (item.itemKey === \"sources\") {\n      return renderSourcesCell(item, row);\n    }\n    return <td key={item.id}>{row?.title || row?.label}</td>;\n  };\n\n  const parseStringToObject = (rawUnits) => {\n    return rawUnits.split(\",\").map((unit) => ({\n      label: unit,\n      value: unit,\n    }));\n  };\n\n  const ranges = {\n    id: 1,\n\n    // AgeStart: \"\",\n    // AgeEnd: \"\",\n\n    NormalLow: 0,\n    NormalHigh: 0,\n\n    HighLow: 0,\n    HighHigh: 0,\n\n    PanicLow: 0,\n    PanicHigh: 0,\n\n    RepeatLow: 0,\n    RepeatHigh: 0,\n\n    LowLow: 0,\n    LowHigh: 0,\n  };\n\n  const getMinMax = (input) => {\n    const parts = input.split(\"-\").map((str) => str.trim());\n    function extractFirstNumber(str) {\n      if (!str) return 0;\n      const sanitizedStr = str.replace(/,/g, \"\");\n      const match = sanitizedStr.match(/^\\d+/);\n      return match ? parseFloat(match[0]) : 0;\n    }\n    const min = parts[0] ? extractFirstNumber(parts[0]) : 0;\n\n    const max = parts[1] ? extractFirstNumber(parts[1]) : 0;\n\n    if (!isNaN(min) && !isNaN(max)) {\n      return [\n        {\n          id: 1,\n          ...ranges,\n          NormalLow: min,\n          NormalHigh: max,\n        },\n      ];\n    } else {\n      return [{ ...ranges }];\n    }\n  };\n\n  const handleImport = async (locData) => {\n    const parsedData = locData.map(({ data }) => {\n      const {\n        Unit,\n        \"Result Type\": resultType,\n        \"Associated Targets, Panels\": name,\n        Source,\n        \"Refrence Interval/ Range\": refRanges,\n      } = data;\n\n      const rng = getMinMax(refRanges);\n\n      return {\n        units: parseStringToObject(Unit),\n        possibleValues: resultType,\n        isActive: true,\n        name: name,\n        refType: \"Not Detected\",\n        refInterval: \"Not Detected\",\n        ranges: rng,\n        resultType: \"\",\n        sources: parseStringToObject(Source),\n        maxValueF: \"\",\n        maxValueM: \"\",\n        minValueF: \"\",\n        minValueM: \"\",\n        additionalInfo: \"\",\n        effectiveDate: \"\",\n        resultType: \"\",\n      };\n    });\n\n    const removedDuplicated = customKeyBy(parsedData, \"name\");\n    const dataAfterRemoveDuplicate = Object.values(removedDuplicated);\n\n    try {\n      const response = await createBulkTestsDetails({ data: dataAfterRemoveDuplicate });\n\n      getTestsPanesl();\n      appContext.showSuccessMessage(\"Panel Element Added.\");\n\n      setOpenPanelImportModal(false);\n    } catch (error) {\n      console.log(\"Error\", error);\n    }\n  };\n\n  const sortFilterValues = (innerFilterValues = [], sortDescending) => {\n    return [...innerFilterValues]?.sort((a, b) => {\n      let comparison = 0;\n      switch (settingType?.label) {\n        case \"Source\":\n        case \"Unit\":\n        case \"Department\":\n        case \"Associated Instrument\":\n          comparison = a?.label?.localeCompare(b?.label);\n          break;\n        case \"Cancelled/Rejected Reason\":\n          comparison = a?.title?.localeCompare(b?.title);\n          break;\n        case \"Panel Element\":\n          comparison = a?.name?.localeCompare(b?.name);\n          break;\n        case \"Specimen Container\":\n          comparison = a?.code?.localeCompare(b?.code);\n          break;\n        default:\n          return 0;\n      }\n\n      return sortDescending ? -comparison : comparison;\n    });\n  };\n\n  const onHandleDownloadSample = async (value) => {\n    await downloadDataAsCSV(\n      [\n        {\n          Unit: [\"Unit\"],\n          \"Result Type\": [\"Result Type\"],\n          \"Associated Targets, Panels\": [\"Associated Targets, Panels\"],\n          Source: [\"Enter Source\"],\n          \"Refrence Interval/ Range\": [\"Refrence Interval/ Range\"],\n        },\n      ],\n      \"Panel Element Sample\"\n    );\n  };\n\n  return (\n    <div style={{ flex: 1 }}>\n      {!loading ? (\n        <Row>\n          <Col>\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  {t(\"testDictionary\")} ({formatNumber(filterValues?.length)})\n                </Card.Title>\n                <div className=\"buttonHeader d-flex justify-content-between flex-direction-row flex-md-direction-column\">\n                  <div className=\"d-flex\">\n                    <Icon\n                      handleClick={() => setShowFilter(!showFilter)}\n                      title={\"Filter\"}\n                      label={\"Filter\"}\n                      iconType={\"filter\"}\n                    />\n                    {permission[TESTS_DICTIONARY]?.write && (\n                      <Icon\n                        handleClick={() => {\n                          if (settingType.value === \"testPanels\") {\n                            setTestPanelData({ isNew: true, typeOfTest: \"Qualitative\" });\n                            setOpenDetailModal(true);\n                          } else {\n                            setSelectedTDItems();\n                            setCreateTestDictionary(true);\n                          }\n                        }}\n                        title={\"Create\"}\n                        label={\"Create\"}\n                        iconType={\"createIcon\"}\n                      />\n                    )}\n                    {permission[TESTS_DICTIONARY]?.write && settingType.value === \"testPanels\" && (\n                      <Icon\n                        handleClick={() => {\n                          setOpenPanelImportModal(true);\n                        }}\n                        title={\"Load Elements\"}\n                        iconType=\"importIcon\"\n                        label=\"Load Elements\"\n                      />\n                    )}\n                  </div>\n                  <div className=\"dictionary_search\">\n                    <InputField\n                      type=\"dropDown\"\n                      groupWrapper=\"w-100\"\n                      options={DICTIONARY_OPTIONS}\n                      labelStyle=\"text-capitalize\"\n                      label=\"Select Setting Type:\"\n                      value={settingType}\n                      index=\"Name\"\n                      isClearable={true}\n                      placeholder=\"Select Setting Type:\"\n                      handleChange={(e) => {\n                        if (e) {\n                          setSettingType(e);\n                          setSortDescending(false);\n                        } else {\n                          setSettingType(\"\");\n                          setSortDescending(false);\n                        }\n                      }}\n                    />\n                  </div>\n                </div>\n\n                {showFilter && (\n                  <Filter\n                    filterTerms={searchTerms}\n                    setFilter={setFilter}\n                    filter={filter}\n                    isUsersTable={true}\n                    // personalisationData={TEST_DICTIONARY_PERSONALIZE}\n                  />\n                )}\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable\">\n                  <MainTable\n                    columns={filterColumns}\n                    rows={sortFilterValues(filterValues, sortDescending) || []}\n                    flipSort={flipSort}\n                    sortBy={sortBy}\n                    sortDescending={sortDescending}\n                    widthToSkip={155}\n                    tools={quickTools}\n                    handleCellClick={handleCellClick}\n                    customColumnCellRenderer={customRenderTD}\n                    dropDownOptions={\n                      permission[TESTS_DICTIONARY]?.delete &&\n                      TABLE_QUICK_TOOLS.delete && [\n                        { value: \"logs\", title: \"Audit Trail\" },\n                        { value: \"Archive\", title: \"Archive\" },\n                      ]\n                    }\n                    handleDropDownClick={async (type, row) => {\n                      if (type === \"Audit Trail\") {\n                        appContext.showLogs({\n                          ...row,\n                          ordID: row.id,\n                          recordType: \"TestDictionarylogs\",\n                          title: \"Audit Trail\",\n                        });\n                      }\n                      if (type === \"Archive\") {\n                        setOpenDeleteConfirmation(true);\n                        setUserToDelete(row);\n                      }\n                    }}\n                  />\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n          {renderCreateOptions()}\n\n          {openDeleteConfirmation && (\n            <ConfirmationModal\n              show={openDeleteConfirmation}\n              handleClose={() => {\n                setUserToDelete(null);\n                setOpenDeleteConfirmation(false);\n              }}\n              title={`Archive ${settingType.label}:`}\n              message={`Are you sure, you want to archive ? ${settingType.label}:`}\n              handleConfirm={handleConfirm}\n            />\n          )}\n          {openImportModal && (\n            <ProcedureImportModal handleClose={() => setOpenImportModal(false)} title={t(\"importProcedureDataTitle\")} />\n          )}\n        </Row>\n      ) : (\n        <Loader />\n      )}\n\n      {openDetailModal && (\n        <TestElementModal\n          data={{ ...testPanelData, callFrom: \"pathegon\" }}\n          handleSaveTestDetail={handleSaveTestDetail}\n          handleClose={() => {\n            setOpenDetailModal(false);\n            setTestPanelData(null);\n          }}\n          loading={loading}\n        />\n      )}\n\n      {openPanelImportModal && (\n        <LoadTestPanels\n          handleClose={() => setOpenPanelImportModal(false)}\n          handleImport={handleImport}\n          appContext={appContext}\n          handleDownloadSample={(value) => onHandleDownloadSample(value)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport default TestDictionary;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport {\n  createNewMessageTemplate,\n  deleteMessageTemplate,\n  fetchMessageTemplateLists,\n  updateMessageTemplate,\n} from \"./messageTemplateAction\";\nimport { MESSAGE_TEMPLATE } from \"./messageTemplateConstant\";\n\nconst generalSlice = createSlice({\n  name: MESSAGE_TEMPLATE,\n  initialState: {\n    messageTemplates: [],\n    selectedMessageTemplate: null,\n    showModal: false,\n    loader: false,\n    error: null,\n  },\n  reducers: {\n    setSelectedMessageTemplate: (state, action) => {\n      state.selectedMessageTemplate = action.payload || null;\n    },\n    setShowMessageTemplateModal: (state, action) => {\n      state.showModal = !!action.payload;\n    },\n  },\n  extraReducers: (builder) => {\n    builder.addCase(fetchMessageTemplateLists.fulfilled, (state, action) => {\n      state.messageTemplates = action.payload || [];\n    });\n    builder.addCase(createNewMessageTemplate.fulfilled, (state, action) => {\n      state.messageTemplates = [...state.messageTemplates, action.payload];\n    });\n    builder.addCase(updateMessageTemplate.fulfilled, (state, action) => {\n      const updatedTemplate = action.payload.updatedTemplate || null;\n      const prevTemplateId = action.payload.prevTemplateId || null;\n      if (updatedTemplate) {\n        state.messageTemplates = state.messageTemplates.map((messageTemplate) =>\n          messageTemplate.id === prevTemplateId ? updatedTemplate : messageTemplate\n        );\n      }\n    });\n    builder.addCase(deleteMessageTemplate.fulfilled, (state, action) => {\n      const deletedTemplateId = action.payload || null;\n      if (deletedTemplateId) {\n        state.messageTemplates = state.messageTemplates.filter(\n          (messageTemplate) => messageTemplate.id !== deletedTemplateId\n        );\n      }\n    });\n  },\n});\n\nexport const { setLoader, setError, setSelectedMessageTemplate, setShowMessageTemplateModal } = generalSlice.actions;\n\nexport default generalSlice.reducer;\n","import api from \"api\";\nimport Filter from \"components/Filter\";\nimport Icon from \"components/Icon\";\nimport Loader from \"components/Loader/Loader\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport MainTable from \"components/Table/MainTable\";\nimport { PAGE_LIMIT, TABLE_QUICK_TOOLS } from \"constant\";\nimport { MESSAGE_TEMPLATE_PERSONALIZE } from \"constants/personalization\";\nimport { AppContext } from \"context/app-context\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { Card, Col, Row } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showConfirmationModal } from \"store/features/general/generalAction\";\nimport { deleteMessageTemplate, fetchMessageTemplateLists } from \"store/features/messageTemplate/messageTemplateAction\";\nimport { messageTemplateListSelector } from \"store/features/messageTemplate/messageTemplateSelectors\";\nimport {\n  setSelectedMessageTemplate,\n  setShowMessageTemplateModal,\n} from \"store/features/messageTemplate/messageTemplateSlice\";\nimport { t } from \"stringConstants\";\n\nconst MessageTemplateView = (props) => {\n  const [messageTemplates, setMessageTemplates] = useState([]);\n  const [filteredMessagesList, setFilteredMessagesList] = useState([]);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [loading, setLoading] = useState(false);\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const appContext = useContext(AppContext);\n  const [allSelected, setAllSelected] = useState(false);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const messageTemplatesList = useSelector(messageTemplateListSelector);\n\n  const dispatch = useDispatch();\n\n  const quickTools = [TABLE_QUICK_TOOLS.checkbox, TABLE_QUICK_TOOLS.edit, TABLE_QUICK_TOOLS.delete];\n\n  const searchTerms = [\"Name\", \"Category\"];\n\n  const [currentPage, setCurrentPage] = useState(1);\n  const [usersPerPage, setUsersPerPage] = useState(PAGE_LIMIT);\n\n  const sortUsers = (users, sortParam) => {\n    if (users?.length > 0) {\n      if (sortDescending) {\n        return [...users].sort((a, b) => (a[sortParam] < b[sortParam] ? 1 : b[sortParam] < a[sortParam] ? -1 : 0));\n      } else {\n        return [...users].sort((a, b) => (b[sortParam] < a[sortParam] ? 1 : a[sortParam] < b[sortParam] ? -1 : 0));\n      }\n    }\n    return [];\n  };\n\n  const handleCheckboxChange = (e, user) => {\n    const filteredList = checkboxes.filter((c) => c !== user.id);\n    if (e.target.checked) {\n      filteredList.push(user.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (filters[key] == \"\" && !Object.keys(filters[key]).length) {\n          return true;\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    return models;\n  };\n\n  const handleChangePage = (number) => {\n    setCurrentPage(number);\n  };\n\n  const currentUsers = (users) => {\n    const indexOfLastUser = currentPage * usersPerPage;\n    const indexOfFirstUser = indexOfLastUser - usersPerPage;\n    return users.slice(indexOfFirstUser, indexOfLastUser);\n  };\n\n  let salePersonsToMap = currentUsers(filteredMessagesList);\n\n  const getPageNumbers = (users) => {\n    const pageNumbers = users.length > PAGE_LIMIT ? Math.ceil(users.length / PAGE_LIMIT) : 1;\n    return pageNumbers;\n  };\n\n  let pageNumbers = getPageNumbers(messageTemplates);\n\n  useEffect(() => getMessageTemplateList(), []);\n  useEffect(() => formatSalesPersonList(), [messageTemplatesList]);\n\n  const getMessageTemplateList = () => {\n    dispatch(fetchMessageTemplateLists());\n  };\n\n  const formatSalesPersonList = () => {\n    setMessageTemplates(messageTemplatesList);\n    const filteredClaims = sortUsers(nestedFilter(messageTemplatesList, filter), sortBy);\n    setFilteredMessagesList(filteredClaims);\n  };\n\n  useEffect(() => {\n    if (filteredMessagesList.length > 0)\n      setFilteredMessagesList(sortUsers(nestedFilter(filteredMessagesList, filter), sortBy));\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (messageTemplates.length > 0) {\n      setFilteredMessagesList(sortUsers(nestedFilter(messageTemplates, filter), sortBy));\n      setCurrentPage(1);\n    }\n  }, [filter]);\n\n  if (filteredMessagesList.length > 0) {\n    pageNumbers = getPageNumbers(filteredMessagesList);\n  }\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n    handleChangePage(1);\n  };\n\n  const toggleCheckboxes = (val) => {\n    setCheckboxes(val ? filteredMessagesList.map((t) => t.id) : []);\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n\n      case TABLE_QUICK_TOOLS.edit:\n        dispatch(setSelectedMessageTemplate({ ...row, isNew: false }));\n        dispatch(setShowMessageTemplateModal(true));\n        break;\n      case TABLE_QUICK_TOOLS.delete:\n        const confirmationModalData = {\n          showModal: true,\n          onConfirm: () => dispatch(deleteMessageTemplate(row)),\n          title: \"Delete Message Template\",\n          message: \"Are you sure, you want to delete that message Template?\",\n        };\n        dispatch(showConfirmationModal(confirmationModalData));\n        break;\n\n      default:\n        break;\n    }\n  };\n\n  return (\n    <div style={{ flex: 1 }}>\n      {!loading ? (\n        <Row>\n          <Col>\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  {t(\"messageTemplate\")}\n                </Card.Title>\n                <div className=\"buttonHeader\">\n                  <Icon\n                    handleClick={() => setShowFilter(!showFilter)}\n                    title={\"Filter\"}\n                    label={\"Filter\"}\n                    iconType={\"filter\"}\n                  />\n\n                  <Icon\n                    handleClick={async () => {\n                      if ((filteredMessagesList || []).length > 0) {\n                        setAllSelected(!allSelected);\n                        toggleCheckboxes(!allSelected);\n                      }\n                    }}\n                    label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                    title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                    iconType={\"selectAllIcon\"}\n                  />\n\n                  <Icon\n                    title={t(\"createMessageTemplate\")}\n                    label={t(\"createMessageTemplate\")}\n                    iconType={\"acknowledgedPositiveIcon\"}\n                    handleClick={() => {\n                      dispatch(setSelectedMessageTemplate({ isNew: true }));\n                      dispatch(setShowMessageTemplateModal(true));\n                    }}\n                  />\n                </div>\n\n                {showFilter && (\n                  <Filter\n                    filterTerms={searchTerms}\n                    setFilter={setFilter}\n                    filter={filter}\n                    isUsersTable={true}\n                    employeeClaim={true}\n                    personalisationData={MESSAGE_TEMPLATE_PERSONALIZE}\n                  />\n                )}\n                {/* <div className=\"mb-4\">\n                  <MFPagination\n                    currentPage={currentPage}\n                    handleChangePage={handleChangePage}\n                    totalPages={pageNumbers}\n                    totalSelected={checkboxes.length}\n                  />\n                </div> */}\n              </Card.Header>\n              <Card.Body className=\"table-full-width desktop-noScroll\">\n                <MainTable\n                  columns={MESSAGE_TEMPLATE_PERSONALIZE}\n                  rows={salePersonsToMap}\n                  flipSort={flipSort}\n                  sortBy={sortBy}\n                  sortDescending={sortDescending}\n                  widthToSkip={155}\n                  tools={quickTools}\n                  selectedRows={checkboxes}\n                  handleCellClick={handleCellClick}\n                />\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n      ) : (\n        <Loader />\n      )}\n    </div>\n  );\n};\n\nexport default MessageTemplateView;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nconst genericModalSlice = createSlice({\n  name: \"GenericModalView\",\n  initialState: {\n    showGenericModal: false,\n    genericData: [],\n    genericPathogenData: [],\n    showGenericPathogenModal: false,\n  },\n  reducers: {\n    setGenericModalData: (state, action) => {\n      state.showGenericModal = action.payload.showGenericModal;\n      state.genericData = action.payload.genericData;\n    },\n    setGenericPathogenModalData: (state, action) => {\n      state.showGenericPathogenModal = action.payload.showGenericPathogenModal;\n      state.genericPathogenData = action.payload.genericPathogenData;\n    },\n  },\n});\n\nexport const { setGenericModalData, setGenericPathogenModalData } = genericModalSlice.actions;\n\nexport default genericModalSlice.reducer;\n","import ErrorMessage from \"components/Message/ErrorMessage\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { getValidReg } from \"utils\";\n\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport { countryListAllIsoData } from \"constant\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { selectedCompanySetting } from \"store/features/companySetting/companySettingSelectors\";\n\nconst ReferenceLabModal = (props) => {\n  const { handleClose, selectItem, handleSave } = props;\n\n  const loginUser = useSelector(selectLoginUser);\n  const [error, setError] = useState(\"\");\n  const getObject = () => {\n    const country = countryListAllIsoData.find((f) => f.name === selectItem.country) || { code: \"US\" };\n\n    return { ...selectItem, isoCode: country.code };\n  };\n  const [newLocation, setNewLocation] = useState(getObject());\n  const [openDefaultSetting, setOpenDefaultSetting] = useState(null);\n  const dispatch = useDispatch();\n  \n\n  const { otherNPI, cliaNumber } = useSelector(selectedCompanySetting);\n\n  const handleSaveChange = () => {\n    if (!newLocation.name || !newLocation.name.trim()) {\n      setError(\"Client name required\");\n      return;\n    }\n\n    // if (!newLocation.contact_name) {\n    //   setError(\"Main Contact Name is required\");\n    //   return;\n    // }\n\n    // if (!newLocation.contact_email) {\n    //   setError(\"Email is required\");\n    //   return;\n    // }\n    // if (!isValidEmail(newLocation.contact_email)) {\n    //   setError(\"Invalid Email\");\n    //   return;\n    // }\n\n    // if (!newLocation.contactName) {\n    //   setError(\"Main Contact is required\");\n    //   return;\n    // }\n    // if (!isValidPhoneWithCode(newLocation.contactName)) {\n    //   setError(\"Invalid Phone Number\");\n    //   return;\n    // }\n\n    // if (!newLocation.phone_number) {\n    //   setError(\"Main Contact Number is required\");\n    //   return;\n    // }\n\n    // if (!isValidPhoneWithCode(newLocation.phone_number)) {\n    //   setError(\"Invalid Main Contact Number\");\n    //   return;\n    // }\n\n\n    handleSave(newLocation);\n  };\n\n\n  return (\n    <Modal show backdrop=\"static\" animation={true} onHide={() => handleClose()} centered size=\"md\">\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {newLocation.isNew ? \" Create New Reference Lab\" : \"Edit Reference Lab\"}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"createRefernceWrapper\">\n          <div className=\"leftSide\">\n            <div className=\"row mb-3\">\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Lab Name</label>\n                <input\n                  value={newLocation?.name}\n                  className=\"modalInput\"\n                  placeholder=\"Lab Name\"\n                  style={{\n                    width: \"100%\",\n                  }}\n                  onChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      name: e.target.value,\n                    })\n                  }\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Main Contact Name:</label>\n                <input\n                  value={newLocation?.contact_name}\n                  className=\"modalInput\"\n                  placeholder=\"Main Contact Name\"\n                  style={{\n                    width: \"100%\",\n                  }}\n                  onChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      contact_name: getValidReg(e.target.value),\n                    })\n                  }\n                />\n              </div>\n\n              <div className=\"form-group-wrapper phoneInput position-relative\">\n                <label className=\"modalLineHeaders\">Phone Number:</label>\n                <PhoneNoInput\n                  cssClass=\"w-100\"\n                  handleChange={(e) =>\n                    setNewLocation({\n                      ...newLocation,\n                      phone_number: e,\n                    })\n                  }\n                  value={newLocation?.phone_number}\n                />\n              </div>\n\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Email:</label>\n                <input\n                  type=\"text\"\n                  className=\"modalInput\"\n                  placeholder=\"Email\"\n                  value={newLocation?.email}\n                  onChange={(e) => {\n                    setNewLocation({\n                      ...newLocation,\n                      email: e.target.value,\n                    });\n                  }}\n                />\n              </div>\n            </div>\n            {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n          </div>\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <div>\n          {/* <Button variant=\"secondary\" className=\"headerButton btn-fill me-1\" onClick={() => handleOpenDefaultSetting()}>\n            Open Default Setting\n          </Button> */}\n          <Button variant=\"secondary\" className=\"headerButton btn-fill\" onClick={handleSaveChange}>\n            {newLocation.isNew ? \"Create\" : \"Update\"}\n          </Button>\n        </div>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ReferenceLabModal;\n","import API from \"api\";\nimport Loader from \"components/Loader/Loader\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport { PAGE_LIMIT, newLabClientObject, CLIENT_MANAGEMENT, CONFIG } from \"constant\";\nimport { AppContext } from \"context/app-context\";\nimport { useContext, useEffect, useState, useMemo } from \"react\";\nimport { Card, Col, Row } from \"react-bootstrap\";\nimport { checkValidity, sortingFilterInLC } from \"utils\";\nimport { t } from \"stringConstants\";\n\nimport ImportErrorModal from \"components/Modal/ImportErrorModal\";\nimport MainTable from \"components/Table/MainTable\";\nimport { MESSAGE_MODES, TABLE_QUICK_TOOLS } from \"constant\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { formatNumber } from \"utils\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport { fetchAllLocations, createLabClient, updateLabClient } from \"store/features/locations/locationsSlice\";\nimport { refLabsSelectors } from \"store/features/locations/locationsSelectors\";\nimport { providerList } from \"store/features/providers/providersSelectors\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport ReferenceLabModal from \"./RefernceLabModal\";\nimport { REFERENCE_PERSONALIZE } from \"constants/personalization\";\nimport Icon from \"components/Icon\";\nimport { REFERENCE } from \"constants/tabPillsContants\";\nimport Filter from \"components/Filter\";\nimport { updateLocation } from \"store/features/locations/locationsAction\";\n\nconst ReferenceView = () => {\n  const appContext = useContext(AppContext);\n  const [locations, setLocations] = useState([]);\n  const [filteredLocations, setFilteredLocations] = useState([]);\n  const [itemToDelete, setItemToDelete] = useState(null);\n  const [loading, setLoading] = useState(false);\n  const [openCreateModal, setOpenCreateModal] = useState(false);\n  const [selectItem, setSelectItem] = useState(newLabClientObject);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [filter, setFilter] = useState({});\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [showFilter, setShowFilter] = useState(false);\n  const [triggerFilter, setTriggerFilter] = useState();\n\n  const dispatch = useDispatch();\n  const permission = useSelector(userGivenPermission);\n  const searchTerms = [\"Name\", \"Contact Name\"];\n\n  const quickTools = [\n    TABLE_QUICK_TOOLS.checkbox,\n    permission[CLIENT_MANAGEMENT]?.write && TABLE_QUICK_TOOLS.edit,\n    \"provider\",\n  ];\n\n  const labLocations = useSelector(refLabsSelectors);\n\n  const currentItems = (locs) => {\n    if (!locs || locs.length === 0) return [];\n    const indexOfLastUser = currentPage * PAGE_LIMIT;\n    const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n    return locs.slice(indexOfFirstUser, indexOfLastUser);\n  };\n\n  const locationsToMap = useMemo(() => {\n    return currentItems(filteredLocations);\n  }, [filteredLocations]);\n\n  const sortData = (schs, sortParam) => {\n    if (sortDescending) {\n      return [...schs].sort((a, b) => (a[sortParam] < b[sortParam] ? 1 : b[sortParam] < a[sortParam] ? -1 : 0));\n    } else {\n      return [...schs].sort((a, b) => (b[sortParam] < a[sortParam] ? 1 : a[sortParam] < b[sortParam] ? -1 : 0));\n    }\n  };\n\n  const getLabClients = async () => {\n    try {\n      await dispatch(fetchAllLocations({ siteType: \"lab\" }));\n    } catch (err) {\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  useEffect(() => {\n    const sortLS = sortingFilterInLC.get();\n    if (sortLS.facilities && sortLS.facilities.sortBy) {\n      setSortBy(sortLS.facilities.sortBy);\n      setSortDescending(sortLS.facilities.sortDescending);\n    }\n\n    getLabClients();\n  }, [appContext?.company]);\n\n  const getPageNumbers = (users) => {\n    const pageNumbers = users.length > PAGE_LIMIT ? Math.ceil(users.length / PAGE_LIMIT) : 1;\n    return pageNumbers;\n  };\n\n  let pageNumbers = getPageNumbers(locations);\n\n  if (filteredLocations && filteredLocations.length > 0) {\n    pageNumbers = getPageNumbers(filteredLocations);\n  }\n\n  useEffect(() => {\n    if (labLocations && labLocations.length > 0) {\n      formatFacility();\n    }\n  }, [labLocations]);\n\n  const formatFacility = () => {\n    let facilities = labLocations.map((item) => ({ ...item }));\n\n    setLocations(facilities);\n    setFilteredLocations(sortData(nestedFilter(facilities, filter), sortBy));\n  };\n\n  const handleSaveFilter = () => {\n    const pervSortLS = sortingFilterInLC.get();\n    pervSortLS.facilities = { sortBy, sortDescending, filter };\n    sortingFilterInLC.save(pervSortLS);\n  };\n\n  useEffect(() => {\n    if (locations.length > 0) {\n      setFilteredLocations(sortData(nestedFilter(locations, filter), sortBy));\n      setCurrentPage(1);\n    }\n  }, [filter]);\n\n  useEffect(() => {\n    if (filteredLocations.length > 0) {\n      handleSaveFilter();\n      setFilteredLocations(sortData(filteredLocations, sortBy));\n    }\n  }, [sortBy, sortDescending]);\n\n  const handleConfirmDelete = async (isConfirm) => {\n    const deletedItemRow = itemToDelete;\n    setItemToDelete(null);\n    if (!isConfirm) {\n      return;\n    }\n    try {\n      setLoading(true);\n      const isDeleted = await API.updateSiteArchive(deletedItemRow.id, true);\n      dispatch(setMessage(\"Reference Lab deleted successfully\", MESSAGE_MODES.success));\n      if (isDeleted) {\n        setFilteredLocations((prevLocations) => prevLocations.filter((location) => location.id !== deletedItemRow.id));\n        setLocations((prevLocations) => prevLocations.filter((location) => location.id !== deletedItemRow.id));\n      }\n      setLoading(false);\n    } catch (error) {\n      setLoading(false);\n      dispatch(setMessage(error.message, MESSAGE_MODES.error));\n    }\n  };\n\n  const OnHandleLocation = async (loc) => {\n    const findVal = locations.find((f) => loc.id !== f.id && checkValidity(f.name) == checkValidity(loc.name));\n    if (findVal) {\n      dispatch(setMessage(\"Reference Lab already exist\", MESSAGE_MODES.error));\n      return;\n    }\n    setOpenCreateModal(false);\n\n    try {\n      if (loc.isNew) {\n        const res = await dispatch(createLabClient({ ...loc, siteType: \"lab\" }));\n        if (res) {\n          dispatch(setMessage(\"Reference Lab Created Successfully\", MESSAGE_MODES.success));\n        }\n      } else {\n        await dispatch(updateLabClient({ ...loc, siteType: \"lab\" }));\n        dispatch(setMessage(\"Reference Lab Updated Successfully\", MESSAGE_MODES.success));\n      }\n      getLabClients();\n      setSelectItem(newLabClientObject);\n    } catch (err) {\n      console.log(\"Error\", err);\n      dispatch(setMessage(err.message, MESSAGE_MODES.error));\n    }\n  };\n\n  const handleEdit = (item) => {\n    setSelectItem({ ...item, isNew: false });\n    setOpenCreateModal(true);\n  };\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    let apiData = targetArray;\n\n    apiData = apiData.map((item) => ({\n      ...item, // Spread the existing item properties\n      totalTests: item?.setting?.totalTests || 0, // Add or override the totalTests property\n    }));\n\n    if (Object.keys(filters).length === 0) return apiData;\n    const filterKeys = Object.keys(filters);\n\n    const models = apiData.filter((obj) => {\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n    return models;\n  };\n\n  const handleChangePage = (number) => {\n    setCurrentPage(number);\n  };\n\n  const handleCheckboxChange = (e, row) => {\n    const filteredList = checkboxes.filter((c) => c !== row.id);\n    if (e.target.checked) {\n      filteredList.push(row.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        if (row.id !== \"596daf9b-8f9d-451c-a28f-a458bac57ce4\" && row.id !== \"a081f285-4949-45bd-9516-ba2ff3e8d0b1\") {\n          handleEdit(row);\n        }\n        break;\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n      default:\n        break;\n    }\n  };\n\n  const LAB_CLIENT_DROPDOWN = useMemo(() => {\n    const hasDeletePermission = permission[CLIENT_MANAGEMENT]?.delete;\n    const deleteOption = hasDeletePermission ? [{ value: \"delete\", title: \"Archive\" }] : [];\n\n    return deleteOption;\n  }, [permission[CLIENT_MANAGEMENT]?.delete]);\n\n  return (\n    <div style={{ flex: 1 }}>\n      <Row>\n        <Col md=\"12\">\n          {!loading ? (\n            <Card\n              className={`strpied-tabled-with-hover  ${\n                locationsToMap?.length === 1 || locationsToMap?.length === 2 ? \"test-details-table\" : \"\"\n              }`}\n            >\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  {t(\"referenceLab\")} ({filteredLocations ? formatNumber(filteredLocations.length) : 0})\n                </Card.Title>\n                <div className=\"buttonHeader\">\n                  <Icon\n                    handleClick={() => setShowFilter(!showFilter)}\n                    title={\"Filter\"}\n                    label={\"Filter\"}\n                    iconType={\"filter\"}\n                  />\n                  {permission[CLIENT_MANAGEMENT]?.write && (\n                    <Icon\n                      handleClick={() => {\n                        const obj = { ...newLabClientObject };\n                        setSelectItem({ ...obj, clientID: CONFIG.clientID });\n                        setSelectItem({ ...obj, clientID: CONFIG.clientID });\n\n                        setSelectItem({ ...obj, clientID: CONFIG.clientID });\n\n                        setOpenCreateModal(true);\n                      }}\n                      label={\"Create\"}\n                      title={\"Create Facility\"}\n                      iconType={\"addUserIcon\"}\n                    />\n                  )}\n                </div>\n\n                {showFilter && (\n                  <Filter\n                    filterTerms={searchTerms}\n                    setFilter={setFilter}\n                    filter={filter}\n                    triggerFilter={triggerFilter}\n                    setTriggerFilter={setTriggerFilter}\n                    personalisationData={REFERENCE_PERSONALIZE}\n                  />\n                )}\n                <MFPagination currentPage={currentPage} handleChangePage={handleChangePage} totalPages={pageNumbers} />\n              </Card.Header>\n              <Card.Body className=\"table-full-width desktop-noScroll\">\n                <MainTable\n                  cssClass={locations.length === 0 && \"overFlow-y-hidden\"}\n                  columns={REFERENCE_PERSONALIZE}\n                  rows={locationsToMap}\n                  flipSort={flipSort}\n                  sortBy={sortBy}\n                  sortDescending={sortDescending}\n                  widthToSkip={160}\n                  selectedRows={checkboxes}\n                  tools={quickTools}\n                  handleCellClick={handleCellClick}\n                  dropDownOptions={LAB_CLIENT_DROPDOWN}\n                  handleDropDownClick={(type, row) => {\n                    if (type === \"Archive\") {\n                      if (\n                        row.id !== \"596daf9b-8f9d-451c-a28f-a458bac57ce4\" &&\n                        row.id !== \"a081f285-4949-45bd-9516-ba2ff3e8d0b1\"\n                      ) {\n                        setItemToDelete(row);\n                      }\n                    }\n                  }}\n                />\n              </Card.Body>\n            </Card>\n          ) : (\n            <Loader />\n          )}\n\n          {itemToDelete && (\n            <ConfirmationModal\n              show={itemToDelete ? true : false}\n              title=\"Archive Reference Lab\"\n              message=\"Are you sure, you want to archive Client?\"\n              handleConfirm={handleConfirmDelete}\n            />\n          )}\n\n          {openCreateModal && (\n            <ReferenceLabModal\n              handleClose={() => {\n                setSelectItem(newLabClientObject), setOpenCreateModal(false);\n              }}\n              selectItem={selectItem}\n              handleSave={OnHandleLocation}\n              appContext={appContext}\n            />\n          )}\n        </Col>\n      </Row>\n    </div>\n  );\n};\n\nexport default ReferenceView;\n","import TabPills from \"components/Tabs/TabPills\";\nimport {\n  DIAGNOSIS_CODE,\n  LAB_CLIENT,\n  PAYER_MANAGEMENT,\n  PROCEDURE_CODE,\n  PROVIDER,\n  SYSTEM_USERS,\n  TEST_SETTING,\n  TEST_SETTING_PANEL,\n  TEST_DICTIONARY,\n  MESSAGE_TEMPLATE,\n  REFERENCE,\n  TAB_SETTING,\n} from \"constants/tabPillsContants\";\nimport { AppContext } from \"context/app-context\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\n// import { fetchCompanySetting } from \"store/features/companySetting/companySettingSlice\";\nimport { providerList } from \"store/features/providers/providersSelectors\";\nimport { usersList } from \"store/features/users/userSelectors\";\n// import ClaimInvoiceAPI from \"views/ClaimInvoice/ClaimInvoiceAPI\";\nimport DiagnosisCodeSettings from \"views/GeneralSettings/DiagnosisCodeSettings\";\nimport Insurances from \"views/GeneralSettings/Insurances\";\nimport ProcedureCodeSettings from \"views/GeneralSettings/ProcedureCodeSettings\";\n// import MessageSetting from \"views/MessageSetting/MessageSetting\";\n// import MessageTemplateView from \"views/MessageTemplate/MessageTemplateView\";\nimport UsersViewWhiteLabel from \"views/GraphQL/UsersViewWhiteLabel\";\nimport LabClient from \"views/LabClient/LabClient\";\nimport Provider from \"views/Provider\";\nimport TestTypeSetting from \"views/TestTypeSetting/TestTypesSetting.js\";\nimport TestDictionary from \"views/GeneralSettings/TestDictionary\";\nimport {\n  SETTINGS,\n  CLIENT_MANAGEMENT,\n  PAYER_MANAGEMENT_VALUE,\n  DIAGNOSIS_CODES,\n  PROCEDURE_CODES,\n  SYSTEM_USERS_VALUE,\n  TESTS_MANAGEMENT,\n  TESTS_DICTIONARY,\n  PROVIDER_MANAGEMENT,\n  MESSAGE_TEMPLATE_VALUE,\n  TAB_SETTINGS,\n} from \"constant\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport MessageTemplateView from \"views/MessageTemplate/MessageTemplateView\";\nimport TestPanelsView from \"./TestPanels/TestPanelsView\";\nimport ReferenceView from \"views/GraphQL/RefernceLab/RefernceLab\";\nimport TabSettings from \"components/TabSettings/TabSettings\";\nimport { CONFIG } from \"constant\";\n\nconst LabTestTypesSetting = () => {\n  const [tabsOptions, setTabOptions] = useState([]);\n  const appContext = useContext(AppContext);\n  const providers = useSelector(providerList);\n  const usersListArr = useSelector(usersList);\n  const user = useSelector(selectLoginUser);\n  const dispatch = useDispatch();\n  const permission = useSelector(userGivenPermission);\n\n  const isLocalhost = window.location.href.includes(\"localhost\");\n\n  useEffect(() => {\n    setTabOptions(\n      appContext.permission?.users?.access && appContext.user?.isAdmin() ? tabPillsConstants : tabPillsConstants\n      // : tabPillsConstants.filter((f) => f.title !== SYSTEM_USERS)\n    );\n  }, [providers, usersListArr, appContext.permission, user]);\n\n  // useEffect(() => {\n  //   dispatch(fetchCompanySetting());\n  // }, []);\n\n  const tabPillsConstants = [\n    permission[PROVIDER_MANAGEMENT]?.access && {\n      title: PROVIDER,\n      length: providers?.length,\n      component: <Provider />,\n    },\n    permission[CLIENT_MANAGEMENT]?.access && {\n      title: LAB_CLIENT,\n      component: <LabClient />,\n    },\n    permission[PAYER_MANAGEMENT_VALUE]?.access &&\n      !CONFIG.lifeCarePrimaryPharmacy && {\n        title: PAYER_MANAGEMENT,\n        component: <Insurances />,\n      },\n    permission[DIAGNOSIS_CODES]?.access &&\n      !CONFIG.lifeCarePrimaryPharmacy && {\n        title: DIAGNOSIS_CODE,\n        component: <DiagnosisCodeSettings />,\n      },\n    permission[PROCEDURE_CODES]?.access &&\n      !CONFIG.lifeCarePrimaryPharmacy && {\n        title: PROCEDURE_CODE,\n        component: <ProcedureCodeSettings />,\n      },\n    permission[SYSTEM_USERS_VALUE]?.access && {\n      title: SYSTEM_USERS,\n      component: <UsersViewWhiteLabel />,\n    },\n\n    // permission[TESTS_MANAGEMENT]?.access && {\n    //   title: TEST_SETTING_PANEL,\n    //   component: <TestPanelsView />,\n    // },\n\n    permission[TESTS_MANAGEMENT]?.access && {\n      title: TEST_SETTING,\n      component: <TestTypeSetting />,\n    },\n\n    permission[TESTS_DICTIONARY]?.access && {\n      title: TEST_DICTIONARY,\n      component: <TestDictionary />,\n    },\n    permission[MESSAGE_TEMPLATE_VALUE]?.access &&\n      isLocalhost && {\n        title: MESSAGE_TEMPLATE,\n        component: <MessageTemplateView />,\n      },\n    permission[CLIENT_MANAGEMENT]?.access && {\n      title: REFERENCE,\n      component: <ReferenceView />,\n    },\n    permission[TAB_SETTINGS]?.access && {\n      title: TAB_SETTING,\n      component: <TabSettings widthClass=\"w-30\" title=\" Printer Settings\" callFor=\"client\" />,\n    },\n  ].filter(Boolean); // Filters out any falsey values, such as null or undefined\n\n  useEffect(() => {\n    setTabOptions(\n      appContext.permission?.users?.access && appContext.user?.isAdmin() ? tabPillsConstants : tabPillsConstants\n      // : tabPillsConstants.filter((f) => f.title !== SYSTEM_USERS)\n    );\n  }, [providers, usersListArr, appContext.permission, user]);\n\n  return (\n    <div className=\"shows-screen-parent custom-lab-test\">\n      <div style={{ flex: 1 }}>\n        <Row>\n          <Col md=\"12\">\n            <div className=\"system-settings-wrapper\">\n              <TabPills tabs={tabsOptions} />\n            </div>\n          </Col>\n        </Row>\n      </div>\n    </div>\n  );\n};\n\nexport default LabTestTypesSetting;\n","export const TESTING_SCHEDULE = \"Testing Schedule\";\nexport const QUESTION_SCHEDULE = \"Question Schedule\";\nexport const HEALTH_SAFETY_SCHEDULE = \"Health & Safety Questions\";\nexport const EMPLOYEE_DEPARTMENTS = \"Employee Departments\";\nexport const LOCATIONS = \"Locations\";\nexport const REGIONS = \"Regions\";\nexport const PROGRAMS = \"Programs\";\nexport const MESSAGE_SETTINGS = \"Message Settings\";\nexport const TIMER_TEST = \"Timer Test\";\nexport const DASHBOARD = \"Dash Board\";\nexport const REPORTS = \"Reports\";\nexport const CLAIMS = \"Claims\";\nexport const PROVIDER = \"Provider Management\";\nexport const GENERAL_SETTINGS = \"General Settings\";\nexport const ALERT_SETTINGS = \"Alert Settings\";\nexport const SYSTEM_USERS = \"System Users\";\n// export const TEST_SETTING = \"Tests/Assay Management\";\nexport const TEST_SETTING = \"Panel Management\";\nexport const TEST_SETTING_PANEL = \"Panel Management\";\nexport const PROCEDURE_CODE = \"Procedure Codes\";\nexport const TEST_DICTIONARY = \"Test Dictionary\";\n\nexport const DIAGNOSIS_CODE = \"Diagnosis Codes\";\nexport const INSURANCES = \"Insurances\";\nexport const LAB_CLIENT = \"Client Management\";\nexport const INVOICES = \"Invoices\";\nexport const SALE_PERSONS = \"Sale Persons\";\nexport const MESSAGE_TEMPLATE = \"Message Template\";\nexport const REFERENCE = \"Reference Lab\";\nexport const TAB_SETTING = \"Settings\";\n\nexport const PAYER_MANAGEMENT = \"Payer Management\";\n","import React, { useEffect, useState } from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport FileSaver from \"file-saver\";\nimport * as XLSX from \"xlsx-js-style\";\nimport { formatPhoneNumber, getOrderDetail, capitalizeLetter, parseBooleanValue } from \"utils\";\nimport moment from \"moment\";\nimport { PRE_REGISTRATION_STATUS } from \"constant\";\nimport Loader from \"./Loader/Loader\";\nimport API from \"api\";\nimport Icon from \"./Icon\";\nimport { stringConstant } from \"constant\";\nimport { CONFIG } from \"constant\";\nimport { connectedIDInLocalStorage } from \"utils\";\nimport { getValidName } from \"utils\";\n\nconst ExportToExcelData = (props) => {\n  const {\n    items,\n    selectedItem,\n    title,\n    appContext,\n    filter,\n    timeFilter,\n    sortBy,\n    summary,\n    setLoading,\n    profileView,\n    isCompletedTests,\n  } = props;\n  const [list, setList] = useState([]);\n\n  const fetchData = () => {\n    setLoading(true);\n    loadData();\n  };\n\n  useEffect(() => {\n    if (list.length > 0) {\n      handleExportToExcel();\n    } else {\n      setLoading(false);\n    }\n  }, [list]);\n\n  const loadData = async () => {\n    try {\n      const filterParam = { ...filter };\n      if (CONFIG.isWhiteLabel && connectedIDInLocalStorage.get()) {\n        filterParam[\"labID\"] = connectedIDInLocalStorage.get();\n      }\n\n      if (CONFIG.isWhiteLabel && CONFIG.clientID) {\n        filterParam[\"clientID\"] = CONFIG.clientID;\n      }\n      if (timeFilter) {\n        const { start, end } = timeFilter;\n        if (start)\n          Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n        if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n      }\n      if (Object.keys(filterParam).length > 0) {\n        if (profileView) {\n          await API.downloadEmployeeCSV(filterParam, setList);\n        } else {\n          await API.downloadcsv(filterParam, setList);\n        }\n      }\n    } catch (err) {\n      console.log(\"Error\", err);\n      setLoading(false);\n    }\n  };\n\n  const exportData = async () => {\n    if (!selectedItem) return list;\n\n    return list.map((item) => {\n      let obj = {};\n\n      selectedItem.forEach((c) => {\n        if (c === \"firstName\" || c === \"lastName\") {\n          const val = getValidName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"phoneNumber\" || c === \"phone_number\") {\n          const val = formatPhoneNumber(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"accession_no\") {\n          Object.assign(obj, { [c]: item[\"barcode\"] });\n        } else if (\n          c === \"updatedAt\" ||\n          c === \"createdAt\" ||\n          c === \"batch\" ||\n          c === \"resultDate\" ||\n          c === \"resultDateTime\" ||\n          c === \"dob\" ||\n          c === \"testDate\" ||\n          c === \"orderDate\" ||\n          c === \"releaseDate\"\n        ) {\n          const val = item[c] ? moment(item[c]).format(\"MM/DD/YYYY\") : moment(item.createdAt).format(\"MM/DD/YYYY\");\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"clientID\") {\n          const val = appContext.getClientName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"lastUsed\") {\n          if (item[c]) {\n            Object.assign(obj, { [c]: moment(item[c]).format(\"MM-DD-YYYY HH:mm\") });\n          } else {\n            Object.assign(obj, { [c]: \"-\" });\n          }\n        } else if (c === \"site_name\") {\n          if (item[c]) {\n            Object.assign(obj, { [c]: capitalizeLetter(item[c]) });\n          } else {\n            Object.assign(obj, { [c]: \"-\" });\n          }\n        } else if (c === \"siteID\") {\n        } else if (c === \"patternTestAnswer\") {\n          const val = item[c] && item[c] !== \"undefined\" ? \"True\" : \"False\";\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"siteID\") {\n          const val = appContext.getSiteName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"labID\") {\n          const val = appContext.getLabName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"emailSend\") {\n          const val = item[c] ? \"✔\" : \"\";\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"step\") {\n          Object.assign(obj, { [c]: PRE_REGISTRATION_STATUS[item[c]] });\n        } else if (c === \"chartID\") {\n          Object.assign(obj, { [c]: item[c] || \"\" });\n        } else {\n          Object.assign(obj, { [c]: item[c] });\n        }\n      });\n      return obj;\n    });\n  };\n  const handleExportToExcel = async () => {\n    if (list?.length > 0) {\n      const data = await exportData();\n      const colLength = Object.keys(data[0]).length;\n      const rowLength = Object.keys(data).length;\n\n      const filters = {\n        id: { data: filter.id, label: \"id\" },\n        first: { data: filter.first, label: \"First Name\" },\n        last: { data: filter.last, label: \"Last Name\" },\n        firstName: { data: filter.firstName, label: \"First Name\" },\n        lastName: { data: filter.lastName, label: \"Last Name\" },\n        email: { data: filter.email, label: \"Email\" },\n        dob: { data: filter.dob, label: \"DateOfBirth\" },\n        phoneNumber: { data: filter.phoneNumber, label: \"Phone\" },\n        clientID: { data: filter.Client, label: \"Client\" },\n        siteID: { data: filter.Show, label: CONFIG.isWhiteLabel ? \"Location\" : \"Show\" },\n        site_name: { data: filter.site_name, label: CONFIG.isWhiteLabel ? \"Location\" : \"Show\" },\n        labID: { data: filter.Lab, label: \"Lab\" },\n        status: { data: filter.status, label: \"Status\" },\n        result: { data: filter.result, label: \"Result\" },\n        test_type: { data: filter.test_type, label: CONFIG.isWhiteLabel ? \"Test\" : \"Test Type\" },\n        reason: { data: filter.reason, label: \"Reason\" },\n        sequenceNo: { data: filter.sequenceNo, label: `${stringConstant.sequenceNo}` },\n        tester_name: { data: filter.tester_name, label: \"Collected By\" },\n        emailSend: { data: filter.emailSend, label: \"Result Sent\" },\n        updatedAt: { data: undefined, label: \"Date Processed\" },\n        createdAt: { data: undefined, label: isCompletedTests ? \"Collected  Date\" : \"Date Collected\" },\n        resultDate: { data: undefined, label: \"Date Processed\" },\n        batch: { data: undefined, label: \"Date Tested\" },\n        validUntil: { data: undefined, label: \"Valid Until\" },\n        isQuarantined: { data: filter.isQuarantined, label: \"Quarantined\" },\n        show: { data: undefined, label: CONFIG.isWhiteLabel ? \"Location\" : \"Show\" },\n        resultDates: { data: undefined, label: \"Last Positive Test Date\" },\n        quarantinedStart: { data: undefined, label: \"Expected End Date\" },\n        daysCount: { data: undefined, label: \"Days Count\" },\n        hippaConsent: { data: undefined, label: \"Hippa Consent\" },\n        referenceID: { data: filter.referenceID, label: \"ReferenceID\" },\n        accession_no: { data: filter.accession_no, label: \"Accession No\" },\n        phone_number: { data: filter.phone_number, label: \"Phone\" },\n        sex: { data: filter.sex, label: \"Gender\" },\n        id_number: { data: filter.id_number, label: \"ID Number\" },\n        street: { data: filter.street, label: \"Street\" },\n        city: { data: filter.city, label: \"City\" },\n        showName: { data: filter.showName, label: \"Show Name\" },\n        testSendQty: { data: filter.testSendQty, label: \"Send Quantity\" },\n        isVaccinated: { data: parseBooleanValue(filter.isVaccinated), label: \"Vaccinated\" },\n        vaccinationType: { data: filter.vaccinationType, label: \"Vaccination Type\" },\n        vaccinationDate: { data: filter.vaccinationDate, label: \"Vaccination Date\" },\n        isFalsePositive: { data: filter.isFalsePositive, label: \"isFalsePositive\" },\n        isExternalTest: { data: parseBooleanValue(filter.isExternalTest), label: \"External Test\" },\n        externalTestType: { data: filter.externalTestType, label: \"External Test Type\" },\n        externalTestDate: { data: filter.externalTestDate, label: \"External Test Date\" },\n        externalTestResult: { data: filter.externalTestResult, label: \"External Test Resut\" },\n        step: { data: PRE_REGISTRATION_STATUS[filter.step], label: \"Status\" },\n        orderStatus: { data: filter.orderStatus, label: \"Order Status\" },\n        barcode: { data: filter.barcode, label: \"Accession/Barcode\" },\n        employeeType: { data: filter.employeeType, label: \"Employee Type\" },\n        capcity: { data: filter.capacity, label: \"Capacity\" },\n        designation: { data: filter.designation, label: \"Designation\" },\n        whiteGlove: { data: filter.whiteGlove, label: \"White Glove\" },\n        patternTestAnswer: { data: filter.patternTestAnswer, label: \"Pattern Test\" },\n        lastUsed: { data: filter.lastUsed, label: \"Last Test Used\" },\n        releaseStatus: { data: filter.releaseStatus, label: \"Result Release\" },\n        test_type: { data: filter.test_type, label: \"Test\" },\n        site_name: { data: filter.site_name, label: \"Client\" },\n        hs: { data: filter.hs, label: \"H&S\" },\n        emailSend: { data: filter.emailSend, label: \"Res Sent\" },\n        orderDate: { data: filter.orderDate, label: \"Order Date\" },\n        testDate: { data: filter.testDate, label: \"Test Date\" },\n        note: { data: filter.note, label: \"Clinical Notes\" },\n        labComments: { data: filter.labComments, label: \"Lab Comments\" },\n        orderNo: { data: filter.orderNo, label: \"Order Number\" },\n        arkstoneStatus: { data: filter.arkstoneStatus, label: \"Ark Ready\" },\n        sendToName: { data: filter.sendToName, label: \"Reference Lab\" },\n        resultDateTime: { data: filter.resultDateTime, label: \"Processed\" },\n        releaseDate: { data: filter.releaseDate, label: \"Released On\" },\n        scanByLabUserName: { data: filter?.scanByLabUserName, label: \"Received By\" },\n        StampByName: { data: filter?.StampByName, label: \"Resulted By\" },\n        verifiedByName: { data: filter?.verifiedByName, label: \"Released By\" },\n        chartID: { data: filter?.chartID, label: \"Chart #\" },\n      };\n      const arr = Object.keys(data[0]).map((c) => filters[c]?.label || \"\");\n      const columnsWidth = [];\n      for (let i = 0; i < arr.length; i++) {\n        if (\n          arr[i] === \"Date Processed\" ||\n          arr[i] === \"Date Collected\" ||\n          arr[i] === \"Tester\" ||\n          arr[i] === \"Date Tested\" ||\n          arr[i] === \"Hippa Consent\" ||\n          arr[i] === \"Phone\"\n        ) {\n          columnsWidth.push({ wch: 15 });\n          continue;\n        }\n        if (\n          arr[i] === \"Last Positive Test Date\" ||\n          arr[i] === \"Expected End Date\" ||\n          arr[i] === \"Email\" ||\n          arr[i] === \"Employee Type\" ||\n          arr[i] === \"Last Test Used\"\n        ) {\n          columnsWidth.push({ wch: 18 });\n          continue;\n        }\n        columnsWidth.push({ wch: 12 });\n      }\n\n      function gapFilteredVal(filters) {\n        var str = \"\";\n        for (const [key, value] of Object.entries(filters)) {\n          if (key === \"emailSend\" && value.data !== undefined && value.data.length > 0) {\n            const val = value.data == \"1\" ? \"✔\" : \"Empty\";\n            str += `${value.label} - ${val}, `;\n            continue;\n          }\n          if (value.data !== undefined && value.data.length > 0) {\n            str += `${value.label} - ${value.data}, `;\n          }\n        }\n        return str;\n      }\n      // Function for gap in excel row skip rows\n      // function create_gap_rows(ws, nrows) {\n      //   var ref = XLSX.utils.decode_range(ws[\"!ref\"]); // get original range\n      //   ref.e.r += nrows; // add to ending row\n      //   ws[\"!ref\"] = XLSX.utils.encode_range(ref); // reassign row\n      // }\n      const sortedVal = filters[sortBy];\n      var wsrows = [\n        { hpx: summary ? 180 : timeFilter ? 100 : 80, level: 1 }, // \"points\"\n      ];\n\n      const merge = [{ s: { r: 0, c: 0 }, e: { r: 0, c: colLength - 1 } }];\n\n      const fileName = `tests_${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}.xlsx`;\n      const fileType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\n      let dateRange = \"\";\n      if (timeFilter) {\n        const { start, end } = timeFilter;\n        dateRange =\n          start && end\n            ? `Date Range: ${moment(start).format(\"MMM DD, YYYY\")} to ${moment(end).format(\"MMM DD, YYYY\")}`\n            : `Date Range:`;\n      }\n      const reportTitle = title || \"Complete Tests Report\";\n      const filterVal = filter\n        ? `Filtered By: ${Object.keys(filter).length > 0 ? gapFilteredVal(filters) : \"None\"}`\n        : \"\";\n      const sorted = filter ? `Sorted By: ${sortedVal ? sortedVal.label : \"None\"}` : \"\";\n\n      const orderDetails = summary\n        ? `Total Tests Ordered: ${summary.totalOrders ?? 0}, Total Attendees: ${summary.totalAttendees ?? 0},\n      Total Attendees Get Qr: ${summary.totalAttendeesQr ?? 0}, Total Tests Shipped: ${summary.totalShipped ?? 0},\n      Total Tests Received: ${summary.totalReceived ?? 0}`\n        : \"\";\n\n      const ws = !CONFIG.isWhiteLabel\n        ? dateRange.length > 0\n          ? XLSX.utils.aoa_to_sheet(\n              [[`${reportTitle} \\n ${dateRange} \\n ${filterVal} \\n ${sorted} \\n ${orderDetails}`]],\n              { origin: \"A1\" }\n            )\n          : XLSX.utils.aoa_to_sheet([[`${reportTitle} \\n ${filterVal} \\n ${sorted} \\n ${orderDetails}`]], {\n              origin: \"A1\",\n            })\n        : XLSX.utils.aoa_to_sheet([arr], { origin: 0 });\n      if (!CONFIG.isWhiteLabel) {\n        XLSX.utils.sheet_add_aoa(ws, [arr], { origin: -1 });\n      }\n      XLSX.utils.sheet_add_json(ws, data, { skipHeader: true, origin: -1 });\n\n      let columnMaxWidths = {};\n\n      // get all header name from data obejct\n      const headers = Object.keys(data[0]);\n\n      const combinedArray = headers.map((key, index) => ({\n        key: key,\n        label: arr[index],\n      }));\n\n      data.forEach((item) => {\n        combinedArray.forEach((header) => {\n          const key = header.key;\n          const cellValue = item[key];\n          const cellContentLength = String(cellValue).length;\n          if (!columnMaxWidths[key] || cellContentLength > columnMaxWidths[key]) {\n            columnMaxWidths[key] = cellContentLength;\n          }\n        });\n      });\n\n      // now push the column character width as per the max character length of each column data\n      const columnWidths = [];\n\n      combinedArray.forEach((header) => {\n        const headerWidth = header.label.length;\n        const key = header.key;\n        let val = parseInt(columnMaxWidths[key]);\n\n        // Determine the final column width: the greater of header width and content width\n        let finalWidth = Math.max(headerWidth, val);\n\n        if (key === \"eligibilityStatus\") {\n          finalWidth = 15;\n        }\n        // added padding in final result\n        columnWidths.push({ wch: finalWidth + 2 });\n      });\n\n      if (!CONFIG.isWhiteLabel) {\n        ws[\"!rows\"] = wsrows;\n        ws[\"!merges\"] = merge;\n        ws[\"!cols\"] = columnsWidth;\n        ws[\"A1\"].s = {\n          alignment: {\n            horizontal: \"center\",\n            wrapText: true,\n          },\n          font: {\n            name: \"Calibri\",\n            sz: 16,\n            bold: true,\n            color: { rgb: \"#000\" },\n          },\n        };\n        for (let i = 65; i < colLength + 65; i++) {\n          ws[`${String.fromCharCode(i)}2`].s = {\n            alignment: {\n              horizontal: \"center\",\n            },\n            font: {\n              name: \"Calibri\",\n              sz: 12,\n              bold: true,\n              underline: true,\n              color: { rgb: \"#000\" },\n            },\n          };\n        }\n      } else {\n        for (let i = 65; i < colLength + 65; i++) {\n          const colLetter = String.fromCharCode(i);\n          const colHeader = `${colLetter}1`;\n          ws[colHeader].s = {\n            alignment: {\n              horizontal: \"center\",\n            },\n            font: {\n              name: \"Calibri\",\n              sz: 12,\n              bold: true,\n              underline: true,\n              color: { rgb: \"#000\" },\n            },\n          };\n        }\n        // set the newly set column width\n        ws[\"!cols\"] = columnWidths;\n      }\n\n      // table  each cells styles\n      //\n      // for (let i = 65; i < colLength + 65; i++) {\n      //   for(let j=0; j<rowLength; j++){\n      //   ws[`${String.fromCharCode(i)}${j+3}`].s = {\n      //     alignment: {\n      //       horizontal: \"center\",\n      //       wrapText: true\n      //     },\n      //   };\n      // }\n      // }\n      const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\n      const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\n      const fileContent = new Blob([excelBuffer], { type: fileType });\n      setList([]);\n      setLoading(false);\n      try {\n        await FileSaver.saveAs(fileContent, fileName);\n        appContext.showSuccessMessage(\"Excel file export successfully\");\n      } catch (err) {\n        appContext.showErrorMessage(\"file can't be expored\");\n      }\n    }\n  };\n\n  return <Icon handleClick={fetchData} title={\"Export to Excel\"} label=\"Export\" iconType={\"XLSIcon\"} />;\n};\n\nexport default ExportToExcelData;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { Button, Form, Modal } from \"react-bootstrap\";\nimport { CONFIG, RESULT_VALUE } from \"constant\";\nimport Select from \"react-select\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport moment from \"moment\";\nimport Loader from \"components/Loader/Loader\";\nimport { sortByAlphaOrder } from \"utils\";\nimport { UN_RESULT } from \"constant\";\nimport { AppContext } from \"context/app-context\";\n\nconst ChangeResultModal = (props) => {\n  const { title, handleSave, handleClose, tests, callback, processed } = props;\n\n  const [result, setResult] = useState(\"\");\n  const [error, setError] = useState(\"\");\n  const [confirmText, setConfirmText] = useState(\"\");\n  const [resultTypes, setResultTypes] = useState([]);\n  const [loading, setLoading] = useState(false);\n\n  const appContext = useContext(AppContext);\n\n  useEffect(() => {\n    setTimeout(() => {\n      setError(\"\");\n    }, 4000);\n  }, [error]);\n\n  useEffect(() => {\n    if (appContext?.clients?.length > 0) {\n      const client = appContext.clients.find((f) => f.id === CONFIG.clientID);\n      if (client && client.resultTypes) {\n        const results = sortByAlphaOrder(\n          client.resultTypes.results.map((m) => ({ value: m, label: m })),\n          \"label\"\n        );\n        if (processed) {\n          results.unshift({ value: UN_RESULT, label: UN_RESULT });\n        }\n\n        setResultTypes(results);\n      }\n    }\n  }, [appContext.clients]);\n\n  const onHandleSave = async () => {\n    if (!result) {\n      setError(\"Please select the result type\");\n      return;\n    }\n    if (confirmText !== \"confirm\") {\n      setError(\"Please enter confirm in input\");\n      return;\n    }\n\n    if (handleSave) {\n      handleSave();\n      handleClose();\n    }\n\n    setLoading(true);\n\n    try {\n      if (!loading) setLoading(true);\n      const params = tests.map((t) => {\n        if (UN_RESULT === result) {\n          return {\n            id: t.id,\n            sequenceNo: t.sequenceNo,\n            userName: appContext.user.name,\n          };\n        }\n        return {\n          id: t.id,\n          result: result === \"Not Detected\" ? RESULT_VALUE[\"NotDetected\"] : RESULT_VALUE[result.toLowerCase()],\n          status: CONFIG.isWhiteLabel ? \"Processed\" : result === \"positive\" ? \"Pending\" : \"Processed\",\n          timerStatus: CONFIG.isWhiteLabel ? \"Processed\" : result === \"positive\" ? \"Pending\" : \"Processed\",\n          resultDateTime: moment().utc().toISOString(),\n          resultDate: moment().utc().format(\"YYYY-MM-DD\"),\n          StampBy: appContext.user.sub,\n          StampByName: appContext.user.name,\n          sequenceNo: t.sequenceNo,\n        };\n      });\n      if (UN_RESULT === result) {\n        await GQAPI.unResultTests(params);\n      } else {\n        await GQAPI.updateTestResult(params);\n      }\n\n      appContext.showSuccessMessage(`${tests.length} test${tests.length === 1 ? \"\" : \"s\"} has been resulted ${result}`);\n    } catch (err) {\n      console.log(\"Error\", err);\n    }\n    setLoading(false);\n\n    if (callback) {\n      callback();\n    }\n\n    handleClose();\n    return;\n    //onChangeType()\n  };\n\n  const onChangeType = (e) => setResult(e.target.value);\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {title || \"Change Test Results\"}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          {loading && <Loader />}\n          {CONFIG.isWhiteLabel ? (\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Result: </label>\n              <Select\n                className=\"w-100 siteSelector\"\n                options={resultTypes}\n                blurInputOnSelect={true}\n                defaultValue={null}\n                menuPlacement=\"auto\"\n                value={result ? { value: result, label: result } : null}\n                placeholder=\"Select Result\"\n                onChange={(e) => setResult(e.value)}\n              />\n            </div>\n          ) : (\n            <>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Positive </label>\n                <Form.Check>\n                  <Form.Check.Input\n                    id=\"positive\"\n                    value=\"positive\"\n                    name=\"resultGroupList\"\n                    type=\"radio\"\n                    checked={result === \"positive\"}\n                    onChange={onChangeType}\n                  />\n                  <Form.Check.Label htmlFor=\"positive\" className=\"px-2 scheduleLabel\">\n                    Positive\n                  </Form.Check.Label>\n                </Form.Check>\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Negative: </label>\n                <Form.Check>\n                  <Form.Check.Input\n                    id=\"negative\"\n                    value=\"negative\"\n                    name=\"resultGroupList\"\n                    type=\"radio\"\n                    checked={result === \"negative\"}\n                    onChange={onChangeType}\n                  />\n                  <Form.Check.Label htmlFor=\"negative\" className=\"px-2 scheduleLabel\">\n                    Negative\n                  </Form.Check.Label>\n                </Form.Check>\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Inconclusive: </label>\n                <Form.Check>\n                  <Form.Check.Input\n                    id=\"Inconclusive\"\n                    value=\"Inconclusive\"\n                    name=\"resultGroupList\"\n                    type=\"radio\"\n                    checked={result === \"Inconclusive\"}\n                    onChange={onChangeType}\n                  />\n                  <Form.Check.Label htmlFor=\"Inconclusive\" className=\"px-2 scheduleLabel\">\n                    Inconclusive\n                  </Form.Check.Label>\n                </Form.Check>\n              </div>\n            </>\n          )}\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Type confirm: </label>\n            <input\n              value={confirmText}\n              className=\"modalInput\"\n              placeholder=\"confirm\"\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setConfirmText(e.target.value)}\n            />\n          </div>\n\n          {error.length > 0 && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            Save\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default ChangeResultModal;\n","import React, { useState, useEffect } from \"react\";\nimport { Button, Form, Modal } from \"react-bootstrap\";\nimport { externalTypesOptions } from \"constant\";\nimport Select from \"react-select\";\n\nconst ChangeTestTypeModal = (props) => {\n  const { handleSave, handleClose } = props;\n  const [testType, setTestType] = useState(\"\");\n  const [error, setError] = useState(\"\");\n  const [confirmText, setConfirmText] = useState(\"\");\n\n  useEffect(() => {\n    setTimeout(() => {\n      setError(\"\");\n    }, 4000);\n  }, [error]);\n\n  const onHandleSave = () => {\n    if (!testType) {\n      setError(\"Please select the test type\");\n      return;\n    }\n    if (confirmText !== \"confirm\") {\n      setError(\"Please enter confirm in input\");\n      return;\n    }\n    handleSave(testType);\n    handleClose();\n  };\n  \n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Change Test Type\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Select New Type </label>\n            <Select\n              className=\"w-100 siteSelector\"\n              options={externalTypesOptions}\n              blurInputOnSelect={true}\n              defaultValue={null}\n              menuPlacement=\"auto\"\n              placeholder=\"Select Type\"\n              onChange={(e) => setTestType(e.value)}\n            />\n          </div>\n\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Type confirm: </label>\n            <input\n              value={confirmText}\n              className=\"modalInput\"\n              placeholder=\"type confirm\"\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setConfirmText(e.target.value)}\n            />\n          </div>\n\n          {error.length > 0 && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            Save\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default ChangeTestTypeModal;\n","import React from \"react\";\nimport { Button, Modal, Table } from \"react-bootstrap\";\nimport { formatLogDate } from \"utils\";\n\nconst AppTestLogsModal = (props) => {\n  const { data, handleClose } = props;\n  const parseUser = (user) =>{\n    const u = JSON.parse(user);\n    return `${u['custom:firstName']} ${u['custom:lastName']}`\n  }\n  const parseUserPhone = (user) =>{\n    const u = JSON.parse(user);\n    return `${u.phone_number}`\n  }\n  const parseUserRole = (user) =>{\n    const u = JSON.parse(user);\n    return `${u['custom:role']}`\n  }\n  return (\n    <Modal show animation={true} onHide={() => handleClose()} centered size=\"xl\">\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Test Logs\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"form-group-wrapper d-block\">\n          <div className=\"table-responsive\">\n            <Table className=\"table-hover table-striped\">\n              <thead>\n                <tr>\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span>Date</span>\n                    </div>\n                  </th>\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div className=\"d-flex justify-content-start align-items-center\">\n                      <span>Action</span>\n                    </div>\n                  </th>\n                  \n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div>\n                      <span>momentDate</span>\n                    </div>\n                  </th>\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div>\n                      <span>nowIOS</span>\n                    </div>\n                  </th>\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div>\n                      <span>timeZone</span>\n                    </div>\n                  </th>\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div>\n                      <span>version</span>\n                    </div>\n                  </th>\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div>\n                      <span>User</span>\n                    </div>\n                  </th>\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div>\n                      <span>Phone</span>\n                    </div>\n                  </th>\n                  <th\n                    className={`border-0 centered`}\n                    style={{\n                      color: \"grey\",\n                      fontWeight: \"bold\",\n                    }}\n                  >\n                    <div>\n                      <span>Role</span>\n                    </div>\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                {data.map((msg, index) => {\n                  return (\n                    <tr key={index}>\n                      <td>{formatLogDate(msg.createdAt)}</td>\n                      <td>{msg.action}</td>\n                      <td style={{ textAlign: \"center\" }}>{msg.momentDate}</td>\n                      <td style={{ textAlign: \"center\" }}>{msg.nowIOS}</td>\n                      <td style={{ textAlign: \"center\" }}>{msg.timeZone}</td>\n                      <td style={{ textAlign: \"center\" }}>{msg.version}</td>\n                      <td style={{ textAlign: \"center\" }}>{parseUser(msg.user)}</td>\n                      <td style={{ textAlign: \"center\" }}>{parseUserPhone(msg.user)}</td>\n                      <td style={{ textAlign: \"center\" }}>{parseUserRole(msg.user)}</td>\n                     \n                    </tr>\n                  );\n                })}\n              </tbody>\n            </Table>\n          </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer className=\"flex-row-reverse\">\n        <Button className=\"modalButtons\" variant=\"primary\"  onClick={() => handleClose()}>\n          OK\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default AppTestLogsModal;\n","import React, { useState, useEffect, useMemo } from \"react\";\nimport { Button, Form, Modal } from \"react-bootstrap\";\nimport { externalTypesOptions } from \"constant\";\nimport Select from \"react-select\";\nimport { parseBooleanValue } from \"utils\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\n\nconst ChangeTestConfigModal = (props) => {\n  const { handleSave, handleClose, clients, sites } = props;\n  const [client, setClient] = useState(\"\");\n  const [site, setSite] = useState(\"\");\n  const [error, setError] = useState(\"\");\n  const [confirmText, setConfirmText] = useState(\"\");\n\n  useEffect(() => {\n    setTimeout(() => {\n      setError(\"\");\n    }, 4000);\n  }, [error]);\n\n  const onHandleSave = () => {\n    if (!client) {\n      setError(\"Please select the Client\");\n      return;\n    }\n    if (!site) {\n      setError(\"Please select the Site\");\n      return;\n    }\n    if (confirmText !== \"confirm\") {\n      setError(\"Please enter confirm in input\");\n      return;\n    }\n    handleSave(client, site);\n    handleClose();\n  };\n\n  const getSiteOptions = useMemo(()=>{\n    if(!client) return [];\n    return sites.filter((s)=> s.clientID === client.value).map((l) => {\n      return { value: l.id, label: l.name };\n    })\n  },[client]);\n\n  \n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Change Test Configuration\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Select Client </label>\n            <Select\n              className=\"w-100 siteSelector\"\n              options={clients.map((l) => {\n                return { value: l.id, label: l.name };\n              })}\n              blurInputOnSelect={true}\n              defaultValue={null}\n              menuPlacement=\"auto\"\n              placeholder=\"Select Client\"\n              onChange={(e) => setClient(e)}\n            />\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Select Site </label>\n            <Select\n              className=\"w-100 siteSelector\"\n              options={getSiteOptions}\n              blurInputOnSelect={true}\n              defaultValue={null}\n              menuPlacement=\"auto\"\n              placeholder=\"Select Site\"\n              onChange={(e) => setSite(e)}\n            />\n          </div>\n\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Type confirm: </label>\n            <input\n              value={confirmText}\n              className=\"modalInput\"\n              placeholder=\"type confirm\"\n              style={{\n                width: \"100%\",\n              }}\n              onChange={(e) => setConfirmText(e.target.value)}\n            />\n          </div>\n  \n\n          {error.length > 0 && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            Save\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default ChangeTestConfigModal;\n","import React, { useState } from \"react\";\nimport { Modal, Button, Form } from \"react-bootstrap\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport Loader from \"components/Loader/Loader\";\nimport api from \"api\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport moment from \"moment\";\nimport { Storage } from \"aws-amplify\";\nimport { CSVReader } from \"react-papaparse\";\nimport { exportToCalRedie } from \"utils\";\nimport { CONFIG } from \"constant\";\n\nconst CalRedieLogsModal = (props) => {\n  const { handleClose, user, appContext } = props;\n  const [detail, setDetail] = useState({});\n  const [retunStatusCard, setReturnStausCard] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const [records, setRecords] = useState([]);\n  const [error, setError] = useState(\"\");\n\n  const handleOnDrop = (arr) => {\n    let patients = [];\n    for (const { data } of arr) {\n      if (!data.accession_number) continue;\n      patients.push(data);\n    }\n    if (patients.length > 0) {\n      setRecords(patients);\n    }\n  };\n\n  const handleOnError = (err) => {\n    console.log(err);\n    setError(err);\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n    setRecords([]);\n  };\n\n  const onHandleConfirm = async () => {\n    if (!retunStatusCard) {\n      setError(\"Please Upload an image\");\n      return;\n    }\n    if (!detail.code || !detail.code.trim()) {\n      setError(\"Confirmation Code is Required\");\n      return;\n    }\n    if (records.length === 0) {\n      setError(\"Please Upload Csv File !\");\n      return;\n    }\n    let imageFileName = \"\";\n\n    setLoading(true);\n    if (retunStatusCard instanceof Object) {\n      imageFileName = await api.saveFileCalredieImg(retunStatusCard);\n    }\n\n    const results = records.map((m) => ({\n      ...m,\n      confirmation_code: detail.code,\n      file: imageFileName,\n      userName: user.name,\n      date: detail.date,\n      userID: user.sub,\n      labID: CONFIG.whiteLabelID,\n    }));\n\n    try {\n      await api.uploadFileCalredieCsv(results);\n      appContext.showSuccessMessage(`Successfully Added Health and Safety Confirmation Code`);\n      setLoading(false);\n      handleClose();\n    } catch (err) {\n      console.log(\"err\", err);\n      setLoading(false);\n      appContext.showErrorMessage(err.message);\n      handleClose();\n    }\n  };\n\n  return (\n    <Modal\n      show\n      // style={{ transform: \"translate(0, -30%)\" }}\n      animation={true}\n      onHide={() => {\n        handleClose();\n      }}\n      centered\n      size=\"lg\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 modal-title h4\" id=\"contained-modal-title-vcenter\">\n          Add Health & Safety Confirmation Code\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body>\n        <div className=\"form-group-wrapper align-items-center\">\n          <label className=\"modalLineHeaders\">Choose Image: </label>\n          <ImageInput\n            cssClass=\"vaccinationField profile-image\"\n            title=\"\"\n            setSelectedImage={setReturnStausCard}\n            selectedImage={retunStatusCard}\n          />\n        </div>\n        <div className=\"form-group-wrapper my-5\">\n          <label className=\"modalLineHeaders\">Confirmation Code: </label>\n          <input\n            className=\"modalInput w-50\"\n            placeholder=\"Enter Confirmation Code\"\n            type=\"text\"\n            value={detail.code}\n            onChange={(e) => setDetail({ ...detail, code: e.target.value })}\n          />\n        </div>\n        <div className=\"form-group-wrapper dateWrapper\">\n          <label className=\"modalLineHeaders\">Uploaded on: </label>\n\n          <input\n            className=\"modalInput\"\n            type=\"datetime-local\"\n            value={detail?.date}\n            style={{ width: \"100%\", marginBottom: \"10px\" }}\n            onChange={(e) => setDetail({ ...detail, date: e.target.value })}\n            max={moment().format(\"YYYY-MM-DDTHH:mm\")}\n          />\n        </div>\n        <div className=\"form-group-wrapper d-block md-customer-reader\">\n          <CSVReader\n            onDrop={handleOnDrop}\n            onError={handleOnError}\n            addRemoveButton\n            config={{\n              header: true,\n              skipEmptyLines: true,\n              skipLinesWithEmptyValues: true, // Skip lines with empty values\n            }}\n            onRemoveFile={handleOnRemoveFile}\n          >\n            <span>Drop (Export to H&S) CSV file here for upload logs.</span>\n          </CSVReader>\n        </div>\n\n        {/* <div className=\"form-group-wrapper\">\n          <label className=\"modalLineHeaders\">Message: </label>\n\n          <textarea className=\"modalInput w-75\" onChange={(e) => setDetail({ ...detail, message: e.target.value })}>\n            {detail.message}\n          </textarea>\n        </div> */}\n      </Modal.Body>\n      <div className=\"px-4\" style={{ minHeight: \"3vh\" }}>\n        {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n      </div>\n      <Modal.Footer>\n        <Button\n          className=\"headerButton btn-fill\"\n          variant=\"secondary\"\n          onClick={() => {\n            handleClose();\n          }}\n        >\n          Cancel\n        </Button>\n        <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={() => onHandleConfirm()}>\n          Save\n        </Button>\n      </Modal.Footer>\n\n      {loading && <Loader />}\n    </Modal>\n  );\n};\n\nexport default CalRedieLogsModal;\n","import React, { useState, useContext, useMemo, useRef, useCallback } from \"react\";\n\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n  Form,\n  DropdownButton,\n  Dropdown,\n  Modal,\n  InputGroup,\n  FormControl,\n} from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { CSVLink } from \"react-csv\";\nimport { Importer, ImporterField } from \"react-csv-importer\";\nimport { Link } from \"react-router-dom\";\nimport { PDFViewer } from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport FilterSelect from \"components/FilterSelect\";\nimport Select from \"react-select\";\nimport { useLocation } from \"react-router-dom\";\nimport { useHistory } from \"react-router-dom\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport PGPagination from \"components/Pagination/PGPagination\";\nimport { Storage } from \"aws-amplify\";\nimport {\n  PAGE_LIMIT,\n  RESULT_COLOR,\n  TEST_HEADER_TYPE,\n  newRoleOptions,\n  SUPER_ADMIN_ID,\n  RESULT_VALUE,\n  TEST_EMPTY_OBJECT,\n  TEST_TYPE_VALUE,\n} from \"constant\";\nimport {\n  changeSort,\n  formatPhoneNumber,\n  formatTest,\n  sortTestList,\n  sortingFilterInLC,\n  formatDateOfBirthDOB,\n  getDemoGraphics,\n  calculateTdWidth,\n} from \"utils\";\nimport { AppContext } from \"context/app-context\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport ExportToExcelData from \"components/ExportToExcelData\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport Header from \"components/Table/Header\";\nimport moment from \"moment\";\nimport ContactInfo from \"components/Modal/ContactInfo\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport ChangeResultModal from \"components/Modal/ChangeResultModal\";\nimport Loader from \"components/Loader/Loader\";\nimport ChangeTestTypeModal from \"components/Modal/ChangeTestTypeModal\";\nimport TestModal from \"components/Modal/TestModal\";\nimport ChangeTestLabModal from \"components/Modal/ChangeTestLabModal\";\nimport AppTestLogsModal from \"components/Modal/AppTestLogsModal\";\nimport TestLogsModal from \"components/Modal/TestLogsModal\";\nimport ChangeTestConfigModal from \"components/Modal/ChangeTestConfigModal\";\nimport { debounce } from \"debounce\";\nimport { useInitialRender } from \"components/useInitialRender\";\nimport Icon from \"components/Icon\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\nimport { stringConstant } from \"constant\";\nimport { CSVReader } from \"react-papaparse\";\nimport { CONFIG } from \"constant\";\nimport ImportResultModal from \"components/Modal/ImportResultModal\";\nimport SequenceNo from \"components/SequenceNo\";\nimport { saveAs } from \"file-saver\";\nimport EditAccessionNoModal from \"components/Modal/EditAccessionNoModal\";\nimport CalRedieLogsModal from \"components/Modal/CalredieLogsModal\";\nimport { exportToCalRedie } from \"utils\";\nimport { downloadDataAsCSV } from \"utils\";\n\nconst AdminTotalTestApi = () => {\n  const mainRef = useRef();\n  const [width, setWidth] = useState(0);\n  const history = useHistory();\n\n  useEffect(() => {\n    setWidth(mainRef.current?.offsetWidth);\n  }, [mainRef]);\n\n  const handleResize = () => {\n    setWidth(mainRef.current?.offsetWidth);\n  };\n\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  const importResult = [];\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [tests, setTests] = useState([]);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [labs, setLabs] = useState([]);\n  const [sites, setSites] = useState([]);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [triggerFilter, setTriggerFilter] = useState();\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [showResultModal, setShowResultModal] = useState(false);\n  const [showTestTtypeModal, setShowTestTypeModal] = useState(false);\n  const [showLabChangeModal, setShowLabChangeModal] = useState(false);\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n  const [clientChangeModal, setClientChangeModal] = useState(false);\n  const [loading, setLoading] = useState(false);\n  const [testAppLogs, setTestAppLogs] = useState([]);\n  const [showAppLog, setShowAppLog] = useState(false);\n  const [pageNo, setPageNo] = useState(1);\n  const [openCreator, setOpenCreator] = useState(false);\n  const [newTestCreate, setTestCreate] = useState(_.cloneDeep(TEST_EMPTY_OBJECT));\n  const [editAccessionNo, setEditAccessionNo] = useState(null);\n  const [selectedTest, setSelectedTest] = useState([]);\n  const [openUploadLogsModal, setOpenUploadLogsModal] = useState(false);\n\n  const { filterDates } = TimeFilter;\n\n  const location = useLocation();\n  const initialRender = useInitialRender();\n  const appContext = useContext(AppContext);\n\n  const searchTerms = CONFIG.isWhiteLabel\n    ? [\n        \"First Name\",\n        \"Last Name\",\n        \"Date of Birth\",\n        \"Email\",\n        \"Phone\",\n        `${stringConstant.show}`,\n        \"Status\",\n        \"Result\",\n        \"Test Type\",\n        `${stringConstant.sequenceNo}`,\n        \"Tester\",\n        \"Submitted to H&S\",\n      ]\n    : [\n        \"First Name\",\n        \"Last Name\",\n        \"Date of Birth\",\n        \"Email\",\n        \"Phone\",\n        \"Client\",\n        `${stringConstant.show}`,\n        \"Lab\",\n        \"Status\",\n        \"Result\",\n        \"Test Type\",\n        `${stringConstant.sequenceNo}`,\n        \"Tester\",\n        \"Reference ID\",\n        \"isVaccinated\",\n        \"White Glove\",\n        \"Pattern\",\n        \"Capacity\",\n      ];\n\n  const selectedItem = [\n    \"createdAt\",\n    \"firstName\",\n    \"lastName\",\n    \"dob\",\n    \"email\",\n    \"phoneNumber\",\n    \"clientID\",\n    \"siteID\",\n    \"labID\",\n    \"status\",\n    \"result\",\n    \"test_type\",\n    `site_name`,\n    \"tester_name\",\n    \"isVaccinated\",\n    \"capacity\",\n    \"whiteGlove\",\n    \"patternTestAnswer\",\n  ];\n\n  if (!appContext) {\n    history.push(\"/login\");\n  }\n\n  const displayPdf = async (test) => {\n    handleSaveFilter();\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  const loadTestFromPG = async (params, dateFilter, page, orderBy, orderByDirection) => {\n    setLoading(true);\n    const filterParam = params;\n    try {\n      Object.assign(filterParam, { page: page });\n      if (dateFilter) {\n        const { start, end } = dateFilter;\n        if (start)\n          Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n        if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n      }\n      if (orderBy) {\n        Object.assign(filterParam, { orderBy, orderByDirection });\n      }\n\n      const pgList = await API.getTestListFromPG(filterParam);\n      setLoading(false);\n\n      // const employees = await API.getEmployees();\n\n      const ttlTests = tests.concat(pgList.rows.map((t) => formatTest(t)));\n      if (pageNo === 1) {\n        setTotalRecord(pgList.total);\n      }\n      setAllSelected(false);\n      setTests(ttlTests);\n      refreshTestList(ttlTests);\n    } catch (err) {\n      setLoading(false);\n    }\n  };\n\n  useEffect(() => {\n    const savedFilters = appContext.testFilter;\n\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.totaltests.sortBy) {\n      setSortDescending(sortingFilters.totaltests.sortDescending);\n      setSortBy(sortingFilters.totaltests.sortBy);\n    }\n    if (savedFilters && savedFilters.location === \"totaltests\") {\n      if (Object.keys(savedFilters.filter).length > 0) {\n        setFilter(savedFilters.filter);\n        setShowFilter(true);\n      }\n      if (Object.keys(savedFilters.timeFilter).length > 0) {\n        setTimeFilter(savedFilters.timeFilter);\n      }\n    }\n  }, []);\n\n  useEffect(() => {\n    setSites(appContext.sites);\n    setLabs(appContext.labs);\n  }, [appContext.sites, appContext.labs]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"totaltests\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredTests.length === 0) return;\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    setPageNo(1);\n    fetchFromApi({ ...filter }, { ...timeFilter }, 1, sortBy, sortDescending);\n  }, [filter, timeFilter, sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      loadTestFromPG(Object.keys(filter).length === 0 ? { id: 1 } : filter, timeFilter, pageNo, sortBy, sortDescending);\n    }\n  }, [pageNo]);\n\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter, page, sortBy, sortDescending) => {\n      loadTestFromPG(filter, timeFilter, page, sortBy, sortDescending);\n    }, 800),\n    []\n  );\n\n  useEffect(() => {\n    if (initialRender) return;\n    if (appContext.testObject && appContext.testObject !== 0) {\n      const eventType = appContext.testObject.opType;\n      const model = formatTest(appContext.testObject.element);\n      const newList = [...filteredTests];\n      if (eventType === \"INSERT\") {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        console.log(\"index\", index);\n        if (index !== -1) {\n          newList.splice(index, 1, model);\n        }\n      } else if (eventType === \"DELETE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        if (index !== -1) {\n          newList.splice(index, 1);\n        }\n      }\n      const testAfterFilter = filterDates(nestedFilter([...newList], filter), timeFilter);\n      if (filteredTests.length < testAfterFilter.length && eventType === \"INSERT\") {\n        setTotalRecord(totalRecord + 1);\n      }\n      refreshTestList(testAfterFilter);\n    }\n  }, [appContext.testObject]);\n\n  useEffect(() => {\n    if (location.state) {\n      if (location.state.term === \"Lab\") setLabs(location.state.models);\n\n      setShowFilter(true);\n\n      let filterTerm = location.state.term;\n      let filterTermName = location.state.name;\n\n      if (filterTerm === \"Show\") {\n        const obj = location.state.models.find((c) => c.name === filterTermName);\n        if (obj) {\n          filterTerm = \"ShowID\";\n          filterTermName = obj.id;\n        }\n      }\n      if (filterTerm === \"referenceID\") {\n        const obj = location.state.models.find((c) => c.name === filterTermName);\n        if (obj) {\n          filterTerm = \"referenceID\";\n          filterTermName = obj.id;\n        }\n      }\n\n      if (location.state.positiveTests) {\n        let resultValue = \"positive\";\n        if (filterTerm === \"Client\") {\n          const obj = location.state.models.find((c) => c.name === filterTermName);\n          if (obj && obj.resultType === \"P/F\") resultValue = \"fail\";\n        }\n        setFilter({\n          ...filter,\n          [filterTerm]: filterTermName,\n          result: \"positive\",\n        });\n      } else if (location.state.negativeTests) {\n        let resultValue = \"negative\";\n        if (filterTerm === \"Client\") {\n          const obj = location.state.models.find((c) => c.name === filterTermName);\n          if (obj && obj.resultType === \"P/F\") resultValue = \"pass\";\n        }\n        setFilter({\n          ...filter,\n          [filterTerm]: filterTermName,\n          result: resultValue,\n        });\n      } else {\n        setFilter({ ...filter, [filterTerm]: filterTermName });\n      }\n      setTriggerFilter(true);\n      setTimeout(() => setShowFilter(false), 1);\n    }\n  }, [location.state]);\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        console.log(\"key::::\", key);\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n        if (key === \"result\") {\n          return obj[key] && obj[\"viewedResult\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"Lab\") {\n          return obj.labID && appContext.getLabName(obj.labID).toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"Show\") {\n          const siteIds = appContext.sites\n            .filter((s) => s.name.toLowerCase().includes(filters[key].toLowerCase()))\n            .map((s) => s.id);\n          return siteIds.includes(obj.siteID);\n        }\n        if (key === \"ShowID\") {\n          return obj.siteID === filters[key];\n        }\n        if (key === \"Client\") {\n          return (\n            obj.clientID && appContext.getClientName(obj.clientID).toLowerCase().includes(filters[key].toLowerCase())\n          );\n        }\n        if (key === \"referenceID\") {\n          return obj[key] && obj[\"referenceID\"].includes(filters[key]);\n        }\n        if (key === \"pattern\" || key === \"Pattern\") {\n          if (filters[key] === \"1\") return obj[\"patternTestAnswer\"] && obj[\"patternTestAnswer\"] !== \"undefined\";\n\n          if (filters[key] === \"0\") return obj[\"patternTestAnswer\"] == \"undefined\" || obj[\"patternTestAnswer\"] == \"\";\n        }\n\n        if (key === \"result\") {\n          return obj[key] && obj[\"viewedResult\"].toLowerCase().includes(filters[key]);\n        }\n\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    return models;\n  };\n\n  const refreshTestList = (list) => {\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredTests(list);\n    }\n  };\n\n  const handleUploadLogs = () => {\n    setOpenUploadLogsModal(true);\n  };\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filteredTests.length;\n    if (direction === \"next\" && page === totalPages && totalRecord > 0 && currentRecord < totalRecord) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: \"totaltests\", filter, timeFilter });\n  };\n\n  const handleCheckboxChange = (e, id, test) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    const prevFilteredTests = selectedTest.filter((t) => t.id !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n      setSelectedTest([...prevFilteredTests, test]);\n    } else {\n      setSelectedTest([...prevFilteredTests]);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const toggleCheckboxes = (val) => {\n    if (val) {\n      const newIds = [...checkboxes];\n      const newTests = [...selectedTest];\n\n      filteredTests.forEach((t) => {\n        if (newIds.indexOf(t.id) === -1) {\n          newIds.push(t.id);\n          newTests.push(t);\n        }\n      });\n      setCheckboxes(newIds);\n      setSelectedTest(newTests);\n    } else {\n      const newIds = checkboxes.filter((c) => filteredTests.findIndex((t) => t.id === c) === -1);\n      const newTests = selectedTest.filter((test) => newIds.includes(test.id));\n      setCheckboxes(newIds);\n      setSelectedTest(newTests);\n    }\n  };\n\n  const createMoreInfo = (type, id) => {\n    let infoObj = null;\n    if (type === \"site\") infoObj = appContext.sites.find((site) => site.id === id);\n    else if (type === \"client\") infoObj = appContext.clients.find((client) => client.id === id);\n    else infoObj = labs.find((lab) => lab.id === id);\n    if (!infoObj) return;\n    setMoreInfo({\n      type,\n      name: infoObj.name,\n      contact: infoObj.contact_name,\n      phone: infoObj.contact_phone || infoObj.phone_number,\n      email: infoObj.contact_email,\n    });\n    setModalShow(true);\n  };\n\n  const handleCloseContactInfo = () => {\n    setMoreInfo({});\n    setModalShow(false);\n  };\n\n  const handleExportCalrediePatient = async () => {\n    try {\n      setLoading(true);\n      if (checkboxes.length === 0) {\n        const resFilePathc = await API.exportToCalRedieData({ date: moment().format(\"YYMMDD\") });\n        console.log(\"resFilePathc\", resFilePathc);\n        const resut = await Storage.get(`csvfile/${resFilePathc}`, {\n          bucket: \"employee-external-tests\",\n        });\n        const response = await fetch(resut);\n        const blob = await response.blob();\n\n        console.log(\"fileMetadata\", blob.size);\n        if (blob.size === 0) {\n          appContext.showErrorMessage(\"No Pending Data For Submit to Calredie\");\n          setLoading(false);\n          return;\n        }\n        saveAs(blob, `biomobilelab_${resFilePathc}`);\n      } else {\n        const tests = filteredTests.filter((f) => f.result && checkboxes.includes(f.id));\n        if (tests.length === 0) {\n          appContext.showErrorMessage(\"All tests results Already Submitted!\");\n          setLoading(false);\n          return;\n        }\n        const results = exportToCalRedie(tests);\n        downloadDataAsCSV(results, `${moment().toISOString()}_Cal_Patients`);\n      }\n\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error:-\", err);\n      setLoading(false);\n    }\n  };\n\n  const handleDeleteConfirm = async (isConfirm) => {\n    setOpenDeleteConfirmation(false);\n    if (!isConfirm) {\n      return;\n    }\n    setLoading(true);\n    const testList = selectedTest.filter((test) => checkboxes.includes(test.id));\n    let ttlTest = testList.length;\n    if (ttlTest === 0) {\n      return;\n    }\n\n    await appContext.deleteTests(testList);\n    const logs = testList.map((e) => {\n      return {\n        id: e.id,\n        slug: \"Deleted\",\n        sequenceNo: e.sequenceNo,\n        userName: appContext.user.name,\n        userID: appContext.user?.sub,\n      };\n    });\n    await GQAPI.addDeleteLogs(logs);\n    setLoading(false);\n    const tmpList = filteredTests.filter((t) => !checkboxes.includes(t.id));\n    setFilteredTests(tmpList);\n    setTotalRecord(totalRecord - ttlTest);\n    clearSelection();\n  };\n\n  const clearSelection = () => {\n    setAllSelected(false);\n    setCheckboxes([]);\n    setSelectedTest([]);\n    setLoading(false);\n  };\n\n  const updateTestType = async (selectedType) => {\n    const updateSelectedTestResult = selectedTest.filter((test) => checkboxes.includes(test.id));\n    const ttlTest = updateSelectedTestResult.length;\n    if (!ttlTest) {\n      return;\n    }\n    setLoading(true);\n\n    try {\n      if (!loading) setLoading(true);\n      const testList = updateSelectedTestResult.map((t) => {\n        return {\n          id: t.id,\n          test_type: selectedType,\n          sequenceNo: t.sequenceNo,\n        };\n      });\n      await GQAPI.updateTestType(testList);\n      const updateInHR = updateSelectedTestResult\n        .filter((f) => f.schrID)\n        .map((t) => {\n          return {\n            id: t.id,\n            schrID: t.schrID,\n            value: selectedType,\n            label: TEST_TYPE_VALUE[selectedType],\n            prevTestType: t.test_type,\n            sequenceNo: t.sequenceNo.toString(),\n            result: t.result,\n            date: t.createdAt,\n            isDone: true,\n          };\n        });\n      await API.changeTestType(updateInHR, appContext.user.name);\n\n      appContext.showSuccessMessage(\n        `${ttlTest} test${ttlTest === 1 ? \"\" : \"s\"} type has been changed to ${selectedType}`\n      );\n      addLogs(updateSelectedTestResult, \"TestTypeChange\", selectedType);\n    } catch (err) {\n      appContext.showErrorMessage(`Fail to update the test type`);\n    }\n    clearSelection();\n  };\n\n  const updateLabChange = async (selectedType, isSubmitToLab) => {\n    const updateSelectedTestResult = selectedTest.filter((test) => checkboxes.includes(test.id));\n    const ttlTest = updateSelectedTestResult.length;\n    if (!ttlTest) {\n      appContext.showErrorMessage(\"Please select test\");\n      return;\n    }\n    setLoading(true);\n    try {\n      let testList = [];\n      if (!loading) setLoading(true);\n      if (isSubmitToLab) {\n        testList = updateSelectedTestResult.map((t) => {\n          return {\n            id: t.id,\n            labID: selectedType.value,\n            labName: selectedType.label,\n            status: \"Sent\",\n            submittedBy: appContext.user.sub,\n            submittedByName: appContext.user.name,\n            sequenceNo: t.sequenceNo,\n          };\n        });\n        await GQAPI.updateTestLab(testList);\n        const lab = appContext.labs.find((l) => l.id === selectedType.value);\n\n        const pcrTests = updateSelectedTestResult.filter((test) => test.test_type === \"PCR\");\n        if (pcrTests.length > 0) {\n          await API.submitToLab(lab, pcrTests);\n        }\n      } else {\n        testList = updateSelectedTestResult.map((t) => {\n          return {\n            id: t.id,\n            labID: selectedType.value,\n            labName: selectedType.label,\n            sequenceNo: t.sequenceNo,\n          };\n        });\n        await GQAPI.updateTestLab(testList);\n      }\n      addLogs(updateSelectedTestResult, \"LabChange\", selectedType.label);\n      appContext.showSuccessMessage(`${ttlTest} test${ttlTest === 1 ? \"\" : \"s\"} lab has been changed`);\n    } catch (err) {\n      console.log(\"Error\", err);\n      appContext.showErrorMessage(`Fail to update the lab`);\n    }\n    clearSelection();\n  };\n\n  const addLogs = (items, slug, lab) => {\n    const ids = items.map((s) => {\n      const labObj = appContext.labs.find((l) => l.id === s.labID);\n      return { id: s.id, sequenceNo: s.sequenceNo, oldValue: labObj ? labObj.name : s.labID, newValue: lab };\n    });\n    const params = { ids: ids, userID: appContext.user?.sub, userName: appContext.user?.name, slug: slug };\n    API.addTestLogs(params);\n  };\n\n  const addConfigChangeLogs = async (items, slug, newValue) => {\n    try {\n      const ids = items.map((s) => {\n        const clientObj = appContext.clients.find((l) => l.id === s.clientID);\n        const siteObj = appContext.sites.find((l) => l.id === s.siteID);\n        return {\n          id: s.id,\n          sequenceNo: s.sequenceNo,\n          oldValue: `${clientObj?.name}-${siteObj?.name}`,\n          newValue: newValue,\n        };\n      });\n      const params = { ids: ids, userID: appContext.user?.sub, userName: appContext.user?.name, slug: slug };\n      await API.addTestLogs(params);\n    } catch (error) {\n      console.log(\"Error in Adding Logs\");\n    }\n  };\n\n  const showAppLogs = async (test) => {\n    setShowAppLog(true);\n    const logs = await API.getAppTestLogs(test.sequenceNo);\n    setTestAppLogs([...logs].sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt)));\n  };\n\n  const handleEditNumber = (test) => {\n    if (test.result) return;\n    setEditAccessionNo(test);\n  };\n\n  const updateClientConfig = async (clientID, siteID) => {\n    const updateSelectedTestResult = selectedTest.filter((test) => checkboxes.includes(test.id));\n    const ttlTest = updateSelectedTestResult.length;\n    if (!ttlTest) {\n      return;\n    }\n    setLoading(true);\n\n    try {\n      if (!loading) setLoading(true);\n\n      const params = updateSelectedTestResult.map((t) => {\n        return {\n          id: t.id,\n          clientID: clientID.value,\n          clientName: clientID.label,\n          siteID: siteID.value,\n          site_name: siteID.label,\n          sequenceNo: t.sequenceNo,\n        };\n      });\n      await GQAPI.updateTestClientLab(params);\n\n      await addConfigChangeLogs(updateSelectedTestResult, \"ConfigChange\", `${clientID.label} - ${siteID.label}`);\n      appContext.showSuccessMessage(`${ttlTest} test${ttlTest === 1 ? \"\" : \"s\"} Configuration has been changed`);\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error\", err);\n      setLoading(false);\n      appContext.showErrorMessage(`Fail to update test configuration`);\n    }\n    clearSelection();\n  };\n\n  const handleCloseCreateTest = () => {\n    setTestCreate(_.cloneDeep(TEST_EMPTY_OBJECT));\n    setOpenCreator(false);\n  };\n\n  const handleOpenCreateTest = () => {\n    if (selectedTest && selectedTest.length > 0) {\n      let selectedUser = { ...selectedTest[0] };\n      const emptyObjectKeys = Object.keys(TEST_EMPTY_OBJECT);\n      let newObjValue = { ...TEST_EMPTY_OBJECT };\n      for (const objKey of emptyObjectKeys) {\n        if (objKey === \"sequenceNo\") continue;\n        if (objKey == \"employee_demographics\") {\n          let demographicObj =\n            typeof selectedUser[objKey] === \"string\" ? JSON.parse(selectedUser[objKey]) : selectedUser[objKey];\n          newObjValue[objKey] = { ...demographicObj, phoneNumber: selectedUser[\"phoneNumber\"] };\n          if (selectedUser[\"dob\"]) {\n            newObjValue[objKey] = { ...demographicObj, dob: moment(selectedUser[\"dob\"]).format(\"MMDDYYYY\") };\n          }\n        } else {\n          newObjValue[objKey] = selectedUser[objKey];\n        }\n      }\n      setTestCreate(newObjValue);\n    }\n    setOpenCreator(true);\n  };\n\n  const createTest = async (testData) => {\n    // create test\n    testData = {\n      ...testData,\n      submittedByName: appContext?.user?.name,\n      createdBy: appContext?.user?.sub,\n      tester_name: appContext?.user?.name,\n    };\n\n    // Lab Check barcode is active or not\n    const checkLab = labs?.find((item) => item.id === testData.labID && item.barCodeProvided);\n    if (checkLab && checkLab.id) {\n      let barcode = await API.getLabProvidedBarCode(checkLab.id);\n      if (barcode) {\n        testData = { ...testData, barcode };\n      }\n    }\n\n    let newTest = await GQAPI.createTest(testData);\n    setLoading(false);\n    if (newTest) {\n      appContext.showSuccessMessage(\"Test created successfully\");\n      handleCloseCreateTest();\n    } else {\n      appContext.showErrorMessage(\"Test can't be created\");\n    }\n  };\n\n  const TableRow = ({ test }) => {\n    return (\n      <tr className=\"trDataWrapper\">\n        <td\n          className={test.preRegTest ? \"ellipsis position-relative table-first-td\" : \"ellipsis position-relative\"}\n          style={{ textAlign: \"left\" }}\n        >\n          <div className=\"d-flex align-items-center\">\n            {/* <Form.Check className=\"me-2\">\n              <Form.Check.Input\n                type=\"checkbox\"\n                value={test.id}\n                checked={checkboxes.indexOf(test.id) !== -1}\n                onChange={(e) => handleCheckboxChange(e, test.id, test)}\n              ></Form.Check.Input>\n            </Form.Check> */}\n\n            <ViewOnlyCheckBox\n              bgColor=\"red\"\n              id={test.id}\n              checked={checkboxes.indexOf(test.id) !== -1}\n              item={test}\n              handleChange={(e) => handleCheckboxChange(e, test.id, test)}\n            />\n\n            {test.labStatusTest === \"1\" ? (\n              <i title={test.labOrderDetail?.message} className=\"fa fa-check-circle\" />\n            ) : test.labStatusTest === \"2\" ? (\n              <i title={test.labOrderDetail?.message} className=\"fa fa-exclamation-circle\" />\n            ) : (\n              \"\"\n            )}\n          </div>\n        </td>\n        <td className=\"table-column ellipsis\">{moment(test.createdAt).format(\"MM-DD-YYYY HH:mm\")}</td>\n\n        <td\n          className=\"table-column ellipsis\"\n          title={test.firstName}\n          // onClick={async () => await API.getTestFromAPi(test)}\n        >\n          {test.firstName}\n        </td>\n        <td className=\"table-column ellipsis\" title={test.lastName}>\n          {test.lastName}\n        </td>\n        <td className=\"ellipsis\" title={test.dob}>\n          {test.dob}\n        </td>\n        <td\n          className=\"table-column ellipsis text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n          onClick={() => test?.email && window.open(`mailto:${test.email}`)}\n          title={test.email}\n        >\n          {test.email}\n        </td>\n        <td\n          className=\"table-column ellipsis text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n          onClick={() => {\n            test.phoneNumber && window.open(`tel:${test.phoneNumber}`);\n          }}\n          title={test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        >\n          {test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        </td>\n        {!CONFIG.isWhiteLabel && (\n          <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n            <a\n              style={{ color: \"#42cef5\" }}\n              onClick={() => createMoreInfo(\"client\", test.clientID)}\n              onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n              title={appContext.getClientName(test.clientID)}\n            >\n              {appContext.getClientName(test.clientID)}\n            </a>\n          </td>\n        )}\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          <a\n            style={{ color: \"#42cef5\" }}\n            onClick={() => createMoreInfo(\"site\", test.siteID)}\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n            title={appContext.getSiteName(test.siteID)}\n          >\n            {appContext.getSiteName(test.siteID)}\n          </a>\n        </td>\n        {!CONFIG.isWhiteLabel && (\n          <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n            <a\n              style={{ color: \"#42cef5\" }}\n              onClick={() => createMoreInfo(\"lab\", test.labID)}\n              onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n              title={appContext.getLabName(test.labID)}\n            >\n              {appContext.getLabName(test.labID)}\n            </a>\n          </td>\n        )}\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.status}>\n          {test.status}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={appContext.parseResult(test)}>\n          <span\n            className=\"text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n            onClick={() => displayPdf(test)}\n            style={{\n              color: RESULT_COLOR[test.result?.toLowerCase()],\n            }}\n          >\n            {appContext.parseResult(test)}\n          </span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.test_type || \"-\"}>\n          {test.test_type || \"-\"}\n        </td>\n        <SequenceNo\n          num={CONFIG.isWhiteLabel ? test.barcode : test.sequenceNo}\n          test={test}\n          handleEdit={handleEditNumber}\n          showLogs={appContext.showLogs}\n        />\n        {!CONFIG.isWhiteLabel && (\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.tester_name || \"NA\"}>\n            {test.tester_name || \"NA\"}\n          </td>\n        )}\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <Link\n            className=\"text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n            onClick={handleSaveFilter}\n            to={{ pathname: \"/admin/test/\" + test.id, state: { admin: true, type: \"totalTest\", test: test } }}\n          >\n            View\n          </Link>\n        </td>\n      </tr>\n    );\n  };\n\n  const handleOnError = (err) => {\n    appContext.showErrorMessage(err.message);\n  };\n\n  const afterDeletedTest = (testList) => {\n    const tmpList = filteredTests.filter((t) => testList.findIndex((f) => f.id === t.id) === -1);\n    setFilteredTests(tmpList);\n    setTotalRecord(totalRecord - testList.length);\n    clearSelection();\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n  };\n\n  return showPdf ? (\n    <PDFLayout setShowPdf={setShowPdf} testPdf={testPdf} testsLab={testsLab} />\n  ) : (\n    <>\n      <Container fluid>\n        <div className=\"shows-screen-parent\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                      {/* Date Range */}\n                      <FilterSelect setTimeFilter={setTimeFilter} />\n                      <Icon\n                        handleClick={ () => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n\n                          \n                          \n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n\n                      {filteredTests.length > 0 && (\n                        <>\n                          {Object.keys(filter).length > 0 && (\n                            <>\n                              <TestPDFLayout\n                                tests={filteredTests}\n                                selectedItem={selectedItem}\n                                filter={filter}\n                                timeFilter={timeFilter}\n                                title=\"Total Tests\"\n                                appContext={appContext}\n                                sortBy={sortBy}\n                              />\n                            </>\n                          )}\n                        </>\n                      )}\n                      {appContext.user?.phone_number === \"+18888888888\" ||\n                        appContext.user?.phone_number === \"+12222222222\" ||\n                        (CONFIG.isWhiteLabel && (\n                          <Icon\n                            handleClick={() => appContext.openDeleteConfirmation(selectedTest, afterDeletedTest)}\n                            title={\"Delete Test\"}\n                            label={\"Delete\"}\n                            iconType={\"binIcon\"}\n                            disabled={checkboxes.length === 0}\n                          />\n                        ))}\n                      <ExportToExcelData\n                        items={filteredTests}\n                        selectedItem={selectedItem}\n                        appContext={appContext}\n                        filter={filter}\n                        timeFilter={timeFilter}\n                        title=\"Total Tests\"\n                        sortBy={sortBy}\n                        setLoading={setLoading}\n                      />\n                      {(appContext.user[\"custom:role\"] === \"Admins\" || CONFIG.isWhiteLabel) && (\n                        <>\n                          <Icon\n                            handleClick={() => setShowResultModal(true)}\n                            title={\"Result Tests\"}\n                            label={\"Result Tests\"}\n                            iconType={\"resultsIcon\"}\n                            disabled={checkboxes.length === 0}\n                          />\n\n                          {!CONFIG.isWhiteLabel && (\n                            <>\n                              <Icon\n                                handleClick={() => setShowTestTypeModal(true)}\n                                title={\"Change Test Type\"}\n                                label={\"Test Type\"}\n                                iconType={\"testNowIcon\"}\n                                disabled={checkboxes.length === 0}\n                              />\n                              <Icon\n                                handleClick={() => setShowLabChangeModal(true)}\n                                title={\"Change Lab\"}\n                                label={\"Change Lab\"}\n                                iconType={\"labIcon\"}\n                                disabled={checkboxes.length === 0}\n                              />\n                              <Icon\n                                handleClick={() => setClientChangeModal(true)}\n                                title={\"Change Client\"}\n                                label={\"Client\"}\n                                iconType={\"personalizeIcon\"}\n                                disabled={checkboxes.length === 0}\n                              />\n                            </>\n                          )}\n\n                          {(appContext.user.phone_number == \"+12222222222\" ||\n                            appContext.user.phone_number == \"+18888888888\") && (\n                            <Icon\n                              handleClick={() => handleOpenCreateTest()}\n                              title={\"Create Test\"}\n                              label={\"Create Test\"}\n                              iconType={\"createIcon\"}\n                            />\n                          )}\n                        </>\n                      )}\n                      <Icon\n                        handleClick={handleExportCalrediePatient}\n                        title={\"Export to Calredie\"}\n                        label=\"Export to H&S\"\n                        iconType={\"XLSIcon\"}\n                      />\n                      <Icon\n                        handleClick={handleUploadLogs}\n                        title={\"H&S Logs\"}\n                        label=\"H&S Logs\"\n                        iconType={\"importIcon\"}\n                      />\n                    </div>\n                  </div>\n                  {showFilter && (\n                    <Filter\n                      filterTerms={searchTerms}\n                      setFilter={setFilter}\n                      filter={filter}\n                      triggerFilter={triggerFilter}\n                      setTriggerFilter={setTriggerFilter}\n                    />\n                  )}\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"striped-tabled-with-hover bg-transparent\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md-=\"6\">\n                      <Card.Title>\n                        <div className=\"\">\n                          Total Tests:\n                          <span className=\"ps-2\">{totalRecord}</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"6\">\n                      <PGPagination\n                        timeFilter={timeFilter}\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                        totalRecord={totalRecord}\n                        currentRecord={filteredTests.length}\n                        showSelectedRecord\n                        totalSelected={checkboxes.length}\n                      />\n                    </Col>\n                  </Row>\n                  {/* <div className=\"buttonHeader\">\n                    <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                      Filter\n                    </Button>\n                    <FilterSelect setTimeFilter={setTimeFilter} />\n                    <Button\n                      className=\"headerButton\"\n                      onClick={() => {\n                        if (filteredTests && filteredTests.length > 0) {\n                          setAllSelected(!allSelected);\n                          toggleCheckboxes(!allSelected);\n                        }\n                      }}\n                    >\n                      {!allSelected ? \"Select All\" : \"Deselect All\"}\n                    </Button>\n                    {filteredTests.length > 0 && (\n                      <>\n                        {Object.keys(filter).length > 0 && (\n                          <>\n                            <ExportToExcelData\n                              items={filteredTests}\n                              selectedItem={selectedItem}\n                              appContext={appContext}\n                              filter={filter}\n                              timeFilter={timeFilter}\n                              title=\"Total Tests\"\n                              sortBy={sortBy}\n                              setLoading={setLoading}\n                            />\n                            <TestPDFLayout\n                              tests={filteredTests}\n                              selectedItem={selectedItem}\n                              filter={filter}\n                              timeFilter={timeFilter}\n                              title=\"Total Tests\"\n                              appContext={appContext}\n                              sortBy={sortBy}\n                            />\n                          </>\n                        )}\n                      </>\n                    )}\n                    {(appContext.user?.phone_number === \"+18888888888\" ||\n                      appContext.user?.phone_number === \"+12222222222\") && (\n                      <Button\n                        className=\"headerButton\"\n                        disabled={checkboxes.length === 0}\n                        onClick={() => setOpenDeleteConfirmation(true)}\n                      >\n                        Delete Test\n                      </Button>\n                    )}\n                    {appContext.user[\"custom:role\"] === \"Admins\" && (\n                      <>\n                        <Button\n                          className=\"headerButton\"\n                          onClick={() => setShowResultModal(true)}\n                          disabled={checkboxes.length === 0}\n                        >\n                          Change Result\n                        </Button>\n                        <Button\n                          className=\"headerButton\"\n                          onClick={() => setShowTestTypeModal(true)}\n                          disabled={checkboxes.length === 0}\n                        >\n                          Change Test Type\n                        </Button>\n                        <Button\n                          className=\"headerButton\"\n                          onClick={() => setShowLabChangeModal(true)}\n                          disabled={checkboxes.length === 0}\n                        >\n                          Change Lab\n                        </Button>\n                        <Button\n                          className=\"headerButton\"\n                          disabled={checkboxes.length === 0}\n                          onClick={() => setClientChangeModal(true)}\n                        >\n                          Change Client\n                        </Button>\n                        {(appContext.user.phone_number == \"+12222222222\" ||\n                          appContext.user.phone_number == \"+18888888888\") && (\n                          <Button className=\"headerButton\" onClick={() => handleOpenCreateTest()}>\n                            Create Test\n                          </Button>\n                        )}\n                      </>\n                    )}\n                  </div> */}\n                </Card.Header>\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll mt-0 pt-0\">\n                  <div className=\"table-responsive pendingReleaseTable\">\n                    <Table className=\"separate-border-tr\" ref={mainRef}>\n                      <Header\n                        type={TEST_HEADER_TYPE.alltests}\n                        flipSort={flipSort}\n                        sortBy={sortBy}\n                        sortDescending={sortDescending}\n                        widthCol={55}\n                      />\n                      <tbody>\n                        {testsToMap &&\n                          testsToMap.map((test) => {\n                            return <TableRow key={test.id} test={test} />;\n                          })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      </Container>\n      <ContactInfo show={modalShow} moreInfo={moreInfo} handleClose={handleCloseContactInfo} />\n      {showResultModal && (\n        <ChangeResultModal\n          handleClose={() => setShowResultModal(false)}\n          appContext={appContext}\n          tests={selectedTest.filter((test) => checkboxes.includes(test.id))}\n          callback={clearSelection}\n        />\n      )}\n      {showTestTtypeModal && (\n        <ChangeTestTypeModal handleSave={updateTestType} handleClose={() => setShowTestTypeModal(false)} />\n      )}\n      {showLabChangeModal && (\n        <ChangeTestLabModal\n          handleSave={updateLabChange}\n          selectedTest={selectedTest}\n          labs={appContext.labs}\n          handleClose={() => setShowLabChangeModal(false)}\n        />\n      )}\n      {clientChangeModal && (\n        <ChangeTestConfigModal\n          handleSave={updateClientConfig}\n          clients={appContext.clients}\n          sites={appContext.sites}\n          handleClose={() => setClientChangeModal(false)}\n        />\n      )}\n      {openDeleteConfirmation && (\n        <ConfirmationModal\n          show={openDeleteConfirmation}\n          title=\"Delete Test\"\n          message={`Are you sure, you want to remove ${checkboxes.length} Test${checkboxes.length > 1 ? \"s\" : \"\"}`}\n          handleConfirm={handleDeleteConfirm}\n        />\n      )}\n\n      {showAppLog && (\n        <AppTestLogsModal\n          data={testAppLogs}\n          handleClose={() => {\n            setShowAppLog(false);\n            setTestAppLogs([]);\n          }}\n        ></AppTestLogsModal>\n      )}\n\n      {editAccessionNo && (\n        <EditAccessionNoModal\n          handleClose={(val) => {\n            setEditAccessionNo(null);\n            if (val) {\n              val === \"success\"\n                ? appContext.showSuccessMessage(\"Successfully Changed the Accession No!\")\n                : appContext.showErrorMessage(val);\n            }\n          }}\n          test={editAccessionNo}\n          appContext={appContext}\n        />\n      )}\n\n      {openUploadLogsModal && (\n        <CalRedieLogsModal\n          handleClose={() => setOpenUploadLogsModal(false)}\n          user={appContext.user}\n          appContext={appContext}\n        />\n      )}\n\n      {openCreator && (\n        <TestModal\n          newTestCreate={newTestCreate}\n          handleCloseCreateTest={handleCloseCreateTest}\n          createTest={createTest}\n          setTestCreate={setTestCreate}\n          clients={appContext.clients}\n          sites={appContext.sites}\n          labs={appContext.labs}\n        />\n      )}\n      {loading && <Loader />}\n    </>\n  );\n};\n\nexport default AdminTotalTestApi;\n","import React from \"react\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\n\nconst Message = (props) => {\n  const { showAlert, title, type, message, handleConfirm, handleClose } = props;\n\n  const handleOnConfirm = () => {\n    handleClose(false);\n    if (handleConfirm) handleConfirm();\n  };\n\n  return (\n    <SweetAlert show={showAlert} type={type} title={title ?? \"Info\"} onConfirm={handleOnConfirm}>\n      {message}\n    </SweetAlert>\n  );\n};\n\nexport default Message;\n","import { PDFViewer } from \"@react-pdf/renderer\";\nimport API from \"api\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport Filter from \"components/Filter\";\nimport Icon from \"components/Icon\";\nimport Message from \"components/Message/Message\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport ContactInfo from \"components/Modal/ContactInfo\";\nimport TestSubmitModal from \"components/Modal/TestSubmitModal\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport PDF from \"components/PDF\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport SequenceNo from \"components/SequenceNo\";\nimport Header from \"components/Table/Header\";\nimport TimeFilter from \"components/TimeFilter\";\nimport { CONFIG, PAGE_LIMIT, RESULT_VALUE, stringConstant, TEST_HEADER_TYPE } from \"constant\";\nimport { AppContext } from \"context/app-context\";\nimport moment from \"moment\";\nimport React, { useContext, useEffect, useMemo, useState } from \"react\";\nimport \"react-activity/dist/Bounce.css\";\n// react-bootstrap components\nimport { Button, Card, Col, Container, Row, Table } from \"react-bootstrap\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport {\n  changeSort,\n  connectedIDInLocalStorage,\n  formatPhoneNumber,\n  formatTest,\n  formatUTCDate,\n  getValidName,\n  sortingFilterInLC,\n  sortTestList,\n} from \"utils\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport Loader from \"../../components/Loader/Loader\";\n\nconst DeleteTestApi = () => {\n  const [tests, setTests] = useState([]);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [labs, setLabs] = useState([]);\n  const [sites, setSites] = useState([]);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [triggerFilter, setTriggerFilter] = useState();\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [loading, setLoading] = useState(false);\n  const [showAlert, setShowAlert] = useState(false);\n  const [importStatus, setImportStatus] = useState();\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [showErrorMessage, setShowErrorMessage] = useState(false);\n  const [openConfirmation, setOpenConfirmation] = useState(false);\n  const [openRestoredConfirmation, setOpenRestoredConfirmation] = useState(false);\n  const { filterDates } = TimeFilter;\n\n  const location = useLocation();\n  const appContext = useContext(AppContext);\n\n  const searchTerms = [\n    \"First Name\",\n    \"Last Name\",\n    \"Date of Birth\",\n    \"Email\",\n    \"Phone\",\n    \"Client\",\n    `${stringConstant.show}`,\n    \"Lab\",\n    `${stringConstant.sequenceNo}`,\n    \"Test Type\",\n    \"Tester\",\n    \"isVaccinated\",\n    \"White Glove\",\n    \"Pattern\",\n    \"Capacity\",\n  ];\n\n  const selectedItem = CONFIG.isWhiteLabel\n    ? [\n        \"createdAt\",\n        \"firstName\",\n        \"lastName\",\n        \"dob\",\n        \"email\",\n        \"phoneNumber\",\n        \"siteID\",\n        \"status\",\n        \"test_type\",\n        `${stringConstant.accession_no}`,\n      ]\n    : [\n        \"createdAt\",\n        \"firstName\",\n        \"lastName\",\n        \"dob\",\n        \"email\",\n        \"phoneNumber\",\n        \"clientID\",\n        \"siteID\",\n        \"labID\",\n        \"status\",\n        \"test_type\",\n        \"sequenceNo\",\n        \"tester_name\",\n        \"isVaccinated\",\n        \"employeeType\",\n        \"whiteGlove\",\n        \"patternTestAnswer\",\n      ];\n\n  const displayOwner = (test) => {\n    let displayedId = test.owner.substr(-12);\n    return displayedId;\n  };\n\n  const createMoreInfo = (type, id) => {\n    let infoObj = null;\n    if (type === \"site\") infoObj = appContext.sites.find((site) => site.id === id);\n    else if (type === \"client\") infoObj = appContext.clients.find((client) => client.id === id);\n    else infoObj = labs.find((lab) => lab.id === id);\n\n    if (infoObj) {\n      setMoreInfo({\n        type,\n        name: infoObj.name,\n        contact: infoObj.contact_name,\n        phone: infoObj.contact_phone || infoObj.phone_number,\n        email: infoObj.contact_email,\n      });\n      setModalShow(true);\n    }\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n        if (key === \"Lab\") {\n          return obj.labID && appContext.getLabName(obj.labID).toLowerCase().includes(filters[key]);\n        }\n        if (key === \"Client\") {\n          return (\n            obj.clientID && appContext.getClientName(obj.clientID).toLowerCase().includes(filters[key].toLowerCase())\n          );\n        }\n        if (key === \"Tester\") {\n          return obj.tester_name && obj.tester_name.toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"Show\") {\n          const siteIds = appContext.sites\n            .filter((s) => s.name.toLowerCase().includes(filters[key].toLowerCase()))\n            .map((s) => s.id);\n          return siteIds.includes(obj.siteID);\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n        if (key === \"vaccinated\") {\n          return (obj[\"isVaccinated\"] ? 1 : 0).toString() === filters[key];\n        }\n\n        if (key === \"whiteGlove\") {\n          return (obj[\"whiteGlove\"] ? 1 : 0).toString() === filters[key];\n        }\n\n        if (key === \"capacity\") {\n          return obj[\"employeeType\"] && obj[\"employeeType\"].toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"pattern\") {\n          if (filters[key] === \"1\") return obj[\"patternTestAnswer\"] && obj[\"patternTestAnswer\"] !== \"undefined\";\n\n          if (filters[key] === \"0\") return obj[\"patternTestAnswer\"] == \"undefined\" || obj[\"patternTestAnswer\"] == \"\";\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    return models;\n  };\n\n  const displayPdf = (test) => {\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  const handleCheckboxChange = (e, id) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? filteredTests.map((t) => t.id) : []);\n\n  useEffect(() => {\n    setLoading(true);\n    loadPrevSorting();\n    fetchDeletedTests();\n  }, []);\n\n  useEffect(() => {\n    setLoading(true);\n    setLabs(appContext.labs);\n    setSites(appContext.sites);\n  }, [appContext.labs, appContext.sites]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"expiredtests\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredTests,\n      setFilteredTests,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (location.state) {\n      setShowFilter(true);\n      setFilter({ ...filter, [location.state.term]: location.state.name });\n      setTriggerFilter(true);\n    }\n  }, [location.state]);\n  useEffect(() => {\n    setFilteredTests(filterDates(nestedFilter(tests, filter), timeFilter));\n  }, [filter, triggerFilter, timeFilter]);\n\n  const fetchDeletedTests = async () => {\n    const eTests = await GQAPI.getDeletedTestList(CONFIG.isWhiteLabel ? connectedIDInLocalStorage.get() : \"123\");\n    const tests = eTests.map((test) => {\n      return formatTest(test);\n    });\n    setTests(tests);\n    refreshTestList(tests);\n    setLoading(false);\n  };\n\n  const refreshTestList = (list) => {\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredTests(list);\n    }\n  };\n\n  const loadPrevSorting = () => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.expiredtests.sortBy) {\n      setSortDescending(sortingFilters.expiredtests.sortDescending);\n      setSortBy(sortingFilters.expiredtests.sortBy);\n    }\n  };\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: \"unprocessedtest\", filter, timeFilter });\n  };\n\n  const deleteTest = async (test) => {\n    setLoading(true);\n    await API.deleteWrongTest(test.id);\n    fetchDeletedTests();\n  };\n\n  const TableRow = ({ test }) => {\n    return (\n      <tr className=\"trDataWrapper\">\n        <td className=\"ellipsis\" style={{ textAlign: \"left\" }}>\n          {/* <Form.Check>\n            <Form.Check.Input\n              type=\"checkbox\"\n              value={test.id}\n              checked={checkboxes.indexOf(test.id) !== -1}\n              onChange={(e) => handleCheckboxChange(e, test.id)}\n            ></Form.Check.Input>\n          </Form.Check> */}\n\n          <ViewOnlyCheckBox\n            bgColor=\"red\"\n            id={test.id}\n            checked={checkboxes.indexOf(test.id) !== -1}\n            item={test}\n            handleChange={(e) => handleCheckboxChange(e, test.id)}\n          />\n        </td>\n        <td className=\"ellipsis\" title={formatUTCDate(test.createdAt)}>\n          {formatUTCDate(test.createdAt)}\n        </td>\n        <td className=\"table-column ellipsis\" title={getValidName(test.firstName)}>\n          {getValidName(test.firstName)}\n        </td>\n        <td className=\"table-column ellipsis\" title={getValidName(test.lastName)}>\n          {getValidName(test.lastName)}\n        </td>\n        <td className=\"ellipsis\" title={test.dob}>\n          {test.dob}\n        </td>\n        <td\n          className=\"table-column ellipsis text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n          onClick={() => test?.email && window.open(`mailto:${test.email}`)}\n          title={test.email}\n        >\n          {test.email}\n        </td>\n        <td\n          className=\"table-column ellipsis text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n          onClick={() => {\n            test.phoneNumber && window.open(`tel:+1${test.phoneNumber}`);\n          }}\n          title={test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        >\n          {test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        </td>\n        {!CONFIG.isWhiteLabel && (\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            <a\n              style={{ color: \"#42cef5\" }}\n              onClick={() => createMoreInfo(\"client\", test.clientID)}\n              onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n              title={appContext.getClientName(test.clientID)}\n            >\n              {appContext.getClientName(test.clientID)}\n            </a>\n          </td>\n        )}\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.test_type || \"-\"}>\n          {test.test_type || \"-\"}\n        </td>\n        <SequenceNo\n          num={CONFIG.isWhiteLabel ? test.barcode : test.sequenceNo}\n          test={test}\n          showLogs={appContext.showLogs}\n        />\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <a\n            style={{ color: \"#42cef5\" }}\n            onClick={() => createMoreInfo(\"site\", test.siteID)}\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n            title={appContext.getSiteName(test.siteID)}\n          >\n            {appContext.getSiteName(test.siteID)}\n          </a>\n        </td>\n        {!CONFIG.isWhiteLabel && (\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            <a\n              style={{ color: \"#42cef5\" }}\n              onClick={() => createMoreInfo(\"lab\", test.labID)}\n              onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n              title={appContext.getLabName(test.labID)}\n            >\n              {appContext.getLabName(test.labID)}\n            </a>\n          </td>\n        )}\n        <td\n          className=\"ellipsis\"\n          style={{\n            textAlign: \"center\",\n            color: test.status === \"Pending\" ? \"orange\" : \"black\",\n          }}\n          title={test.status}\n        >\n          {test.status}\n        </td>\n\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.tester_name || \"NA\"}>\n          {test.tester_name}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <Link\n            className=\"text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n            to={{\n              pathname: \"/admin/test/\" + test.id,\n              state: { unprocessed: true },\n            }}\n            onClick={handleSaveFilter}\n          >\n            View\n          </Link>\n\n          {/*  <i\n              className=\"fa fa-trash\"\n              style={{ marginLeft: \"5px\" }}\n              onMouseLeave={(e) => (e.target.style.color = \"black\")}\n              onMouseOver={(e) => {\n                e.target.style.color = \"#8B0000\";\n                e.target.style.cursor = \"pointer\";\n              }}\n              aria-hidden=\"true\"\n              id={test.id}\n              onClick={(e) => deleteTest(test)}\n            /> */}\n        </td>\n      </tr>\n    );\n  };\n\n  const handleChangePage = (page) => setCurrentPage(page);\n  const handleCloseContactInfo = () => {\n    setMoreInfo({});\n    setModalShow(false);\n  };\n  const updateTestResult = async (result) => {\n    try {\n      const updateSelectedTestResult = filteredTests.filter((test) => checkboxes.includes(test.id));\n      if (!updateSelectedTestResult.length) {\n        return;\n      }\n      setLoading(true);\n      const ttl = updateSelectedTestResult.length;\n\n      const params = updateSelectedTestResult.map((t) => {\n        return {\n          id: t.id,\n          result: RESULT_VALUE[result.toLowerCase()],\n          status: result === \"positive\" ? \"Pending\" : \"Processed\",\n          timerStatus: result === \"positive\" ? \"Pending\" : \"Processed\",\n          resultDateTime: moment().utc().toISOString(),\n          resultDate: moment().utc().format(\"YYYY-MM-DD\"),\n          StampBy: appContext.user.sub,\n          StampByName: appContext.user.name,\n          emailSend: true,\n          expired: false,\n          sequenceNo: t.sequenceNo,\n        };\n      });\n      await GQAPI.updateTestResult(params);\n      setLoading(false);\n      appContext.showSuccessMessage(`Status has been successfully updated of ${ttl} tests`);\n      const newList = filteredTests.filter((test) => !checkboxes.includes(test.id));\n      setTests(newList);\n      setFilteredTests(newList);\n    } catch (error) {\n      appContext.showErrorMessage(`Fail to update the test Result`);\n    }\n    setCheckboxes([]);\n  };\n  const handleConfirmRestore = async (isConfirm) => {\n    setOpenRestoredConfirmation(false);\n    if (!isConfirm) {\n      return;\n    }\n    setLoading(true);\n    try {\n      const testList = filteredTests.filter((test) => checkboxes.includes(test.id));\n      const logs = testList.map((e) => {\n        return {\n          id: e.id,\n          slug: \"Restored\",\n          sequenceNo: e.sequenceNo,\n          userName: appContext.user.name,\n          userID: appContext.user?.sub,\n        };\n      });\n      await GQAPI.addDeleteLogs(logs);\n      const objData = filteredTests.filter((f) => !checkboxes.includes(f.id));\n      setFilteredTests(objData);\n      setCheckboxes([]);\n      setAllSelected(false);\n      appContext.showSuccessMessage(\n        `Successfully Restore ${checkboxes.length} ${checkboxes.length > 1 ? \"Tests\" : \"Test\"}`\n      );\n      setLoading(false);\n    } catch (err) {\n      appContext.showErrorMessage(err.message);\n      console.log(err.message);\n      setLoading(false);\n    }\n  };\n  const handleConfirm = async (isConfirm) => {\n    setOpenConfirmation(false);\n    if (!isConfirm) {\n      return;\n    }\n    updateTestResult(\"positive\");\n  };\n  return showPdf ? (\n    <Container fluid>\n      <Row>\n        <Col md=\"12\">\n          <Card className=\"strpied-tabled-with-hover\">\n            <Card.Header>\n              <Row style={{ alignItems: \"center\" }}>\n                <Card.Title as=\"h4\">\n                  Showing Test PDF for{\" \"}\n                  {typeof testPdf.employee_demographics === \"string\"\n                    ? JSON.parse(testPdf.employee_demographics).firstName\n                    : testPdf.employee_demographics.firstName}\n                </Card.Title>\n                <Button\n                  style={{\n                    marginTop: 10,\n                  }}\n                  className=\"createButtons\"\n                  onClick={() => setShowPdf(false)}\n                >\n                  Close\n                </Button>\n              </Row>\n            </Card.Header>\n            <Card.Body className=\"pdfContainer table-full-width table-responsive px-0\">\n              <PDFViewer className=\"pdfView\">\n                <PDF test={testPdf} testsLab={testsLab} parseTestResultForPDF={appContext.parseTestResultForPDF} />\n              </PDFViewer>\n            </Card.Body>\n          </Card>\n        </Col>\n      </Row>\n    </Container>\n  ) : !loading ? (\n    <>\n      <Container fluid>\n        {showAlert && <TestSubmitModal data={importStatus} handleClose={setShowAlert} />}\n\n        <Message\n          title=\"No Test is selected\"\n          type=\"info\"\n          showAlert={showErrorMessage}\n          handleClose={setShowErrorMessage}\n        />\n        {openConfirmation && (\n          <ConfirmationModal\n            show={openConfirmation}\n            title=\"Result Positive\"\n            message=\"Are you sure, to result positive ?\"\n            handleConfirm={handleConfirm}\n          />\n        )}\n        {openRestoredConfirmation && (\n          <ConfirmationModal\n            show={openRestoredConfirmation}\n            title=\"Restore Test\"\n            message={`Are you sure, to restore this ${checkboxes.length} ${checkboxes.length > 1 ? \"tests\" : \"test\"} ?`}\n            handleConfirm={handleConfirmRestore}\n          />\n        )}\n        <div className=\"shows-screen-parent\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                      <Icon\n                        handleClick={() => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n                      <Icon\n                        disabled={checkboxes.length === 0}\n                        handleClick={() => setOpenRestoredConfirmation(true)}\n                        title={\"Restore Test\"}\n                        label={\"Restore Test\"}\n                        iconType={\"restoreIcon\"}\n                      />\n\n                      {filteredTests.length > 0 && (\n                        <>\n                          <ExportToExcel\n                            items={filteredTests}\n                            selectedItem={selectedItem}\n                            appContext={appContext}\n                            filter={filter}\n                            timeFilter={timeFilter}\n                            title=\"Expired Tests\"\n                            sortBy={sortBy}\n                          />\n\n                          {/* {Object.keys(filter).length > 0 && (\n                            <>\n                              <TestPDFLayout\n                                tests={filteredTests}\n                                selectedItem={selectedItem}\n                                filter={filter}\n                                timeFilter={timeFilter}\n                                title=\"Expired Tests\"\n                                appContext={appContext}\n                                sortBy={sortBy}\n                              />\n                            </>\n                          )} */}\n                        </>\n                      )}\n                    </div>\n                  </div>\n                  {showFilter && (\n                    <Filter\n                      filterTerms={searchTerms}\n                      setFilter={setFilter}\n                      filter={filter}\n                      triggerFilter={triggerFilter}\n                      setTriggerFilter={setTriggerFilter}\n                    />\n                  )}\n                </Card.Body>\n              </Card>\n            </Col>\n            <Col md=\"12\">\n              <Card className=\"strpied-tabled-with-hover bg-transparent border-0\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md=\"6\">\n                      <Card.Title>\n                        <div className=\"\">\n                          Deleted Tests:\n                          <span className=\"ps-2\">{filteredTests ? filteredTests.length : 0}</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"6\">\n                      <MFPagination\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                        showSelectedRecord\n                        totalSelected={checkboxes.length}\n                      />\n                    </Col>\n                  </Row>\n                </Card.Header>\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll pt-0 mt-0\">\n                  <div className=\"table-responsive pendingReleaseTable\">\n                    <Table className=\"separate-border-tr\">\n                      <Header\n                        type={TEST_HEADER_TYPE.expired}\n                        flipSort={flipSort}\n                        sortBy={sortBy}\n                        sortDescending={sortDescending}\n                        cssClass=\"pendingReleaseTable\"\n                      />\n                      <tbody>\n                        {testsToMap &&\n                          testsToMap.map((test) => {\n                            return <TableRow key={test.id} test={test} />;\n                          })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      </Container>\n      <ContactInfo show={modalShow} moreInfo={moreInfo} handleClose={handleCloseContactInfo} />\n    </>\n  ) : (\n    <Loader />\n  );\n};\n\nexport default DeleteTestApi;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\n// react-bootstrap components\nimport { Button, Card, Form, Container, Row, Col, Modal } from \"react-bootstrap\";\nimport { useLocation } from \"react-router-dom\";\nimport API from \"api\";\nimport { Storage } from \"aws-amplify\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { AppContext } from \"../context/app-context\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { PDFViewer } from \"@react-pdf/renderer\";\nimport RequisitionPDF from \"components/RequisitionPDF\";\nimport { Bounce } from \"react-activity\";\nimport {\n  getDemoGraphics,\n  formatZipCode,\n  formatTest,\n  isValidPhone,\n  setPhoneNo,\n  formatPhoneNumber,\n  formatDateOfBirthDOB,\n  phoneFormatter,\n  formatQuaratineDisplayDate,\n} from \"../utils\";\nimport \"react-activity/dist/Bounce.css\";\nimport ImageView from \"components/Image/ImageView\";\nimport ReactPDF from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport moment from \"moment\";\nimport api from \"../api\";\nimport QuarantineModal from \"components/Modal/QuarantineModal\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport Loader from \"../components/Loader/Loader\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\n\nfunction ExternalTestCrew(props) {\n  const [test, setTest] = useState();\n  const [site, setSite] = useState();\n  const [lab, setLab] = useState();\n  const [siteContactPhone, setSiteContactPhone] = useState();\n  const [demographics, setDemographics] = useState();\n  const [showAlert, setShowAlert] = useState(false);\n  const [modalShow, setModalShow] = useState(false);\n  const [releaseTo, setReleaseTo] = useState([]);\n  const [showPDF, setShowPDF] = useState();\n  const [signature, setSignature] = useState();\n  const [loading, setLoading] = useState(false);\n  const [hippaConsent, setHippaConsent] = useState(false);\n  const [showRevokeAlert, setShowRevokeAlert] = useState(false);\n  const [showImages, setShowImages] = useState(null);\n  const [showSubmitAlert, setShowSubmitAlert] = useState(false);\n  const [editButton, setEditButton] = useState(true);\n  const [editInfo, setEditInfo] = useState();\n  const [Employee, setEmployee] = useState();\n  const [error, setError] = useState(\"\");\n  const [openQuarantined, setOpenQuaratined] = useState(false);\n  const [allowToEditQuarantine, setAllowToEditQuarantine] = useState(false);\n  const location = useLocation();\n  const appContext = useContext(AppContext);\n\n  const hideAlert = () => {\n    props.history.push(\"/admin/pendingrelease\");\n    setShowAlert(false);\n  };\n\n  const getTest = async (id) => {\n    const model = await API.findExternalTestByID(id);\n    setEditInfo(model);\n    setDemographics(getDemoGraphics(model));\n    setTest(model);\n  };\n\n  const {\n    match: { params },\n  } = props;\n\n  useEffect(() => {\n    setLoading(true);\n    const {\n      match: { params },\n    } = props;\n    getTest(params.testId);\n  }, []);\n\n  useEffect(() => {\n    if (appContext.user) setAllowToEditQuarantine(appContext.user.isSite() || appContext.user.isClient());\n  }, [appContext.user]);\n\n  useEffect(() => {\n    if (editInfo && editInfo.employee_demographics) {\n      const { employee_demographics } = editInfo;\n      setEmployee(employee_demographics);\n    }\n  }, [editInfo]);\n\n  useEffect(() => {\n    const getSite = async (id) => {\n      const model = await API.findSiteByID(id);\n\n      model.length > 0 && setSite(model[0]);\n    };\n\n    const getSignature = async (test) => {\n      /* const hippaRecord = await API.findHippaConsent(test.employeeID, test.siteID);\n      console.log(\"Hippa Record\", hippaRecord);\n      const isHippaConsent = true; */\n      const imgObject = [];\n\n      try {\n        const fileName = `${test.siteID}&&${test.employeeID}&&sig.png`;\n        const sigt = await Storage.get(fileName);\n        setSignature(sigt);\n        imgObject.push({ title: \"HIPAA Consent\", isHIPPA: true, imgSrc: sigt });\n\n        const sig = await Storage.get(`${test.employeeID}&&${test.siteID}&&ins-f.jpeg`);\n        if (sig) imgObject.push({ title: \"Insurance Card Front\", isHIPPA: false, imgSrc: sig });\n        const sig1 = await Storage.get(`${test.employeeID}&&${test.siteID}&&ins-b.jpeg`);\n        if (sig1) imgObject.push({ title: \"Insurance Card Back\", isHIPPA: false, imgSrc: sig1 });\n      } catch (error) {\n        console.log(\"Image Error\", error);\n      }\n\n      if (imgObject.length > 0) {\n        setShowImages(imgObject);\n      }\n      setHippaConsent(true);\n    };\n\n    if (test) {\n      setSite(getSite(test.siteID));\n      console.log(\"appcontext.getLab\", appContext);\n      appContext.getLab(test).then((resp) => setLab(resp));\n\n      getLabByID(test);\n      getSignature(test);\n    }\n\n    setLoading(false);\n  }, [test]);\n\n  useEffect(() => {\n    site && setSiteContactPhone(site.contact_phone);\n  }, [site]);\n\n  const getLabByID = async (test) => {\n    let lab = lab?.find((lab) => lab.id === test.labID);\n    if (!lab) {\n      lab = await API.getLabByID(test?.labID);\n    }\n    setLab(lab);\n  };\n\n  function calculate_age(dob) {\n    const y = dob?.substring(4);\n    const m = parseInt(dob?.substring(0, 2)) - 1;\n    const d = dob?.substring(2, 4);\n    const newDob = new Date(y, m, d);\n    const diff_ms = Date.now() - newDob.getTime();\n    const age_dt = new Date(diff_ms);\n    return Math.abs(age_dt.getUTCFullYear() - 1970);\n  }\n\n  const capitalizeFirst = (string) => {\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  };\n\n  // const handleReleaseTo = (e) => {\n  //   setReleaseTo({...releaseTo, ...e.target.value})\n  //   console.log(e, releaseTo);\n  // };\n\n  const formatIDNo = () => {\n    if (calculate_age(demographics?.dob) < 18) {\n      const id = demographics?.idNumber;\n      if (id && id.length > 5) {\n        return `${id.substring(0, 3)}-${id.substring(3, 5)}-${id.substring(5)}`;\n      }\n      if (id && id.length > 3) {\n        return `${id.substring(0, 3)}-${id.substring(3)}`;\n      }\n      return demographics?.idNumber;\n    }\n    return demographics?.idNumber;\n  };\n\n  const showSubmitButton = () => {\n    if (!test) return true;\n    const st = test.status.toLowerCase();\n    if (st === \"new\") return true;\n    if (st === \"pending\" && !test.result) return true;\n    return false;\n  };\n  const handleSave = async () => {\n    if (!Employee.firstName) {\n      setError(\"First name is required\");\n      return;\n    }\n    if (!Employee.lastName) {\n      setError(\"Last name is required\");\n      return;\n    }\n\n    if (!Employee.email) {\n      setError(\"Email name is required\");\n      return;\n    }\n\n    if (!Employee.phoneNumber) {\n      setError(\"Phone name is required\");\n      return;\n    }\n    if (!isValidPhone(Employee.phoneNumber)) {\n      setError(\"Invalid Phone Number\");\n      return;\n    }\n    if (!Employee.dob) {\n      setError(\"DOB is required\");\n      return;\n    }\n    // if (Employee.zip.length < 5) {\n    //   setError(\"Invalid Postal Code\");\n    //   return;\n    // }\n    if (!isValidZipCode(demographics?.isCode || \"US\", Employee.zip)) {\n      setError(\"Invalid Postal Code\");\n      return;\n    }\n    if (!new RegExp(/[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,15}/g).test(Employee.email)) {\n      setError(\"Invalid Email\");\n      return;\n    }\n    if (window.confirm(\"Are you Sure?\")) {\n      const obj = { ...editInfo, employee_demographics: Employee };\n\n      await api.updateCompleteCrewInfo({ crew: obj, user: appContext.user, isConfirm: false });\n      setEditInfo(obj);\n      setEditButton(true);\n    }\n  };\n  const handelCancelButton = () => {\n    setEditButton(true);\n    getTest(params.testId);\n  };\n  const emailTest = (t) => {\n    setLoading(true);\n    const test = formatTest(t);\n    appContext.getLab(test).then(async (resp) => {\n      ReactPDF.pdf(<PDF test={test} testsLab={resp} parseTestResultForPDF={appContext.parseTestResultForPDF} />)\n        .toBlob()\n        .then(async (data) => {\n          try {\n            const fileName = `${test.id}-result.pdf`;\n            await Storage.put(fileName, data);\n            await API.sendEmailToCrew([{ email: test.email, fileName: `public/${fileName}` }]);\n            await API.updateEmailStatus(test.id);\n            // send sms as well if email is sending first time\n            if (!test.emailSend && test.phoneNumber) {\n              let smsMessage = `Hello, your test results are in for your test with ${test.site_name}, please log into Med Flow to review.`;\n              const siteObj = appContext.sites.find((s) => s.id === test.siteID);\n              if (siteObj && siteObj.messageResulted && result === \"negative\") {\n                smsMessage = siteObj.messageResulted;\n              } else if (siteObj && siteObj.messagePositive && result === \"positive\") {\n                smsMessage = siteObj.messagePositive;\n              }\n              await API.sendSMSNotification(setPhoneNo(test.phoneNumber), smsMessage);\n            }\n            setLoading(false);\n            appContext.showSuccessMessage(\"Email has been sent successfully\");\n          } catch (error) {\n            console.log(\"Error\");\n            setLoading(false);\n          }\n        });\n    });\n  };\n\n  const handleSaveQuarantine = async (obj) => {\n    try {\n      await API.updateQuarantineData(test.id, obj.startDate, obj.endDate);\n      getTest(test.id);\n      appContext.showSuccessMessage(\"Quarantine dates changed successfully\");\n      window.location.reload();\n    } catch (err) {\n      appContext.showErrorMessage(err.message);\n    }\n  };\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setEmployee({ ...Employee, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zipcode: val.zipcode,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setEmployee({ ...Employee, ...addressObj });\n    }\n  };\n\n  return showPDF ? (\n    <Container fluid>\n      <Row>\n        <Col md=\"12\">\n          <Card style={{ padding: 20, marginLeft: \"auto\", marginRight: \"auto\" }} className=\"strpied-tabled-with-hover\">\n            <Card.Header>\n              <Row style={{ alignItems: \"center\" }}>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Requisition Form - {demographics?.finationrstName} {demographics?.lastName}\n                </Card.Title>\n                <Button style={{ marginLeft: \"auto\", marginRight: \"auto\" }} onClick={() => setShowPDF(false)}>\n                  Close\n                </Button>\n              </Row>\n            </Card.Header>\n            <Card.Body className=\"table-full-width table-responsive px-0\">\n              <PDFViewer className=\"pdfWrapper\">\n                <RequisitionPDF test={test} lab={lab} signature={signature} demographics={demographics} />\n                {/* <SitePDF site={pdf} client={client} /> */}\n              </PDFViewer>\n            </Card.Body>\n          </Card>\n        </Col>\n      </Row>\n    </Container>\n  ) : !loading ? (\n    <>\n      <Container fluid>\n        <SweetAlert show={showAlert} success title=\"Success\" onConfirm={hideAlert}>\n          Test Released\n        </SweetAlert>\n        <SweetAlert show={showRevokeAlert} success title=\"Success\" onConfirm={() => setShowRevokeAlert(false)} />\n        <SweetAlert\n          show={showSubmitAlert}\n          success\n          title=\"Success\"\n          onConfirm={() => {\n            window.history.back();\n            setShowSubmitAlert(false);\n          }}\n        >\n          Test Submitted Successfully.\n        </SweetAlert>\n        <Row>\n          <Col md=\"7\">\n            <Card>\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Patient Profile{\" \"}\n                  {calculate_age(demographics?.dob) < 18 ? (\n                    <span style={{ color: \"red\", fontWeight: \"bold\" }}>- Minor</span>\n                  ) : null}\n                </Card.Title>\n              </Card.Header>\n              <Card.Body>\n                <Form>\n                  {/* <Row>\n                    <Col className=\"pr-1\" md=\"5\">\n                      <Form.Group>\n                        <label>Company (disabled)</label>\n                        <Form.Control\n                          defaultValue=\"Creative Code Inc.\"\n                          disabled\n                          placeholder=\"Company\"\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col className=\"px-1\" md=\"3\">\n                      <Form.Group>\n                        <label>Username</label>\n                        <Form.Control\n                          defaultValue=\"michael23\"\n                          placeholder=\"Username\"\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col className=\"pl-1\" md=\"4\">\n                      <Form.Group>\n                        <label htmlFor=\"exampleInputEmail1\">\n                          Email address\n                        </label>\n                        <Form.Control\n                          placeholder=\"Email\"\n                          type=\"email\"\n                        />\n                      </Form.Group>\n                    </Col>\n                  </Row> */}\n                  <Row>\n                    <Col className=\"pr-1\" md=\"3\">\n                      <Form.Group>\n                        <label>First Name</label>\n                        <Form.Control\n                          readOnly={editButton}\n                          plaintext\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          onChange={(e) => setEmployee({ ...Employee, firstName: e.target.value })}\n                          value={Employee?.firstName}\n                          defaultValue={demographics?.firstName}\n                          placeholder={`${!editButton ? \"Enter First Name \" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col className=\"pl-1\" md=\"3\">\n                      <Form.Group>\n                        <label>Last Name</label>\n                        <Form.Control\n                          readOnly={editButton}\n                          plaintext\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          onChange={(e) => setEmployee({ ...Employee, lastName: e.target.value })}\n                          value={Employee?.lastName}\n                          defaultValue={demographics?.lastName}\n                          placeholder={`${!editButton ? \"Enter Last Name \" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                  </Row>\n                  <Row>\n                    <Col md=\"3\">\n                      <Form.Group>\n                        <label>Phone Number</label>\n                        <Form.Control\n                          style={{\n                            textDecoration: \"underline\",\n                            color: \"#A82632\",\n                          }}\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          onMouseOver={(e) => {\n                            editButton ? (e.target.style.cursor = \"pointer\") : (e.target.style.cursor = \"auto\");\n                            e.target.style.textDecoration = \"underline\";\n                          }}\n                          onClick={() =>\n                            editButton ? Employee?.phoneNumber && window.open(`tel:+1${Employee.phoneNumber}`) : false\n                          }\n                          onChange={(e) => setEmployee({ ...Employee, phoneNumber: setPhoneNo(e.target.value) })}\n                          readOnly={editButton}\n                          maxLength={15}\n                          plaintext\n                          value={\n                            editButton\n                              ? formatPhoneNumber(Employee?.phoneNumber)\n                              : phoneFormatter(Employee?.phoneNumber)\n                          }\n                          defaultValue={\n                            test?.phoneNumber &&\n                            `(${test.phoneNumber.substring(0, 3)}) ${test.phoneNumber.substring(\n                              3,\n                              6\n                            )}-${test.phoneNumber.substring(6)}`\n                          }\n                          placeholder={`${!editButton ? \"Enter Phone Number \" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col md=\"3\">\n                      <Form.Group>\n                        <label>Date of Birth</label>\n                        {editButton ? (\n                          <Form.Control\n                            readOnly={editButton}\n                            plaintext\n                            onChange={(e) => setEmployee({ ...Employee, dob: e.target.value })}\n                            value={formatDateOfBirthDOB(Employee?.dob)}\n                            defaultValue={formatDateOfBirthDOB(demographics?.dob)}\n                            placeholder=\"Date of Birth\"\n                            type=\"text\"\n                          />\n                        ) : (\n                          <div>\n                            <SingleDatePicker\n                              onApply={(event, picker) => {\n                                setEmployee({ ...Employee, dob: moment(picker.startDate).format(\"MMDDYYYY\") });\n                              }}\n                              value={formatDateOfBirthDOB(Employee?.dob)}\n                              startDate={formatDateOfBirthDOB(Employee?.dob)}\n                              currentDate={true}\n                            />\n                          </div>\n                        )}\n                      </Form.Group>\n                    </Col>\n                  </Row>\n                  <Row>\n                    <Col md=\"3\">\n                      <Form.Group>\n                        <label>Email Address</label>\n                        <Form.Control\n                          style={{\n                            textDecoration: \"underline\",\n                            color: \"#A82632\",\n                          }}\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          onMouseOver={(e) => {\n                            editButton ? (e.target.style.cursor = \"pointer\") : (e.target.style.cursor = \"auto\");\n                            e.target.style.textDecoration = \"underline\";\n                          }}\n                          onClick={() =>\n                            editButton ? Employee?.email && window.open(`mailto:${Employee.email}`) : false\n                          }\n                          plaintext\n                          onChange={(e) => setEmployee({ ...Employee, email: e.target.value })}\n                          value={Employee?.email}\n                          readOnly={editButton}\n                          defaultValue={test?.email}\n                          placeholder={`${!editButton ? \"Enter Email \" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col md=\"3\">\n                      <Form.Group readOnly={editButton} plaintext>\n                        {calculate_age(demographics?.dob) > 18 ? <label>ID Number</label> : <label>SSN</label>}\n                        <Form.Control\n                          plaintext\n                          readOnly\n                          defaultValue={formatIDNo()}\n                          placeholder=\"ID Number\"\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                  </Row>\n                  <Row>\n                    <Col md=\"3\">\n                      <Form.Group>\n                        <label>Address</label>\n                        {/* <Form.Control\n                          plaintext\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          onChange={(e) => setEmployee({ ...Employee, street: e.target.value })}\n                          readOnly={editButton}\n                          value={Employee?.street}\n                          defaultValue={demographics?.street}\n                          placeholder={`${!editButton ? \"Enter Address  \" : \"\"}`}\n                          type=\"text\"\n                        /> */}\n                        <AutoCompleteAddress\n                          readOnly={editButton}\n                          value={Employee?.street}\n                          handleChange={handleUpdateAddress}\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col md=\"3\">\n                      <Form.Group>\n                        <label>Address 2</label>\n                        <Form.Control\n                          plaintext\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          readOnly={editButton}\n                          onChange={(e) => setEmployee({ ...Employee, street2: e.target.value })}\n                          value={Employee?.street2}\n                          defaultValue={demographics?.street2}\n                          placeholder={`${!editButton ? \"Enter Address 2 \" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                  </Row>\n                  <Row>\n                    <Col className=\"pr-1\" md=\"4\">\n                      <Form.Group>\n                        <label>City</label>\n                        <Form.Control\n                          plaintext\n                          readOnly={editButton}\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          onChange={(e) => setEmployee({ ...Employee, city: e.target.value })}\n                          value={Employee?.city}\n                          defaultValue={demographics?.city}\n                          placeholder={`${!editButton ? \"Enter City\" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col className=\"pl-1\" md=\"4\">\n                      <Form.Group>\n                        <label>State</label>\n                        <Form.Control\n                          plaintext\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          readOnly={editButton}\n                          onChange={(e) => setEmployee({ ...Employee, state: e.target.value })}\n                          value={Employee?.state}\n                          defaultValue={demographics?.state}\n                          placeholder={`${!editButton ? \"Enter Country\" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col className=\"pl-1\" md=\"4\">\n                      <Form.Group>\n                        <label>Postal Code</label>\n                        <Form.Control\n                          plaintext\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          onChange={(e) => setEmployee({ ...Employee, zip: e.target.value })}\n                          readOnly={editButton}\n                          value={formatZipCode(Employee?.zip)}\n                          defaultValue={formatZipCode(demographics?.zip)}\n                          placeholder={`${!editButton ? \"Enter Postal Code \" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                  </Row>\n                  <Row>\n                    <Col md=\"4\">\n                      <Form.Group>\n                        <label>Insurance Carrier</label>\n                        <Form.Control\n                          plaintext\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          readOnly={editButton}\n                          onChange={(e) => setEmployee({ ...Employee, insurance_name: e.target.value })}\n                          value={Employee?.insurance_name}\n                          defaultValue={demographics?.insurance_name}\n                          placeholder={`${!editButton ? \"Enter Insurance Carrier\" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col md=\"4\">\n                      <Form.Group>\n                        <label>Insurance ID</label>\n                        <Form.Control\n                          plaintext\n                          className={`${!editButton ? \"EditStyle\" : \"\"}`}\n                          readOnly={editButton}\n                          onChange={(e) => setEmployee({ ...Employee, insurance_number: e.target.value })}\n                          value={Employee?.insurance_number}\n                          defaultValue={demographics?.insurance_number}\n                          placeholder={`${!editButton ? \"Enter Insurance Id\" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col md=\"4\">\n                      {editButton ? (\n                        <div>\n                          <h6 className=\"vaccination-status-name\">Vaccination Status</h6>\n                          <span className=\"vaccination-status\">{Employee?.isVaccinated ? \"Yes\" : \"No\"}</span>\n                        </div>\n                      ) : (\n                        <div>\n                          <h6 className=\"vaccination-status-name\">Vaccination Status</h6>\n                          <input\n                            className=\"radioBox-wrapper\"\n                            type=\"radio\"\n                            defaultChecked={Employee?.isVaccinated}\n                            name=\"isVaccinated\"\n                            onChange={(e) => setEmployee({ ...Employee, isVaccinated: e.target.checked && true })}\n                          />\n                          <span className=\"radioButton\">Yes</span>\n                          <input\n                            className=\"radioBox-wrapper\"\n                            type=\"radio\"\n                            defaultChecked={!Employee?.isVaccinated}\n                            name=\"isVaccinated\"\n                            onChange={(e) => setEmployee({ ...Employee, isVaccinated: e.target.checked && false })}\n                          />\n                          <span className=\"radioButton\">No</span>\n                        </div>\n                      )}\n                    </Col>\n                  </Row>\n                  <Row>\n                    <Col md=\"4\">\n                      <h6 className=\"vaccination-status-name\">HIPAA Consent</h6>\n                      <span className=\"vaccination-status\">{hippaConsent ? \"True\" : \"False\"}</span>\n                    </Col>\n                    <Col md=\"4\">\n                      <h6 className=\"vaccination-status-name\">White Glove</h6>\n                      <span className=\"vaccination-status\">{Employee?.whiteGlove ? \"True\" : \"False\"}</span>\n                    </Col>\n                    <Col md=\"4\">\n                      <h6 className=\"vaccination-status-name\">Tester Designation</h6>\n                      <span className=\"vaccination-status\">{Employee?.employeeType ? Employee?.employeeType : \"\"}</span>\n                    </Col>\n                  </Row>\n                  {allowToEditQuarantine && (\n                    <Row>\n                      <Col md=\"4\">\n                        <h6 className=\"vaccination-status-name\">Quarantined Start</h6>\n                        <span className=\"vaccination-status\">{formatQuaratineDisplayDate(test?.quarantinedStart)}</span>\n                      </Col>\n                      <Col md=\"4\">\n                        <h6 className=\"vaccination-status-name\">Quarantined End</h6>\n                        <span className=\"vaccination-status\">{formatQuaratineDisplayDate(test?.quarantinedEnd)}</span>\n                      </Col>\n                    </Row>\n                  )}\n\n                  <Row>\n                    <Col md=\"12\">\n                      <Form.Group>\n                        <label>Notes</label>\n                        <Form.Control cols=\"80\" defaultValue=\"\" placeholder=\"\" rows=\"4\" as=\"textarea\" />\n                      </Form.Group>\n                    </Col>\n                  </Row>\n                  {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n                  {location.state?.pendingRelease && test?.result !== \"negative\" && (\n                    <Button\n                      className=\"btn-fill pull-right createButtons\"\n                      variant=\"warning\"\n                      style={{\n                        marginRight: 10,\n                        marginTop: 10,\n                      }}\n                      onClick={async () => {\n                        // const result = await API.releaseTest(test);\n                        // if (result) {\n                        //   setShowAlert(true);\n                        // }\n                        setModalShow(true);\n                      }}\n                    >\n                      Release Test Results\n                    </Button>\n                  )}\n                  {location.state?.pendingRelease && (\n                    <>\n                      <Button\n                        className=\"btn-fill float-right createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        variant=\"danger\"\n                        onClick={async () => {\n                          const result = await API.sendSMSNotification(\n                            test.phoneNumber,\n                            \"Hello, can you please report back to your testing site for further information regarding your test.\"\n                          );\n                          if (result) {\n                            alert(\"The crew member has been sent a text message to be retested.\");\n                          }\n                        }}\n                      >\n                        Retest\n                      </Button>\n                      <Button\n                        className=\"btn-fill float-right createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        variant=\"warning\"\n                        onClick={async () => setShowPDF(true)}\n                      >\n                        Requisition Form\n                      </Button>\n                    </>\n                  )}\n                  {location.state?.unprocessed && (\n                    <>\n                      <Button\n                        className=\"btn-fill float-right createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        variant=\"warning\"\n                        onClick={async () => setShowPDF(true)}\n                      >\n                        Requisition Form\n                      </Button>\n                    </>\n                  )}\n                  {location.state?.labPortal && (\n                    <Button\n                      className=\"btn-fill float-right createButtons\"\n                      style={{\n                        marginRight: 10,\n                        marginTop: 10,\n                      }}\n                      variant=\"warning\"\n                      onClick={async () => setShowPDF(true)}\n                    >\n                      Requisition Form\n                    </Button>\n                  )}\n                  {location.state?.admin && (\n                    <Button\n                      className=\"btn-fill float-right createButtons\"\n                      style={{\n                        marginRight: 10,\n                        marginTop: 10,\n                      }}\n                      variant=\"warning\"\n                      onClick={async () => setShowPDF(true)}\n                    >\n                      Requisition Form\n                    </Button>\n                  )}\n                  {test?.result && (\n                    <Button\n                      className=\"btn-fill float-right createButtons\"\n                      style={{\n                        marginRight: 10,\n                        marginTop: 10,\n                      }}\n                      variant=\"warning\"\n                      onClick={async () => emailTest(test)}\n                    >\n                      Resend Results\n                    </Button>\n                  )}\n\n                  {(test?.result === \"Positive\" || test?.result === \"Fail\") && allowToEditQuarantine && (\n                    <Button\n                      className=\"btn-fill float-right createButtons\"\n                      style={{\n                        marginRight: 10,\n                        marginTop: 10,\n                      }}\n                      variant=\"warning\"\n                      onClick={() => setOpenQuaratined(true)}\n                    >\n                      Quarantined\n                    </Button>\n                  )}\n                  <Button\n                    className=\"btn-fill float-right createButtons\"\n                    style={{\n                      marginRight: 10,\n                      marginTop: 10,\n                    }}\n                    variant=\"warning\"\n                    onClick={() => setShowRevokeAlert(true)}\n                  >\n                    Revoke\n                  </Button>\n                  {/* {editButton && (\n                    <Button\n                      className=\"btn-fill float-right createButtons\"\n                      style={{\n                        marginRight: 10,\n                        marginTop: 10,\n                      }}\n                      variant=\"warning\"\n                      onClick={() => setEditButton(false)}\n                    >\n                      Edit Info\n                    </Button>\n                  )}\n                  {!editButton && (\n                    <Button\n                      className=\"btn-fill float-right createButtons\"\n                      style={{\n                        marginRight: 10,\n                        marginTop: 10,\n                      }}\n                      variant=\"success\"\n                      onClick={handleSave}\n                    >\n                      Save\n                    </Button>\n                  )}\n                  {!editButton && (\n                    <Button\n                      className=\"btn-fill float-right createButtons\"\n                      style={{\n                        marginRight: 10,\n                        marginTop: 10,\n                      }}\n                      variant=\"secondary\"\n                      onClick={handelCancelButton}\n                    >\n                      Cancel\n                    </Button>\n                  )} */}\n\n                  <div className=\"clearfix\" />\n                </Form>\n              </Card.Body>\n            </Card>\n          </Col>\n          <Col md=\"5\">\n            <Card>\n              <Card.Header\n                as=\"h5\"\n                style={{\n                  marginBottom: 10,\n                  fontWeight: \"bold\",\n                  color: \"#565656\",\n                }}\n              >\n                Test Details\n              </Card.Header>\n              <Card.Body>\n                <Card.Text>Type: {demographics?.externalTestType}</Card.Text>\n                <Card.Text>Date Collected: {moment(test?.createdAt).format(\"llll\")}</Card.Text>\n                <Card.Text>Show: {test?.site_name}</Card.Text>\n                {test?.result && <Card.Text>Date Processed: {moment(test?.updatedAt).format(\"llll\")}</Card.Text>}\n                <Card.Text>Result: {demographics?.externalTestResult}</Card.Text>\n                <Card.Text>\n                  Test Date:\n                  {demographics?.externalTestResult\n                    ? demographics?.externalTestDate\n                      ? moment(demographics?.externalTestDate).format(\"MM-DD-YYYY HH:mm:ss\")\n                      : moment(demographics?.externalTestDate).format(\"MM-DD-YYYY HH:mm:ss\")\n                    : \"\"}\n                </Card.Text>\n                <Card.Text>Tester: {test?.tester_name}</Card.Text>\n              </Card.Body>\n            </Card>\n            {showImages && (\n              <Card>\n                <Card.Header\n                  as=\"h5\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  HIPPA Signature\n                </Card.Header>\n                <Card.Body className=\"imageWrapper\">\n                  {showImages\n                    .filter((i) => i.isHIPPA === true)\n                    .map((showImg, index) => {\n                      return <ImageView key={index} imgSrc={showImg.imgSrc} />;\n                    })}\n                </Card.Body>\n              </Card>\n            )}\n            {showImages && (\n              <Card>\n                <Card.Header\n                  as=\"h5\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Insurance Card Images\n                </Card.Header>\n                <Card.Body className=\"imageWrapper\">\n                  {showImages\n                    .filter((i) => i.isHIPPA === false)\n                    .map((showImg, index) => {\n                      return <ImageView key={index} imgSrc={showImg.imgSrc} />;\n                    })}\n                </Card.Body>\n              </Card>\n            )}\n            <Card>\n              <Card.Header\n                as=\"h5\"\n                style={{\n                  marginBottom: 10,\n                  fontWeight: \"bold\",\n                  color: \"#565656\",\n                }}\n              >\n                Vaccination Card Image\n              </Card.Header>\n              <Card.Body className=\"imageWrapper\">{/*  <ImageView key={index} imgSrc={showImg.imgSrc} /> */}</Card.Body>\n            </Card>\n            <Card>\n              <Card.Header\n                as=\"h5\"\n                style={{\n                  marginBottom: 10,\n                  fontWeight: \"bold\",\n                  color: \"#565656\",\n                }}\n              >\n                External Test Image\n              </Card.Header>\n              <Card.Body className=\"imageWrapper\">{/*  <ImageView key={index} imgSrc={showImg.imgSrc} /> */}</Card.Body>\n            </Card>\n          </Col>\n        </Row>\n      </Container>\n      <Modal\n        show={modalShow}\n        // style={{ transform: \"translate(0, -30%)\" }}\n        animation={true}\n        onHide={() => setModalShow(false)}\n        centered\n        size={\"md\"}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title id=\"contained-modal-title-vcenter\">Release Test Results</Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n          <p>Select all that apply: </p>\n          <div className=\"checkboxRow\">\n            <label className=\"checkboxLabel\">\n              <input\n                disabled={!siteContactPhone}\n                value=\"site\"\n                onChange={(e) => {\n                  if (e.target.checked) {\n                    setReleaseTo({\n                      ...releaseTo,\n                      [e.target.value]: siteContactPhone,\n                    });\n                  } else {\n                    const newReleaseTo = releaseTo;\n                    delete newReleaseTo[e.target.value];\n                    setReleaseTo(newReleaseTo);\n                  }\n                }}\n                className=\"releaseCheckbox\"\n                type=\"checkbox\"\n              />\n              Health and Safety Officer\n            </label>\n            <label>\n              <input\n                value=\"crew\"\n                onChange={(e) => {\n                  if (e.target.checked) {\n                    setReleaseTo({\n                      ...releaseTo,\n                      [e.target.value]: `+1${test?.phoneNumber.replace(/\\D/g, \"\")}`,\n                    });\n                  } else {\n                    const newReleaseTo = releaseTo;\n                    delete newReleaseTo[e.target.value];\n                    setReleaseTo(newReleaseTo);\n                  }\n                }}\n                className=\"releaseCheckbox\"\n                type=\"checkbox\"\n              />\n              Crew Member\n            </label>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button className=\"modalButtons\" variant=\"secondary\" onClick={() => setModalShow(false)}>\n            Cancel\n          </Button>\n          <Button\n            className=\"modalButtons\"\n            variant=\"primary\"\n            onClick={async () => {\n              await API.releaseTest(test);\n              releaseTo.site &&\n                (await API.sendSMSNotification(\n                  releaseTo.site,\n                  `Hello, there was a positive (${test.test_type}) test result for ${site.name}. please login to your Health & Safety Portal to review.`\n                ));\n              releaseTo.crew &&\n                (await API.sendSMSNotification(\n                  releaseTo.crew,\n                  `Hello, your test results are in for your test with ${site.name}, please log into Med Flow to review.`\n                ));\n              await appContext.resetPendingTests();\n              props.history.push(\"/admin/pendingrelease\");\n            }}\n          >\n            Release Results\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      {openQuarantined && (\n        <QuarantineModal test={test} handleSave={handleSaveQuarantine} handleClose={() => setOpenQuaratined(false)} />\n      )}\n    </>\n  ) : (\n    <Loader />\n  );\n}\n\nexport default ExternalTestCrew;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport ReactCrop from \"react-image-crop\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport \"react-image-crop/dist/ReactCrop.css\";\n\nconst ImageCropModal = (props) => {\n  const { selectedImage, handleConfirm } = props;\n  const [blobFile, setBlobFile] = useState();\n  const [crop, setCrop] = useState();\n\n  useEffect(() => {\n    setTimeout(() => {\n      setCrop({\n        unit: \"%\", // Can be 'px' or '%'\n        x: 25,\n        y: 25,\n        width: 50,\n        height: 50,\n        aspect: 20 / 16,\n      });\n    }, 300);\n  },[]);\n\n  const imageRef = useRef();\n\n  const closeModal = async (val) => {\n    if (val) {\n      const data = await getCroppedImg(imageRef.current, \"profileImage.jpeg\");\n      handleConfirm(val, data);\n    } else {\n      handleConfirm(val, null);\n    }\n  };\n\n  const getCroppedImg = (image, fileName) => {\n    const canvas = document.createElement(\"canvas\");\n    const scaleX = image.naturalWidth / image.width;\n    const scaleY = image.naturalHeight / image.height;\n    canvas.width = crop.width;\n    canvas.height = crop.height;\n    const ctx = canvas.getContext(\"2d\");\n\n    ctx.drawImage(\n      image,\n      crop.x * scaleX,\n      crop.y * scaleY,\n      crop.width * scaleX,\n      crop.height * scaleY,\n      0,\n      0,\n      crop.width,\n      crop.height\n    );\n\n    return new Promise((resolve, reject) => {\n      canvas.toBlob((blob) => {\n        if (!blob) {\n          console.error(\"Canvas is empty\");\n          return;\n        }\n        blob.name = fileName;\n        setBlobFile(blob);\n        resolve(blob);\n      }, \"image/jpeg\");\n    });\n  };\n\n  return (\n    <Modal\n      show\n      // style={{ transform: \"translate(0, -30%)\" }}\n      animation={true}\n      onHide={() => {\n        closeModal(false);\n      }}\n      centered\n      size={\"xl\"}\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 modal-title h4\" id=\"contained-modal-title-vcenter\">\n          Crop Image\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n        <ReactCrop\n          crop={crop}\n          onChange={(c) => setCrop(c)}\n          onComplete={(c) => {\n            console.log(\"Crop \", c);\n            setCrop(c);\n          }}\n        >\n          <img ref={imageRef} src={ selectedImage instanceof Object && URL.createObjectURL(selectedImage)} />\n        </ReactCrop>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button\n          className=\"modalButtons\"\n          variant=\"primary\"\n          onClick={() => {\n            closeModal(false);\n          }}\n        >\n          Go back\n        </Button>\n        <Button\n          className=\"modalButtons\"\n          variant=\"danger\"\n          onClick={() => {\n            closeModal(true);\n          }}\n        >\n          Confirm\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ImageCropModal;\n","import React, { useState, useEffect, useContext, useMemo, useRef } from \"react\";\n\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n  DropdownButton,\n  Dropdown,\n  Modal,\n  InputGroup,\n  FormControl,\n} from \"react-bootstrap\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport { AppContext } from \"context/app-context\";\nimport { PAGE_LIMIT, RESULT_COLOR, TOTAL_TEST_HEADER } from \"../constant\";\nimport {\n  changeSort,\n  formatDateOfBirthDOB,\n  formatPhoneNumber,\n  calculateTdWidth,\n  formatUTCDate,\n  formatTest,\n} from \"../utils\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport Loader from \"./Loader/Loader\";\n\nconst TestView = (props) => {\n  const { testData, loader, handleResultPDF } = props;\n  const componentRef = useRef();\n  const [width, setWidth] = useState(0);\n  const [errorMessage, setErrorMessage] = useState(\"\");\n\n  const appContext = useContext(AppContext);\n  useEffect(() => {\n    setWidth(componentRef.current?.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current?.offsetWidth);\n  };\n\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n  useEffect(() => {\n    setTimeout(() => {\n      setErrorMessage(\"\");\n    }, 4000);\n  }, [errorMessage]);\n\n  const tdWidth = calculateTdWidth(width, 11);\n\n  const importResult = [];\n  const [tests, setTests] = useState(testData);\n  const [filteredTests, setFilteredTests] = useState(testData);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n\n  useEffect(() => {\n    setFilteredTests(testData);\n  }, [testData]);\n\n  const selectedItem = [\n    \"createdAt\",\n    \"firstName\",\n    \"lastName\",\n    \"dob\",\n    \"phoneNumber\",\n    \"email\",\n    \"siteID\",\n    \"sequenceNo\",\n    \"status\",\n    \"result\",\n    \"test_type\",\n  ];\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  useEffect(() => {\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredTests,\n      setFilteredTests,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName,\n      appContext.parseResult\n    );\n  }, [sortBy, sortDescending]);\n\n  const handleChangePage = (page) => setCurrentPage(page);\n\n  const TableRow = ({ test }) => {\n    const { employee_demographics } = test;\n    return (\n      <tr>\n        <td className=\"ellipsis\" title={formatUTCDate(test.createdAt)}>\n          {formatUTCDate(test.createdAt)}\n        </td>\n        <td style={{ textAlign: \"center\" }} className=\"ellipsis\">\n          {appContext.getSiteName(test.siteID)}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          {appContext.getLabName(test.labID)}\n        </td>\n        <td style={{ textAlign: \"center\" }} className=\"ellipsis\">\n          {test.status}\n        </td>\n        <td style={{ textAlign: \"center\" }}>\n          <span\n            onMouseOver={(e) => {\n              e.target.style.cursor = \"pointer\";\n              e.target.style.textDecoration = \"none\";\n            }}\n            onMouseLeave={(e) => {\n              e.target.style.textDecoration = \"underline\";\n            }}\n            style={{\n              color: RESULT_COLOR[test.result?.toLowerCase()],\n              textDecoration: \"underline\",\n            }}\n            onClick={() => handleResultPDF(test)}\n          >\n            {appContext.parseResult(test)}\n          </span>\n        </td>\n        <td style={{ textAlign: \"center\" }}>{test.sequenceNo}</td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {test.test_type || \"-\"}\n        </td>\n      </tr>\n    );\n  };\n\n  return (\n    <>\n      {loader ? (\n        <Loader cssClass=\"horizontalLoader\" />\n      ) : (\n        <Row>\n          <Col md=\"12\">\n            <Card className=\"striped-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Total Tests ({filteredTests.length})\n                </Card.Title>\n                <MFPagination currentPage={currentPage} handleChangePage={handleChangePage} totalPages={totalPages} />\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable overFlow-y-hidden\">\n                  <Table className=\"table-hover table-striped\">\n                    <thead ref={componentRef}>\n                      <tr>\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"createdAt\"\n                          title=\"Date Tested\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"siteID\"\n                          title=\"Show\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"labID\"\n                          title=\"Lab\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"status\"\n                          title=\"Status\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"result\"\n                          title=\"Result\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"sequenceNo\"\n                          title=\"Sequence\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"test_type\"\n                          title=\"Test Type\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                      </tr>\n                    </thead>\n                    <tbody>\n                      {testsToMap &&\n                        testsToMap.map((test) => {\n                          return <TableRow key={test.id} test={test} />;\n                        })}\n                    </tbody>\n                  </Table>\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n      )}\n    </>\n  );\n};\n\nexport default TestView;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport { Button, Modal, Form, Container, Row, Col } from \"react-bootstrap\";\nimport { useLocation } from \"react-router-dom\";\nimport API from \"api\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport Default_Profile from \"assets/img/default_profile.png\";\nimport ImageInput from \"./Input/ImageInput\";\nimport { Storage } from \"aws-amplify\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport Loader from \"./Loader/Loader\";\nimport ImageCropModal from \"./Input/ImageCropModal\";\nimport { async } from \"@firebase/util\";\nimport TestView from \"./TestView\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport { formatPhoneNumber, phoneFormatter, formatDateOfBirthDOB, formatZipCode, setPhoneNo } from \"utils\";\nimport moment from \"moment\";\nimport ImageView from \"./Image/ImageView\";\nimport ErrorMessage from \"./Message/ErrorMessage\";\nimport AutoCompleteAddress from \"./AutoCompleteAddress\";\n\nconst CrewProfile = (props) => {\n  const { employee, handleSave, handleClose } = props;\n  const [newEmp, setNewEmp] = useState(employee);\n  const [tests, setTests] = useState([]);\n  const [profileImage, setProfileImage] = useState(Default_Profile);\n  const [copyImage, setCopyImage] = useState(Default_Profile);\n  const [showImageCroper, setShowImageCropper] = useState(false);\n  const [vaccinationImage, setVaccinationImage] = useState(\"\");\n  const [externalTestImage, setExternalTestImage] = useState(\"\");\n  const [editButton, setEditButton] = useState(true);\n  const [phoneError, setPhoneError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const [error, setError] = useState(\"\");\n  const [loadingTestView, setLoadingTestView] = useState(false)\n  useEffect(() => {\n    handleViewTest(employee.id);\n  }, []);\n  useEffect(async () => {\n    if (employee) {\n      await getFileFromStorage(employee.profileImage, setProfileImage);\n      await getFileFromStorage(employee.vaccinationCardImage, setVaccinationImage);\n      await getFileFromStorage(employee.externalTestImage, setExternalTestImage);\n    }\n  }, [employee]);\n  const getFileFromStorage = async (file, setImage) => {\n    if (file) {\n      try {\n        const path = await Storage.get(file);\n        setImage(path);\n        console.log(\"path\", path);\n        return true;\n      } catch {\n        console.log(\"Image loading fail\");\n      }\n    } else {\n      return false;\n    }\n  };\n  const handleViewTest = async (id) => {\n    // const tests = await API.getTestGraphQL({ employeeID: { eq: id } });\n    setLoadingTestView(true)\n    const tests = await API.getAdminTestList(id);\n    console.log(\"Tests Count\", tests, id);\n    setTests(tests);\n    setLoadingTestView(false)\n  };\n\n  console.log(\"newEmployee\", newEmp);\n  const handleCropDone = (isConfirm, fileData) => {\n    setShowImageCropper(false);\n    if (isConfirm && fileData) {\n      setProfileImage(new File([fileData], \"profileImage.jpeg\"));\n    }else{\n      setProfileImage(profileImage)\n    }\n  };\n  \n  const ImageUpload = async (fileName, image) => {\n    if (image instanceof Object) {\n      await Storage.put(fileName, image);\n      return fileName;\n    } else {\n      return \"\";\n    }\n  };\n  const handleSaveChange = async () => {\n    if (!newEmp.first) {\n      setError(\"First name is required\");\n      return;\n    }\n    if (!newEmp.last) {\n      setError(\"Last name is required\");\n      return;\n    }\n\n    if (!newEmp.email) {\n      setError(\"Email name is required\");\n      return;\n    }\n\n    if (!newEmp.phone_number) {\n      setError(\"Phone name is required\");\n      return;\n    }\n    if (newEmp.dob && !moment(newEmp.dob, \"YYYY-MM-DD\", true).isValid()) {\n      setError(\"Invalid Date of Birth\");\n      return;\n    }\n    if (phoneError) {\n      setError(\"Invalid Phone Number\");\n      return;\n    }\n    if (!new RegExp(/[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,15}/g).test(newEmp.email)) {\n      setError(\"Invalid Email\");\n      return;\n    }\n    setLoading(true);\n    const models = await API.getEmployeeByIdGraphQl(newEmp.id);\n    const versionNo = models[0]._version;\n    console.log(\"versionNo\", versionNo);\n    const fileName = `${newEmp.mdID ? newEmp.mdID : newEmp.id}/${newEmp.id}-${\n      newEmp.phone_number\n    }-${moment().toISOString()}`;\n\n    const ProfileFileName = await ImageUpload(`${fileName}-profile-image.png`, profileImage);\n\n    const vaccinationFileName = await ImageUpload(`${fileName}-vaccination-card.png`, vaccinationImage);\n\n    const externalImageFileName = await ImageUpload(`${fileName}-external-test.png`, externalTestImage);\n    console.log(\"ProfileFileName\", vaccinationFileName, externalImageFileName);\n    const phone = formatPhoneNumberIntl(newEmp.phone_number);\n    const phoneArr = phone.split(\" \");\n    const countryCode = phoneArr[0];\n    const Emp = {\n      ...newEmp,\n      profileImage: ProfileFileName ? ProfileFileName : employee.profileImage,\n      vaccinationCardImage: vaccinationFileName ? vaccinationFileName : employee.vaccinationCardImage,\n      externalTestImage: externalImageFileName ? externalImageFileName : employee.externalTestImage,\n      countryCode: countryCode,\n      _version: versionNo,\n    };\n    handleSave(Emp)\n  };\n\n  const handleEdit = async (isEdit) => {\n    if (isEdit) {\n      setNewEmp(employee);\n      const profile = await getFileFromStorage(employee.profileImage, setProfileImage);\n      if (!profile) setProfileImage(Default_Profile);\n      const vacc = await getFileFromStorage(employee.vaccinationCardImage, setVaccinationImage);\n      console.log(\"vacc\", vacc);\n      if (!vacc) setVaccinationImage(\"\");\n      const externalImg = await getFileFromStorage(employee.externalTestImage, setExternalTestImage);\n      if (!externalImg) setExternalTestImage(\"\");\n    }\n    setEditButton(isEdit);\n  };\n\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setNewEmp({ ...newEmp, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zipcode: val.zipcode,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setNewEmp({ ...newEmp, ...addressObj });\n    }\n  };\n\n  return (\n    <>\n      {!loading && newEmp && employee ? (\n          <Modal\n            show\n            animation={true}\n            size=\"xl\"\n            onHide={() => {\n              handleClose();\n            }}\n            style={{ paddingLeft: \"0\" }}\n            centered\n            scrollable\n          >\n              <Modal.Header closeButton>\n                <Modal.Title\n                  className=\"my-0\" \n                  id=\"contained-modal-title-vcenter\"\n                >\n                  {`${employee.first.toUpperCase()} ${employee.last.toUpperCase()} PROFILE`}\n                </Modal.Title>\n              </Modal.Header>\n              <Modal.Body>\n                <Form className=\"employeeProfile\">\n                  <Row>\n                    <Col md=\"7\">\n                      <Row className=\"my-2\">\n                        <Col className=\"pr-1\" md=\"6\">\n                          <Form.Group>\n                            <label>First Name</label>\n                            <Form.Control\n                              readOnly={editButton}\n                              plaintext\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setNewEmp({ ...newEmp, first: e.target.value })}\n                              value={newEmp.first}\n                              placeholder={`${!editButton ? \"Enter First Name \" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </Col>\n                        <Col className=\"pl-1\" md=\"6\">\n                          <Form.Group>\n                            <label>Last Name</label>\n                            <Form.Control\n                              readOnly={editButton}\n                              plaintext\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setNewEmp({ ...newEmp, last: e.target.value })}\n                              value={newEmp.last}\n                              placeholder={`${!editButton ? \"Enter Last Name \" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </Col>\n                      </Row>\n                      <Row className=\"my-2\">\n                        <Col md=\"6\">\n                          <Form.Group>\n                            <label>Phone Number</label>\n                            {editButton ? (\n                              <Form.Control\n                                style={{\n                                  textDecoration: \"underline\",\n                                  color: \"#A82632\",\n                                }}\n                                className={`${!editButton ? \"modalInput\" : \"\"}`}\n                                onMouseOver={(e) => {\n                                  editButton ? (e.target.style.cursor = \"pointer\") : (e.target.style.cursor = \"auto\");\n                                  e.target.style.textDecoration = \"underline\";\n                                }}\n                                onClick={() =>\n                                  editButton\n                                    ? newEmp.phone_number && window.open(`tel:+1${newEmp.phone_number}`)\n                                    : false\n                                }\n                                readOnly={editButton}\n                                maxLength={15}\n                                plaintext\n                                value={\n                                  editButton\n                                    ? formatPhoneNumber(newEmp.phone_number)\n                                    : phoneFormatter(newEmp.phone_number)\n                                }\n                                placeholder={`${!editButton ? \"Enter Phone Number \" : \"\"}`}\n                                type=\"text\"\n                              />\n                            ) : (\n                              <PhoneNoInput\n                                error={setPhoneError}\n                                handleChange={(e) => {\n                                  setNewEmp({ ...newEmp, phone_number: e });\n                                }}\n                                value={newEmp.phone_number}\n                              />\n                            )}\n                          </Form.Group>\n                        </Col>\n                        <Col md=\"6\">\n                          <Form.Group>\n                            <label>Date of Birth</label>\n                              <Form.Control\n                                readOnly={editButton}\n                                plaintext\n                                className={`${!editButton ? \"modalInput\" : \"\"}`}\n                                onChange={(e) => setNewEmp({ ...newEmp, dob: e.target.value })}\n                                value={newEmp.dob}\n                                placeholder=\"Date of Birth\"\n                                type=\"date\"\n                              />\n                          </Form.Group>\n                        </Col>\n                      </Row>\n                      <Row className=\"my-2\">\n                        <Col md=\"6\">\n                          <Form.Group>\n                            <label>Email Address</label>\n                            <Form.Control\n                              style={{\n                                textDecoration: \"underline\",\n                                color: \"#A82632\",\n                              }}\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onMouseOver={(e) => {\n                                editButton ? (e.target.style.cursor = \"pointer\") : (e.target.style.cursor = \"auto\");\n                                e.target.style.textDecoration = \"underline\";\n                              }}\n                              onClick={() =>\n                                editButton ? newEmp.email && window.open(`mailto:${newEmp.email}`) : false\n                              }\n                              plaintext\n                              onChange={(e) => setNewEmp({ ...newEmp, email: e.target.value })}\n                              value={newEmp.email}\n                              readOnly={editButton}\n                              placeholder={`${!editButton ? \"Enter Email \" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </Col>\n                        <Col md=\"6\">\n                          <Form.Group>\n                            <label>Gender</label>\n                            <div className=\"d-flex align-items-center\">\n                              <Form.Check\n                                className=\"radioBox\"\n                                type=\"radio\"\n                                disabled={editButton}\n                                label=\"Male\"\n                                checked={newEmp.sex === \"M\"}\n                                name=\"gender\"\n                                onChange={(e) => setNewEmp({ ...newEmp, sex: e.target.checked && \"M\" })}\n                              />\n                              <Form.Check\n                                className=\"radioBox\"\n                                type=\"radio\"\n                                disabled={editButton}\n                                checked={newEmp.sex === \"F\"}\n                                label=\"Female\"\n                                name=\"gender\"\n                                onChange={(e) => setNewEmp({ ...newEmp, sex: e.target.checked && \"F\" })}\n                              />\n                              <Form.Check\n                                className=\"radioBox\"\n                                type=\"radio\"\n                                checked={newEmp.sex === \"X\"}\n                                disabled={editButton}\n                                label=\"Not Specified\"\n                                name=\"gender\"\n                                onChange={(e) => setNewEmp({ ...newEmp, sex: e.target.checked && \"X\" })}\n                              />\n                            </div>\n                          </Form.Group>\n                        </Col>\n                      </Row>\n                      <Row className=\"my-2\">\n                        <Col md=\"6\">\n                          <Form.Group>\n                            <label>Address</label>\n                            {/* <Form.Control\n                              plaintext\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setNewEmp({ ...newEmp, street: e.target.value })}\n                              readOnly={editButton}\n                              value={newEmp.street}\n                              placeholder={`${!editButton ? \"Enter Address  \" : \"\"}`}\n                              type=\"text\"\n                            /> */}\n                             <AutoCompleteAddress readOnly={editButton} value={newEmp.street} handleChange={handleUpdateAddress} />\n                          </Form.Group>\n                        </Col>\n                        <Col md=\"6\">\n                          <Form.Group>\n                            <label>Address 2</label>\n                            <Form.Control\n                              plaintext\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              readOnly={editButton}\n                              onChange={(e) => setNewEmp({ ...newEmp, street2: e.target.value })}\n                              value={newEmp.street2}\n                              placeholder={`${!editButton ? \"Enter Address 2 \" : \"\"}`}\n                              type=\"text\"\n                            />\n                               \n                          </Form.Group>\n                        </Col>\n                      </Row>\n                      <Row className=\"my-2\">\n                        <Col className=\"pr-1\" md=\"6\">\n                          <Form.Group>\n                            <label>City</label>\n                            <Form.Control\n                              plaintext\n                              readOnly={editButton}\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setNewEmp({ ...newEmp, city: e.target.value })}\n                              value={newEmp.city}\n                              placeholder={`${!editButton ? \"Enter City\" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </Col>\n                        <Col className=\"pl-1\" md=\"6\">\n                          <Form.Group>\n                            <label>State</label>\n                            <Form.Control\n                              plaintext\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              readOnly={editButton}\n                              onChange={(e) => setNewEmp({ ...newEmp, state: e.target.value })}\n                              value={newEmp.state}\n                              placeholder={`${!editButton ? \"Enter Country\" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </Col>\n                      </Row>\n                      <Row className=\"my-2\">\n                        <Col className=\"pl-1\" md=\"6\">\n                          <Form.Group>\n                            <label>Postal Code</label>\n                            <Form.Control\n                              plaintext\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setNewEmp({ ...newEmp, zip: e.target.value })}\n                              readOnly={editButton}\n                              value={formatZipCode(newEmp.zip)}\n                              placeholder={`${!editButton ? \"Enter Postal Code \" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </Col>\n                      </Row>\n                    </Col>\n                    <Col md=\"5\" className=\"align-items-center\">\n                      <Col md=\"12\" className=\"colFirstWrapper\">\n                        <div className=\"form-group-wrapper\">\n                          <label className=\"modalLineHeaders\">Profile Image:</label>\n                          <ImageInput\n                            type=\"profile\"\n                            setSelectedImage={setProfileImage}\n                            selectedImage={profileImage}\n                            showCropDialog={setShowImageCropper}\n                            setCopyImage={setCopyImage}\n                          />\n                        </div>\n                      </Col>\n                      <Col md=\"12\" className=\"my-5\">\n                        {!editButton ? (\n                          <ImageInput\n                            className=\"fileDesign\"\n                            cssClass=\"vaccinationField\"\n                            title=\"Vaccination Certificate\"\n                            setSelectedImage={setVaccinationImage}\n                            selectedImage={vaccinationImage}\n                          />\n                        ) : (\n                          <div className=\"form-group-wrapper employeeImageView\">\n                            <label>Vaccination Certificate:</label>\n                            {vaccinationImage &&  <ImageView imgSrc={vaccinationImage} />}\n                          </div>\n                        )}\n                      </Col>\n                      <Col md=\"12\" className=\"my-5\">\n                        {!editButton ? (\n                          <ImageInput\n                            cssClass=\"vaccinationField\"\n                            title=\"External Test Image\"\n                            setSelectedImage={setExternalTestImage}\n                            selectedImage={externalTestImage}\n                          />\n                        ) : (\n                          <div className=\"form-group-wrapper employeeImageView\">\n                            <label>External Test Image:</label>\n                           {externalTestImage && <ImageView imgSrc={externalTestImage} />}\n                          </div>\n                        )}\n                      </Col>\n                    </Col>\n                  </Row>\n                </Form>\n                {tests && <TestView testData={tests} loader={loadingTestView}/>}\n                \n              </Modal.Body>\n              <Modal.Footer>\n                <Button onClick={handleClose}>Close</Button>\n                <div style={{ height: \"3vh\" }}>\n                  {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n                </div>\n              <div>\n                <Button\n                  className=\"mx-2\"\n                  variant={editButton ? \"primary\" : \"secondary\"}\n                  onClick={() => handleEdit(!editButton)}\n                >\n                  {editButton ? \"Edit\" : \"Cancel\"}\n                </Button>\n                <Button className=\"mx-2\" onClick={handleSaveChange} disabled={editButton}>\n                  Save\n                </Button>\n                </div>\n              </Modal.Footer>\n              {showImageCroper && (\n                <ImageCropModal selectedImage={copyImage} handleConfirm={handleCropDone}></ImageCropModal>\n              )}\n          </Modal>\n      ) : (\n        <Loader />\n      )}\n    </>\n  );\n};\n\nexport default CrewProfile;\n","import React, { useState, useEffect } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\n\nconst CreateTestLabModal = (props) => {\n  const { handleSave, handleClose, labs } = props;\n  const [testType, setTestType] = useState(\"\");\n  const [error, setError] = useState(\"\");\n\n  useEffect(() => {\n    setTimeout(() => {\n      setError(\"\");\n    }, 4000);\n  }, [error]);\n\n  const onHandleSave = () => {\n    if (!testType) {\n      setError(\"Please select the Lab\");\n      return;\n    }\n    handleSave(testType);\n    handleClose();\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Create Test\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\"> Select Lab </label>\n            <Select\n              className=\"w-100 siteSelector\"\n              options={labs.map((l) => {\n                return { value: l.id, label: l.name };\n              })}\n              blurInputOnSelect={true}\n              defaultValue={null}\n              menuPlacement=\"auto\"\n              placeholder=\"Select Lab\"\n              onChange={(e) => setTestType(e)}\n            />\n          </div>\n          {error.length > 0 && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            Create Test\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default CreateTestLabModal;\n","import React, { useState, useEffect } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { DELIVERY_COMPANY } from \"constant\";\nimport { DeliveryTrackUrl, isValidDigits } from \"./../../utils\";\n\n// Delivery Object Inialize\n\nconst deliveryObj = {\n  order_id: \"\",\n  eventType: \"Shipped\",\n  eventData: \"\",\n  tracking_number: \"\",\n  tracking_url: \"\",\n  shipmentDate: \"\",\n};\n\nconst CreateTestDeliveryModal = (props) => {\n  const { handleSave, handleClose } = props;\n  const [error, setError] = useState(\"\");\n  const [deliveryCreate, setDeliveryCreate] = useState(deliveryObj);\n\n  useEffect(() => {\n    setTimeout(() => {\n      setError(\"\");\n    }, 4000);\n  }, [error]);\n\n  const onHandleSave = () => {\n    // Validation check\n\n    if (!deliveryCreate.order_id) {\n      setError(\"Order No. is required\");\n      return;\n    }\n    if (!isValidDigits(deliveryCreate.order_id)) {\n      setError(\"Order No is invalid\");\n      return;\n    }\n    if (!deliveryCreate.eventData) {\n      setError(\"Delviery Company is required\");\n      return;\n    }\n\n    if (!deliveryCreate.tracking_number) {\n      setError(\"Tracking No. is required\");\n      return;\n    }\n    if (!deliveryCreate.tracking_url) {\n      setError(\"Tracking URL is required\");\n      return;\n    }\n\n    if (!deliveryCreate.shipmentDate) {\n      setError(\"Shipment Date is required\");\n      return;\n    }\n\n    // Creating delivery call to parent\n\n    handleSave(deliveryCreate);\n    handleClose();\n  };\n\n  const handleDelivery = (value) => {\n    let trackUrl = DeliveryTrackUrl(deliveryCreate.eventData, value);\n    setDeliveryCreate({\n      ...deliveryCreate,\n      tracking_number: value,\n      tracking_url: trackUrl ? trackUrl : \"\",\n    });\n  };\n\n  console.log(\"deliveryCreatedeliveryCreate\", deliveryCreate);\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Courier Details\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\"> Delivery Comapany</label>\n            <Select\n              className=\"w-100 siteSelector\"\n              options={DELIVERY_COMPANY}\n              blurInputOnSelect={true}\n              defaultValue={null}\n              menuPlacement=\"auto\"\n              placeholder=\"Select Delivery Company\"\n              onChange={(e) => setDeliveryCreate({ ...deliveryCreate, eventData: e.value })}\n            />\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\"> Order #: </label>\n            <input\n              className=\"modalInput\"\n              type=\"number\"\n              placeholder=\"Order No\"\n              style={{\n                width: \"100%\",\n              }}\n              value={deliveryCreate?.order_id}\n              onChange={(e) => setDeliveryCreate({ ...deliveryCreate, order_id: parseInt(e.target.value) })}\n            />\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Tracking #: </label>\n            <input\n              className=\"modalInput\"\n              placeholder=\"Tracking No\"\n              style={{\n                width: \"100%\",\n              }}\n              value={deliveryCreate?.tracking_number}\n              onChange={(e) => handleDelivery(e.target.value.replace(\".\", \"\"))}\n            />\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Tracking URL: </label>\n            <input\n              className=\"modalInput\"\n              placeholder=\"Tracking URL\"\n              style={{\n                width: \"100%\",\n              }}\n              value={deliveryCreate?.tracking_url}\n              onChange={(e) => setDeliveryCreate({ ...deliveryCreate, tracking_url: e.target.value })}\n            />\n          </div>\n          <div className=\"form-group-wrapper dateWrapper\">\n            <label className=\"modalLineHeaders\">Date: </label>\n            <input\n              className=\"modalInput\"\n              type=\"datetime-local\"\n              value={deliveryCreate?.shipmentDate}\n              style={{ width: \"100%\", marginBottom: \"10px\" }}\n              onChange={(e) => setDeliveryCreate({ ...deliveryCreate, shipmentDate: e.target.value })}\n            />\n          </div>\n          {error.length > 0 && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={onHandleSave}>\n            Create\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default CreateTestDeliveryModal;\n","import React from \"react\";\n\nconst StatsView = (props) => {\n  const { label, value, type, handleClick, numberStyle, cssClass } = props;\n\n  return (\n    <div className={`preRegistrationStat cursor-pointer ${cssClass}`} onClick={() => handleClick && handleClick(type)}>\n      <div>{label}</div>\n      <div>\n        <a style={{ color: \"#42cef5\", ...numberStyle }}>{value ?? 0}</a>\n      </div>\n    </div>\n  );\n};\n\nexport default StatsView;\n","import React, { useState, useEffect, useRef, useMemo } from \"react\";\nimport logoImage from \"../../assets/img/safecamp_BRAND.1-nobg.png\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport { formateDateLL, formateDatellll } from \"utils\";\nimport { convertToLower, isValidEmail } from \"utils\";\n\nconst RegisterStepOne = (props) => {\n  const { show, handleProcced, errorMessageText, linkCrew } = props;\n  const [newUser, setNewUser] = useState({});\n  const [error, setError] = useState(\"\");\n  const [phoneError, setPhoneError] = useState(\"\");\n\n  useEffect(() => {\n    setError(errorMessageText);\n  }, [errorMessageText]);\n\n  const showErrorMessage = (message) => {\n    setError(message);\n    setTimeout(() => setError(\"\"), 2000);\n  };\n\n  const handleSubmit = () => {\n    if (!linkCrew && !newUser.phone?.trim() && !newUser.email?.trim()) {\n      showErrorMessage(\"Phone or Email is Required\");\n      return;\n    }\n    if (!newUser.phone && linkCrew) {\n      showErrorMessage(\"Phone is required\");\n      return;\n    }\n    if (newUser.phone && phoneError) {\n      showErrorMessage(\"Invalid Phone Number\");\n      return;\n    }\n    if (!linkCrew && newUser.email?.trim() && !isValidEmail(newUser.email)) {\n      showErrorMessage(\"Invalid Email\");\n      return;\n    }\n    console.log(\"new user::from register step one : \" , newUser)\n    handleProcced(newUser);\n  };\n  console.log(\"newUSerPrg\", newUser);\n  return (\n    <div className=\"registerFormWrapper\">\n      <div className=\"registerWrapper\">\n        <div className=\"text-center\">\n          <img src={logoImage} alt=\"logo\" className=\"logo-width\" />\n        </div>\n        <div className=\"codeScannerWrapper codeScannerPhoneInput\">\n          <div className=\"registered-successful\">\n            <h4 className=\"w-100 text-center mt-4\">\n              <b>{show && `${show.name}`}</b>\n            </h4>\n            {show && (\n              <>\n                <h4 className=\"w-100 text-center mt-4\">\n                  <b>Event Date: {`${formateDateLL(show.startDate)}`}</b>\n                </h4>\n                {show.orderKitDate && (\n                  <h4>\n                    <b>Test Ordering Deadline: {`${formateDatellll(show.orderKitDate)}`}</b>\n                  </h4>\n                )}\n              </>\n            )}\n            <div className={linkCrew ? \"form-group-wrapper mt-5 mb-5\" : \"form-group-wrapper mt-5 mb-0\"}>\n              <label className=\"mb-1\">Phone Number:</label>\n              <PhoneNoInput\n                error={setPhoneError}\n                handleChange={(e) => {\n                  setNewUser({ ...newUser, phone: e });\n                }}\n                value={newUser.phone}\n                cssCode=\"w-100\"\n              />\n            </div>\n            {!linkCrew && (\n              <>\n                <div className=\"py-1 mx-auto\">OR</div>\n                <div className=\"form-group-wrapper mb-5\">\n                  <label className=\"mb-1\">Email:</label>\n                  <input\n                    value={newUser.email}\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"Email\"\n                    onChange={(e) => setNewUser({ ...newUser, email: convertToLower(e.target.value) })}\n                  />\n                </div>\n              </>\n            )}\n            {error && (\n              <div className=\"error-message\">\n                <h6>{error}</h6>\n              </div>\n            )}\n            <div className=\"mt-2 w-50 mx-auto\">\n              <button type=\"submit\" className=\"text-uppercase w-100 btn signup-btn\" onClick={handleSubmit}>\n                Proceed\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default RegisterStepOne;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport logoImage from \"../../assets/img/safecamp_BRAND.1-nobg.png\";\nimport html2canvas from \"html2canvas\";\nimport QRCode from \"qrcode.react\";\nimport Default_Profile from \"../../assets/img/default_profile.png\";\nimport { Button } from \"react-bootstrap\";\nimport { isValidEmail } from \"utils\";\n// import QrCodeDownloadIcon from \"../../assets/img/qr-download.svg\";\nimport QrCodeDownloadIcon from \"../../assets/img/qr-download.svg\";\nimport { qrResponseJOSN } from \"utils\";\n\nconst QRCodeView = (props) => {\n  const { handleProcced, user, profileImage } = props;\n  console.log(\"new user from props: \", user);\n  const downloadRef = useRef();\n  const [error, setError] = useState(\"\");\n  const [newUser, setNewUser] = useState(user);\n  const [qrRes, setQrRes] = useState();\n\n  useEffect(() => {\n    setNewUser(user);\n    setQrRes(qrResponseJOSN(user, user.id, \"PR\"));\n  }, [user]);\n\n  const downloadQRCode = async () => {\n    const element = downloadRef.current;\n    await html2canvas(element, { allowTaint: true, useCORS: true, logging: true }).then((canvas) => {\n      const imgData = canvas.toDataURL(\"image/png\");\n      const link = document.createElement(\"a\");\n      if (typeof link.download === \"string\") {\n        link.href = imgData;\n        link.download = \"image.jpg\";\n        document.body.appendChild(link);\n        link.click();\n        document.body.removeChild(link);\n      } else {\n        window.open(imgData);\n      }\n    });\n  };\n\n  const showErrorMessage = (message) => {\n    setError(message);\n    setTimeout(() => setError(\"\"), 2000);\n  };\n\n  const handleSubmit = () => {\n    if (!newUser.phone_number?.trim() && !newUser.email?.trim()) {\n      showErrorMessage(\"Phone or Email is Required\");\n      return;\n    }\n    if (!newUser.phone_number) {\n      showErrorMessage(\"Phone is required\");\n      return;\n    }\n\n    if (newUser.email?.trim() && !isValidEmail(newUser.email)) {\n      showErrorMessage(\"Invalid Email\");\n      return;\n    }\n    let obj = {\n      ...newUser,\n      reorder: true,\n      phone: newUser.phone_number,\n    };\n    handleProcced(obj);\n  };\n\n  return (\n    <div className=\"codeScannerWrapper\">\n      <div className=\"registered-successful\">\n        <h3>Thank you for Registering</h3>\n        <p className=\"mb-0\">Please present this QR code at Event Check In</p>\n        <div className=\"registered-inner\" ref={downloadRef}>\n          <h4 className=\"my-0 card-name\">{`${newUser.first} ${newUser.last}`}</h4>\n          <div className=\"justify-content-center align-items-center\">\n            <div className=\"qrWrapper\">\n              <img\n                crossOrigin=\"true\"\n                src={\n                  profileImage === Default_Profile\n                    ? Default_Profile\n                    : profileImage instanceof Object\n                    ? URL.createObjectURL(profileImage)\n                    : profileImage\n                }\n                alt=\"user icon\"\n                className=\"userIcon\"\n              />\n              <QRCode\n                className=\"qrCode\"\n                id=\"qr-gen\"\n                value={JSON.stringify(qrRes || {})}\n                size={270}\n                level={\"L\"}\n                fgColor=\"#008000\"\n                includeMargin={true}\n              />\n            </div>\n          </div>\n        </div>\n        {error && (\n          <div className=\"error-message\">\n            <h6>{error}</h6>\n          </div>\n        )}\n\n        <div className=\"d-flex align-items-center justify-content-between\">\n          <div className=\"text-right\">\n            <img src={QrCodeDownloadIcon} onClick={downloadQRCode} alt=\"qr-code-download\" width=\"35\" />\n          </div>\n          <Button className=\"rounded-pill btn btn-secondary\" variant=\"secondary\" onClick={handleSubmit}>\n            Order Test Kit\n          </Button>\n          <Button\n            className=\"rounded-pill btn btn-secondary\"\n            href={`safecampmd://app/${newUser.first || \"\"}/${newUser.last || \"\"}/${newUser.email || \"\"}/${\n              newUser.phone_number || \"\"\n            }`}\n            variant=\"secondary\"\n          >\n            Add to Wallet\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default QRCodeView;\n","import React, { useState, useEffect, useRef, useMemo } from \"react\";\nimport logoImage from \"../../assets/img/safecamp_BRAND.1-nobg.png\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport { formateDateLL } from \"utils\";\n\nconst ShowSelection = (props) => {\n  const { shows, handleShowSelection } = props;\n  const [error, setError] = useState(\"\");\n  const [selectedShow, setSelectedShow] = useState(\"\");\n \n  const showErrorMessage = (message) => {\n    setError(message);\n    setTimeout(() => setError(\"\"), 2000);\n  };\n\n  const handleSubmit = () => {\n    if (!selectedShow) {\n      showErrorMessage(\"Select the show\");\n      return;\n    }\n    handleShowSelection(selectedShow);\n  };\n\n  const onChangeSelection = (e) => setSelectedShow(e);\n\n  return (\n    <div className=\"registerFormWrapper\">\n      <div className=\"registerWrapper\">\n        <div className=\"text-center\">\n          <img src={logoImage} alt=\"logo\" className=\"logo-width\" />\n        </div>\n        <div className=\"codeScannerWrapper codeScannerPhoneInput\">\n          <div className=\"registered-successful\">\n            <h4 className=\"w-100 text-center mt-5\">\n              <b>Please select the show</b>\n            </h4>\n            <div className=\"custom-radio-btn-wrapper\">\n              {shows.map((s) => {\n                return (\n                  <div key={s.id}>\n                    <input\n                      id={s.id}\n                      className=\"radio-custom\"\n                      name=\"radio-group\"\n                      type=\"radio\"\n                      value={s.id}\n                      onChange={()=>onChangeSelection(s)}\n                    />\n                    <label htmlFor={s.id} className=\"radio-custom-label\">\n                      <div className=\"d-inline-flex flex-column align-items-start\">\n                        <span>{s.showName}</span>\n                      </div>\n                    </label>\n                  </div>\n                );\n              })}\n            </div>\n\n            {error && (\n              <div className=\"error-message\">\n                <h6>{error}</h6>\n              </div>\n            )}\n            <div className=\"mt-5 w-50 mx-auto\">\n              <button type=\"submit\" className=\"text-uppercase w-100 btn signup-btn\" onClick={handleSubmit}>\n                Proceed\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default ShowSelection;\n","import React, { useState, useEffect, useMemo } from \"react\";\nimport {\n  medFlowInLocalStorage,\n  formatZip,\n  toTitleCase,\n  convertToLower,\n  formateDateLL,\n  checkValidity,\n  getValidName,\n  isValidName,\n  isValidIdNum,\n  isValidPhoneWithCode,\n  isValidZipCode,\n} from \"utils\";\nimport { useHistory } from \"react-router-dom\";\nimport { newRegisterObj, externalTypesOptions, countryListAllIsoData, IMAGE_UPLOAD_TYPE, CONFIG } from \"constant\";\nimport { Button } from \"react-bootstrap\";\nimport API from \"api\";\nimport moment from \"moment\";\nimport Loader from \"components/Loader/Loader\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport Select from \"react-select\";\nimport { Storage } from \"aws-amplify\";\nimport userIcon from \"assets/img/default-avatar.png\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport Default_Profile from \"../assets/img/default_profile.png\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport countriesOption from \"countries\";\nimport logoImage from \"../assets/img/safecamp_BRAND.1-nobg.png\";\nimport ImageCropModal from \"components/Input/ImageCropModal\";\nimport RegisterStepOne from \"components/PreRegister/RegisterStepOne\";\nimport QRCodeView from \"components/PreRegister/QRCodeView\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport ShowSelection from \"components/PreRegister/ShowSelection\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport { validSpace } from \"utils\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport { isValidEmail } from \"utils\";\nimport { formatPhoneNumber } from \"utils\";\n\nconst RegisterCrew = (props) => {\n  // const {\n  //   match: { params },\n  // } = props;\n  const isMatch = props.hasOwnProperty(\"match\");\n  const isId = props.hasOwnProperty(\"id\");\n\n  const [newUser, setNewUser] = useState(newRegisterObj);\n  const [registrationDone, setRegistrationDone] = useState(false);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(true);\n  const [barcode, setBarcode] = useState(\"\");\n  const [profileImage, setProfileImage] = useState(Default_Profile);\n  const [copyImage, setCopyImage] = useState(Default_Profile);\n  const [vaccinationImage, setVaccinationImage] = useState(\"\");\n  const [externalTestImage, setExternalTestImage] = useState(\"\");\n  const [showImageCroper, setShowImageCropper] = useState(false);\n  const [client, setClient] = useState(\"\");\n  const [showName, setShowName] = useState(\"\");\n  const [pageExpire, setPageExpire] = useState(false);\n  const [step, setStep] = useState(1);\n  const [errorMessageText, setErrorMessageText] = useState(\"\");\n  const [showListing, setShowListing] = useState([]);\n  const [orderKitClose, setOrderKitClose] = useState(1);\n  const [openConfirmationModal, setOpenConfirmationModal] = useState(false);\n  const [message, setMessage] = useState(\"\");\n  const [maxQty, setMaxQty] = useState(2);\n  const [reorderdata, setReorderData] = useState(\"\");\n\n  const currentEnv = CONFIG.isLive ? \"LIVE\" : \"DEV\";\n  const getFileFromStorage = async (file) => {\n    try {\n      const path = await Storage.get(file);\n      setProfileImage(path);\n      console.log(\"path\", path);\n    } catch {\n      console.log(\"Image loading fail\");\n    }\n  };\n\n  useEffect(() => {\n    if (isMatch) {\n      const {\n        match: { params },\n      } = props;\n      params && params.id ? loadShowListing(params.id) : \"\";\n    }\n    if (isId) {\n      loadShowListing(props.id);\n    } else {\n      setLoading(false);\n    }\n  }, []);\n\n  const loadShowListing = async (id) => {\n    const showData = await API.preRegisterShowData(id, currentEnv);\n    //console.log(\"loadShowListing showData\", showData);\n    setLoading(false);\n    if (showData && showData.preRegistration) {\n      setMaxQty(showData.orderQuantity || 2);\n      setNewUser({ ...newUser, showId: showData });\n      setShowName(showData.name);\n      setClient(showData.clientID);\n      return showData;\n    } else {\n      setPageExpire(true);\n    }\n    return null;\n  };\n\n  const loadShowData = async (id) => {\n    const showData = await API.preRegisterShowData(id, currentEnv);\n    setLoading(false);\n    if (showData) {\n      return showData;\n    }\n    return null;\n  };\n\n  const vaccinationTypes = [\n    {\n      label: \"Bharat Biotech (Covaxin)\",\n      value: \"Bharat Biotech (Covaxin)\",\n      noOfDose: 2,\n    },\n    {\n      label: \"Johnson & Johnson (Ad26.COV2.S)\",\n      value: \"Johnson & Johnson (Ad26.COV2.S)\",\n      noOfDose: 1,\n    },\n    { label: \"Novavax (Nuvaxovid)\", value: \"Novavax (Nuvaxovid)\", noOfDose: 2 },\n    { label: \"Moderna (Spikevax)\", value: \"Moderna (Spikevax)\", noOfDose: 2 },\n    {\n      label: \"Oxford/AstraZeneca (Vaxzevria)\",\n      value: \"Oxford/AstraZeneca (Vaxzevria)\",\n      noOfDose: 2,\n    },\n    {\n      label: \"Pfizer/BioNTech (Comirnaty)\",\n      value: \"Pfizer/BioNTech (Comirnaty)\",\n      noOfDose: 2,\n    },\n    {\n      label: \"Serum Institute of India (Covishield)\",\n      value: \"Serum Institute of India (Covishield)\",\n      noOfDose: 2,\n    },\n    {\n      label: \"Serum Institute of India (Novavax)\",\n      value: \"Serum Institute of India Novavax(Novavax)\",\n      noOfDose: 2,\n    },\n    { label: \"Sinopharm (Covilo)\", value: \"Sinopharm (Covilo)\", noOfDose: 2 },\n    { label: \"Sinovac (CoronaVac)\", value: \"Sinovac (CoronaVac)\", noOfDose: 2 },\n  ];\n\n  const history = useHistory();\n\n  const redirectToAdmin = () => {\n    if (history) history.push(\"/admin\");\n  };\n\n  const isLoggedIn = medFlowInLocalStorage.get();\n  if (isLoggedIn && props.hasOwnProperty(\"match\")) redirectToAdmin();\n\n  const showErrorMessage = (message) => {\n    setError(message);\n    setTimeout(() => setError(\"\"), 2000);\n  };\n  const isVaccinationInfoEnable = useMemo(() => {\n    return newUser.isVaccinated && newUser.showId && newUser.showId.vaccinationCard;\n  }, [newUser.isVaccinated, newUser.showId]);\n\n  const isExternalTestAllow = useMemo(() => {\n    return newUser.showId && newUser.showId.externalTest;\n  }, [newUser.showId]);\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setNewUser({ ...newUser, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zipcode: val.zipcode,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setNewUser({ ...newUser, ...addressObj });\n    }\n  };\n\n  const isPCRShow = () => newUser.showId && newUser.showId.orderKitType && newUser.showId.orderKitType === \"PCR\";\n\n  const handleSubmit = async () => {\n    if (!newUser.first) {\n      showErrorMessage(\"First name is required\");\n      return;\n    }\n\n    if (!isValidName(newUser.first)) {\n      showErrorMessage(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!newUser.last) {\n      showErrorMessage(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(newUser.last)) {\n      showErrorMessage(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!newUser.email?.trim()) {\n      showErrorMessage(\"Email name is required\");\n      return;\n    }\n    if (!isValidEmail(newUser.email)) {\n      showErrorMessage(\"Invalid Email\");\n      return;\n    }\n\n    if (!newUser.phone_number.trim()) {\n      showErrorMessage(\"Phone number is required\");\n      return;\n    }\n\n    if (!newUser.street.trim()) {\n      showErrorMessage(\"Address is required\");\n      return;\n    }\n    if (!newUser.city.trim()) {\n      showErrorMessage(\"City is required\");\n      return;\n    }\n    if (!newUser.state.trim()) {\n      showErrorMessage(\"State is required\");\n      return;\n    }\n    if (!newUser.country) {\n      showErrorMessage(\"Select the country\");\n      return;\n    }\n    if (newUser.zip === null || !newUser.zip) {\n      showErrorMessage(\"Zipcode is required\");\n      return;\n    }\n\n    if (!isValidZipCode(newUser.isoCode || \"US\", newUser.zip)) {\n      showErrorMessage(\"Invalid zipcode\");\n      return;\n    }\n    if (isPCRShow()) {\n      if (!newUser.sex) {\n        showErrorMessage(\"Gender is required\");\n        return;\n      }\n\n      if (!newUser.id_number) {\n        showErrorMessage(\"DL/Passport Number is required\");\n        return;\n      }\n\n      if (!isValidIdNum(newUser.id_number)) {\n        showErrorMessage(\"Invalid DL/Passport Number must contains at least 5 characters\");\n        return;\n      }\n      if (!newUser.dob) {\n        showErrorMessage(\"Date of Birth is required\");\n        return;\n      }\n    }\n    try {\n      setLoading(true);\n      const obj = newUser;\n      // console.log('Insiide of Handle Submit New User Obj Info for newUser: ' , newUser )\n      // console.log(\"newUser.phone_number::\" , newUser.phone_number);\n      let phone = \"\";\n      if (reorderdata.reorder) {\n        let phoneNumber = reorderdata.countryCode + reorderdata.phone_number;\n        phone = formatPhoneNumberIntl(phoneNumber);\n        obj.reorder = reorderdata.reorder;\n      } else {\n        phone = formatPhoneNumberIntl(newUser.phone_number);\n      }\n      // console.log(\"newUser.phone_number: phone:\" , phone);\n      const phoneArr = phone.split(\" \");\n      // console.log(\"newUser.phone_number: phoneArr:\" , phoneArr);\n\n      obj.countryCode = phoneArr[0];\n      phoneArr.splice(0, 1);\n      obj.phone_number = phoneArr.join(\"\");\n      obj.order_phone = phone;\n      let imageFormatWithUtcTime = `_#datePattern#_${moment().utc().format(\"YYYY-MM-DD HH:mm\")}`;\n      const fileName = `${newUser.phone_number}-profile-image${imageFormatWithUtcTime}.jpeg`;\n      if (profileImage && profileImage !== Default_Profile && profileImage instanceof Object) {\n        await Storage.put(`profile/${fileName}`, profileImage, { bucket: \"medflow-images\" });\n      }\n      if (profileImage && profileImage !== Default_Profile) {\n        obj.profileImage = fileName;\n      }\n      const response = await API.requestTestKit(obj, client, currentEnv);\n\n      setLoading(false);\n      setStep(3);\n    } catch (err) {\n      setLoading(false);\n      setError(err);\n    }\n  };\n\n  const handleCompleteRegistration = async () => {\n    if (!newUser.first) {\n      showErrorMessage(\"First name is required\");\n      return;\n    }\n\n    if (!isValidName(newUser.first)) {\n      showErrorMessage(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!newUser.last) {\n      showErrorMessage(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(newUser.last)) {\n      showErrorMessage(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!newUser.email?.trim()) {\n      showErrorMessage(\"Email name is required\");\n      return;\n    }\n    if (!isValidEmail(newUser.email)) {\n      showErrorMessage(\"Invalid Email\");\n      return;\n    }\n\n    if (!newUser.phone_number) {\n      showErrorMessage(\"Phone number is required\");\n      return;\n    }\n    if (!newUser.street.trim()) {\n      showErrorMessage(\"Address is required\");\n      return;\n    }\n    if (!newUser.city.trim()) {\n      showErrorMessage(\"City is required\");\n      return;\n    }\n    if (newUser.zip === null || !newUser.zip) {\n      showErrorMessage(\"Zipcode is required\");\n      return;\n    }\n\n    if (!isValidZipCode(newUser.isoCode || \"US\", newUser.zip)) {\n      showErrorMessage(\"Invalid zipcode\");\n      return;\n    }\n\n    if (!newUser.sex) {\n      showErrorMessage(\"Gender is required\");\n      return;\n    }\n    if (!newUser.dob) {\n      showErrorMessage(\"Date of Birth is required\");\n      return;\n    }\n    if (!newUser.state.trim()) {\n      showErrorMessage(\"State is required\");\n      return;\n    }\n    if (!newUser.id_number) {\n      showErrorMessage(\"DL/Passport Number is required\");\n      return;\n    }\n\n    if (!isValidIdNum(newUser.id_number)) {\n      showErrorMessage(\"Invalid DL/Passport Number must contains at least 5 characters\");\n      return;\n    }\n    if (newUser.showId === null) {\n      showErrorMessage(\"Fail to register, show info not found\");\n      return;\n    }\n\n    if (newUser.isVaccinated === null || newUser.isVaccinated.length === 0) {\n      showErrorMessage(\"Please select the vaccination status\");\n      return;\n    }\n    if (newUser.isVaccinated === false && newUser.showId && newUser.showId.vaccinationCard) {\n      setErrorMessageText(\n        \"Can not proceed without vaccination. Please contact the event organizer for further details\"\n      );\n      return;\n    }\n    if (isVaccinationInfoEnable) {\n      if (newUser.isVaccinated && !vaccinationImage) {\n        showErrorMessage(\"Vaccination Image is required\");\n        return;\n      }\n      if (newUser.isVaccinated && !newUser.vaccinationType) {\n        showErrorMessage(\"Vaccination Type is required\");\n        return;\n      }\n      if (newUser.isVaccinated && !newUser.vaccinationFirstDate) {\n        showErrorMessage(\"Vaccination Date is required\");\n        return;\n      }\n      if (newUser.isVaccinated && !newUser.vaccinationFirstLocation) {\n        showErrorMessage(\"Vaccination Location is required\");\n        return;\n      }\n      if (newUser.isVaccinated && newUser.vaccinationDose > 1 && !newUser.vaccinationSecondDate) {\n        showErrorMessage(\"Vaccination Second Date is required\");\n        return;\n      }\n      if (newUser.isVaccinated && newUser.vaccinationSecondDate && !newUser.vaccinationSecondLocation) {\n        showErrorMessage(\"Vaccination Second Location is required\");\n        return;\n      }\n      if (newUser.isVaccinated) {\n        if (newUser.isBooster === null) {\n          showErrorMessage(\"Please select the booster\");\n          return;\n        }\n        if (newUser.isBooster && !newUser.boosterType) {\n          showErrorMessage(\"Booster Type is required\");\n          return;\n        }\n        if (newUser.isBooster && !newUser.boosterDate) {\n          showErrorMessage(\"Booster Date is required\");\n          return;\n        }\n        if (newUser.isBooster && !newUser.boosterLocation) {\n          showErrorMessage(\"Booster Location is required\");\n          return;\n        }\n      }\n    }\n\n    if (isExternalTestAllow) {\n      //console.log(\"isExternalTest\", newUser.isExternalTest);\n      if (newUser.isExternalTest === null || newUser.isExternalTest.length === 0) {\n        showErrorMessage(\"Please select external test\");\n        return;\n      }\n\n      if (newUser.isExternalTest && !externalTestImage) {\n        showErrorMessage(\"External Test Image is required\");\n        return;\n      }\n      if (newUser.isExternalTest && !newUser.externalTestType) {\n        showErrorMessage(\"External Test Type is required\");\n        return;\n      }\n      if (newUser.isExternalTest && !newUser.externalTestDate) {\n        showErrorMessage(\"External Test Date is required\");\n        return;\n      }\n      if (newUser.isExternalTest && !newUser.externalTestResult) {\n        showErrorMessage(\"External Test Result is required\");\n        return;\n      }\n    }\n    try {\n      setLoading(true);\n      const obj = newUser;\n      const phone = formatPhoneNumberIntl(newUser.phone_number);\n      const phoneArr = phone.split(\" \");\n      newUser.id_number = checkValidity(newUser.id_number);\n      obj.countryCode = phoneArr[0];\n      phoneArr.splice(0, 1);\n      obj.phone_number = phoneArr.join(\"\");\n\n      if (newUser.isVaccinated && isVaccinationInfoEnable) {\n        let vaccinationFileName = \"\";\n        if (typeof vaccinationImage === \"object\") {\n          vaccinationFileName = await API.saveFileExternalStorage(\n            obj.phone_number,\n            \"PR\",\n            IMAGE_UPLOAD_TYPE.VacinationCard,\n            vaccinationImage\n          );\n        }\n\n        // let vaccineCardFile = `${newUser.phone_number}-vaccination-card.png`;\n        // await Storage.put(vaccineCardFile, vaccinationImage);\n\n        Object.assign(newUser, { vaccineCardFile: vaccinationFileName });\n      }\n      if (newUser.isExternalTest && isExternalTestAllow) {\n        let externalImageFileName = \"\";\n        if (typeof externalTestImage === \"object\") {\n          externalImageFileName = await API.saveFileExternalStorage(\n            obj.phone_number,\n            \"PR\",\n            IMAGE_UPLOAD_TYPE.ExternalTest,\n            externalTestImage\n          );\n        }\n        // let externalFile = `${newUser.phone_number}-external-test.png`;\n        // await Storage.put(externalFile, externalTestImage);\n        Object.assign(newUser, { externalFile: externalImageFileName });\n      }\n\n      if (profileImage && profileImage !== Default_Profile && profileImage instanceof Object) {\n        let imageFormatWithUtcTime = `_#datePattern#_${moment().utc().format(\"YYYY-MM-DD HH:mm\")}`;\n        const fileName = `${newUser.phone_number}-profile-image${imageFormatWithUtcTime}.jpeg`;\n        await Storage.put(`profile/${fileName}`, profileImage, { bucket: \"medflow-images\" });\n        Object.assign(newUser, { profileImage: fileName });\n      }\n\n      const response = await API.preRegisterNewEmployee(\n        newUser,\n        client,\n        isVaccinationInfoEnable,\n        orderKitClose,\n        currentEnv\n      );\n      if (response.body && response.body.item && Object.keys(response.body.item).length > 0) {\n        setNewUser(response.body.item);\n      } else {\n        setNewUser({ ...obj });\n      }\n      setStep(5);\n      if (isId) {\n        props.handleAddedPreReg();\n      }\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      setError(err);\n    }\n  };\n\n  const handleCropDone = (isConfirm, fileData) => {\n    //console.log(\"registerCrew\", isConfirm, fileData);\n    setShowImageCropper(false);\n    if (isConfirm && fileData) {\n      setProfileImage(new File([fileData], \"profileImage.jpeg\"));\n    } else {\n      setProfileImage(profileImage);\n    }\n  };\n\n  const setSpecificUI = () => {\n    if (newUser.showId && newUser.showId.orderKitDate) {\n      const startDate = moment(newUser.showId.orderKitDate);\n      if (!moment().isSameOrBefore(startDate, \"date\")) {\n        setStep(4);\n        setOrderKitClose(5);\n        return;\n      } else {\n        setMessage(\"Would you like to order a test for this event?\");\n        setOpenConfirmationModal(true);\n      }\n    }\n    setStep(4);\n    setOrderKitClose(5);\n  };\n\n  const filUserDataFirstFormForReorderKit = async (data, phone) => {\n    // when user has some basic information and user wants to reordering of the Kit in pre register table against any show\n    fillUserData(data, phone);\n    if (data.profileImage && data.profileImage !== \"undefined\") {\n      let path = `${data.phone_number}-profile-image.png`;\n      if (data.profileImage.includes(\"_#datePattern#_\")) {\n        path = data.profileImage;\n        let getProfileImage = await API.getFileProfileStorage(path);\n        setProfileImage(getProfileImage);\n      }\n    }\n    ConfirmationModal(false);\n    setStep(2);\n  };\n\n  const handleProcced = async (obj) => {\n    try {\n      setLoading(true);\n      const phone = formatPhoneNumberIntl(obj.phone);\n      let formattedPhone = `+${phone?.replace(/\\D/g, \"\")}`;\n      const phoneArr = phone?.split(\" \");\n      phoneArr?.splice(0, 1);\n      const response = await API.getPreRegisterByPhone(\n        phoneArr.join(\"\") || obj.phone,\n        newUser.showId ? newUser.showId.id : obj?.showId?.id ? obj?.showId?.id : null,\n        currentEnv\n      );\n\n      const data = response.body;\n      if (obj.reorder) {\n        data.reorder = obj.reorder;\n        data.phone = obj.phone;\n        let phoneNo = data.countryCode + obj.phone;\n        setReorderData(data);\n        await filUserDataFirstFormForReorderKit(data, phoneNo);\n        setLoading(false);\n        return;\n      }\n\n      const statusCode = response.statusCode;\n\n      if (!newUser.showId) {\n        setLoading(false);\n        if (statusCode === 404 || data.length === 0) {\n          setErrorMessageText(\"No active record found\");\n          return;\n        }\n        if (data.length === 1) {\n          handleShowSelection(data[0]);\n          return;\n        }\n        if (statusCode === 202) {\n          setShowListing(data);\n        }\n        return;\n      }\n\n      if (statusCode === 404) {\n        setSpecificUI();\n        setNewUser({ ...newUser, phone_number: phone });\n      } else if (statusCode === 201) {\n        // when user has some basic information in pre register table against any show\n        fillUserData(data, formattedPhone);\n        if (data.profileImage && data.profileImage !== \"undefined\") {\n          let path = `${data.phone_number}-profile-image.png`;\n          if (data.profileImage.includes(\"_#datePattern#_\")) {\n            path = data.profileImage;\n          }\n          // await API.getFileProfileStorage(path)\n          // await getFileFromStorage(path);\n\n          let getProfileImage = await API.getFileProfileStorage(path);\n          // setProfileImage(path);\n          setProfileImage(getProfileImage);\n        }\n        setSpecificUI();\n      } else {\n        if (data.profileImage && data.profileImage !== \"undefined\") {\n          let path = `${data.phone_number}-profile-image.png`;\n\n          if (data.profileImage.includes(\"_#datePattern#_\")) {\n            path = data.profileImage;\n          }\n\n          // await getFileFromStorage(path);\n          let getProfileImage = await API.getFileProfileStorage(path);\n          // setProfileImage(path);\n          setProfileImage(getProfileImage);\n        }\n        if (data.step && parseInt(data.step) === 5) {\n          setStep(parseInt(data.step));\n          formattedPhone = data.phone_number;\n        } else {\n          setStep(4);\n          setOrderKitClose(5);\n        }\n        fillUserData(data, formattedPhone);\n      }\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      setStep(1);\n      setErrorMessageText(err);\n    }\n  };\n\n  const fillUserData = (data, formattedPhone) => {\n    const country = countryListAllIsoData.find((f) => f.name === data.country) || { code: \"US\" };\n    const obj = {\n      ...newUser,\n      first: data.first,\n      last: data.last,\n      email: data.email,\n      phone_number: formattedPhone,\n      state: data.state,\n      zipcode: data.zipcode,\n      zip: data.zipcode,\n      id: data.id,\n      country: data.country,\n      isoCode: country.code,\n      street: data.street,\n      street2: data.street2 === \"undefined\" ? \"\" : data.street2,\n      city: data.city,\n      designation: \"\",\n    };\n    try {\n      Object.assign(obj, {\n        sex: data.sex,\n        dob: data.dob,\n        id_number: data.id_number || \"\",\n        isVaccinated: data.isVaccinated && data.isVaccinated === \"true\" ? true : false,\n      });\n    } catch (err) {\n      console.log(\"Error\", err);\n    }\n    setNewUser(obj);\n  };\n\n  const handleShowSelection = async (obj) => {\n    setLoading(true);\n    if (obj.profileImage && obj.profileImage !== \"undefined\") {\n      let path = `${data.phone_number}-profile-image.png`;\n      if (data.profileImage.includes(\"_#datePattern#_\")) {\n        path = data.profileImage;\n      }\n      let getProfileImage = await API.getFileProfileStorage(path);\n      // setProfileImage(path);\n      setProfileImage(getProfileImage);\n      // await getFileFromStorage(path);\n    }\n    const showData = await loadShowData(obj.showId);\n    if (showData) {\n      obj.phone_number =\n        obj.countryCode && obj.countryCode.substring(0, 1) === \"+\"\n          ? `${obj.countryCode}${obj.phone_number}`\n          : `+${obj.countryCode}${obj.phone_number}`;\n      setShowListing([]);\n      setNewUser({ ...obj, showId: showData });\n      setShowName(showData.name);\n      setClient(showData.clientID);\n      setStep(4);\n      setOrderKitClose(5);\n    }\n  };\n\n  const handleConfirmationRes = (value) => {\n    setOpenConfirmationModal(false);\n    setMessage(\"\");\n    if (value) {\n      setStep(2);\n    } else {\n      setStep(4);\n      setOrderKitClose(5);\n    }\n  };\n\n  const getTestOrderQuantity = useMemo(() => {\n    const options = [];\n    for (let i = 1; i <= maxQty; i++) {\n      options.push({ value: i, label: i });\n    }\n    return options;\n  }, [maxQty]);\n\n  if (pageExpire) return <p>Page Expired</p>;\n\n  if (loading) return <Loader />;\n\n  if (showListing.length > 0) {\n    return <ShowSelection shows={showListing} handleShowSelection={handleShowSelection} />;\n  }\n\n  if (step === 1) {\n    return (\n      <>\n        <RegisterStepOne\n          show={newUser.showId}\n          handleProcced={handleProcced}\n          errorMessageText={errorMessageText}\n          linkCrew\n        />\n        {openConfirmationModal && (\n          <ConfirmationModal\n            isPreRegister\n            title=\"Pre Registration\"\n            message={message}\n            handleConfirm={handleConfirmationRes}\n          />\n        )}\n      </>\n    );\n  }\n\n  if (step === 3)\n    return (\n      <div className=\"registerFormWrapper align-items-start\">\n        <div className=\"registerWrapper\">\n          <div className=\"loginInner\">\n            <div className=\"text-center\">\n              {\" \"}\n              <img src={logoImage} alt=\"logo\" className=\"logo-width\" />{\" \"}\n            </div>\n            <h4 className=\"w-100 text-center mt-4\">\n              <b>Test Order Successful for {showName && `${showName}`}</b>\n            </h4>\n            <h4 className=\"w-100 text-center mt-4\">\n              <b>Event Date: {`${formateDateLL(newUser.showId.startDate)}`}</b>\n            </h4>\n\n            <p>\n              Thank you for submitting your request for a SafeCamp at home test. You should be receiving your test(s)\n              within 3-5 business days.\n            </p>\n            <p>\n              As a reminder, a negative test result is required within 3 calendar days of the event date. Additional\n              instructions will be included within the test kit to upload your result or bring it to the event.\n            </p>\n            <p>Please refer to your invitation for additional event details and FAQ's.</p>\n          </div>\n        </div>\n      </div>\n    );\n\n  if (step === 5) {\n    return <QRCodeView handleProcced={handleProcced} user={newUser} profileImage={profileImage} />;\n  }\n\n  return (\n    <>\n      <div className=\"registerFormWrapper\">\n        <div className=\"registerWrapper\">\n          <div className=\"loginInner\">\n            <div className=\"text-center\">\n              {\" \"}\n              <img src={logoImage} alt=\"logo\" className=\"logo-width\" />{\" \"}\n            </div>\n            <h4 className=\"w-100 text-center mt-4\">\n              <b>\n                {\" \"}\n                {step === 2 ? \"Order Tests for\" : \"Register for \"} {showName && `${showName}`}\n              </b>\n            </h4>\n            <h4 className=\"w-100 text-center mt-4\">\n              <b>Event Date: {`${formateDateLL(newUser.showId.startDate)}`}</b>\n            </h4>\n            <div className=\"form-wrapper\">\n              <ImageInput\n                type=\"profile\"\n                setSelectedImage={setProfileImage}\n                selectedImage={profileImage}\n                showCropDialog={setShowImageCropper}\n                setCopyImage={setCopyImage}\n              />\n              <div className=\"form-group-wrapper mt-2\">\n                <label className=\"mb-1\">First Name:</label>\n                <input\n                  value={toTitleCase(newUser.first)}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"First Name\"\n                  onChange={(e) => setNewUser({ ...newUser, first: getValidName(e.target.value) })}\n                />\n              </div>\n              <div className=\"form-group-wrapper \">\n                <label className=\"mb-1\">Last Name:</label>\n                <input\n                  value={toTitleCase(newUser.last)}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"Last Name\"\n                  onChange={(e) => setNewUser({ ...newUser, last: getValidName(e.target.value) })}\n                />\n              </div>\n              <div className=\"form-group-wrapper \">\n                <label className=\"mb-1\">Email:</label>\n                <input\n                  value={newUser.email}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"Email\"\n                  onChange={(e) => setNewUser({ ...newUser, email: convertToLower(e.target.value) })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">Phone Number:</label>\n                <input\n                  value={formatPhoneNumber(newUser.phone_number)}\n                  type=\"text\"\n                  maxLength={15}\n                  className=\"form-control\"\n                  placeholder=\"Phone Number\"\n                  disabled={true}\n                />\n              </div>\n\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">Address:</label>\n                <AutoCompleteAddress value={newUser.street} handleChange={handleUpdateAddress} />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">Address 2:</label>\n                <input\n                  value={toTitleCase(newUser.street2)}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"Address 2\"\n                  onChange={(e) => setNewUser({ ...newUser, street2: getValidName(e.target.value) })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">City:</label>\n                <input\n                  value={toTitleCase(newUser.city)}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"City\"\n                  onChange={(e) => setNewUser({ ...newUser, city: getValidName(e.target.value) })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">State:</label>\n                <input\n                  value={newUser.state}\n                  type=\"text\"\n                  className=\"form-control stateField\"\n                  placeholder=\"State Abbr: XX\"\n                  maxLength={35}\n                  onChange={(e) => {\n                    let val = e.target.value;\n                    if (val) val = val.toUpperCase();\n                    setNewUser({ ...newUser, state: validSpace(val) });\n                  }}\n                />\n              </div>\n              <div className=\"form-group-wrapper \">\n                <label className=\"mb-1\">Country:</label>\n                <Select\n                  options={[{ label: \"United States\", value: \"United States\" }]}\n                  blurInputOnSelect={true}\n                  value={{ label: newUser.country, value: newUser.country }}\n                  menuPlacement=\"auto\"\n                  placeholder=\"Select Country\"\n                  className=\"w-100\"\n                  onChange={(e) => {\n                    const country = countryListAllIsoData.find((f) => f.name === e.value) || { code: \"US\" };\n                    setNewUser({\n                      ...newUser,\n                      country: e.value,\n                      isoCode: country.code,\n                    });\n                  }}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">Zip Code:</label>\n                <input\n                  value={newUser.isoCode === \"US\" ? formatZip(newUser.zip) : newUser.zip}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"Enter Zip Code\"\n                  maxLength={10}\n                  onChange={(e) => {\n                    let val = e.target.value;\n                    if (val) val = val.toUpperCase();\n                    setNewUser({\n                      ...newUser,\n                      zip: newUser.isoCode === \"US\" ? formatZip(val) : validSpace(val),\n                    });\n                  }}\n                />\n              </div>\n              {step === 2 && (\n                <>\n                  {newUser.showId && newUser.showId.orderKitType && newUser.showId.orderKitType === \"PCR\" && (\n                    <>\n                      <div className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders\">Gender: </label>\n                        <div>\n                          <span className=\"radioBox-wrapper\">\n                            <input\n                              type=\"radio\"\n                              className=\"radioButton\"\n                              name=\"sex\"\n                              checked={newUser.sex === \"M\"}\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  sex: e.target.checked ? \"M\" : \"\",\n                                })\n                              }\n                            />\n                            <span className=\"radioButton\">Male</span>\n                          </span>\n                          <span className=\"radioBox-wrapper\">\n                            <input\n                              type=\"radio\"\n                              className=\"radioButton\"\n                              name=\"sex\"\n                              checked={newUser.sex === \"F\"}\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  sex: e.target.checked ? \"F\" : \"\",\n                                })\n                              }\n                            />\n                            <span className=\"radioButton\">Female</span>\n                          </span>\n                          <span className=\"radioBox-wrapper\">\n                            <input\n                              type=\"radio\"\n                              className=\"radioButton\"\n                              name=\"sex\"\n                              checked={newUser.sex === \"X\"}\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  sex: e.target.checked ? \"X\" : \"\",\n                                })\n                              }\n                            />\n                            <span className=\"radioButton\">Not Specified</span>\n                          </span>\n                        </div>\n                      </div>\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"mb-1\">DL/Passport Number:</label>\n                        <input\n                          value={newUser.id_number}\n                          maxLength={20}\n                          type=\"text\"\n                          className=\"form-control\"\n                          placeholder=\"DL/Passport Number\"\n                          onChange={(e) => setNewUser({ ...newUser, id_number: e.target.value })}\n                        />\n                      </div>\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"modalLineHeaders\">DOB: </label>\n                        <SingleDatePicker\n                          onApply={(event, picker) => {\n                            setNewUser({\n                              ...newUser,\n                              dob: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                            });\n                          }}\n                          value={newUser.dob}\n                          currentDate\n                        />\n                      </div>\n                    </>\n                  )}\n                  <div className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders\">Capacity: </label>\n                    <div>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"capacity\"\n                          checked={newUser.capacity === \"Guest\"}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              capacity: e.target.checked ? \"Guest\" : \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Guest</span>\n                      </span>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"capacity\"\n                          checked={newUser.capacity === \"Staff\"}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              capacity: e.target.checked ? \"Staff\" : \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Staff</span>\n                      </span>\n                    </div>\n                  </div>\n                  {newUser.capacity === \"Staff\" && (\n                    <div className=\"form-group-wrapper\">\n                      <label className=\"mb-1\">Role:</label>\n                      <input\n                        value={newUser.designation}\n                        type=\"text\"\n                        className=\"form-control\"\n                        placeholder=\"Role\"\n                        onChange={(e) =>\n                          setNewUser({\n                            ...newUser,\n                            designation: e.target.value,\n                          })\n                        }\n                      />\n                    </div>\n                  )}\n\n                  <div className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders\">Select Test Quantity:</label>\n                    <Select\n                      options={getTestOrderQuantity}\n                      blurInputOnSelect={true}\n                      defaultValue={{ value: 1, label: 1 }}\n                      menuPlacement=\"auto\"\n                      placeholder=\"Select Quantity\"\n                      className=\"w-100\"\n                      onChange={(e) =>\n                        setNewUser({\n                          ...newUser,\n                          testSendQty: e.value,\n                        })\n                      }\n                    />\n                  </div>\n                </>\n              )}\n              {step === 4 && (\n                <>\n                  <div className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders\">Gender: </label>\n                    <div>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"sex\"\n                          checked={newUser.sex === \"M\"}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              sex: e.target.checked ? \"M\" : \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Male</span>\n                      </span>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"sex\"\n                          checked={newUser.sex === \"F\"}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              sex: e.target.checked ? \"F\" : \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Female</span>\n                      </span>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"sex\"\n                          checked={newUser.sex === \"X\"}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              sex: e.target.checked ? \"X\" : \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Not Specified</span>\n                      </span>\n                    </div>\n                  </div>\n\n                  <div className=\"form-group-wrapper \">\n                    <label className=\"modalLineHeaders\">DOB: </label>\n\n                    <SingleDatePicker\n                      onApply={(event, picker) => {\n                        setNewUser({\n                          ...newUser,\n                          dob: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                        });\n                      }}\n                      value={newUser.dob}\n                      currentDate\n                    />\n                  </div>\n                  <div className=\"form-group-wrapper \">\n                    <label className=\"mb-1\">DL/Passport Number:</label>\n                    <input\n                      value={newUser.id_number}\n                      maxLength={16}\n                      type=\"text\"\n                      className=\"form-control\"\n                      placeholder=\"DL/Passport Number\"\n                      onChange={(e) => setNewUser({ ...newUser, id_number: e.target.value })}\n                    />\n                  </div>\n\n                  <div className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders\">Are you vaccinated:</label>\n                    <div>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"isVaccinated\"\n                          checked={newUser.isVaccinated === true}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              isVaccinated: e.target.checked && true,\n                              vaccinationFirstLocation: \"United States\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Yes</span>\n                      </span>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"isVaccinated\"\n                          checked={newUser.isVaccinated === false}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              isVaccinated: e.target.checked && false,\n                              vaccinationFirstDate: \"\",\n                              vaccinationFirstLocation: \"\",\n                              vaccinationSecondDate: \"\",\n                              vaccinationSecondLocation: \"\",\n                              vaccinationType: \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">No</span>\n                      </span>\n                    </div>\n                  </div>\n\n                  {isVaccinationInfoEnable && (\n                    <>\n                      <ImageInput\n                        className=\"fileDesign\"\n                        cssClass=\"vaccinationField\"\n                        title=\" Vaccination Certificate\"\n                        setSelectedImage={setVaccinationImage}\n                        selectedImage={vaccinationImage}\n                      />\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"mb-1\">Vaccination Type:</label>\n                        <Select\n                          options={vaccinationTypes}\n                          blurInputOnSelect={true}\n                          defaultValue={null}\n                          menuPlacement=\"auto\"\n                          placeholder=\"Select Vaccination type\"\n                          className=\"w-100\"\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              vaccinationType: e.value,\n                              vaccinationDose: e.noOfDose,\n                              vaccinationSecondLocation: e.noOfDose === 2 ? \"United States\" : \"\",\n                            })\n                          }\n                        />\n                      </div>\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"modalLineHeaders\">\n                          {newUser.vaccinationDose && newUser.vaccinationDose === 1\n                            ? \"Vaccination Date\"\n                            : \"Vaccination 1st Date:\"}\n                        </label>\n                        <SingleDatePicker\n                          onApply={(event, picker) =>\n                            setNewUser({\n                              ...newUser,\n                              vaccinationFirstDate: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                            })\n                          }\n                          value={newUser.vaccinationFirstDate}\n                          currentDate\n                        />\n                      </div>\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"mb-1\">Vaccination Location:</label>\n                        <Select\n                          options={[{ label: \"United States\", value: \"United States\" }]}\n                          blurInputOnSelect={true}\n                          defaultValue={{ label: \"United States\", value: \"United States\" }}\n                          menuPlacement=\"auto\"\n                          placeholder=\"Select Location\"\n                          className=\"w-100\"\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              vaccinationFirstLocation: e.value,\n                            })\n                          }\n                        />\n                      </div>\n                      {newUser.vaccinationDose && newUser.vaccinationDose > 1 && (\n                        <>\n                          <div className=\"form-group-wrapper \">\n                            <label className=\"modalLineHeaders\">Vaccination 2nd Date</label>\n                            <SingleDatePicker\n                              onApply={(event, picker) =>\n                                setNewUser({\n                                  ...newUser,\n                                  vaccinationSecondDate: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                                })\n                              }\n                              value={newUser.vaccinationSecondDate}\n                              currentDate\n                            />\n                          </div>\n                          <div className=\"form-group-wrapper \">\n                            <label className=\"mb-1\">Vaccination 2nd Location:</label>\n\n                            <Select\n                              options={countriesOption}\n                              blurInputOnSelect={true}\n                              defaultValue={{ label: \"United States\", value: \"United States\" }}\n                              menuPlacement=\"auto\"\n                              placeholder=\"Select Location\"\n                              className=\"w-100\"\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  vaccinationSecondLocation: e.value,\n                                })\n                              }\n                            />\n                          </div>\n                        </>\n                      )}\n                      {isVaccinationInfoEnable && (\n                        <div className=\"form-group-wrapper\">\n                          <label className=\"modalLineHeaders\">Booster?:</label>\n                          <div>\n                            <span className=\"radioBox-wrapper\">\n                              <input\n                                type=\"radio\"\n                                className=\"radioButton\"\n                                name=\"isBooster\"\n                                onChange={(e) =>\n                                  setNewUser({\n                                    ...newUser,\n                                    isBooster: e.target.checked && true,\n                                    boosterLocation: \"United States\",\n                                  })\n                                }\n                              />\n                              <span className=\"radioButton\">Yes</span>\n                            </span>\n                            <span className=\"radioBox-wrapper\">\n                              <input\n                                type=\"radio\"\n                                className=\"radioButton\"\n                                name=\"isBooster\"\n                                onChange={(e) =>\n                                  setNewUser({\n                                    ...newUser,\n                                    isBooster: e.target.checked && false,\n                                    boosterLocation: \"\",\n                                  })\n                                }\n                              />\n                              <span className=\"radioButton\">No</span>\n                            </span>\n                          </div>\n                        </div>\n                      )}\n                      {newUser.isBooster && (\n                        <>\n                          <div className=\"form-group-wrapper \">\n                            <label className=\"mb-1\">Booster Type:</label>\n                            <Select\n                              options={vaccinationTypes}\n                              blurInputOnSelect={true}\n                              defaultValue={null}\n                              menuPlacement=\"auto\"\n                              placeholder=\"Select Booster type\"\n                              className=\"w-100\"\n                              onChange={(e) => {\n                                setNewUser({ ...newUser, boosterType: e.value });\n                              }}\n                            />\n                          </div>\n                          <div className=\"form-group-wrapper \">\n                            <label className=\"modalLineHeaders\">Booster Date:</label>\n                            <SingleDatePicker\n                              onApply={(event, picker) =>\n                                setNewUser({\n                                  ...newUser,\n                                  boosterDate: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                                })\n                              }\n                              value={newUser.boosterDate}\n                              currentDate\n                            />\n                          </div>\n                          <div className=\"form-group-wrapper \">\n                            <label className=\"mb-1\">Booster Location</label>\n\n                            <Select\n                              options={[{ label: \"United States\", value: \"United States\" }]}\n                              blurInputOnSelect={true}\n                              defaultValue={{ label: \"United States\", value: \"United States\" }}\n                              menuPlacement=\"auto\"\n                              placeholder=\"Select Location\"\n                              className=\"w-100\"\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  boosterLocation: e.value,\n                                })\n                              }\n                            />\n                          </div>\n                        </>\n                      )}\n                    </>\n                  )}\n\n                  {isExternalTestAllow && (\n                    <div className=\"form-group-wrapper\">\n                      <label className=\"modalLineHeaders\">Do you Have an External Test:</label>\n                      <div>\n                        <span className=\"radioBox-wrapper\">\n                          <input\n                            type=\"radio\"\n                            className=\"radioButton\"\n                            name=\"isExternalTest\"\n                            onChange={(e) =>\n                              setNewUser({\n                                ...newUser,\n                                isExternalTest: e.target.checked && true,\n                              })\n                            }\n                          />\n                          <span className=\"radioButton\">Yes</span>\n                        </span>\n                        <span className=\"radioBox-wrapper\">\n                          <input\n                            type=\"radio\"\n                            className=\"radioButton\"\n                            name=\"isExternalTest\"\n                            onChange={(e) =>\n                              setNewUser({\n                                ...newUser,\n                                isExternalTest: e.target.checked && false,\n                              })\n                            }\n                          />\n                          <span className=\"radioButton\">No</span>\n                        </span>\n                      </div>\n                    </div>\n                  )}\n                  {newUser.isExternalTest && isExternalTestAllow && (\n                    <>\n                      <ImageInput\n                        cssClass=\"vaccinationField\"\n                        title=\"External Test Image\"\n                        setSelectedImage={setExternalTestImage}\n                        selectedImage={externalTestImage}\n                      />\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"mb-1\">External Test Type:</label>\n                        <Select\n                          options={externalTypesOptions}\n                          blurInputOnSelect={true}\n                          defaultValue={null}\n                          menuPlacement=\"auto\"\n                          placeholder=\"Select External test type\"\n                          className=\"w-100\"\n                          onChange={(e) => {\n                            setNewUser({ ...newUser, externalTestType: e.value });\n                          }}\n                        />\n                      </div>\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"modalLineHeaders\">External Test Date:</label>\n                        <SingleDatePicker\n                          onApply={(event, picker) =>\n                            setNewUser({\n                              ...newUser,\n                              externalTestDate: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                            })\n                          }\n                          value={newUser.externalTestDate}\n                          currentDate\n                        />\n                      </div>\n                      <div className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders\">External Test Result:</label>\n                        <div>\n                          <span className=\"radioBox-wrapper\">\n                            <input\n                              type=\"radio\"\n                              className=\"radioButton\"\n                              name=\"externalTestResult\"\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  externalTestResult: e.target.value ? \"Positive\" : \"\",\n                                })\n                              }\n                            />\n                            <span className=\"radioButton\">Positive</span>\n                          </span>\n                          <span className=\"radioBox-wrapper\">\n                            <input\n                              type=\"radio\"\n                              className=\"radioButton\"\n                              name=\"externalTestResult\"\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  externalTestResult: e.target.checked ? \"Negative\" : \"\",\n                                })\n                              }\n                            />\n                            <span className=\"radioButton\">Negative</span>\n                          </span>\n                        </div>\n                      </div>\n                    </>\n                  )}\n                </>\n              )}\n            </div>\n            <p>\n              I have read and agree to the\n              <a\n                className=\"text-decoration-none\"\n                target=\"_blank\"\n                href=\"https://medflow-images.s3.eu-west-1.amazonaws.com/TermsofUse-MedFlow.pdf\"\n              >\n                &nbsp; Privacy Policy\n              </a>\n            </p>\n            <p>Please refer to your invitation for additional event details and FAQ's</p>\n            {error && (\n              <div className=\"error-message\">\n                <h6>{error}</h6>\n              </div>\n            )}\n            {step === 2 && (\n              <div className=\"mt-2\">\n                <button type=\"submit\" className=\"text-uppercase w-100 btn signup-btn\" onClick={handleSubmit}>\n                  Process Request\n                </button>\n              </div>\n            )}\n            {step === 4 && (\n              <div className=\"mt-2\">\n                <button\n                  type=\"submit\"\n                  className=\"text-uppercase w-100 btn signup-btn\"\n                  onClick={handleCompleteRegistration}\n                >\n                  Complete Registration\n                </button>\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n\n      {errorMessageText && (\n        <SweetAlert\n          show={errorMessageText ? true : false}\n          info\n          title=\"Information\"\n          onConfirm={() => setErrorMessageText(\"\")}\n        >\n          {errorMessageText}\n        </SweetAlert>\n      )}\n      {showImageCroper && <ImageCropModal selectedImage={copyImage} handleConfirm={handleCropDone}></ImageCropModal>}\n      {openConfirmationModal && (\n        <ConfirmationModal\n          isPreRegister\n          title=\"Order the Test\"\n          message={message}\n          handleConfirm={handleConfirmationRes}\n        />\n      )}\n    </>\n  );\n};\n\nexport default RegisterCrew;\n","import React, { useEffect, useState } from \"react\";\nimport { Modal, Button, Table } from \"react-bootstrap\";\nimport { formatOrderDate } from \"../../utils\";\nimport API from \"api\";\nimport Loader from \"components/Loader/Loader\";\n\nconst OrderDetailModal = (props) => {\n  const { show, handleClose, order } = props;\n  const [tracking, setTracking] = useState(\"\");\n  const [logs, setLogs] = useState([]);\n  const [loading, setLoading] = useState(false);\n\n  useEffect(() => {\n    fetchTrackingLink();\n  }, []);\n\n  const fetchTrackingLink = async () => {\n    if (order && order.user.orderId && order.user.orderId !== -1) {\n      setLoading(false);\n      const logData = await API.getPreRegistrationOrderLog(order.user.orderId);\n      const items = logData.Items.filter((l) => l.eventType === \"Shipped\");\n\n      if (items.length > 0) {\n        if (items[0].tracking_url) {\n          setTracking(items[0].tracking_url);\n        } else {\n          const logResult = logData.Items.filter((l) => l.eventType === \"OrderPlaced\");\n          if (logResult.length > 0) {\n            const link = await API.getShipBobOrderDetails(logResultx[0].shipbob_order_id);\n            setTracking(link);\n          }\n        }\n      }\n      setLogs(\n        logData.Items.sort((a, b) => {\n          const testerB = b.createdAt;\n          const testerA = a.createdAt;\n          return testerB < testerA ? 1 : testerA < testerB ? -1 : 0;\n        })\n      );\n    }\n  };\n\n  const parseEventData = (event, val) => {\n    const EVENT_TYPES = \"DeliveredShippedMovedDeclinedPickedPacked\";\n    if (EVENT_TYPES.includes(event)) {\n      return formatOrderDate(val);\n    }\n    return val;\n  };\n\n  const TableRow = ({ item, sr }) => {\n    return (\n      <tr>\n        <td className=\"icon\" style={{ width: \"45px\", minWidth: \"45px\", maxWidth: \"45px\" }}>\n          {sr}\n        </td>\n        <td className={`ellipsis `}>{formatOrderDate(item.createdAt)}</td>\n        <td className={`ellipsis `}>{item.eventType}</td>\n        <td className={`ellipsis`}>{parseEventData(item.eventType, item.eventData)}</td>\n      </tr>\n    );\n  };\n\n  return (\n    <Modal show={show} animation={true} onHide={() => handleClose()} centered size=\"lg\">\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Order Detail\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"table-responsive\">\n          {loading && <Loader />}\n          <Table className=\"table-hover table-striped\">\n            <thead>\n              <tr>\n                <th\n                  className={`ellipsis border-0`}\n                  style={{\n                    color: \"grey\",\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  Sr#\n                </th>\n                <th\n                  className={`ellipsis border-0`}\n                  style={{\n                    color: \"grey\",\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  <div>\n                    <span title=\"Order Status\">Date</span>\n                  </div>\n                </th>\n                <th\n                  className={`ellipsis border-0`}\n                  style={{\n                    color: \"grey\",\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  <div>\n                    <span title=\"Order Status\">Event</span>\n                  </div>\n                </th>\n                <th\n                  className={`ellipsis border-0`}\n                  style={{\n                    color: \"grey\",\n                    fontWeight: \"bold\",\n                  }}\n                >\n                  <div>\n                    <span title=\"Order Status\">Details</span>\n                  </div>\n                </th>\n                {/* <th></th> */}\n              </tr>\n            </thead>\n            <tbody>\n              {logs &&\n                logs.map((o, index) => {\n                  return <TableRow key={index} item={o} sr={index + 1} />;\n                })}\n            </tbody>\n          </Table>\n        </div>\n        <div>\n          {tracking && (\n            <a href={tracking} target=\"_blank\">\n              Live Tracking <i className=\"fa fa-external-link\" />\n            </a>\n          )}\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" onClick={() => handleClose()}>\n          Close\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default OrderDetailModal;\n","import React, { useState, useEffect } from \"react\";\nimport { Modal, Button, Row, Col, Form } from \"react-bootstrap\";\nimport { formatPhoneNumber, formatDOB, formatDateMDY } from \"../../utils\";\nimport { GENDER_TEXT } from \"../../constant.js\";\nimport { Storage } from \"aws-amplify\";\nimport Loader from \"components/Loader/Loader\";\nimport FullPageImageView from \"components/FullPageImageView\";\nimport API from \"api\";\n\nconst VaccinationDetailModal = (props) => {\n  const { show, handleClose, user } = props;\n  const [vaccinationImg, setVaccinationImg] = useState(\"\");\n  const [externalTestImg, setExternalTestImg] = useState(\"\");\n  const [isLoading, setIsLoading] = useState(false);\n  const [fullView, setFullView] = useState(\"\");\n\n  useEffect(() => {\n    getCardImage();\n  }, []);\n\n  const getCardImage = async () => {\n    try {\n      setIsLoading(true);\n      if (user.hasOwnProperty(\"vaccinationDetails\") && Object.keys(user.vaccinationDetails).length > 0) {\n        if (user?.vaccineCardFile && user.vaccineCardFile.includes(\"/\")) {\n          let getVacinationCardImage = await API.getFileExternalStorage(user?.vaccineCardFile);\n          setVaccinationImg(getVacinationCardImage);\n        } else {\n          const vaccinationCard = await Storage.get(\n            user?.vaccineCardFile || `${user.phone_number}-${user.showId}-vaccination-card.png`\n          );\n          console.log(\"vaccinationCard\", vaccinationCard);\n          setVaccinationImg(vaccinationCard);\n        }\n      }\n      if (user.isExternalTest === \"true\") {\n        if (user?.externalFile && user.externalFile.includes(\"/\")) {\n          let getExternalTestImage = await API.getFileExternalStorage(user?.externalFile);\n          setExternalTestImg(getExternalTestImage);\n        } else {\n          const externalCard = await Storage.get(\n            user?.externalFile || `${user.phone_number}-${user.showId}-external-test.png`\n          );\n          console.log(\"externalCard\", externalCard);\n          setExternalTestImg(externalCard);\n        }\n      }\n      setIsLoading(false);\n    } catch (e) {\n      setIsLoading(false);\n      console.log(e);\n    }\n  };\n\n  const handleImageClick = (image) => {\n    setFullView(image);\n  };\n\n  return (\n    <>\n      {isLoading ? (\n        <Loader />\n      ) : (\n        <Modal show={show} animation={true} onHide={() => handleClose()} centered size=\"xl\">\n          <Modal.Header closeButton>\n            <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n              Pre Registration Details\n            </Modal.Title>\n          </Modal.Header>\n\n          <Modal.Body style={{ paddingTop: 0 }}>\n            <div>\n              <h4 className=\"mt-2 mb-3 fw-bolder\">User Details</h4>\n              <Row className=\"vaccination-rows-data\">\n                <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                  <Form.Group>\n                    <label className=\"weightBold\">First Name</label>\n                    <Form.Control readOnly plaintext value={user.first} type=\"text\" />\n                  </Form.Group>\n                </Col>\n                <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                  <Form.Group>\n                    <label className=\"weightBold\">Last Name</label>\n                    <Form.Control readOnly plaintext value={user.last} type=\"text\" />\n                  </Form.Group>\n                </Col>\n                <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                  <Form.Group>\n                    <label className=\"weightBold\">Email</label>\n                    <Form.Control readOnly plaintext value={user.email} type=\"text\" />\n                  </Form.Group>\n                </Col>\n                <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                  <Form.Group>\n                    <label className=\"weightBold\">Phone Number</label>\n                    <Form.Control\n                      readOnly\n                      plaintext\n                      value={formatPhoneNumber(user.phone_number, user.countryCode)}\n                      type=\"text\"\n                    />\n                  </Form.Group>\n                </Col>\n              </Row>\n              <Row className=\"vaccination-rows-data\">\n                <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                  <Form.Group>\n                    <label className=\"weightBold\">Address</label>\n                    <Form.Control readOnly plaintext value={user.street || \"-\"} type=\"text\" />\n                  </Form.Group>\n                </Col>\n                <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                  <Form.Group>\n                    <label className=\"weightBold\">Address2</label>\n                    <Form.Control\n                      readOnly\n                      plaintext\n                      value={user.street2 && user.street2 !== \"undefined\" ? user.street2 : \"-\"}\n                      type=\"text\"\n                    />\n                  </Form.Group>\n                </Col>\n\n                <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                  <Form.Group>\n                    <label className=\"weightBold\">City</label>\n                    <Form.Control readOnly plaintext value={user.city || \"-\"} type=\"text\" />\n                  </Form.Group>\n                </Col>\n                <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                  <Form.Group>\n                    <label className=\"weightBold\">state</label>\n                    <Form.Control readOnly plaintext value={user.state || \"-\"} type=\"text\" />\n                  </Form.Group>\n                </Col>\n              </Row>\n              <Row className=\"vaccination-rows-data\">\n                <Col className=\"pr-1 vc-form-group\" lg=\"4\">\n                  <Form.Group>\n                    <label className=\"weightBold\">Gender</label>\n                    <Form.Control readOnly plaintext value={user.sex ? GENDER_TEXT[user.sex] : \"-\"} type=\"text\" />\n                  </Form.Group>\n                </Col>\n                <Col className=\"pr-1 vc-form-group\" lg=\"4\">\n                  <Form.Group>\n                    <label className=\"weightBold\">ID Number</label>\n                    <Form.Control readOnly plaintext value={user.id_number ? user.id_number : \"-\"} type=\"text\" />\n                  </Form.Group>\n                </Col>\n\n                <Col className=\"pr-1 vc-form-group\" lg=\"4\">\n                  <Form.Group>\n                    <label className=\"weightBold\">Date Of Birth</label>\n                    <Form.Control readOnly plaintext value={user.dob ? formatDOB(user.dob) : \"-\"} type=\"text\" />\n                  </Form.Group>\n                </Col>\n              </Row>\n              {user.hasOwnProperty(\"vaccinationDetails\") && Object.keys(user.vaccinationDetails).length > 0 && (\n                <>\n                  <h4 className=\"mt-2 mb-3 fw-bolder\">Vaccination Details</h4>\n                  <Row className=\"vaccination-rows-data align-items-center\">\n                    <Col className=\"pr-1\" md=\"9\">\n                      <Row>\n                        <Col className=\"pr-1 vc-form-group\" lg=\"4\">\n                          <Form.Group>\n                            <label className=\"weightBold\">Vaccination Type</label>\n                            <Form.Control\n                              className=\"ellipsis w-100\"\n                              style={{ maxWidth: \"100%\" }}\n                              readOnly\n                              plaintext\n                              value={user.vaccinationDetails.vaccinationType}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </Col>\n                        <Col className=\"pr-1 vc-form-group\" lg=\"4\">\n                          <Form.Group>\n                            <label className=\"weightBold\">Vaccination Date</label>\n                            <Form.Control\n                              className=\"ellipsis w-100\"\n                              style={{ maxWidth: \"100%\" }}\n                              readOnly\n                              plaintext\n                              value={formatDateMDY(user.vaccinationDetails.vaccinationDate)}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </Col>\n\n                        <Col className=\"pr-1 vc-form-group\" lg=\"4\">\n                          <Form.Group className=\"vc-right-image\">\n                            <label className=\"weightBold\">Vaccination Location</label>\n                            <Form.Control\n                              className=\"ellipsis w-100\"\n                              style={{ maxWidth: \"100%\" }}\n                              readOnly\n                              plaintext\n                              value={user.vaccinationDetails.vaccinationLocation}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </Col>\n                      </Row>\n                      {user.vaccinationDetails.vaccinationDate1 && (\n                        <Row>\n                          {/*<Col className=\"pr-1\" lg=\"4\"></Col>*/}\n                          <Col className=\"pr-1 vc-form-group\" lg=\"4\">\n                            <Form.Group className=\"vc-right-image\">\n                              <label className=\"weightBold\">Vaccination Date 1</label>\n                              <Form.Control\n                                className=\"ellipsis w-100\"\n                                style={{ maxWidth: \"100%\" }}\n                                readOnly\n                                plaintext\n                                value={formatDateMDY(user.vaccinationDetails.vaccinationDate1)}\n                                type=\"text\"\n                              />\n                            </Form.Group>\n                          </Col>\n                          <Col className=\"pr-1 vc-form-group\" lg=\"4\">\n                            <Form.Group className=\"vc-right-image\">\n                              <label className=\"weightBold\">Vaccination Location 1</label>\n                              <Form.Control\n                                className=\"ellipsis w-100\"\n                                style={{ maxWidth: \"100%\" }}\n                                readOnly\n                                plaintext\n                                value={user.vaccinationDetails.vaccinationLocation1}\n                                type=\"text\"\n                              />\n                            </Form.Group>\n                          </Col>\n                        </Row>\n                      )}\n                    </Col>\n                    <Col className=\"pr-1\" lg=\"3\">\n                      <Form.Group>\n                        <label className=\"weightBold\">Vaccination Card Image</label>\n                        {vaccinationImg && (\n                          <div className=\"w-75 mx-auto\">\n                            <img\n                              src={vaccinationImg}\n                              style={{ minHeight: \"130px\", maxHeight: \"130px\", width: '80%' }}\n                              className=\"w-100 rounded-3\"\n                              alt=\"Vaccination Card\"\n                              onClick={() => handleImageClick(vaccinationImg)}\n                            ></img>\n                          </div>\n                        )}\n                      </Form.Group>\n                    </Col>\n                  </Row>\n                </>\n              )}\n              {Object.keys(user.vaccinationDetails).length > 0 &&\n                user.vaccinationDetails.hasOwnProperty(\"isBooster\") &&\n                user.vaccinationDetails.isBooster === \"true\" && (\n                  <>\n                    <h4 className=\"mt-2 mb-3 fw-bolderer\">Booster Details</h4>\n                    <Row className=\"vaccination-rows-data\">\n                      <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                        <Form.Group>\n                          <label className=\"weightBold\">Booster Type</label>\n                          <Form.Control\n                            className=\"ellipsis w-100\"\n                            style={{ maxWidth: \"100%\" }}\n                            readOnly\n                            plaintext\n                            value={user.vaccinationDetails.boosterType}\n                            type=\"text\"\n                          />\n                        </Form.Group>\n                      </Col>\n                      <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                        <Form.Group>\n                          <label className=\"weightBold\">Booster Date</label>\n                          <Form.Control\n                            className=\"ellipsis w-100\"\n                            style={{ maxWidth: \"100%\" }}\n                            readOnly\n                            plaintext\n                            value={formatDateMDY(user.vaccinationDetails.boosterDate)}\n                            type=\"text\"\n                          />\n                        </Form.Group>\n                      </Col>\n                      <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                        <Form.Group>\n                          <label className=\"weightBold\">Booster Location</label>\n                          <Form.Control\n                            className=\"ellipsis w-100\"\n                            style={{ maxWidth: \"100%\" }}\n                            readOnly\n                            plaintext\n                            value={user.vaccinationDetails.boosterLocation}\n                            type=\"text\"\n                          />\n                        </Form.Group>\n                      </Col>\n                    </Row>\n                  </>\n                )}\n              {user.isExternalTest === \"true\" && (\n                <>\n                  <h4 className=\"mt-2 mb-3 fw-bolder\">External Test Details</h4>\n                  <Row className=\"vaccination-rows-data align-items-center\">\n                    <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                      <Form.Group>\n                        <label className=\"weightBold\">External Test Type</label>\n                        <Form.Control\n                          className=\"ellipsis w-100\"\n                          style={{ maxWidth: \"100%\" }}\n                          readOnly\n                          plaintext\n                          value={user.externalTestType}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                      <Form.Group>\n                        <label className=\"weightBold\">External Test Date</label>\n                        <Form.Control\n                          className=\"ellipsis w-100\"\n                          style={{ maxWidth: \"100%\" }}\n                          readOnly\n                          plaintext\n                          value={formatDateMDY(user.externalTestDate)}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                      <Form.Group>\n                        <label className=\"weightBold\">External Test Result</label>\n                        <Form.Control\n                          className=\"ellipsis w-100\"\n                          style={{ maxWidth: \"100%\" }}\n                          readOnly\n                          plaintext\n                          value={user.externalTestResult}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </Col>\n                    <Col className=\"pr-1 vc-form-group\" lg=\"3\">\n                      <Form.Group>\n                        <label className=\"weightBold\">External Test Card</label>\n                        {externalTestImg && (\n                          <div className=\"w-75 mx-auto\">\n                            <img\n                              style={{ minHeight: \"130px\", maxHeight: \"130px\", width: '80%' }}\n                              src={externalTestImg}\n                              className=\"w-100 rounded-3\"\n                              alt=\"External Test Card\"\n                              onClick={() => handleImageClick(externalTestImg)}\n                            ></img>\n                          </div>\n                        )}\n                      </Form.Group>\n                    </Col>\n                  </Row>\n                </>\n              )}\n            </div>\n            <FullPageImageView image={fullView} handleClose={() => setFullView(\"\")} />\n          </Modal.Body>\n          <Modal.Footer>\n            <Button variant=\"secondary\" onClick={() => handleClose()}>\n              Close\n            </Button>\n          </Modal.Footer>\n        </Modal>\n      )}\n    </>\n  );\n};\n\nexport default VaccinationDetailModal;\n","import React, { useState, useEffect, useMemo, useRef } from \"react\";\nimport {\n  medFlowInLocalStorage,\n  formatZip,\n  toTitleCase,\n  convertToLower,\n  formateDateLL,\n  checkValidity,\n  formateDatellll,\n  getValidName,\n  isValidName,\n  isValidIdNum,\n  isValidPhoneWithCode,\n  isValidZipCode,\n} from \"utils\";\nimport { useHistory } from \"react-router-dom\";\nimport { newRegisterObj, externalTypesOptions, countryListAllIsoData, IMAGE_UPLOAD_TYPE , CONFIG} from \"constant\";\nimport { Button } from \"react-bootstrap\";\nimport API from \"api\";\nimport moment from \"moment\";\nimport Loader from \"components/Loader/Loader\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport Select from \"react-select\";\nimport { Storage } from \"aws-amplify\";\nimport userIcon from \"assets/img/default-avatar.png\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport Default_Profile from \"../assets/img/default_profile.png\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport countriesOption from \"countries\";\nimport logoImage from \"../assets/img/safecamp_BRAND.1-nobg.png\";\nimport ImageCropModal from \"components/Input/ImageCropModal\";\nimport RegisterStepOne from \"components/PreRegister/RegisterStepOne\";\nimport QRCodeView from \"components/PreRegister/QRCodeView\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport ShowSelection from \"components/PreRegister/ShowSelection\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport { validSpace } from \"utils\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport { isValidDobField, isValidEmail } from \"utils\";\nimport EmployeeSearchRecord from \"components/EmployeeSearchRecord\";\nimport { getPhoneNo } from \"utils\";\n\nconst RegisterCrew = (props) => {\n  const { id, selectedShow } = props;\n\n  const [newUser, setNewUser] = useState(newRegisterObj);\n  const [registrationDone, setRegistrationDone] = useState(false);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(true);\n  const [barcode, setBarcode] = useState(\"\");\n  const [profileImage, setProfileImage] = useState(Default_Profile);\n  const [copyImage, setCopyImage] = useState(Default_Profile);\n  const [vaccinationImage, setVaccinationImage] = useState(\"\");\n  const [externalTestImage, setExternalTestImage] = useState(\"\");\n  const [showImageCroper, setShowImageCropper] = useState(false);\n  const [client, setClient] = useState(\"\");\n  const [showName, setShowName] = useState(\"\");\n  const [pageExpire, setPageExpire] = useState(false);\n  const [step, setStep] = useState(1);\n  const [errorMessageText, setErrorMessageText] = useState(\"\");\n  const [showListing, setShowListing] = useState([]);\n  const [orderKitClose, setOrderKitClose] = useState(1);\n  const [openConfirmationModal, setOpenConfirmationModal] = useState(false);\n  const [message, setMessage] = useState(\"\");\n  const [maxQty, setMaxQty] = useState(2);\n  const [isDisabled, setIsDisabled] = useState(false);\n  const [recordData, setRecordData] = useState([]);\n  const [showPopup, setShowPopup] = useState(false);\n  const [selectedRecord, setSelectedRecord] = useState(null);\n\n  const currentEnv = CONFIG.isLive ? \"LIVE\" : \"DEV\";\n\n  const getFileFromStorage = async (file) => {\n    try {\n      const path = await Storage.get(file);\n      setProfileImage(path);\n      console.log(\"path\", path);\n    } catch {\n      console.log(\"Image loading fail\");\n    }\n  };\n\n  useEffect(() => {\n    if (selectedShow) {\n      setMaxQty(selectedShow.orderQuantity || 2);\n      setNewUser({ ...newUser, showId: selectedShow });\n      setShowName(selectedShow.name);\n      setClient(selectedShow.clientID);\n      setLoading(false);\n    }\n  }, []);\n\n  const loadShowData = async (id) => {\n    const showData = await API.preRegisterShowData(id, currentEnv);\n    setLoading(false);\n    if (showData) {\n      return showData;\n    }\n    return null;\n  };\n\n  const vaccinationTypes = [\n    {\n      label: \"Bharat Biotech (Covaxin)\",\n      value: \"Bharat Biotech (Covaxin)\",\n      noOfDose: 2,\n    },\n    {\n      label: \"Johnson & Johnson (Ad26.COV2.S)\",\n      value: \"Johnson & Johnson (Ad26.COV2.S)\",\n      noOfDose: 1,\n    },\n    { label: \"Novavax (Nuvaxovid)\", value: \"Novavax (Nuvaxovid)\", noOfDose: 2 },\n    { label: \"Moderna (Spikevax)\", value: \"Moderna (Spikevax)\", noOfDose: 2 },\n    {\n      label: \"Oxford/AstraZeneca (Vaxzevria)\",\n      value: \"Oxford/AstraZeneca (Vaxzevria)\",\n      noOfDose: 2,\n    },\n    {\n      label: \"Pfizer/BioNTech (Comirnaty)\",\n      value: \"Pfizer/BioNTech (Comirnaty)\",\n      noOfDose: 2,\n    },\n    {\n      label: \"Serum Institute of India (Covishield)\",\n      value: \"Serum Institute of India (Covishield)\",\n      noOfDose: 2,\n    },\n    {\n      label: \"Serum Institute of India (Novavax)\",\n      value: \"Serum Institute of India Novavax(Novavax)\",\n      noOfDose: 2,\n    },\n    { label: \"Sinopharm (Covilo)\", value: \"Sinopharm (Covilo)\", noOfDose: 2 },\n    { label: \"Sinovac (CoronaVac)\", value: \"Sinovac (CoronaVac)\", noOfDose: 2 },\n  ];\n\n  const history = useHistory();\n\n  const redirectToAdmin = () => {\n    if (history) history.push(\"/admin\");\n  };\n\n  const isLoggedIn = medFlowInLocalStorage.get();\n  if (isLoggedIn && props.hasOwnProperty(\"match\")) redirectToAdmin();\n\n  const showErrorMessage = (message) => {\n    setError(message);\n    setTimeout(() => setError(\"\"), 2000);\n  };\n  const isVaccinationInfoEnable = useMemo(() => {\n    return newUser.isVaccinated && newUser.showId && newUser.showId.vaccinationCard;\n  }, [newUser.isVaccinated, newUser.showId]);\n\n  const isExternalTestAllow = useMemo(() => {\n    return newUser.showId && newUser.showId.externalTest;\n  }, [newUser.showId]);\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setNewUser({ ...newUser, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zipcode: val.zipcode,\n        zip: val.zip,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setNewUser({ ...newUser, ...addressObj });\n    }\n  };\n  const handleSubmit = async () => {\n    if (!newUser.first) {\n      showErrorMessage(\"First name is required\");\n      return;\n    }\n    if (!isValidName(newUser.first)) {\n      showErrorMessage(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!newUser.last) {\n      showErrorMessage(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(newUser.last)) {\n      showErrorMessage(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!newUser.email?.trim()) {\n      showErrorMessage(\"Email name is required\");\n      return;\n    }\n    if (!isValidEmail(newUser.email)) {\n      showErrorMessage(\"Invalid Email\");\n      return;\n    }\n\n    if (!newUser.phone_number) {\n      showErrorMessage(\"Phone number is required\");\n      return;\n    }\n\n    if (!newUser.street?.trim()) {\n      showErrorMessage(\"Address is required\");\n      return;\n    }\n    if (!newUser.city.trim()) {\n      showErrorMessage(\"City is required\");\n      return;\n    }\n\n    if (!newUser.state.trim()) {\n      showErrorMessage(\"State is required\");\n      return;\n    }\n\n    if (!newUser.country) {\n      showErrorMessage(\"Select the country\");\n      return;\n    }\n\n    if (newUser.zip === null || !newUser.zip) {\n      showErrorMessage(\"Zipcode is required\");\n      return;\n    }\n\n    if (!isValidZipCode(newUser.isoCode || \"US\", newUser.zip)) {\n      showErrorMessage(\"Invalid zipcode\");\n      return;\n    }\n    if (isPCRShow()) {\n      if (!newUser.sex) {\n        showErrorMessage(\"Gender is required\");\n        return;\n      }\n\n      if (!newUser.id_number) {\n        showErrorMessage(\"DL/Passport Number is required\");\n        return;\n      }\n\n      if (!isValidIdNum(newUser.id_number)) {\n        showErrorMessage(\"Invalid DL/Passport Number must contains at least 5 characters\");\n        return;\n      }\n      if (!newUser.dob) {\n        showErrorMessage(\"Date of Birth is required\");\n        return;\n      }\n      const startDate = moment(\"1900-01-01\").startOf(\"day\").format(\"YYYY-MM-DD\");\n      const endDate = moment().endOf(\"day\").format(\"YYYY-MM-DD\");\n      if (!isValidDobField(newUser.dob, \"YYYY-MM-DD\") || !moment(newUser.dob).isBetween(startDate, endDate)) {\n        showErrorMessage(\"Date of Birth is Invalid\");\n        return;\n      }\n    }\n    try {\n      setIsDisabled(true);\n      setLoading(true);\n      const obj = newUser;\n      const phone = formatPhoneNumberIntl(newUser.phone_number);\n      const phoneArr = phone.split(\" \");\n      obj.countryCode = phoneArr[0];\n      phoneArr.splice(0, 1);\n      obj.phone_number = phoneArr.join(\"\");\n      obj.order_phone = phone;\n      let fileName = \"\";\n      if (profileImage && profileImage !== Default_Profile && profileImage instanceof Object) {\n        fileName = await API.saveFileExternalStorage(\n          obj.phone_number,\n          \"PR\",\n          IMAGE_UPLOAD_TYPE.ProfileImage,\n          profileImage\n        );\n        // await Storage.put(fileName, profileImage);\n      }\n      if (profileImage && profileImage !== Default_Profile) {\n        obj.profileImage = fileName;\n      }\n      const response = await API.requestTestKit(obj, client, currentEnv);\n      if (id) {\n        props.handleAddedPreReg();\n      }\n      setLoading(false);\n      setStep(3);\n    } catch (err) {\n      setLoading(false);\n      setError(err);\n    }\n  };\n\n  const handleCompleteRegistration = async () => {\n    if (!newUser.first) {\n      showErrorMessage(\"First name is required\");\n      return;\n    }\n\n    if (!isValidName(newUser.first)) {\n      showErrorMessage(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!newUser.last) {\n      showErrorMessage(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(newUser.last)) {\n      showErrorMessage(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!newUser.email?.trim()) {\n      showErrorMessage(\"Email name is required\");\n      return;\n    }\n    if (!isValidEmail(newUser.email)) {\n      showErrorMessage(\"Invalid Email\");\n      return;\n    }\n\n    if (!newUser.phone_number) {\n      showErrorMessage(\"Phone number is required\");\n      return;\n    }\n\n    if (!newUser.street.trim()) {\n      showErrorMessage(\"Address is required\");\n      return;\n    }\n    if (!newUser.city.trim()) {\n      showErrorMessage(\"City is required\");\n      return;\n    }\n\n    if (!newUser.state.trim()) {\n      showErrorMessage(\"State is required\");\n      return;\n    }\n\n    if (newUser.zip === null || !newUser.zip) {\n      showErrorMessage(\"Zipcode is required\");\n      return;\n    }\n\n    if (!isValidZipCode(newUser.isoCode || \"US\", newUser.zip)) {\n      showErrorMessage(\"Invalid zipcode\");\n      return;\n    }\n\n    if (!newUser.sex) {\n      showErrorMessage(\"Gender is required\");\n      return;\n    }\n    if (!newUser.dob) {\n      showErrorMessage(\"Date of Birth is required\");\n      return;\n    }\n    const startDate = moment(\"1900-01-01\").startOf(\"day\").format(\"YYYY-MM-DD\");\n    const endDate = moment().endOf(\"day\").format(\"YYYY-MM-DD\");\n    if (!isValidDobField(newUser.dob, \"YYYY-MM-DD\") || !moment(newUser.dob).isBetween(startDate, endDate)) {\n      showErrorMessage(\"Date of Birth is Invalid\");\n      return;\n    }\n\n    if (!newUser.id_number) {\n      showErrorMessage(\"DL/Passport Number is required\");\n      return;\n    }\n\n    if (!isValidIdNum(newUser.id_number)) {\n      showErrorMessage(\"Invalid DL/Passport Number must contains at least 5 characters\");\n      return;\n    }\n    if (newUser.showId === null) {\n      showErrorMessage(\"Fail to register, show info not found\");\n      return;\n    }\n\n    if (newUser.isVaccinated === null || newUser.isVaccinated.length === 0) {\n      showErrorMessage(\"Please select the vaccination status\");\n      return;\n    }\n    if (newUser.isVaccinated === false && newUser.showId && newUser.showId.vaccinationCard) {\n      setErrorMessageText(\n        \"Can not proceed without vaccination. Please contact the event organizer for further details\"\n      );\n      return;\n    }\n    if (isVaccinationInfoEnable) {\n      if (newUser.isVaccinated && !vaccinationImage) {\n        showErrorMessage(\"Vaccination Image is required\");\n        return;\n      }\n      if (newUser.isVaccinated && !newUser.vaccinationType) {\n        showErrorMessage(\"Vaccination Type is required\");\n        return;\n      }\n      if (newUser.isVaccinated && !newUser.vaccinationFirstDate) {\n        showErrorMessage(\"Vaccination Date is required\");\n        return;\n      }\n      if (\n        newUser.isVaccinated &&\n        (!isValidDobField(newUser.vaccinationFirstDate, \"YYYY-MM-DD\") ||\n          !moment(newUser.vaccinationFirstDate).isBetween(startDate, endDate))\n      ) {\n        showErrorMessage(\"Vaccination Date is Invalid\");\n        return;\n      }\n      if (newUser.isVaccinated && !newUser.vaccinationFirstLocation) {\n        showErrorMessage(\"Vaccination Location is required\");\n        return;\n      }\n\n      if (newUser.isVaccinated && newUser.vaccinationDose > 1 && !newUser.vaccinationSecondDate) {\n        showErrorMessage(\"Vaccination Second Date is required\");\n        return;\n      }\n      if (\n        newUser.isVaccinated &&\n        newUser.vaccinationSecondDate &&\n        (!isValidDobField(newUser.vaccinationSecondDate, \"YYYY-MM-DD\") ||\n          !moment(newUser.vaccinationSecondDate).isBetween(startDate, endDate))\n      ) {\n        showErrorMessage(\"Vaccination Second Date is Invalid\");\n        return;\n      }\n      if (newUser.isVaccinated && newUser.vaccinationSecondDate && !newUser.vaccinationSecondLocation) {\n        showErrorMessage(\"Vaccination Second Location is required\");\n        return;\n      }\n      if (newUser.isVaccinated) {\n        if (newUser.isBooster === null) {\n          showErrorMessage(\"Please select the booster\");\n          return;\n        }\n        if (newUser.isBooster && !newUser.boosterType) {\n          showErrorMessage(\"Booster Type is required\");\n          return;\n        }\n        if (newUser.isBooster && !newUser.boosterDate) {\n          showErrorMessage(\"Booster Date is required\");\n          return;\n        }\n        if (\n          newUser.isBooster &&\n          (!isValidDobField(newUser.boosterDate, \"YYYY-MM-DD\") ||\n            !moment(newUser.boosterDate).isBetween(startDate, endDate))\n        ) {\n          showErrorMessage(\"Booster Date  is Invalid\");\n          return;\n        }\n        if (newUser.isBooster && !newUser.boosterLocation) {\n          showErrorMessage(\"Booster Location is required\");\n          return;\n        }\n      }\n    }\n\n    if (isExternalTestAllow) {\n      if (newUser.isExternalTest === null || newUser.isExternalTest.length === 0) {\n        showErrorMessage(\"Please select external test type\");\n        return;\n      }\n\n      if (newUser.isExternalTest && !externalTestImage) {\n        showErrorMessage(\"External Test Image is required\");\n        return;\n      }\n      if (newUser.isExternalTest && !newUser.externalTestType) {\n        showErrorMessage(\"External Test Type is required\");\n        return;\n      }\n      if (newUser.isExternalTest && !newUser.externalTestDate) {\n        showErrorMessage(\"External Test Date is required\");\n        return;\n      }\n      if (\n        newUser.isExternalTest &&\n        (!isValidDobField(newUser.externalTestDate, \"YYYY-MM-DD\") ||\n          !moment(newUser.externalTestDate).isBetween(startDate, endDate))\n      ) {\n        showErrorMessage(\"External Test Date is Invalid\");\n        return;\n      }\n      if (newUser.isExternalTest && !newUser.externalTestResult) {\n        showErrorMessage(\"External Test Result is required\");\n        return;\n      }\n    }\n    try {\n      setIsDisabled(true);\n      setLoading(true);\n      const obj = newUser;\n      const phone = formatPhoneNumberIntl(newUser.phone_number);\n      const phoneArr = phone.split(\" \");\n      newUser.id_number = checkValidity(newUser.id_number);\n      obj.countryCode = phoneArr[0];\n      phoneArr.splice(0, 1);\n      obj.phone_number = phoneArr.join(\"\");\n\n      if (newUser.isVaccinated && isVaccinationInfoEnable) {\n        let vaccinationFileName = \"\";\n        if (typeof vaccinationImage === \"object\") {\n          vaccinationFileName = await API.saveFileExternalStorage(\n            obj.phone_number,\n            \"PR\",\n            IMAGE_UPLOAD_TYPE.VacinationCard,\n            vaccinationImage\n          );\n        }\n\n        // let vaccineCardFile = `${newUser.phone_number}-vaccination-card.png`;\n        // await Storage.put(vaccineCardFile, vaccinationImage);\n\n        Object.assign(newUser, { vaccineCardFile: vaccinationFileName });\n      }\n      if (newUser.isExternalTest && isExternalTestAllow) {\n        let externalImageFileName = \"\";\n        if (typeof externalTestImage === \"object\") {\n          externalImageFileName = await API.saveFileExternalStorage(\n            obj.phone_number,\n            \"PR\",\n            IMAGE_UPLOAD_TYPE.ExternalTest,\n            externalTestImage\n          );\n        }\n        Object.assign(newUser, { externalFile: externalImageFileName });\n      }\n\n      const response = await API.preRegisterNewEmployee(\n        newUser,\n        client,\n        isVaccinationInfoEnable,\n        orderKitClose,\n        currentEnv\n      );\n\n      if (response.body && response.body.item && Object.keys(response.body.item).length > 0) {\n        setNewUser(response.body.item);\n      } else {\n        setNewUser({ ...obj });\n      }\n\n      if (profileImage && profileImage !== Default_Profile && profileImage instanceof Object) {\n        fileName = await API.saveFileExternalStorage(\n          obj.phone_number,\n          \"PR\",\n          IMAGE_UPLOAD_TYPE.ProfileImage,\n          profileImage\n        );\n      }\n\n      setStep(5);\n      if (id) {\n        props.handleAddedPreReg();\n      }\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      setError(err);\n    }\n  };\n\n  const handleCropDone = (isConfirm, fileData) => {\n    setShowImageCropper(false);\n    if (isConfirm && fileData) {\n      setProfileImage(new File([fileData], \"profileImage.jpeg\"));\n    } else {\n      setProfileImage(profileImage);\n    }\n  };\n\n  const setSpecificUI = () => {\n    if (newUser.showId && newUser.showId.orderKitDate) {\n      const startDate = moment(newUser.showId.orderKitDate);\n      if (!moment().isSameOrBefore(startDate)) {\n        setStep(4);\n        setOrderKitClose(5);\n        return;\n      }\n    } else if (newUser.showId && newUser.showId.startDate) {\n      const startDate = moment(newUser.showId.startDate);\n      if (!moment().isSameOrBefore(startDate)) {\n        setStep(4);\n        setOrderKitClose(5);\n        return;\n      }\n    }\n    // add message confirmation for order kit\n    // to remove this need to set the step(4)\n    setMessage(\"Would you like to order a test for this event?\");\n    setOpenConfirmationModal(true);\n  };\n\n  const handleProcced = async (obj) => {\n    try {\n      setLoading(true);\n      setIsDisabled(false);\n      let phone = \"\";\n      let email = \"\";\n      let countryCode = \"\";\n      let phoneArr = \"\";\n      if (obj.phone) {\n        [countryCode, phoneArr, phone] = getPhoneNo(obj.phone);\n      } else {\n        email = obj.email;\n      }\n\n      let formattedPhone = `+${phone?.replace(/\\D/g, \"\")}`;\n      const response = await API.getPreRegisterByPhone(\n        phoneArr || email,\n        newUser.showId ? newUser.showId.id : null,\n        currentEnv\n      );\n      // const List = [response.body];\n      // console.log(\"response\", response, List);\n      // if (List.length > 0 && statusCode !== 404) {\n      //   setRecordData(List);\n      //   setShowPopup(true);\n      //   setLoading(false);\n      //   return;\n      // }\n      console.log(\"response\", response);\n      const data = response.body;\n      const statusCode = response.statusCode;\n\n      if (!newUser.showId) {\n        setLoading(false);\n        if (statusCode === 404 || data.length === 0) {\n          setErrorMessageText(\"No active record found\");\n          return;\n        }\n        if (data.length === 1) {\n          handleShowSelection(data[0]);\n          return;\n        }\n        if (statusCode === 202) {\n          setShowListing(data);\n        }\n        return;\n      }\n\n      if (statusCode === 404) {\n        setSpecificUI();\n        setNewUser({ ...newUser, phone_number: obj.phone, email: obj.email || \"\" });\n      } else if (statusCode === 201) {\n        // when user has some basic information in pre register table against any show\n        fillUserData(data, formattedPhone);\n        if (data.profileImage && data.profileImage !== \"undefined\") {\n          await getFileFromStorage(`${data.phone_number}-profile-image.png`);\n        }\n        setSpecificUI();\n      } else {\n        formattedPhone = data.countryCode + data.phone_number;\n        if (data.profileImage && data.profileImage !== \"undefined\") {\n          await getFileFromStorage(`${data.phone_number}-profile-image.png`);\n        }\n        if (data.step && parseInt(data.step) === 5) {\n          setStep(parseInt(data.step));\n          formattedPhone = data.phone_number;\n        } else {\n          setStep(4);\n          setOrderKitClose(5);\n        }\n        fillUserData(data, formattedPhone);\n      }\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      setStep(1);\n      setErrorMessageText(err);\n    }\n  };\n\n  const fillUserData = (data, formattedPhone) => {\n    const country = countryListAllIsoData.find((f) => f.name === data.country) || { code: \"US\" };\n    const obj = {\n      ...newUser,\n      first: data.first,\n      last: data.last,\n      email: data.email,\n      phone_number: formattedPhone,\n      state: data.state,\n      zipcode: data.zipcode,\n      country: data.country,\n      isoCode: country.code,\n      street: data.street,\n      street2: data.street2 === \"undefined\" ? \"\" : data.street2,\n      city: data.city,\n      id: data.id,\n      designation: \"\",\n    };\n    try {\n      Object.assign(obj, {\n        sex: data.sex,\n        dob: data.dob,\n        id_number: data.id_number || \"\",\n        isVaccinated: data.isVaccinated && data.isVaccinated === \"true\" ? true : false,\n      });\n    } catch (err) {\n      console.log(\"Error\", err);\n    }\n    setNewUser(obj);\n  };\n  console.log(\"bew\", newUser);\n  const handleShowSelection = async (obj) => {\n    setLoading(true);\n    if (obj.profileImage && obj.profileImage !== \"undefined\") {\n      await getFileFromStorage(`${obj.phone_number}-profile-image.png`);\n    }\n    const showData = await loadShowData(obj.showId);\n    if (showData) {\n      obj.phone_number =\n        obj.countryCode && obj.countryCode.substring(0, 1) === \"+\"\n          ? `${obj.countryCode}${obj.phone_number}`\n          : `+${obj.countryCode}${obj.phone_number}`;\n      setShowListing([]);\n      setNewUser({ ...obj, showId: showData });\n      setShowName(showData.name);\n      setClient(showData.clientID);\n      setStep(4);\n      setOrderKitClose(5);\n    }\n  };\n\n  const handleConfirmationRes = (value) => {\n    setOpenConfirmationModal(false);\n    setMessage(\"\");\n    if (value) {\n      setStep(2);\n    } else {\n      setStep(4);\n      setOrderKitClose(5);\n    }\n  };\n  const handlePopulate = async (data) => {\n    try {\n      if (data.profileImage && data.profileImage !== \"undefined\") {\n        await getFileFromStorage(`${data.phone_number}-profile-image.png`);\n      }\n      if (data.step && parseInt(data.step) === 5) {\n        setStep(parseInt(data.step));\n      } else {\n        setStep(4);\n        setOrderKitClose(5);\n      }\n      fillUserData(data);\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      setStep(1);\n      setErrorMessageText(err);\n    }\n  };\n  const isPCRShow = () => newUser.showId && newUser.showId.orderKitType && newUser.showId.orderKitType === \"PCR\";\n\n  const getTestOrderQuantity = useMemo(() => {\n    const options = [];\n    for (let i = 1; i <= maxQty; i++) {\n      options.push({ value: i, label: i });\n    }\n    return options;\n  }, [maxQty]);\n\n  if (pageExpire) return <p>Page Expired</p>;\n\n  if (showListing.length > 0) {\n    return <ShowSelection shows={showListing} handleShowSelection={handleShowSelection} />;\n  }\n\n  if (step === 1) {\n    return (\n      <>\n        <RegisterStepOne show={newUser.showId} handleProcced={handleProcced} errorMessageText={errorMessageText} />\n        {openConfirmationModal && (\n          <ConfirmationModal\n            isPreRegister\n            title=\"Pre Registration\"\n            message={message}\n            handleConfirm={handleConfirmationRes}\n          />\n        )}\n        {showPopup && recordData.length > 0 && (\n          <EmployeeSearchRecord\n            data={recordData}\n            handleSelect={handlePopulate}\n            handleClose={() => {\n              setShowPopup(false), setSelectedRecord(null);\n            }}\n            setSelectSearchData={setSelectedRecord}\n            selectSearchdata={selectedRecord}\n          />\n        )}\n        {loading && <Loader />}\n      </>\n    );\n  }\n\n  if (step === 3)\n    return (\n      <div className=\"registerFormWrapper align-items-start\">\n        <div className=\"registerWrapper\">\n          <div className=\"loginInner\">\n            {/* <div className=\"text-center\">\n              {\" \"}\n              <img src={logoImage} alt=\"logo\" className=\"logo-width\" />{\" \"}\n            </div> */}\n            <h4 className=\"w-100 text-center mt-4\">\n              <b>Test Order Successful for {showName && `${showName}`}</b>\n            </h4>\n            <h4 className=\"w-100 text-center mt-4\">\n              <b>Event Date: {`${formateDateLL(newUser.showId.startDate)}`}</b>\n            </h4>\n\n            {newUser.showId.orderKitDate && (\n              <h4>\n                <b>Test Ordering Deadline: {`${formateDatellll(newUser.showId.orderKitDate)}`}</b>\n              </h4>\n            )}\n\n            <p>\n              Thank you for submitting your request for a SafeCamp at home test. You should be receiving your test(s)\n              within 3-5 business days.\n            </p>\n            <p>\n              As a reminder, a negative test result is required within 3 calendar days of the event date. Additional\n              instructions will be included within the test kit to upload your result or bring it to the event.\n            </p>\n            <p>Please refer to your invitation for additional event details and FAQ's.</p>\n          </div>\n        </div>\n      </div>\n    );\n\n  if (step === 5) {\n    return <QRCodeView handleProcced={handleProcced} user={newUser} profileImage={profileImage} />;\n  }\n\n  return (\n    <>\n      <div className=\"registerFormWrapper\">\n        <div className=\"registerWrapper\">\n          <div className=\"loginInner\">\n            <div className=\"text-center\">\n              {\" \"}\n              <img src={logoImage} alt=\"logo\" className=\"logo-width\" />{\" \"}\n            </div>\n            <h4 className=\"w-100 text-center mt-4\">\n              <b>\n                {\" \"}\n                {step === 2 ? \"Order Tests for\" : \"Register for \"} {showName && `${showName}`}\n              </b>\n            </h4>\n            <h4 className=\"w-100 text-center mt-4\">\n              <b>Event Date: {`${formateDateLL(newUser.showId.startDate)}`}</b>\n            </h4>\n            <div className=\"form-wrapper\">\n              {/* <ImageInput\n                type=\"profile\"\n                setSelectedImage={setProfileImage}\n                selectedImage={profileImage}\n                showCropDialog={setShowImageCropper}\n                setCopyImage={setCopyImage}\n              /> */}\n              <div className=\"form-group-wrapper mt-2\">\n                <label className=\"mb-1\">First Name:</label>\n                <input\n                  value={toTitleCase(newUser.first)}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"First Name\"\n                  onChange={(e) => setNewUser({ ...newUser, first: getValidName(e.target.value) })}\n                />\n              </div>\n              <div className=\"form-group-wrapper \">\n                <label className=\"mb-1\">Last Name:</label>\n                <input\n                  value={toTitleCase(newUser.last)}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"Last Name\"\n                  onChange={(e) => setNewUser({ ...newUser, last: getValidName(e.target.value) })}\n                />\n              </div>\n              <div className=\"form-group-wrapper \">\n                <label className=\"mb-1\">Email:</label>\n                <input\n                  value={newUser.email}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"Email\"\n                  onChange={(e) => setNewUser({ ...newUser, email: convertToLower(e.target.value) })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">Phone Number:</label>\n                <PhoneNoInput\n                  handleChange={(e) => {\n                    setNewUser({\n                      ...newUser,\n                      phone_number: e,\n                    });\n                  }}\n                  value={newUser.phone_number}\n                />\n              </div>\n\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">Address:</label>\n                <AutoCompleteAddress value={newUser.street} handleChange={handleUpdateAddress} />\n                {/* <input\n                  ref={ref}\n                  value={toTitleCase(newUser.street)}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"Address\"\n                  onChange={(e) => setNewUser({ ...newUser, street: e.target.value })}\n                /> */}\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">Address 2:</label>\n                <input\n                  value={toTitleCase(newUser.street2)}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"Enter Address 2\"\n                  onChange={(e) => setNewUser({ ...newUser, street2: getValidName(e.target.value) })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">City:</label>\n                <input\n                  value={toTitleCase(newUser.city)}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"City\"\n                  onChange={(e) => setNewUser({ ...newUser, city: getValidName(e.target.value) })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">State:</label>\n                <input\n                  value={newUser.state}\n                  maxLength={35}\n                  type=\"text\"\n                  className=\"form-control stateField\"\n                  placeholder=\"State Abbr: XX\"\n                  onChange={(e) => {\n                    let val = e.target.value;\n                    if (val) val = val.toUpperCase();\n                    setNewUser({ ...newUser, state: validSpace(val) });\n                  }}\n                />\n              </div>\n              <div className=\"form-group-wrapper \">\n                <label className=\"mb-1\">Country:</label>\n                <Select\n                  options={[{ label: \"United States\", value: \"United States\" }]}\n                  blurInputOnSelect={true}\n                  value={{ label: newUser.country, value: newUser.country }}\n                  menuPlacement=\"auto\"\n                  placeholder=\"Select Country\"\n                  className=\"w-100\"\n                  onChange={(e) => {\n                    const country = countryListAllIsoData.find((f) => f.name === e.value) || { code: \"US\" };\n                    setNewUser({\n                      ...newUser,\n                      country: e.value,\n                      isoCode: country.code,\n                    });\n                  }}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"mb-1\">Zip Code:</label>\n                <input\n                  value={newUser.isoCode === \"US\" ? formatZip(newUser.zip) : newUser.zip}\n                  type=\"text\"\n                  className=\"form-control\"\n                  placeholder=\"Enter Zip Code\"\n                  maxLength={10}\n                  onChange={(e) => {\n                    let val = e.target.value;\n                    if (val) val = val.toUpperCase();\n                    setNewUser({\n                      ...newUser,\n                      zip: newUser.isoCode === \"US\" ? formatZip(val) : validSpace(val),\n                    });\n                  }}\n                />\n              </div>\n              {step === 2 && (\n                <>\n                  {newUser.showId && newUser.showId.orderKitType && newUser.showId.orderKitType === \"PCR\" && (\n                    <>\n                      <div className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders\">Gender: </label>\n                        <div>\n                          <span className=\"radioBox-wrapper\">\n                            <input\n                              type=\"radio\"\n                              className=\"radioButton\"\n                              name=\"sex\"\n                              checked={newUser.sex === \"M\"}\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  sex: e.target.checked ? \"M\" : \"\",\n                                })\n                              }\n                            />\n                            <span className=\"radioButton\">Male</span>\n                          </span>\n                          <span className=\"radioBox-wrapper\">\n                            <input\n                              type=\"radio\"\n                              className=\"radioButton\"\n                              name=\"sex\"\n                              checked={newUser.sex === \"F\"}\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  sex: e.target.checked ? \"F\" : \"\",\n                                })\n                              }\n                            />\n                            <span className=\"radioButton\">Female</span>\n                          </span>\n                          <span className=\"radioBox-wrapper\">\n                            <input\n                              type=\"radio\"\n                              className=\"radioButton\"\n                              name=\"sex\"\n                              checked={newUser.sex === \"X\"}\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  sex: e.target.checked ? \"X\" : \"\",\n                                })\n                              }\n                            />\n                            <span className=\"radioButton\">Not Specified</span>\n                          </span>\n                        </div>\n                      </div>\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"mb-1\">DL/Passport Number:</label>\n                        <input\n                          value={newUser.id_number}\n                          maxLength={20}\n                          type=\"text\"\n                          className=\"form-control\"\n                          placeholder=\"DL/Passport Number\"\n                          onChange={(e) => setNewUser({ ...newUser, id_number: e.target.value })}\n                        />\n                      </div>\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"modalLineHeaders\">DOB: </label>\n                        <input\n                          className=\"form-control\"\n                          type=\"date\"\n                          value={newUser.dob}\n                          onChange={(e) => setNewUser({ ...newUser, dob: e.target.value })}\n                          max={moment().format(\"YYYY-MM-DD\")}\n                          min={moment(\"1900-01-01\").format(\"YYYY-MM-DD\")}\n                        />\n                        {/* <SingleDatePicker\n                      onApply={(event, picker) => {\n                        setNewUser({\n                          ...newUser,\n                          dob: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                        });\n                      }}\n                      value={newUser.dob}\n                      currentDate={true}\n                    /> */}\n                      </div>\n                    </>\n                  )}\n                  <div className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders\">Capacity: </label>\n                    <div>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"capacity\"\n                          checked={newUser.capacity === \"Guest\"}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              capacity: e.target.checked ? \"Guest\" : \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Guest</span>\n                      </span>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"capacity\"\n                          checked={newUser.capacity === \"Staff\"}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              capacity: e.target.checked ? \"Staff\" : \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Staff</span>\n                      </span>\n                    </div>\n                  </div>\n                  {newUser.capacity === \"Staff\" && (\n                    <div className=\"form-group-wrapper\">\n                      <label className=\"mb-1\">Role:</label>\n                      <input\n                        value={newUser.designation}\n                        type=\"text\"\n                        className=\"form-control\"\n                        placeholder=\"Role\"\n                        onChange={(e) =>\n                          setNewUser({\n                            ...newUser,\n                            designation: e.target.value,\n                          })\n                        }\n                      />\n                    </div>\n                  )}\n\n                  <div className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders\">Select Test Quantity:</label>\n                    <Select\n                      options={getTestOrderQuantity}\n                      blurInputOnSelect={true}\n                      defaultValue={{ value: 1, label: 1 }}\n                      menuPlacement=\"auto\"\n                      placeholder=\"Select Quantity\"\n                      className=\"w-100\"\n                      onChange={(e) =>\n                        setNewUser({\n                          ...newUser,\n                          testSendQty: e.value,\n                        })\n                      }\n                    />\n                  </div>\n                </>\n              )}\n              {step === 4 && (\n                <>\n                  <div className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders\">Gender: </label>\n                    <div>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"sex\"\n                          checked={newUser.sex === \"M\"}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              sex: e.target.checked ? \"M\" : \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Male</span>\n                      </span>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"sex\"\n                          checked={newUser.sex === \"F\"}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              sex: e.target.checked ? \"F\" : \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Female</span>\n                      </span>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"sex\"\n                          checked={newUser.sex === \"X\"}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              sex: e.target.checked ? \"X\" : \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Not Specified</span>\n                      </span>\n                    </div>\n                  </div>\n\n                  <div className=\"form-group-wrapper \">\n                    <label className=\"modalLineHeaders\">DOB: </label>\n                    <input\n                      className=\"form-control\"\n                      type=\"date\"\n                      value={newUser.dob}\n                      onChange={(e) => setNewUser({ ...newUser, dob: e.target.value })}\n                      max={moment().format(\"YYYY-MM-DD\")}\n                      min={moment(\"1900-01-01\").format(\"YYYY-MM-DD\")}\n                    />\n                    {/* <SingleDatePicker\n                      onApply={(event, picker) => {\n                        setNewUser({\n                          ...newUser,\n                          dob: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                        });\n                      }}\n                      value={newUser.dob}\n                      currentDate\n                    /> */}\n                  </div>\n                  <div className=\"form-group-wrapper \">\n                    <label className=\"mb-1\">DL/Passport Number:</label>\n                    <input\n                      value={newUser.id_number}\n                      maxLength={20}\n                      type=\"text\"\n                      className=\"form-control\"\n                      placeholder=\"DL/Passport Number\"\n                      onChange={(e) => setNewUser({ ...newUser, id_number: e.target.value })}\n                    />\n                  </div>\n\n                  <div className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders\">Are you vaccinated:</label>\n                    <div>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"isVaccinated\"\n                          checked={newUser.isVaccinated === true}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              isVaccinated: e.target.checked && true,\n                              vaccinationFirstLocation: \"United States\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">Yes</span>\n                      </span>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"isVaccinated\"\n                          checked={newUser.isVaccinated === false}\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              isVaccinated: e.target.checked && false,\n                              vaccinationFirstDate: \"\",\n                              vaccinationFirstLocation: \"\",\n                              vaccinationSecondDate: \"\",\n                              vaccinationSecondLocation: \"\",\n                              vaccinationType: \"\",\n                            })\n                          }\n                        />\n                        <span className=\"radioButton\">No</span>\n                      </span>\n                    </div>\n                  </div>\n\n                  {isVaccinationInfoEnable && (\n                    <>\n                      <ImageInput\n                        className=\"fileDesign\"\n                        cssClass=\"vaccinationField\"\n                        title=\" Vaccination Certificate\"\n                        setSelectedImage={setVaccinationImage}\n                        selectedImage={vaccinationImage}\n                      />\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"mb-1\">Vaccination Type:</label>\n                        <Select\n                          options={vaccinationTypes}\n                          blurInputOnSelect={true}\n                          defaultValue={null}\n                          menuPlacement=\"auto\"\n                          placeholder=\"Select Vaccination type\"\n                          className=\"w-100\"\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              vaccinationType: e.value,\n                              vaccinationDose: e.noOfDose,\n                              vaccinationSecondLocation: e.noOfDose === 2 ? \"United States\" : \"\",\n                            })\n                          }\n                        />\n                      </div>\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"modalLineHeaders\">\n                          {newUser.vaccinationDose && newUser.vaccinationDose === 1\n                            ? \"Vaccination Date\"\n                            : \"Vaccination 1st Date:\"}\n                        </label>\n                        <input\n                          className=\"form-control\"\n                          type=\"date\"\n                          value={newUser.vaccinationFirstDate}\n                          onChange={(e) => setNewUser({ ...newUser, vaccinationFirstDate: e.target.value })}\n                          max={moment().format(\"YYYY-MM-DD\")}\n                          min={moment(\"1900-01-01\").format(\"YYYY-MM-DD\")}\n                        />\n                        {/* <SingleDatePicker\n                          onApply={(event, picker) =>\n                            setNewUser({\n                              ...newUser,\n                              vaccinationFirstDate: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                            })\n                          }\n                          value={newUser.vaccinationFirstDate}\n                        /> */}\n                      </div>\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"mb-1\">Vaccination Location:</label>\n                        <Select\n                          options={[{ label: \"United States\", value: \"United States\" }]}\n                          blurInputOnSelect={true}\n                          defaultValue={{ label: \"United States\", value: \"United States\" }}\n                          menuPlacement=\"auto\"\n                          placeholder=\"Select Location\"\n                          className=\"w-100\"\n                          onChange={(e) =>\n                            setNewUser({\n                              ...newUser,\n                              vaccinationFirstLocation: e.value,\n                            })\n                          }\n                        />\n                      </div>\n                      {newUser.vaccinationDose && newUser.vaccinationDose > 1 && (\n                        <>\n                          <div className=\"form-group-wrapper \">\n                            <label className=\"modalLineHeaders\">Vaccination 2nd Date</label>\n                            <input\n                              className=\"form-control\"\n                              type=\"date\"\n                              value={newUser.vaccinationSecondDate}\n                              onChange={(e) => setNewUser({ ...newUser, vaccinationSecondDate: e.target.value })}\n                              max={moment().format(\"YYYY-MM-DD\")}\n                              min={moment(\"1900-01-01\").format(\"YYYY-MM-DD\")}\n                            />\n                            {/* <SingleDatePicker\n                              onApply={(event, picker) =>\n                                setNewUser({\n                                  ...newUser,\n                                  vaccinationSecondDate: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                                })\n                              }\n                              value={newUser.vaccinationSecondDate}\n                            /> */}\n                          </div>\n                          <div className=\"form-group-wrapper \">\n                            <label className=\"mb-1\">Vaccination 2nd Location:</label>\n\n                            <Select\n                              options={countriesOption}\n                              blurInputOnSelect={true}\n                              defaultValue={{ label: \"United States\", value: \"United States\" }}\n                              menuPlacement=\"auto\"\n                              placeholder=\"Select Location\"\n                              className=\"w-100\"\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  vaccinationSecondLocation: e.value,\n                                })\n                              }\n                            />\n                          </div>\n                        </>\n                      )}\n                      {isVaccinationInfoEnable && (\n                        <div className=\"form-group-wrapper\">\n                          <label className=\"modalLineHeaders\">Booster?:</label>\n                          <div>\n                            <span className=\"radioBox-wrapper\">\n                              <input\n                                type=\"radio\"\n                                className=\"radioButton\"\n                                name=\"isBooster\"\n                                onChange={(e) =>\n                                  setNewUser({\n                                    ...newUser,\n                                    isBooster: e.target.checked && true,\n                                    boosterLocation: \"United States\",\n                                  })\n                                }\n                              />\n                              <span className=\"radioButton\">Yes</span>\n                            </span>\n                            <span className=\"radioBox-wrapper\">\n                              <input\n                                type=\"radio\"\n                                className=\"radioButton\"\n                                name=\"isBooster\"\n                                onChange={(e) =>\n                                  setNewUser({\n                                    ...newUser,\n                                    isBooster: e.target.checked && false,\n                                    boosterLocation: \"\",\n                                  })\n                                }\n                              />\n                              <span className=\"radioButton\">No</span>\n                            </span>\n                          </div>\n                        </div>\n                      )}\n                      {newUser.isBooster && (\n                        <>\n                          <div className=\"form-group-wrapper \">\n                            <label className=\"mb-1\">Booster Type:</label>\n                            <Select\n                              options={vaccinationTypes}\n                              blurInputOnSelect={true}\n                              defaultValue={null}\n                              menuPlacement=\"auto\"\n                              placeholder=\"Select Booster type\"\n                              className=\"w-100\"\n                              onChange={(e) => {\n                                setNewUser({ ...newUser, boosterType: e.value });\n                              }}\n                            />\n                          </div>\n                          <div className=\"form-group-wrapper \">\n                            <label className=\"modalLineHeaders\">Booster Date:</label>\n                            <input\n                              className=\"form-control\"\n                              type=\"date\"\n                              value={newUser.boosterDate}\n                              onChange={(e) => setNewUser({ ...newUser, boosterDate: e.target.value })}\n                              max={moment().format(\"YYYY-MM-DD\")}\n                              min={moment(\"1900-01-01\").format(\"YYYY-MM-DD\")}\n                            />\n                            {/* <SingleDatePicker\n                              onApply={(event, picker) =>\n                                setNewUser({\n                                  ...newUser,\n                                  boosterDate: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                                })\n                              }\n                              value={newUser.boosterDate}\n                            /> */}\n                          </div>\n                          <div className=\"form-group-wrapper \">\n                            <label className=\"mb-1\">Booster Location</label>\n\n                            <Select\n                              options={[{ label: \"United States\", value: \"United States\" }]}\n                              blurInputOnSelect={true}\n                              defaultValue={{ label: \"United States\", value: \"United States\" }}\n                              menuPlacement=\"auto\"\n                              placeholder=\"Select Location\"\n                              className=\"w-100\"\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  boosterLocation: e.value,\n                                })\n                              }\n                            />\n                          </div>\n                        </>\n                      )}\n                    </>\n                  )}\n\n                  {isExternalTestAllow && (\n                    <div className=\"form-group-wrapper\">\n                      <label className=\"modalLineHeaders\">Do you Have an External Test:</label>\n                      <div>\n                        <span className=\"radioBox-wrapper\">\n                          <input\n                            type=\"radio\"\n                            className=\"radioButton\"\n                            name=\"isExternalTest\"\n                            onChange={(e) =>\n                              setNewUser({\n                                ...newUser,\n                                isExternalTest: e.target.checked && true,\n                              })\n                            }\n                          />\n                          <span className=\"radioButton\">Yes</span>\n                        </span>\n                        <span className=\"radioBox-wrapper\">\n                          <input\n                            type=\"radio\"\n                            className=\"radioButton\"\n                            name=\"isExternalTest\"\n                            onChange={(e) =>\n                              setNewUser({\n                                ...newUser,\n                                isExternalTest: e.target.checked && false,\n                              })\n                            }\n                          />\n                          <span className=\"radioButton\">No</span>\n                        </span>\n                      </div>\n                    </div>\n                  )}\n                  {newUser.isExternalTest && isExternalTestAllow && (\n                    <>\n                      <ImageInput\n                        cssClass=\"vaccinationField\"\n                        title=\"External Test Image\"\n                        setSelectedImage={setExternalTestImage}\n                        selectedImage={externalTestImage}\n                      />\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"mb-1\">External Test Type:</label>\n                        <Select\n                          options={externalTypesOptions}\n                          blurInputOnSelect={true}\n                          defaultValue={null}\n                          menuPlacement=\"auto\"\n                          placeholder=\"Select External test type\"\n                          className=\"w-100\"\n                          onChange={(e) => {\n                            setNewUser({ ...newUser, externalTestType: e.value });\n                          }}\n                        />\n                      </div>\n                      <div className=\"form-group-wrapper \">\n                        <label className=\"modalLineHeaders\">External Test Date:</label>\n                        <input\n                          className=\"form-control\"\n                          type=\"date\"\n                          value={newUser.externalTestDate}\n                          onChange={(e) => setNewUser({ ...newUser, externalTestDate: e.target.value })}\n                          max={moment().format(\"YYYY-MM-DD\")}\n                          min={moment(\"1900-01-01\").format(\"YYYY-MM-DD\")}\n                        />\n                        {/* <SingleDatePicker\n                          onApply={(event, picker) =>\n                            setNewUser({\n                              ...newUser,\n                              externalTestDate: moment(picker.startDate).format(\"YYYY-MM-DD\"),\n                            })\n                          }\n                          value={newUser.externalTestDate}\n                        /> */}\n                      </div>\n                      <div className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders\">External Test Result:</label>\n                        <div>\n                          <span className=\"radioBox-wrapper\">\n                            <input\n                              type=\"radio\"\n                              className=\"radioButton\"\n                              name=\"externalTestResult\"\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  externalTestResult: e.target.value ? \"Positive\" : \"\",\n                                })\n                              }\n                            />\n                            <span className=\"radioButton\">Positive</span>\n                          </span>\n                          <span className=\"radioBox-wrapper\">\n                            <input\n                              type=\"radio\"\n                              className=\"radioButton\"\n                              name=\"externalTestResult\"\n                              onChange={(e) =>\n                                setNewUser({\n                                  ...newUser,\n                                  externalTestResult: e.target.checked ? \"Negative\" : \"\",\n                                })\n                              }\n                            />\n                            <span className=\"radioButton\">Negative</span>\n                          </span>\n                        </div>\n                      </div>\n                    </>\n                  )}\n                </>\n              )}\n            </div>\n            <p>\n              I have read and agree to the\n              <a\n                className=\"text-decoration-none\"\n                target=\"_blank\"\n                href=\"https://medflow-images.s3.eu-west-1.amazonaws.com/TermsofUse-MedFlow.pdf\"\n              >\n                &nbsp; Privacy Policy\n              </a>\n            </p>\n            <p>Please refer to your invitation for additional event details and FAQ's</p>\n            {error && (\n              <div className=\"error-message\">\n                <h6>{error}</h6>\n              </div>\n            )}\n            {step === 2 && (\n              <div className=\"mt-2\">\n                <button\n                  type=\"submit\"\n                  disabled={isDisabled}\n                  className=\"text-uppercase w-100 btn signup-btn\"\n                  onClick={handleSubmit}\n                >\n                  Process Request\n                </button>\n              </div>\n            )}\n            {step === 4 && (\n              <div className=\"mt-2\">\n                <button\n                  type=\"submit\"\n                  disabled={isDisabled}\n                  className=\"text-uppercase w-100 btn signup-btn\"\n                  onClick={handleCompleteRegistration}\n                >\n                  Complete Registration\n                </button>\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n      {loading && <Loader />}\n      {errorMessageText && (\n        <SweetAlert\n          show={errorMessageText ? true : false}\n          info\n          title=\"Information\"\n          onConfirm={() => setErrorMessageText(\"\")}\n        >\n          {errorMessageText}\n        </SweetAlert>\n      )}\n      {showImageCroper && <ImageCropModal selectedImage={copyImage} handleConfirm={handleCropDone}></ImageCropModal>}\n      {openConfirmationModal && (\n        <ConfirmationModal\n          isPreRegister\n          title=\"Order the Test\"\n          message={message}\n          handleConfirm={handleConfirmationRes}\n        />\n      )}\n    </>\n  );\n};\n\nexport default RegisterCrew;\n","import React, { useContext, useState, useMemo, useRef } from \"react\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport { Button, Card, Table, Row, Col, Modal, Form, Container } from \"react-bootstrap\";\nimport { useLocation, Link } from \"react-router-dom\";\nimport SortIcon from \"../components/SortIcon\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { Auth } from \"aws-amplify\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport Select from \"react-select\";\nimport ContactInfo from \"../components/Modal/ContactInfo\";\nimport Filter from \"../components/Filter\";\nimport TimeFilter from \"../components/TimeFilter\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport CreateTestLabModal from \"components/Modal/CreateTestLabModal\";\nimport CreateTestDeliveryModal from \"components/Modal/CreateTestDeliveryModal\";\nimport Dropdown from \"react-bootstrap/Dropdown\";\nimport dotIcons from \"../../src/assets/img/dots.png\";\nimport DropdownMenu from \"components/DropdownMenu/DropdownMenu\";\nimport {\n  PAGE_LIMIT,\n  PRE_REGISTRATION_STATUS,\n  PERSONALISATION_KEY,\n  PRE_REG_PERSONALIZE,\n  TEST_TYPE_VALUE,\n} from \"../constant\";\nimport RenderTd from \"components/Personalization/RenderTd\";\nimport StatsView from \"components/PreRegister/StatsView\";\nimport RegisterCrew from \"views/RegisterCrew\";\nimport {\n  changeSort,\n  formatPhoneNumber,\n  isValidPhone,\n  phoneFormatter,\n  getDropDownValue,\n  parseBooleanValue,\n  calculateTdWidth,\n  sortTestList,\n  sortingFilterInLC,\n  personalisationInLC,\n  showsInSS,\n  formatDOB,\n  makeBarcode,\n  getPhoneNo,\n  formatDoBForDemo,\n  registrationShowSelectInLocalStorage,\n} from \"../utils\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport { AppContext } from \"../context/app-context\";\n\nimport Loader from \"components/Loader/Loader\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport OrderDetailModal from \"components/Modal/OrderDetailModal\";\nimport VaccinationDetailModal from \"components/Modal/VaccinationDetailModal\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport RegisterCrewManual from \"./RegisterCrewManual\";\nimport moment from \"moment\";\nimport Icon from \"components/Icon\";\n\nconst PreRegistrationView = () => {\n  const mainRef = useRef();\n  const [mainWidth, setMainWidth] = useState(0);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n  const [selectedShow, setSelectedShow] = useState(\"\");\n  const [openOrderDetail, setOpenOrderDetail] = useState(false);\n  const [selectedOrder, setSelectedOrder] = useState(\"\");\n  const [personalize, setPersonalize] = useState(PRE_REG_PERSONALIZE);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [showPreRegistration, setShowPreRegistration] = useState(false);\n  const [showLabChangeModal, setShowLabChangeModal] = useState(false);\n  const [showDeliveryModal, setShowDeliveryModal] = useState(false);\n  const [selectedDeliveryUserId, setSelectedDeliveryUserId] = useState(\"\");\n\n  const handleResize = () => {\n    if (mainRef.current) setMainWidth(mainRef.current.offsetWidth);\n  };\n\n  useEffect(() => handleResize(), [mainRef]);\n\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  const tdWidth = calculateTdWidth(\n    mainWidth,\n    personalize.length > 0 ? personalize.filter((p) => p.isCheck).length + 1 : 21\n  );\n\n  const STATS_CLICK_TYPE = {\n    ORDERS: \"orders\",\n    ATTENDEES: \"attendess\",\n    COMPLETED: \"completed\",\n    UPLOAD: \"upload\",\n    SHIPPED: \"shipped\",\n    DELIVERED: \"delivered\",\n  };\n\n  const selectedItem = [\n    \"first\",\n    \"last\",\n    \"email\",\n    \"sex\",\n    \"phone_number\",\n    \"id_number\",\n    \"street\",\n    \"city\",\n    \"showName\",\n    \"testSendQty\",\n    \"isVaccinated\",\n    \"vaccinationType\",\n    \"vaccinationDate\",\n    \"step\",\n    \"orderStatus\",\n    \"isExternalTest\",\n    \"externalTestType\",\n    \"externalTestDate\",\n    \"externalTestResult\",\n    \"capcity\",\n    \"designation\",\n  ];\n\n  const [users, setUsers] = useState([]);\n  const [filteredUsers, setFilteredUsers] = useState([]);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [loading, setLoading] = useState(true);\n  const location = useLocation();\n  const [triggerFilter, setTriggerFilter] = useState(false);\n  const [warningModal, setWarningModal] = useState(false);\n  const [showToDelete, setShowToDelete] = useState(\"\");\n  const [labs, setLabs] = useState([]);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [error, setError] = useState(\"\");\n  const [stats, setStats] = useState(\"\");\n  const [selectedUser, setSelectedUser] = useState(\"\");\n  const [openUserDetails, setOpenUserDetails] = useState(false);\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n\n  const { filterDates } = TimeFilter;\n\n  const searchTerms = [\n    \"First Name\",\n    \"Last Name\",\n    \"Email\",\n    \"Phone\",\n    \"Gender\",\n    \"ID Number\",\n    \"City\",\n    \"Vaccinated\",\n    \"Show\",\n    \"Street\",\n    \"Send Quantity\",\n    \"Vaccination Type\",\n    \"Status Step\",\n    \"Order Status\",\n    \"Capacity\",\n  ];\n\n  const appContext = useContext(AppContext);\n  const itemsToMap = useMemo(() => {\n    const list = filterDates(filteredUsers, timeFilter);\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredUsers, currentPage, timeFilter]);\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    console.log(\"Filter\", filters);\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (key === \"firstName\") {\n          return obj[\"first\"] && obj[\"first\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"lastName\") {\n          return obj[\"last\"] && obj[\"last\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"Show\") {\n          return obj.showId && appContext.getSiteName(obj.showId).toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"step\") {\n          return obj.step && PRE_REGISTRATION_STATUS[obj.step].toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"isVaccinated\") {\n          return parseBooleanValue(obj.isVaccinated).toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"sex\") {\n          return obj[key] && obj[key] == filters[key];\n        }\n\n        if (key === \"ordered\") {\n          return obj[\"testSend\"] === \"true\" && obj[\"testSendQty\"];\n        }\n        if (key === \"shipped\") {\n          return obj[\"orderStatus\"] && obj[\"orderStatus\"] !== \"delivered\";\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n    return models;\n  };\n\n  useEffect(() => {\n    const sortingFilters = sortingFilterInLC.get();\n    setPersonalize(personalisationInLC.get(PERSONALISATION_KEY.PRE_REGISTRATION));\n    if (sortingFilters.sites.sortBy) {\n      setSortDescending(sortingFilters.sites.sortDescending);\n      setSortBy(sortingFilters.sites.sortBy);\n    }\n  }, []);\n\n  useEffect(() => {\n    loadData();\n    setFilter({});\n  }, [selectedShow]);\n\n  const handleAddedPreReg = () => {\n    if (selectedShow && selectedShow.value) {\n      loadData();\n    }\n  };\n\n  useEffect(async () => {\n    if (appContext.isShowUpdated) {\n      console.log(\"lifecycle\", appContext.isShowUpdated, selectedShow);\n      const prevShowList = showsInSS.get();\n      if (prevShowList.selectedShow && Object.keys(prevShowList.selectedShow).length !== 0) {\n        const isPreRegister =\n          prevShowList.selectedShow.value === appContext.isShowUpdated.id && !appContext.isShowUpdated.preRegistration;\n        if (isPreRegister) {\n          prevShowList[\"selectedShow\"] = {};\n          showsInSS.save(prevShowList);\n        }\n      }\n      if (selectedShow?.value === appContext.isShowUpdated.id && !appContext.isShowUpdated.preRegistration) {\n        setSelectedShow(\"\");\n        setUsers([]);\n        setFilteredUsers([]);\n      }\n    }\n  }, [appContext.isShowUpdated]);\n  useEffect(() => {\n    setLoading(false);\n  }, [appContext.sites]);\n\n  useEffect(() => {\n    setLabs(appContext.labs);\n  }, [appContext.labs]);\n  console.log(\"PR show\", appContext.isShowUpdated);\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"sites\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredUsers.length === 0) return;\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredUsers,\n      setFilteredUsers,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName,\n      appContext.getSiteTests\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (location.state) {\n      setShowFilter(true);\n      setFilter({ ...filter, [location.state.term]: location.state.name });\n      setTriggerFilter(true);\n    }\n    setTimeout(() => setShowFilter(false), 1);\n  }, [location.state]);\n\n  useEffect(() => {\n    refreshList();\n  }, [filter, triggerFilter, users]);\n\n  const createMoreInfo = (type, id) => {\n    let infoObj = null;\n    if (type === \"site\") infoObj = appContext.sites.find((site) => site.id === id);\n    else if (type === \"client\") infoObj = appContext.clients.find((client) => client.id === id);\n    else infoObj = labs.find((lab) => lab.id === id);\n    if (infoObj) {\n      setMoreInfo({\n        type,\n        name: infoObj.name,\n        contact: infoObj.contact_name,\n        phone: infoObj.contact_phone,\n        email: infoObj.contact_email,\n      });\n      setModalShow(true);\n    }\n  };\n  const handleCloseContactInfo = () => {\n    setMoreInfo({});\n    setModalShow(false);\n  };\n\n  const loadData = async () => {\n    try {\n      if (selectedShow) {\n        let list = [];\n        setLoading(true);\n        list = await API.getShowPreRegistration(selectedShow.value);\n        console.log(\"list\", list);\n        list = list.map((d) => {\n          const obj = d;\n          obj.vaccinationDetails =\n            typeof d.vaccinationDetails === \"string\" ? JSON.parse(d.vaccinationDetails) : d.vaccinationDetails;\n          if (obj.hasOwnProperty(\"orderTracking\") && d.orderTracking.length > 0) {\n            obj.orderTracking = typeof d.orderTracking === \"string\" ? JSON.parse(d.orderTracking) : d.orderTracking;\n          }\n          return obj;\n        });\n        setLoading(false);\n        refreshList(list);\n        setUsers(list || []);\n      }\n    } catch (err) {\n      console.log(\"Error\", err);\n      setLoading(false);\n      appContext.showErrorMessage(\"Fail to load the data\");\n    }\n  };\n\n  const refreshList = () => {\n    const siteList = nestedFilter(users, filter);\n\n    if (sortBy) {\n      setFilteredUsers(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          siteList,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredUsers(siteList);\n    }\n  };\n\n  const getSiteOptions = useMemo(() => {\n    if (!appContext.sites) return [];\n    return appContext.sites\n      .filter((s) => s.preRegistration)\n      .map((l) => {\n        return { value: l.id, label: l.name, ...l };\n      });\n  }, [appContext.sites]);\n\n  useEffect(() => {\n    if (getSiteOptions?.length > 0) {\n      // Check Show from Session storage\n      let selectShowSt = showsInSS.get();\n      if (selectShowSt.selectedShow && Object.keys(selectShowSt.selectedShow).length !== 0) {\n        let sitee = getSiteOptions.filter((obj) => obj.id === selectShowSt.selectedShow.id);\n        selectShowSt[\"selectedShow\"] = sitee[0];\n        showsInSS.save(selectShowSt);\n        setSelectedShow(sitee[0]);\n      }\n    }\n  }, [getSiteOptions]);\n\n  const handleFilterChange = (event, picker) => setTimeFilter({ start: picker.startDate, end: picker.endDate });\n  const handleFilterCancel = (event, picker) => setTimeFilter({});\n  const handleChangePage = (page) => setCurrentPage(page);\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  useEffect(() => {\n    const data = users.reduce((obj, pre) => {\n      if (pre.orderId !== -1) obj[\"totalOrders\"] = (obj[\"totalOrders\"] || 0) + parseInt(pre.testSendQty || 0, 10);\n      if (pre.orderId !== -1 && pre.testSend === \"true\") obj[\"totalAttendees\"] = (obj[\"totalAttendees\"] || 0) + 1;\n      if (pre.isExternalTest || pre.isExternalTest === \"true\") obj[\"totalResult\"] = (obj[\"totalResult\"] || 0) + 1;\n      if (pre.step === 5) obj[\"totalAttendeesQr\"] = (obj[\"totalAttendeesQr\"] || 0) + 1;\n      if (pre.hasOwnProperty(\"orderStatus\")) {\n        if (pre.orderStatus !== \"\") {\n          pre.orderStatus !== \"delivered\"\n            ? (obj[\"totalShipped\"] = (obj[\"totalShipped\"] || 0) + 1)\n            : (obj[\"totalReceived\"] = (obj[\"totalReceived\"] || 0) + 1);\n        }\n      }\n      return obj;\n    }, {});\n    setStats(data);\n  }, [users]);\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n    const dataIds = data.filter((d) => d.isCheck).map((c) => c.id);\n    personalisationInLC.save(\"preregistration\", dataIds);\n    setOpenPersonalizationModal(false);\n    await API.saveUserPersonalisation(appContext.user.sub, personalisationInLC.get());\n  };\n\n  const handleOrderDetail = async (order, obj) => {\n    if (order) {\n      const isArray = Array.isArray(order);\n      let data = [];\n      if (!isArray) {\n        data.push(order);\n      }\n      setSelectedOrder({ data: data, user: obj });\n      setOpenOrderDetail(true);\n    }\n  };\n\n  const handleDeleteConfirm = async (isConfirm) => {\n    setOpenDeleteConfirmation(false);\n    if (!isConfirm) {\n      setUserToDelete(null);\n      return;\n    }\n    try {\n      const updateSelectedTestResult = filteredUsers\n        .filter((test) => checkboxes.includes(test.id))\n        .map((d) => {\n          return { id: d.id, phone_number: d.phone_number };\n        });\n      const ttlTest = updateSelectedTestResult.length;\n      if (!ttlTest) {\n        return;\n      }\n      setLoading(true);\n      await API.deletePreRegistration(updateSelectedTestResult);\n      setUsers(users.filter((test) => !checkboxes.includes(test.id)));\n      setFilteredUsers(filteredUsers.filter((test) => !checkboxes.includes(test.id)));\n      setCheckboxes([]);\n      appContext.showSuccessMessage(\"Record removed successfully\");\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n    setLoading(false);\n  };\n\n  const handleCheckboxChange = (e, id) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n  };\n  const handleStatsClick = (type) => {\n    switch (type) {\n      case STATS_CLICK_TYPE.ORDERS:\n      case STATS_CLICK_TYPE.ATTENDEES:\n        setFilter({ ordered: \"1\" });\n        break;\n      case STATS_CLICK_TYPE.COMPLETED:\n        setFilter({ step: \"Pre Registered\" });\n        break;\n      case STATS_CLICK_TYPE.UPLOAD:\n        setFilter({ isExternalTest: \"true\" });\n        break;\n      case STATS_CLICK_TYPE.SHIPPED:\n        setFilter({ shipped: \"shipped\" });\n        break;\n      case STATS_CLICK_TYPE.DELIVERED:\n        setFilter({ orderStatus: \"delivered\" });\n        break;\n    }\n  };\n\n  // OPen delivery model from actions th\n\n  const handleShowDeliveryModal = (id) => {\n    setSelectedDeliveryUserId(id);\n    setShowDeliveryModal(true);\n  };\n\n  const isPCRShow = () => selectedShow && selectedShow.orderKitType && selectedShow.orderKitType === \"PCR\";\n\n  const TableRow = ({ user }) => {\n    return (\n      <tr className=\"trDataWrapper\">\n        {/* <td className=\"icon\" style={{ width: \"45px\", minWidth: \"45px\", maxWidth: \"45px\" }}></td> */}\n        <td className=\"ellipsis\" style={{ textAlign: \"left\" }}>\n          <div className=\"d-flex\">\n            <Form.Check>\n              <Form.Check.Input\n                type=\"checkbox\"\n                value={user.id}\n                checked={checkboxes.indexOf(user.id) !== -1}\n                onChange={(e) => handleCheckboxChange(e, user.id)}\n              ></Form.Check.Input>\n            </Form.Check>\n          </div>\n        </td>\n        {personalize\n          .filter((f) => f.isCheck)\n          .map((item, index) => {\n            return (\n              <RenderTd\n                handleOrderDetail={handleOrderDetail}\n                key={index}\n                item={item}\n                user={user}\n                createMoreInfo={createMoreInfo}\n              />\n            );\n          })}\n\n        {/* Dropdown actions in table */}\n        {isPCRShow() ? (\n          <td style={{ textAlign: \"center\" }}>\n            <>\n              <Dropdown className=\"custom-dropdown\">\n                <Dropdown.Toggle id=\"dropdown-basic\">\n                  <img src={dotIcons} alt=\"more icon\" />\n                </Dropdown.Toggle>\n                <Dropdown.Menu>\n                  <Dropdown.Item\n                    style={{ color: \"#42cef5\" }}\n                    onClick={() => {\n                      setSelectedUser(user);\n                      setOpenUserDetails(true);\n                    }}\n                  >\n                    View\n                  </Dropdown.Item>\n\n                  {user.testID && (\n                    <>\n                      <Dropdown.Item>\n                        <Link\n                          style={{ textDecoration: \"none\", paddingRight: \"57px\" }}\n                          to={{\n                            pathname: \"/admin/test/\" + user.testID,\n                          }}\n                          className=\"py-2 ps-0\"\n                        >\n                          View Test\n                        </Link>\n                      </Dropdown.Item>\n                      {/* <Dropdown.Item style={{ color: \"#42cef5\" }}>Re-Print Label</Dropdown.Item> */}\n                      {user.orderStatus !== \"Shipped\" && (\n                        <Dropdown.Item onClick={() => handleShowDeliveryModal(user.id)} style={{ color: \"#42cef5\" }}>\n                          {user.orderStatus}Add Tracking Info\n                        </Dropdown.Item>\n                      )}\n                    </>\n                  )}\n                </Dropdown.Menu>\n              </Dropdown>\n            </>\n          </td>\n        ) : (\n          <td\n            style={{ color: \"#42cef5\", textAlign: \"center\", cursor: \"pointer\" }}\n            onClick={() => {\n              setSelectedUser(user);\n              setOpenUserDetails(true);\n            }}\n          >\n            View\n          </td>\n        )}\n      </tr>\n    );\n  };\n\n  const populate = (record) => {\n    const {\n      zip,\n      state,\n      sex,\n      city,\n      isVaccinated,\n      employeeType,\n      street,\n      phone_number,\n      dob,\n      last,\n      first,\n      email,\n      id_number,\n      id,\n      country,\n      countryCode,\n    } = record;\n    console.log(\"records\", record);\n    const [ccCode, phno] = getPhoneNo(phone_number, countryCode);\n\n    const obj = {\n      employee_demographics: {\n        email: email,\n        firstName: first,\n        lastName: last,\n        dob: formatDoBForDemo(dob),\n        phoneNumber: `${ccCode}${phno}`,\n        countryCode: ccCode,\n        address: \"\",\n        employeeType: employeeType,\n        isVaccinated: isVaccinated,\n        whiteGlove: false,\n        city: city,\n        country: country || \"United States\",\n        state: state,\n        street: street,\n        street2: \"\",\n        zip: zip,\n        isLucira: false,\n        sex: sex,\n        testerDes: \"\",\n        idNumber: id_number,\n        status: \"Pending\",\n      },\n      phoneNumber: phone_number,\n      email: email,\n      employeeID: id,\n    };\n\n    obj = {\n      ...obj,\n      employee_demographics: obj.employee_demographics,\n      email: obj.email,\n      phoneNumber: obj.phoneNumber,\n      employeeID: obj.employeeID,\n    };\n\n    return obj;\n  };\n\n  console.log(\"selected Show\", selectedShow);\n  //Create Test\n  const handleCreateTest = async (lab) => {\n    try {\n      setLoading(true);\n\n      const seltectedUserData = users.filter(\n        (item) => checkboxes.includes(item.id) && !item?.sequenceNo && item.orderId === -1\n      );\n\n      if (seltectedUserData.length === 0) {\n        setLoading(false);\n        setCheckboxes([]);\n        appContext.showErrorMessage(\"Test already created\");\n        return;\n      }\n\n      let clientObj = appContext.clients.filter((item) => item.id == selectedShow.clientID);\n      let preRegisterArr = [];\n\n      for (let i = 0; i < seltectedUserData.length; i++) {\n        let user = { ...seltectedUserData[i] };\n        const [countryCode, phoneNo] = getPhoneNo(user.phone_number, user.countryCode);\n        let testObj = {\n          employee_demographics: {\n            email: user.email,\n            firstName: user.first,\n            lastName: user.last,\n            dob: user.dob,\n            phoneNumber: `${countryCode}${phoneNo}`,\n            employeeType: \"Staff\",\n            isVaccinated: user.isVaccinated,\n            whiteGlove: false,\n            city: user.city,\n            country: user.country,\n            state: user.state,\n            street: user.street,\n            street2: user.street2,\n            zip: user.zipcode,\n            sex: user.sex,\n            profileImage:\n              typeof user.profileImage === \"undefined\" || user.profileImage === null ? \"\" : user.profileImage,\n            isExternalTest: user?.isExternalTest || \"\",\n            externalTestImage: user?.externalFile || \"\",\n            externalTestDate: user?.externalTestDate ? moment(user?.externalTestDate).toISOString() : \"\",\n            externalTestResult: user?.externalTestResult || \"\",\n            externalTestType: user?.externalTestType || \"\",\n            isVaccinated: user?.isVaccinated || \"\",\n            vaccinationDate: user?.vaccinationDate ? moment(user?.vaccinationDate).toISOString() : \"\",\n            vaccinationLocation: user?.vaccinationLocation || \"\",\n            vaccinationType: user?.vaccinationType || \"\",\n            vaccinationCardImage: user?.vaccineCardFile || \"\",\n            testerDes: \"\",\n            contryCode: countryCode,\n            idNumber: user.id_number || moment().valueOf(),\n          },\n          sequenceNo: \"\",\n          clientID: clientObj[0].id,\n          clientName: clientObj[0].name,\n          baseSiteID: user.showId,\n          siteID: user.showId,\n          site_name: user.showName,\n          labID: lab.value,\n          labName: lab.label,\n          test_type: \"PCR\",\n          phoneNumber: phoneNo,\n          email: user.email,\n          emailSend: false,\n          isFalsePositive: false,\n          status: \"Pending\",\n          referenceID: moment().valueOf(),\n          employeeID: \"\",\n          createSource: \"PR\",\n        };\n\n        let env = window.location.host.includes(\"localhost\") ? \"localhost\" : \"remote\";\n        let record = await API.getPreRegisterData(phoneNo, env);\n        let newObject = record.filter(\n          (obj) =>\n            (obj.phone_number == phoneNo || obj.phone_number == `${countryCode}${phoneNo}`) &&\n            obj.first.toLowerCase() == testObj?.employee_demographics?.firstName.trim().toLowerCase() &&\n            obj.last.toLowerCase() == testObj?.employee_demographics?.lastName.trim().toLowerCase() &&\n            obj.email.toLowerCase() == testObj?.employee_demographics?.email.trim().toLowerCase() &&\n            obj.idNumber.toLowerCase() === testObj?.employee_demographics?.idNumber.trim().toLowerCase() &&\n            moment(obj.dob).format(\"MMDDYYYY\") == testObj?.employee_demographics?.dob.trim().replace(\"/-/g\", \"\")\n        );\n        if (newObject.length > 0 && newObject[0].fetchFrom === \"Employee\") {\n          let newEmployeeData = populate(newObject[0]);\n          testObj = { ...testObj, ...newEmployeeData };\n        } else {\n          let newEmployee = await GQAPI.createNewEmployee({\n            ...testObj?.employee_demographics,\n            countryCode,\n            phoneNumber: phoneNo,\n          });\n          if (newEmployee && newEmployee.id) {\n            testObj = { ...testObj, employeeID: newEmployee.id };\n          }\n        }\n        // CREATE SEQUENCE NUMBER\n        let newSequenceNo;\n        newSequenceNo = await GQAPI.getTestAutoNumber();\n        testObj.sequenceNo = newSequenceNo.counter;\n\n        // Lab Check barcode is active or not\n        const checkLab = labs.find((item) => item.id === testObj.labID && item.barCodeProvided);\n        let barcode = \"\";\n        if (checkLab) {\n          barcode = await API.getLabProvidedBarCode(checkLab.id);\n        } else if (!barcode) {\n          barcode = makeBarcode(testObj.employee_demographics.idNumber, newSequenceNo.counter);\n        }\n\n        // create test\n        testObj = {\n          ...testObj,\n          submittedByName: appContext?.user?.name,\n          createdBy: appContext?.user?.sub,\n          tester_name: appContext?.user?.name,\n          barcode,\n        };\n\n        let newTest = await GQAPI.createTest(testObj);\n        if (newTest) {\n          preRegisterArr.push({\n            id: user.id,\n            testID: newTest.id,\n            phone_number: user.phone_number,\n            sequenceNo: testObj.sequenceNo,\n            barcode,\n          });\n        }\n      }\n      if (preRegisterArr.length > 0) {\n        await API.prTestCreation(preRegisterArr);\n        await loadData();\n        appContext.showSuccessMessage(\"Test created successfully\");\n      } else {\n        appContext.showErrorMessage(\"Test can't be created\");\n      }\n      setLoading(false);\n      setCheckboxes([]);\n    } catch (err) {\n      console.log(\"Create Error\", err);\n      setLoading(false);\n      setCheckboxes([]);\n      appContext.showErrorMessage(\"Error in Creating Test\");\n    }\n  };\n\n  const updateLabChange = async (lab) => {\n    setShowLabChangeModal(false);\n    handleCreateTest(lab);\n  };\n\n  const saveDelivery = async (delivery) => {\n    setShowDeliveryModal(false);\n    try {\n      let deliveryOBj = { ...delivery, shipmentDate: moment(delivery.shipmentDate).toISOString() };\n      let selectedUserData = users.find((obj) => obj.id === selectedDeliveryUserId);\n\n      if (!selectedUserData?.id || !selectedUserData?.phone_number) {\n        return appContext.showErrorMessage(\"Delivery can't be created\");\n      }\n\n      const [countryCode, phoneNo] = getPhoneNo(selectedUserData.phone_number, selectedUserData.countryCode);\n      deliveryOBj = { ...deliveryOBj, phone_number: phoneNo, id: selectedUserData.id };\n      let deliveryResult = await GQAPI.createDelivery(deliveryOBj);\n      if (deliveryResult == \"ok\") {\n        setLoading(true);\n        loadData();\n        setLoading(false);\n        appContext.showSuccessMessage(\"Delivery created successfully\");\n      } else {\n        appContext.showErrorMessage(\"Delivery can't be created\");\n      }\n    } catch (error) {\n      appContext.showErrorMessage(\"Delivery can't be created\");\n    }\n    setCheckboxes([]);\n    setSelectedDeliveryUserId(\"\");\n  };\n\n  // Show select\n  const handleSelectShow = (value) => {\n    setSelectedShow(value);\n    let selectShowSt = showsInSS.get();\n    console.log(\"selectShowSt\", selectShowSt);\n    selectShowSt[\"selectedShow\"] = value;\n    showsInSS.save(selectShowSt);\n  };\n\n  return (\n    <Container fluid>\n      {!loading ? (\n        <div className=\"shows-screen-parent\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                      {filteredUsers.length > 0 && (\n                        <div className=\"headerButton\">\n                          {Object.keys(filter).length > 0 && (\n                            <>\n                              <ExportToExcel\n                                items={filteredUsers}\n                                selectedItem={selectedItem}\n                                appContext={appContext}\n                                filter={filter}\n                                timeFilter={timeFilter}\n                                title=\"Pre Registration User\"\n                                sortBy={sortBy}\n                                summary={stats}\n                              />\n                            </>\n                          )}\n                        </div>\n                      )}\n                      <Icon\n                        disabled={checkboxes.length === 0}\n                        handleClick={() => setOpenDeleteConfirmation(true)}\n                        title={\"Delete\"}\n                        label={\"Delete\"}\n                        iconType={\"binIcon\"}\n                      />\n                      <Icon\n                        handleClick={() => setOpenPersonalizationModal(true)}\n                        title={\"Personalize\"}\n                        label={\"Personalize\"}\n                        iconType={\"personalizeIcon\"}\n                      />\n\n                      {selectedShow && (\n                        <Icon\n                          handleClick={() => setShowPreRegistration(true)}\n                          title={\"Add Manual\"}\n                          label={\"Add\"}\n                          iconType={\"createIcon\"}\n                        />\n                      )}\n                      {isPCRShow() && (\n                        <Icon\n                          disabled={checkboxes.length === 0}\n                          handleClick={() => setShowLabChangeModal(true)}\n                          title={\"Print Label\"}\n                          label={\"Print\"}\n                          iconType={\"printerIcon\"}\n                        />\n                      )}\n                    </div>\n                    <Select\n                      className=\"selectorHeader w-100\"\n                      options={getSiteOptions}\n                      blurInputOnSelect={true}\n                      defaultValue={null}\n                      value={selectedShow}\n                      menuPlacement=\"auto\"\n                      placeholder=\"Select Show\"\n                      onChange={(e) => handleSelectShow(e)}\n                    />\n                    {selectedShow && (\n                      <div className=\"fs-5 px-2\">\n                        <span>Show Test Type : {TEST_TYPE_VALUE[selectedShow.orderKitType] || \"General\"}</span>\n                      </div>\n                    )}\n                  </div>\n                  {showFilter && (\n                    <Filter\n                      filterTerms={searchTerms}\n                      setFilter={setFilter}\n                      filter={filter}\n                      triggerFilter={triggerFilter}\n                      setTriggerFilter={setTriggerFilter}\n                      isUsersTable={true}\n                    />\n                  )}\n\n                  {stats && Object.keys(stats).length > 0 && (\n                    <div className=\"preRegistrationOrderDetails\">\n                      <StatsView\n                        label=\"Tests ordered\"\n                        value={stats.totalOrders ?? 0}\n                        type={STATS_CLICK_TYPE.ORDERS}\n                        handleClick={handleStatsClick}\n                      />\n                      <StatsView\n                        label=\"Attendees who ordered\"\n                        value={stats.totalAttendees ?? 0}\n                        type={STATS_CLICK_TYPE.ATTENDEES}\n                        handleClick={handleStatsClick}\n                      />\n                      <StatsView\n                        label=\"Completed Registration\"\n                        value={stats.totalAttendeesQr ?? 0}\n                        type={STATS_CLICK_TYPE.COMPLETED}\n                        handleClick={handleStatsClick}\n                      />\n                      <StatsView\n                        label=\"Uploaded Test Results\"\n                        value={stats.totalResult ?? 0}\n                        type={STATS_CLICK_TYPE.UPLOAD}\n                        handleClick={handleStatsClick}\n                      />\n                      <StatsView\n                        label=\"Tests Shipped\"\n                        value={stats.totalShipped ?? 0}\n                        type={STATS_CLICK_TYPE.SHIPPED}\n                        handleClick={handleStatsClick}\n                      />\n                      <StatsView\n                        label=\"Tests Delivered\"\n                        value={stats.totalReceived ?? 0}\n                        type={STATS_CLICK_TYPE.DELIVERED}\n                        handleClick={handleStatsClick}\n                      />\n                    </div>\n                  )}\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"striped-tabled-with-hover bg-transparent\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md-=\"6\">\n                      <Card.Title>\n                        <div className=\"\">\n                          Event Registration:\n                          <span className=\"ps-2\"> {filteredUsers ? filteredUsers.length : 0}</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"6\">\n                      <MFPagination\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                      />\n                    </Col>\n                  </Row>\n                </Card.Header>\n\n                {/* <Row>\n                    <div className=\"buttonHeader clientsButtonHeader justify-content-between mb-1 w-100 preRegisterationViewWrapper\">\n                      <div className=\"buttonHeader clientsButtonHeader row-gap-3 w-100 flex-wrap\">\n                        <Button className=\"headerButton mb-0\" onClick={() => setShowFilter(!showFilter)}>\n                          Filter\n                        </Button>\n\n                        {filteredUsers.length > 0 && (\n                          <div className=\"headerButton\">\n                            {Object.keys(filter).length > 0 && (\n                              <>\n                                <ExportToExcel\n                                  items={filteredUsers}\n                                  selectedItem={selectedItem}\n                                  appContext={appContext}\n                                  filter={filter}\n                                  timeFilter={timeFilter}\n                                  title=\"Pre Registration User\"\n                                  sortBy={sortBy}\n                                  summary={stats}\n                                />\n                              </>\n                            )}\n                          </div>\n                        )}\n                        <Button\n                          // style={{ marginLeft: \"10px\" }}\n                          disabled={checkboxes.length === 0}\n                          className=\"headerButton\"\n                          onClick={() => setOpenDeleteConfirmation(true)}\n                        >\n                          Delete\n                        </Button>\n                        <Button\n                          // style={{ marginLeft: \"10px\" }}\n                          className=\"headerButton\"\n                          onClick={() => setOpenPersonalizationModal(true)}\n                        >\n                          Personalize\n                        </Button>\n                        {selectedShow && (\n                          <Button\n                            // style={{ marginLeft: \"10px\" }}\n                            className=\"headerButton\"\n                            onClick={() => setShowPreRegistration(true)}\n                          >\n                            Add Manual\n                          </Button>\n                        )}\n\n                        {isPCRShow() && (\n                          <Button\n                            className=\"headerButton\"\n                            disabled={checkboxes.length === 0}\n                            onClick={() => setShowLabChangeModal(true)}\n                          >\n                            Print Label\n                          </Button>\n                        )}\n                        <Select\n                          className=\"selectorHeader w-100\"\n                          options={getSiteOptions}\n                          blurInputOnSelect={true}\n                          defaultValue={null}\n                          value={selectedShow}\n                          menuPlacement=\"auto\"\n                          placeholder=\"Select Show\"\n                          onChange={(e) => handleSelectShow(e)}\n                        />\n                        {selectedShow && (\n                          <div className=\"fs-4 px-2\">\n                            <span>Show Test Type : {TEST_TYPE_VALUE[selectedShow.orderKitType] || \"General\"}</span>\n                          </div>\n                        )}\n                      </div>\n                    </div>\n                    <div>\n                      {showFilter && (\n                        <Filter\n                          filterTerms={searchTerms}\n                          setFilter={setFilter}\n                          filter={filter}\n                          triggerFilter={triggerFilter}\n                          setTriggerFilter={setTriggerFilter}\n                          isUsersTable={true}\n                        />\n                      )}\n                    </div>\n\n                    {stats && Object.keys(stats).length > 0 && (\n                      <div>\n                        <Col>\n                          <div className=\"preRegistrationOrderDetails\">\n                            <StatsView\n                              label=\"Tests ordered\"\n                              value={stats.totalOrders ?? 0}\n                              type={STATS_CLICK_TYPE.ORDERS}\n                              handleClick={handleStatsClick}\n                            />\n                            <StatsView\n                              label=\"Attendees who ordered\"\n                              value={stats.totalAttendees ?? 0}\n                              type={STATS_CLICK_TYPE.ATTENDEES}\n                              handleClick={handleStatsClick}\n                            />\n                            <StatsView\n                              label=\"Completed Registration\"\n                              value={stats.totalAttendeesQr ?? 0}\n                              type={STATS_CLICK_TYPE.COMPLETED}\n                              handleClick={handleStatsClick}\n                            />\n                            <StatsView\n                              label=\"Uploaded Test Results\"\n                              value={stats.totalResult ?? 0}\n                              type={STATS_CLICK_TYPE.UPLOAD}\n                              handleClick={handleStatsClick}\n                            />\n                            <StatsView\n                              label=\"Tests Shipped\"\n                              value={stats.totalShipped ?? 0}\n                              type={STATS_CLICK_TYPE.SHIPPED}\n                              handleClick={handleStatsClick}\n                            />\n                            <StatsView\n                              label=\"Tests Delivered\"\n                              value={stats.totalReceived ?? 0}\n                              type={STATS_CLICK_TYPE.DELIVERED}\n                              handleClick={handleStatsClick}\n                            />\n                          </div>\n                        </Col>\n                      </div>\n                    )}\n                    <Col>\n                      <MFPagination\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                      />\n                    </Col>\n                  </Row> */}\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll mt-0 pt-0\">\n                  <div className=\"table-responsive pendingReleaseTable\" ref={mainRef}>\n                    <Table\n                      className=\"separate-border-tr\"\n                      style={{ width: mainWidth, maxWidth: mainWidth, minWidth: mainWidth }}\n                    >\n                      <thead>\n                        <tr>\n                          <th></th>\n                          {personalize\n                            .filter((f) => f.isCheck)\n                            .map((item, index) => (\n                              <HeaderItem\n                                key={index}\n                                width={tdWidth}\n                                ItemKey={item.itemKey}\n                                title={item.title}\n                                flipSort={flipSort}\n                                sortBy={sortBy}\n                                sortDescending={sortDescending}\n                                aligned={item.textAlign}\n                              />\n                            ))}\n\n                          <th\n                            className=\"border-0 centered text-grey\"\n                            style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n                          >\n                            Actions\n                          </th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {itemsToMap &&\n                          itemsToMap.map((user) => {\n                            return <TableRow key={user.id} user={user} />;\n                          })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      ) : (\n        <Loader />\n      )}\n      <ContactInfo show={modalShow} moreInfo={moreInfo} handleClose={handleCloseContactInfo} />\n      {openPersonalizationModal && (\n        <PersonalizationModal\n          data={personalize}\n          handleChange={handlePersonalization}\n          show={openPersonalizationModal}\n          handleClose={() => setOpenPersonalizationModal(false)}\n        />\n      )}\n      {openOrderDetail && (\n        <OrderDetailModal\n          order={selectedOrder}\n          show={openOrderDetail}\n          handleClose={() => {\n            setOpenOrderDetail(false);\n            setSelectedOrder(\"\");\n          }}\n        />\n      )}\n      {openUserDetails && (\n        <VaccinationDetailModal\n          user={selectedUser}\n          show={openUserDetails}\n          handleClose={() => {\n            setOpenUserDetails(false);\n            setSelectedUser(\"\");\n          }}\n        />\n      )}\n      {openDeleteConfirmation && (\n        <ConfirmationModal\n          show={openDeleteConfirmation}\n          title=\"Delete Record\"\n          message=\"Are you sure, you want to remove Record?\"\n          handleConfirm={handleDeleteConfirm}\n        />\n      )}\n      {showPreRegistration && (\n        <Modal\n          show={showPreRegistration}\n          animation={true}\n          onHide={() => setShowPreRegistration(false)}\n          centered\n          size=\"xl\"\n        >\n          <Modal.Header closeButton>\n            <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n              Event Registration\n            </Modal.Title>\n          </Modal.Header>\n\n          <Modal.Body style={{ paddingTop: 0 }}>\n            <RegisterCrewManual\n              id={selectedShow.value}\n              selectedShow={selectedShow}\n              handleAddedPreReg={handleAddedPreReg}\n            />\n          </Modal.Body>\n        </Modal>\n      )}\n      {showLabChangeModal && (\n        <CreateTestLabModal\n          handleSave={updateLabChange}\n          labs={appContext.labs}\n          handleClose={() => setShowLabChangeModal(false)}\n        />\n      )}\n      {showDeliveryModal && (\n        <CreateTestDeliveryModal handleSave={saveDelivery} handleClose={() => setShowDeliveryModal(false)} />\n      )}\n    </Container>\n  );\n};\n\nexport default PreRegistrationView;\n","import React, { useContext, useState, useMemo, useRef, useCallback } from \"react\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport { Button, Card, Table, Row, Col, Modal, Form, Container } from \"react-bootstrap\";\nimport { useLocation, Link } from \"react-router-dom\";\nimport SortIcon from \"../components/SortIcon\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { Auth } from \"aws-amplify\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport Select from \"react-select\";\nimport ContactInfo from \"../components/Modal/ContactInfo\";\nimport Filter from \"../components/Filter\";\nimport TimeFilter from \"../components/TimeFilter\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport CreateTestLabModal from \"components/Modal/CreateTestLabModal\";\nimport CreateTestDeliveryModal from \"components/Modal/CreateTestDeliveryModal\";\nimport Dropdown from \"react-bootstrap/Dropdown\";\nimport dotIcons from \"../../src/assets/img/dots.png\";\nimport DropdownMenu from \"components/DropdownMenu/DropdownMenu\";\nimport debounce from \"debounce\";\nimport {\n  PAGE_LIMIT,\n  PRE_REGISTRATION_STATUS,\n  PERSONALISATION_KEY,\n  PRE_REG_QR_PERSONALIZE,\n  TEST_TYPE_VALUE,\n  GEN_TYPE_VALUE,\n} from \"../constant\";\nimport RenderTd from \"components/Personalization/RenderTd\";\nimport StatsView from \"components/PreRegister/StatsView\";\nimport RegisterCrew from \"views/RegisterCrew\";\nimport {\n  changeSort,\n  formatPhoneNumber,\n  isValidPhone,\n  phoneFormatter,\n  getDropDownValue,\n  parseBooleanValue,\n  calculateTdWidth,\n  sortTestList,\n  sortingFilterInLC,\n  personalisationInLC,\n  showsInSS,\n  formatDOB,\n  makeBarcode,\n  getPhoneNo,\n  formatDoBForDemo,\n  registrationShowSelectInLocalStorage,\n  getValidName,\n} from \"../utils\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport { AppContext } from \"../context/app-context\";\n\nimport Loader from \"components/Loader/Loader\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport OrderDetailModal from \"components/Modal/OrderDetailModal\";\nimport VaccinationDetailModal from \"components/Modal/VaccinationDetailModal\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport RegisterCrewManual from \"./RegisterCrewManual\";\nimport moment from \"moment\";\nimport Icon from \"components/Icon\";\n\nconst GenericPreRegistration = () => {\n  const mainRef = useRef();\n  const [mainWidth, setMainWidth] = useState(0);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n  const [selectedShow, setSelectedShow] = useState(\"\");\n  const [openOrderDetail, setOpenOrderDetail] = useState(false);\n  const [selectedOrder, setSelectedOrder] = useState(\"\");\n  //const [personalize, setPersonalize] = useState(PRE_REG_QR_PERSONALIZE);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [showPreRegistration, setShowPreRegistration] = useState(false);\n  const [showLabChangeModal, setShowLabChangeModal] = useState(false);\n  const [showDeliveryModal, setShowDeliveryModal] = useState(false);\n  const [selectedDeliveryUserId, setSelectedDeliveryUserId] = useState(\"\");\n  const [prevSearch, setPrevSearch] = useState(\"\");\n  const handleResize = () => {\n    if (mainRef.current) setMainWidth(mainRef.current.offsetWidth);\n  };\n\n  useEffect(() => handleResize(), [mainRef]);\n\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  const tdWidth = calculateTdWidth(mainWidth, 6);\n\n  const STATS_CLICK_TYPE = {\n    ORDERS: \"orders\",\n    ATTENDEES: \"attendess\",\n    COMPLETED: \"completed\",\n    UPLOAD: \"upload\",\n    SHIPPED: \"shipped\",\n    DELIVERED: \"delivered\",\n  };\n\n  const selectedItem = [\"first\", \"last\", \"email\", \"phone_number\", \"id_number\"];\n\n  const [users, setUsers] = useState([]);\n  const [filteredUsers, setFilteredUsers] = useState([]);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [loading, setLoading] = useState(true);\n  const location = useLocation();\n  const [triggerFilter, setTriggerFilter] = useState(false);\n  const [warningModal, setWarningModal] = useState(false);\n  const [showToDelete, setShowToDelete] = useState(\"\");\n  const [labs, setLabs] = useState([]);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [error, setError] = useState(\"\");\n  const [stats, setStats] = useState(\"\");\n  const [selectedUser, setSelectedUser] = useState(\"\");\n  const [openUserDetails, setOpenUserDetails] = useState(false);\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n\n  const { filterDates } = TimeFilter;\n\n  const searchTerms = [\"First Name\", \"Last Name\", \"Email\", \"Phone\", \"ID Number\"];\n\n  const appContext = useContext(AppContext);\n  const itemsToMap = useMemo(() => {\n    const list = filterDates(filteredUsers, timeFilter);\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredUsers, currentPage, timeFilter]);\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    console.log(\"Filter\", filters);\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (key === \"firstName\") {\n          return obj[\"first\"] && obj[\"first\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"lastName\") {\n          return obj[\"last\"] && obj[\"last\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"Show\") {\n          return obj.showId && appContext.getSiteName(obj.showId).toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"step\") {\n          return obj.step && PRE_REGISTRATION_STATUS[obj.step].toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"isVaccinated\") {\n          return parseBooleanValue(obj.isVaccinated).toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"sex\") {\n          return obj[key] && obj[key] == filters[key];\n        }\n\n        if (key === \"ordered\") {\n          return obj[\"testSend\"] === \"true\" && obj[\"testSendQty\"];\n        }\n        if (key === \"shipped\") {\n          return obj[\"orderStatus\"] && obj[\"orderStatus\"] !== \"delivered\";\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n    return models;\n  };\n\n  useEffect(() => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.sites.sortBy) {\n      setSortDescending(sortingFilters.sites.sortDescending);\n      setSortBy(sortingFilters.sites.sortBy);\n    }\n    // // Check Show from Session storage\n    // const selectShowSt = showsInSS.get();\n    // if (selectShowSt.selectedShow && Object.keys(selectShowSt.selectedShow).length !== 0)\n    //   setSelectedShow(selectShowSt.selectedShow);\n  }, []);\n\n  // useEffect(() => {\n  //  // loadData();\n  //   setFilter({});\n  // }, [selectedShow]);\n\n  // const handleAddedPreReg = () => {\n  //   if (selectedShow && selectedShow.value) {\n  //     loadData();\n  //   }\n  // };\n\n  // useEffect(async () => {\n  //   if (appContext.isShowUpdated) {\n  //     console.log(\"lifecycle\", appContext.isShowUpdated, selectedShow);\n  //     const prevShowList = showsInSS.get();\n  //     if (prevShowList.selectedShow && Object.keys(prevShowList.selectedShow).length !== 0) {\n  //       const isPreRegister =\n  //         prevShowList.selectedShow.value === appContext.isShowUpdated.id && !appContext.isShowUpdated.preRegistration;\n  //       if (isPreRegister) {\n  //         prevShowList[\"selectedShow\"] = {};\n  //         showsInSS.save(prevShowList);\n  //       }\n  //     }\n  //     if (selectedShow?.value === appContext.isShowUpdated.id && !appContext.isShowUpdated.preRegistration) {\n  //       setSelectedShow(\"\");\n  //       setUsers([]);\n  //       setFilteredUsers([]);\n  //     }\n  //   }\n  // }, [appContext.isShowUpdated]);\n  useEffect(() => {\n    setLoading(false);\n  }, [appContext.sites]);\n\n  useEffect(() => {\n    setLabs(appContext.labs);\n  }, [appContext.labs]);\n  console.log(\"PR show\", appContext.isShowUpdated);\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"sites\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredUsers.length === 0) return;\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredUsers,\n      setFilteredUsers,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName,\n      appContext.getSiteTests\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (location.state) {\n      setShowFilter(true);\n      setFilter({ ...filter, [location.state.term]: location.state.name });\n      setTriggerFilter(true);\n    }\n    setTimeout(() => setShowFilter(false), 1);\n  }, [location.state]);\n\n  useEffect(() => {\n    fetchFromApi(filter);\n    if (filter && Object.keys(filter).length > 1) {\n      setFilteredUsers(nestedFilter(users, filter));\n    }\n    if (Object.values(filter).some((e) => !e)) {\n      const filterObj = { ...filter };\n      Object.keys(filterObj).forEach((k) => filterObj[k] == \"\" && delete filterObj[k]);\n      setFilter(filterObj);\n    }\n    if (Object.values(filter).every((e) => !e)) {\n      setPrevSearch(\"\");\n    }\n  }, [filter]);\n\n  console.log(\"Users\", users, filteredUsers);\n\n  const fetchFromApi = useCallback(\n    debounce((filter) => {\n      if (\n        filter &&\n        Object.keys(filter).length === 1 &&\n        filter[Object.keys(filter)[0]].trim() &&\n        JSON.stringify(filter) !== JSON.stringify(prevSearch)\n      )\n        getPreRegistrationData(filter);\n    }, 2500),\n    []\n  );\n\n  const createMoreInfo = (type, id) => {\n    let infoObj = null;\n    if (type === \"site\") infoObj = appContext.sites.find((site) => site.id === id);\n    else if (type === \"client\") infoObj = appContext.clients.find((client) => client.id === id);\n    else infoObj = labs.find((lab) => lab.id === id);\n    if (infoObj) {\n      setMoreInfo({\n        type,\n        name: infoObj.name,\n        contact: infoObj.contact_name,\n        phone: infoObj.contact_phone,\n        email: infoObj.contact_email,\n      });\n      setModalShow(true);\n    }\n  };\n  const handleCloseContactInfo = () => {\n    setMoreInfo({});\n    setModalShow(false);\n  };\n  console.log(\"filter\", filter);\n  const getPreRegistrationData = async (params) => {\n    setLoading(true);\n    const filterParam = {};\n    const keys = Object.keys(params);\n    if (keys.length) {\n      let phone = \"\";\n      let countryCode = \"\";\n      let phoneNo = \"\";\n      let name = \"\";\n      if (keys[0] === \"phone_number\") {\n        [countryCode, phoneNo, phone] = getPhoneNo(params[keys[0]]);\n      }\n      console.log(\"countrycode\", countryCode, \"phoneNo\", phoneNo, \"phone\", phone);\n      if (keys[0] === \"firstName\" || keys[0] === \"lastName\") {\n        name = getValidName(params[keys[0]]);\n      }\n      Object.assign(filterParam, {\n        phone_number: phoneNo || name || params[keys[0]],\n        type: GEN_TYPE_VALUE[keys[0]],\n        siteID: \"\",\n        countryCode,\n      });\n    }\n    try {\n      const response = await API.getPreRegistrationData(filterParam);\n      console.log(\"response\", response);\n      refreshList(response);\n      setUsers(response || []);\n      setPrevSearch(params);\n      setFilter(params);\n      setLoading(false);\n    } catch (err) {\n      console.log(err.message);\n      setLoading(false);\n      appContext.showErrorMessage(\"Fail to load the data\");\n    }\n  };\n  const loadData = async () => {\n    try {\n      if (selectedShow) {\n        let list = [];\n        setLoading(true);\n        list = await API.getShowPreRegistration(selectedShow.value);\n        console.log(\"list\", list);\n        list = list.map((d) => {\n          const obj = d;\n          obj.vaccinationDetails =\n            typeof d.vaccinationDetails === \"string\" ? JSON.parse(d.vaccinationDetails) : d.vaccinationDetails;\n          if (obj.hasOwnProperty(\"orderTracking\") && d.orderTracking.length > 0) {\n            obj.orderTracking = typeof d.orderTracking === \"string\" ? JSON.parse(d.orderTracking) : d.orderTracking;\n          }\n          return obj;\n        });\n        setLoading(false);\n        refreshList(list);\n        setUsers(list || []);\n      }\n    } catch (err) {\n      console.log(\"Error\", err);\n      setLoading(false);\n      appContext.showErrorMessage(\"Fail to load the data\");\n    }\n  };\n\n  const refreshList = (list) => {\n    const siteList = [...list] || [];\n\n    if (sortBy) {\n      setFilteredUsers(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          siteList,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredUsers(siteList);\n    }\n  };\n\n  const getSiteOptions = useMemo(() => {\n    if (!appContext.sites) return [];\n    return appContext.sites\n      .filter((s) => s.preRegistration)\n      .map((l) => {\n        return { value: l.id, label: l.name, ...l };\n      });\n  }, [appContext.sites]);\n\n  const handleFilterChange = (event, picker) => setTimeFilter({ start: picker.startDate, end: picker.endDate });\n  const handleFilterCancel = (event, picker) => setTimeFilter({});\n  const handleChangePage = (page) => setCurrentPage(page);\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  useEffect(() => {\n    const data = users.reduce((obj, pre) => {\n      if (pre.orderId !== -1) obj[\"totalOrders\"] = (obj[\"totalOrders\"] || 0) + parseInt(pre.testSendQty || 0, 10);\n      if (pre.orderId !== -1 && pre.testSend === \"true\") obj[\"totalAttendees\"] = (obj[\"totalAttendees\"] || 0) + 1;\n      if (pre.isExternalTest || pre.isExternalTest === \"true\") obj[\"totalResult\"] = (obj[\"totalResult\"] || 0) + 1;\n      if (pre.step === 5) obj[\"totalAttendeesQr\"] = (obj[\"totalAttendeesQr\"] || 0) + 1;\n      if (pre.hasOwnProperty(\"orderStatus\")) {\n        if (pre.orderStatus !== \"\") {\n          pre.orderStatus !== \"delivered\"\n            ? (obj[\"totalShipped\"] = (obj[\"totalShipped\"] || 0) + 1)\n            : (obj[\"totalReceived\"] = (obj[\"totalReceived\"] || 0) + 1);\n        }\n      }\n      return obj;\n    }, {});\n    setStats(data);\n  }, [users]);\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n    const dataIds = data.filter((d) => d.isCheck).map((c) => c.id);\n    personalisationInLC.save(\"preregistration\", dataIds);\n    setOpenPersonalizationModal(false);\n    await API.saveUserPersonalisation(appContext.user.sub, personalisationInLC.get());\n  };\n\n  const handleOrderDetail = async (order, obj) => {\n    if (order) {\n      const isArray = Array.isArray(order);\n      let data = [];\n      if (!isArray) {\n        data.push(order);\n      }\n      setSelectedOrder({ data: data, user: obj });\n      setOpenOrderDetail(true);\n    }\n  };\n\n  const handleDeleteConfirm = async (isConfirm) => {\n    setOpenDeleteConfirmation(false);\n    if (!isConfirm) {\n      setUserToDelete(null);\n      return;\n    }\n    try {\n      const updateSelectedTestResult = filteredUsers\n        .filter((test) => checkboxes.includes(test.id))\n        .map((d) => {\n          return { id: d.id, phone_number: d.phone_number };\n        });\n      const ttlTest = updateSelectedTestResult.length;\n      if (!ttlTest) {\n        return;\n      }\n      setLoading(true);\n      await API.deletePreRegistration(updateSelectedTestResult);\n      setUsers(users.filter((test) => !checkboxes.includes(test.id)));\n      setFilteredUsers(filteredUsers.filter((test) => !checkboxes.includes(test.id)));\n      setCheckboxes([]);\n      appContext.showSuccessMessage(\"Record removed successfully\");\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n    setLoading(false);\n  };\n\n  const handleClearFilter = () => {\n    setUsers([]);\n    setFilteredUsers([]);\n  };\n  const handleCheckboxChange = (e, id) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n  };\n  const handleStatsClick = (type) => {\n    switch (type) {\n      case STATS_CLICK_TYPE.ORDERS:\n      case STATS_CLICK_TYPE.ATTENDEES:\n        setFilter({ ordered: \"1\" });\n        break;\n      case STATS_CLICK_TYPE.COMPLETED:\n        setFilter({ step: \"Pre Registered\" });\n        break;\n      case STATS_CLICK_TYPE.UPLOAD:\n        setFilter({ isExternalTest: \"true\" });\n        break;\n      case STATS_CLICK_TYPE.SHIPPED:\n        setFilter({ shipped: \"shipped\" });\n        break;\n      case STATS_CLICK_TYPE.DELIVERED:\n        setFilter({ orderStatus: \"delivered\" });\n        break;\n    }\n  };\n\n  // OPen delivery model from actions th\n\n  const handleShowDeliveryModal = (id) => {\n    setSelectedDeliveryUserId(id);\n    setShowDeliveryModal(true);\n  };\n\n  const isPCRShow = () => selectedShow && selectedShow.orderKitType && selectedShow.orderKitType === \"PCR\";\n\n  const TableRow = ({ user }) => {\n    return (\n      <tr className=\"trDataWrapper\">\n        {/* <td className=\"icon\" style={{ width: \"45px\", minWidth: \"45px\", maxWidth: \"45px\" }}></td> */}\n        <td className=\"ellipsis\" style={{ textAlign: \"left\" }}>\n          <div className=\"d-flex\">\n            <Form.Check>\n              <Form.Check.Input\n                type=\"checkbox\"\n                value={user.id}\n                checked={checkboxes.indexOf(user.id) !== -1}\n                onChange={(e) => handleCheckboxChange(e, user.id)}\n              ></Form.Check.Input>\n            </Form.Check>\n          </div>\n        </td>\n        {PRE_REG_QR_PERSONALIZE.filter((f) => f.isCheck).map((item, index) => {\n          return (\n            <RenderTd\n              handleOrderDetail={handleOrderDetail}\n              key={index}\n              item={item}\n              user={user}\n              createMoreInfo={createMoreInfo}\n            />\n          );\n        })}\n\n        {/* Dropdown actions in table */}\n        {isPCRShow() ? (\n          <td style={{ textAlign: \"center\" }}>\n            <>\n              <Dropdown className=\"custom-dropdown\">\n                <Dropdown.Toggle id=\"dropdown-basic\">\n                  <img src={dotIcons} alt=\"more icon\" />\n                </Dropdown.Toggle>\n                <Dropdown.Menu>\n                  <Dropdown.Item\n                    style={{ color: \"#42cef5\" }}\n                    onClick={() => {\n                      setSelectedUser(user);\n                      setOpenUserDetails(true);\n                    }}\n                  >\n                    View\n                  </Dropdown.Item>\n\n                  {user.testID && (\n                    <>\n                      <Dropdown.Item>\n                        <Link\n                          style={{ textDecoration: \"none\", paddingRight: \"57px\" }}\n                          to={{\n                            pathname: \"/admin/test/\" + user.testID,\n                          }}\n                          className=\"py-2 ps-0\"\n                        >\n                          View Test\n                        </Link>\n                      </Dropdown.Item>\n                      {/* <Dropdown.Item style={{ color: \"#42cef5\" }}>Re-Print Label</Dropdown.Item> */}\n                      {user.orderStatus !== \"Shipped\" && (\n                        <Dropdown.Item onClick={() => handleShowDeliveryModal(user.id)} style={{ color: \"#42cef5\" }}>\n                          {user.orderStatus}Add Tracking Info\n                        </Dropdown.Item>\n                      )}\n                    </>\n                  )}\n                </Dropdown.Menu>\n              </Dropdown>\n            </>\n          </td>\n        ) : (\n          <td style={{ color: \"#42cef5\", textAlign: \"center\", cursor: \"pointer\" }}>\n            <Link\n              to={{\n                pathname: \"/preregister/\" + `${user.id}&phone=${user.phone_number}`,\n                state: JSON.stringify(user),\n              }}\n              target=\"_blank\"\n              className=\"py-2 ps-0\"\n            >\n              View\n            </Link>\n          </td>\n        )}\n      </tr>\n    );\n  };\n\n  const populate = (record) => {\n    const {\n      zip,\n      state,\n      sex,\n      city,\n      isVaccinated,\n      employeeType,\n      street,\n      phone_number,\n      dob,\n      last,\n      first,\n      email,\n      id_number,\n      id,\n      country,\n      countryCode,\n    } = record;\n    console.log(\"records\", record);\n    const [ccCode, phno] = getPhoneNo(phone_number, countryCode);\n\n    const obj = {\n      employee_demographics: {\n        email: email,\n        firstName: first,\n        lastName: last,\n        dob: formatDoBForDemo(dob),\n        phoneNumber: `${ccCode}${phno}`,\n        countryCode: ccCode,\n        address: \"\",\n        employeeType: employeeType,\n        isVaccinated: isVaccinated,\n        whiteGlove: false,\n        city: city,\n        country: country || \"United States\",\n        state: state,\n        street: street,\n        street2: \"\",\n        zip: zip,\n        isLucira: false,\n        sex: sex,\n        testerDes: \"\",\n        idNumber: id_number,\n        status: \"Pending\",\n      },\n      phoneNumber: phone_number,\n      email: email,\n      employeeID: id,\n    };\n\n    obj = {\n      ...obj,\n      employee_demographics: obj.employee_demographics,\n      email: obj.email,\n      phoneNumber: obj.phoneNumber,\n      employeeID: obj.employeeID,\n    };\n\n    return obj;\n  };\n\n  console.log(\"selected Show\", selectedShow);\n  //Create Test\n  const handleCreateTest = async (lab) => {\n    try {\n      setLoading(true);\n\n      const seltectedUserData = users.filter(\n        (item) => checkboxes.includes(item.id) && !item?.sequenceNo && item.orderId === -1\n      );\n\n      if (seltectedUserData.length === 0) {\n        setLoading(false);\n        setCheckboxes([]);\n        appContext.showErrorMessage(\"Test already created\");\n        return;\n      }\n\n      let clientObj = appContext.clients.filter((item) => item.id == selectedShow.clientID);\n      let preRegisterArr = [];\n\n      for (let i = 0; i < seltectedUserData.length; i++) {\n        let user = { ...seltectedUserData[i] };\n        const [countryCode, phoneNo] = getPhoneNo(user.phone_number, user.countryCode);\n        let testObj = {\n          employee_demographics: {\n            email: user.email,\n            firstName: user.first,\n            lastName: user.last,\n            dob: user.dob,\n            phoneNumber: `${countryCode}${phoneNo}`,\n            employeeType: \"Staff\",\n            isVaccinated: user.isVaccinated,\n            whiteGlove: false,\n            city: user.city,\n            country: user.country,\n            state: user.state,\n            street: user.street,\n            street2: user.street2,\n            zip: user.zipcode,\n            sex: user.sex,\n            testerDes: \"\",\n            contryCode: countryCode,\n            idNumber: user.id_number || moment().valueOf(),\n          },\n          sequenceNo: \"\",\n          clientID: clientObj[0].id,\n          clientName: clientObj[0].name,\n          baseSiteID: user.showId,\n          siteID: user.showId,\n          site_name: user.showName,\n          labID: lab.value,\n          labName: lab.label,\n          test_type: \"PCR\",\n          phoneNumber: phoneNo,\n          email: user.email,\n          emailSend: false,\n          isFalsePositive: false,\n          status: \"Pending\",\n          referenceID: moment().valueOf(),\n          employeeID: \"\",\n          createSource: \"PR\",\n        };\n\n        let env = window.location.host.includes(\"localhost\") ? \"localhost\" : \"remote\";\n        let record = await API.getPreRegisterData(phoneNo, env);\n        let newObject = record.filter(\n          (obj) =>\n            (obj.phone_number == phoneNo || obj.phone_number == `${countryCode}${phoneNo}`) &&\n            obj.first.toLowerCase() == testObj?.employee_demographics?.firstName.trim().toLowerCase() &&\n            obj.last.toLowerCase() == testObj?.employee_demographics?.lastName.trim().toLowerCase() &&\n            obj.email.toLowerCase() == testObj?.employee_demographics?.email.trim().toLowerCase() &&\n            obj.idNumber.toLowerCase() === testObj?.employee_demographics?.idNumber.trim().toLowerCase() &&\n            moment(obj.dob).format(\"MMDDYYYY\") == testObj?.employee_demographics?.dob.trim().replace(\"/-/g\", \"\")\n        );\n        if (newObject.length > 0 && newObject[0].fetchFrom === \"Employee\") {\n          let newEmployeeData = populate(newObject[0]);\n          testObj = { ...testObj, ...newEmployeeData };\n        } else {\n          let newEmployee = await GQAPI.createNewEmployee({\n            ...testObj?.employee_demographics,\n            countryCode,\n            phoneNumber: phoneNo,\n          });\n          if (newEmployee && newEmployee.id) {\n            testObj = { ...testObj, employeeID: newEmployee.id };\n          }\n        }\n        // CREATE SEQUENCE NUMBER\n        let newSequenceNo;\n        newSequenceNo = await GQAPI.getTestAutoNumber();\n        testObj.sequenceNo = newSequenceNo.counter;\n\n        // Lab Check barcode is active or not\n        const checkLab = labs.find((item) => item.id === testObj.labID && item.barCodeProvided);\n        let barcode = \"\";\n        if (checkLab) {\n          barcode = await API.getLabProvidedBarCode(checkLab.id);\n        } else if (!barcode) {\n          barcode = makeBarcode(testObj.employee_demographics.idNumber, newSequenceNo.counter);\n        }\n\n        // create test\n        testObj = {\n          ...testObj,\n          submittedByName: appContext?.user?.name,\n          createdBy: appContext?.user?.sub,\n          tester_name: appContext?.user?.name,\n          barcode,\n        };\n\n        let newTest = await GQAPI.createTest(testObj);\n        if (newTest) {\n          preRegisterArr.push({\n            id: user.id,\n            testID: newTest.id,\n            phone_number: user.phone_number,\n            sequenceNo: testObj.sequenceNo,\n            barcode,\n          });\n        }\n      }\n      if (preRegisterArr.length > 0) {\n        await API.prTestCreation(preRegisterArr);\n        // await loadData();\n        appContext.showSuccessMessage(\"Test created successfully\");\n      } else {\n        appContext.showErrorMessage(\"Test can't be created\");\n      }\n      setLoading(false);\n      setCheckboxes([]);\n    } catch (err) {\n      console.log(\"Create Error\", err);\n      setLoading(false);\n      setCheckboxes([]);\n      appContext.showErrorMessage(\"Error in Creating Test\");\n    }\n  };\n\n  const updateLabChange = async (lab) => {\n    setShowLabChangeModal(false);\n    handleCreateTest(lab);\n  };\n\n  const saveDelivery = async (delivery) => {\n    setShowDeliveryModal(false);\n    try {\n      let deliveryOBj = { ...delivery, shipmentDate: moment(delivery.shipmentDate).toISOString() };\n      let selectedUserData = users.find((obj) => obj.id === selectedDeliveryUserId);\n\n      if (!selectedUserData?.id || !selectedUserData?.phone_number) {\n        return appContext.showErrorMessage(\"Delivery can't be created\");\n      }\n\n      const [countryCode, phoneNo] = getPhoneNo(selectedUserData.phone_number, selectedUserData.countryCode);\n      deliveryOBj = { ...deliveryOBj, phone_number: phoneNo, id: selectedUserData.id };\n      let deliveryResult = await GQAPI.createDelivery(deliveryOBj);\n      if (deliveryResult == \"ok\") {\n        setLoading(true);\n        // loadData();\n        setLoading(false);\n        appContext.showSuccessMessage(\"Delivery created successfully\");\n      } else {\n        appContext.showErrorMessage(\"Delivery can't be created\");\n      }\n    } catch (error) {\n      appContext.showErrorMessage(\"Delivery can't be created\");\n    }\n    setCheckboxes([]);\n    setSelectedDeliveryUserId(\"\");\n  };\n\n  // Show select\n  const handleSelectShow = (value) => {\n    setSelectedShow(value);\n    let selectShowSt = showsInSS.get();\n    console.log(\"selectShowSt\", selectShowSt);\n    selectShowSt[\"selectedShow\"] = value;\n    showsInSS.save(selectShowSt);\n  };\n\n  return (\n    <Container fluid>\n      {!loading ? (\n        <div className=\"shows-screen-print\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                      {selectedShow && (\n                        <Icon\n                          handleClick={() => setShowPreRegistration(true)}\n                          title={\"Add Manual\"}\n                          label={\"Add\"}\n                          iconType={\"createIcon\"}\n                        />\n                      )}\n                      {isPCRShow() && (\n                        <Icon\n                          disabled={checkboxes.length === 0}\n                          onClick={() => setShowLabChangeModal(true)}\n                          title={\"Print a Label\"}\n                          label={\"Print\"}\n                          iconType={\"printIcon\"}\n                        />\n                      )}\n                      {filteredUsers.length > 0 && (\n                        <div>\n                          <ExportToExcel\n                            items={filteredUsers}\n                            selectedItem={selectedItem}\n                            appContext={appContext}\n                            filter={filter}\n                            timeFilter={timeFilter}\n                            title=\"Pre Registration User\"\n                            sortBy={sortBy}\n                          />\n                        </div>\n                      )}\n                      {selectedShow && (\n                        <div className=\"fs-5 px-2\">\n                          <span>Show Test Type : {TEST_TYPE_VALUE[selectedShow.orderKitType] || \"General\"}</span>\n                        </div>\n                      )}\n                    </div>\n                  </div>\n                  <div>\n                    {showFilter && (\n                      <Filter\n                        filterTerms={searchTerms}\n                        setFilter={setFilter}\n                        filter={filter}\n                        triggerFilter={triggerFilter}\n                        setTriggerFilter={setTriggerFilter}\n                        handleClearFilter={handleClearFilter}\n                        isUsersTable={true}\n                      />\n                    )}\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n            <Col md=\"12\">\n              <Card className=\"striped-tabled-with-hover bg-transparent\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md=\"6\">\n                      <Card.Title>\n                        <div>\n                          Generic Pre Registration:\n                          <span className=\"ps-2\">{filteredUsers ? filteredUsers.length : 0}</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"6\">\n                      <MFPagination\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                      />\n                    </Col>\n\n                    {/* <div className=\"buttonHeader clientsButtonHeader justify-content-between mb-1 w-100\">\n                      <div className=\"buttonHeader clientsButtonHeader w-100\">\n                        <Button className=\"headerButton mb-0\" onClick={() => setShowFilter(!showFilter)}>\n                          Filter\n                        </Button>\n\n                        {filteredUsers.length > 0 && (\n                          <div>\n                            <ExportToExcel\n                              items={filteredUsers}\n                              selectedItem={selectedItem}\n                              appContext={appContext}\n                              filter={filter}\n                              timeFilter={timeFilter}\n                              title=\"Pre Registration User\"\n                              sortBy={sortBy}\n                            />\n                          </div>\n                        )}\n\n                        {selectedShow && (\n                          <Button className=\"headerButton\" onClick={() => setShowPreRegistration(true)}>\n                            Add Manual\n                          </Button>\n                        )}\n\n                        {isPCRShow() && (\n                          <Button\n                            className=\"headerButton\"\n                            disabled={checkboxes.length === 0}\n                            onClick={() => setShowLabChangeModal(true)}\n                          >\n                            Print Label\n                          </Button>\n                        )}\n\n                        {selectedShow && (\n                          <div className=\"fs-4 px-2\">\n                            <span>Show Test Type : {TEST_TYPE_VALUE[selectedShow.orderKitType] || \"General\"}</span>\n                          </div>\n                        )}\n                      </div>\n                    </div>\n                    <div>\n                      {showFilter && (\n                        <Filter\n                          filterTerms={searchTerms}\n                          setFilter={setFilter}\n                          filter={filter}\n                          triggerFilter={triggerFilter}\n                          setTriggerFilter={setTriggerFilter}\n                          handleClearFilter={handleClearFilter}\n                          isUsersTable={true}\n                        />\n                      )}\n                    </div> */}\n\n                    {/* {stats && Object.keys(stats).length > 0 && (\n                      <div>\n                        <Col>\n                          <div className=\"preRegistrationOrderDetails\">\n                            <StatsView\n                              label=\"Tests ordered\"\n                              value={stats.totalOrders ?? 0}\n                              type={STATS_CLICK_TYPE.ORDERS}\n                              handleClick={handleStatsClick}\n                            />\n                            <StatsView\n                              label=\"Attendees who ordered\"\n                              value={stats.totalAttendees ?? 0}\n                              type={STATS_CLICK_TYPE.ATTENDEES}\n                              handleClick={handleStatsClick}\n                            />\n                            <StatsView\n                              label=\"Completed Registration\"\n                              value={stats.totalAttendeesQr ?? 0}\n                              type={STATS_CLICK_TYPE.COMPLETED}\n                              handleClick={handleStatsClick}\n                            />\n                            <StatsView\n                              label=\"Uploaded Test Results\"\n                              value={stats.totalResult ?? 0}\n                              type={STATS_CLICK_TYPE.UPLOAD}\n                              handleClick={handleStatsClick}\n                            />\n                            <StatsView\n                              label=\"Tests Shipped\"\n                              value={stats.totalShipped ?? 0}\n                              type={STATS_CLICK_TYPE.SHIPPED}\n                              handleClick={handleStatsClick}\n                            />\n                            <StatsView\n                              label=\"Tests Delivered\"\n                              value={stats.totalReceived ?? 0}\n                              type={STATS_CLICK_TYPE.DELIVERED}\n                              handleClick={handleStatsClick}\n                            />\n                          </div>\n                        </Col>\n                      </div>\n                    )} */}\n                  </Row>\n                </Card.Header>\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll pt-0 mt-0\">\n                  <div className=\"table-responsive pendingReleaseTable\" ref={mainRef}>\n                    <Table\n                      className=\"separate-border-tr\"\n                      style={{ width: mainWidth, maxWidth: mainWidth, minWidth: mainWidth }}\n                    >\n                      <thead>\n                        <tr>\n                          <th></th>\n                          {PRE_REG_QR_PERSONALIZE.filter((f) => f.isCheck).map((item, index) => (\n                            <HeaderItem\n                              key={index}\n                              width={tdWidth}\n                              ItemKey={item.itemKey}\n                              title={item.title}\n                              flipSort={flipSort}\n                              sortBy={sortBy}\n                              sortDescending={sortDescending}\n                              aligned={item.textAlign}\n                            />\n                          ))}\n\n                          <th\n                            className=\"border-0 centered text-grey\"\n                            style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n                          >\n                            QR Link\n                          </th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {itemsToMap &&\n                          itemsToMap.map((user) => {\n                            return <TableRow key={user.id} user={user} />;\n                          })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      ) : (\n        <Loader />\n      )}\n      <ContactInfo show={modalShow} moreInfo={moreInfo} handleClose={handleCloseContactInfo} />\n      {/* {openPersonalizationModal && (\n        <PersonalizationModal\n          data={personalize}\n          handleChange={handlePersonalization}\n          show={openPersonalizationModal}\n          handleClose={() => setOpenPersonalizationModal(false)}\n        />\n      )} */}\n      {openOrderDetail && (\n        <OrderDetailModal\n          order={selectedOrder}\n          show={openOrderDetail}\n          handleClose={() => {\n            setOpenOrderDetail(false);\n            setSelectedOrder(\"\");\n          }}\n        />\n      )}\n      {openUserDetails && (\n        <VaccinationDetailModal\n          user={selectedUser}\n          show={openUserDetails}\n          handleClose={() => {\n            setOpenUserDetails(false);\n            setSelectedUser(\"\");\n          }}\n        />\n      )}\n      {openDeleteConfirmation && (\n        <ConfirmationModal\n          show={openDeleteConfirmation}\n          title=\"Delete Record\"\n          message=\"Are you sure, you want to remove Record?\"\n          handleConfirm={handleDeleteConfirm}\n        />\n      )}\n      {showPreRegistration && (\n        <Modal\n          show={showPreRegistration}\n          animation={true}\n          onHide={() => setShowPreRegistration(false)}\n          centered\n          size=\"xl\"\n        >\n          <Modal.Header closeButton>\n            <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n              Event Registration\n            </Modal.Title>\n          </Modal.Header>\n\n          <Modal.Body style={{ paddingTop: 0 }}>\n            <RegisterCrewManual\n              id={selectedShow.value}\n              selectedShow={selectedShow}\n              handleAddedPreReg={handleAddedPreReg}\n            />\n          </Modal.Body>\n        </Modal>\n      )}\n      {showLabChangeModal && (\n        <CreateTestLabModal\n          handleSave={updateLabChange}\n          labs={appContext.labs}\n          handleClose={() => setShowLabChangeModal(false)}\n        />\n      )}\n      {showDeliveryModal && (\n        <CreateTestDeliveryModal handleSave={saveDelivery} handleClose={() => setShowDeliveryModal(false)} />\n      )}\n    </Container>\n  );\n};\n\nexport default GenericPreRegistration;\n","import React, { useMemo } from \"react\";\nimport { PDFDownloadLink } from \"@react-pdf/renderer\";\nimport AllTestPDF from \"components/PDF/AllTestPDF\";\nimport { Button } from \"react-bootstrap\";\nimport ReactPDF from \"@react-pdf/renderer\";\nimport FileSaver from \"file-saver\";\nimport { formatPhoneNumber } from \"utils\";\nimport moment from \"moment\";\nimport API from \"api\";\nimport Icon from \"components/Icon\";\n\nconst EmployeePDFLayout = ({ tests, selectedItem, title, appContext, filter, timeFilter, sortBy }) => {\n  const exportData = () => {\n    if (!selectedItem) return tests;\n    return tests.map((item) => {\n      let obj = {};\n      selectedItem.forEach((c) => {\n        if (c === \"phoneNumber\") {\n          const val = formatPhoneNumber(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"updatedAt\" || c === \"createdAt\" || c === \"batch\" || c === \"resultDate\") {\n          const val = item[c] ? moment(item[c]).format(\"MMM DD, YYYY\") : moment(item.createdAt).format(\"MMM DD, YYYY\");\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"clientID\") {\n          const val = appContext.getClientName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"siteID\") {\n          const val = appContext.getSiteName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"labID\") {\n          const val = appContext.getLabName(item[c]);\n          Object.assign(obj, { [c]: val });\n        } else if (c === \"emailSend\") {\n          const val = item[c] ? \"true\" : \"\";\n          Object.assign(obj, { [c]: val });\n        } else {\n          Object.assign(obj, { [c]: item[c] });\n        }\n      });\n      return obj;\n    });\n  };\n\n  const fetchData = () => {\n    loadData();\n  };\n\n  const loadData = async () => {\n    try {\n      const filterParam = { ...filter };\n      if (timeFilter) {\n        const { start, end } = timeFilter;\n        if (start)\n          Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n        if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n        Object.assign(filterParam, { fileType: \"PDF\" });\n      }\n      if (Object.keys(filterParam).length > 0) {\n        await API.downloadEmployeePdf(filterParam);\n      }\n    } catch (err) {\n      console.log(\"Error\", err);\n    }\n  };\n  const handleClick = () => {\n    const data = exportData();\n    const fileName = \"test.pdf\";\n    ReactPDF.pdf(<AllTestPDF tests={data} title={title} filter={filter} timeFilter={timeFilter} sortBy={sortBy} />)\n      .toBlob()\n      .then(async (fileContent) => {\n        FileSaver.saveAs(fileContent, fileName);\n      });\n  };\n\n  return (\n    <>\n      <Icon handleClick={fetchData} title={\"Export to Pdf\"} label=\"Export\" iconType={\"pdfIcon\"} />\n    </>\n  );\n};\n\nexport default EmployeePDFLayout;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport HeaderItem from \"./HeaderItem\";\nimport { TEST_HEADER_TYPE } from \"../../constant\";\nimport { useLocation } from \"react-router\";\nimport { calculateTdWidth } from \"../../utils\";\n\nconst ProfileHeader = (props) => {\n  const { type, flipSort, sortBy, sortDescending, cssClass, widthCol } = props;\n  const location = useLocation();\n\n  const componentRef = useRef();\n  const [width, setWidth] = useState(0);\n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    setWidth(componentRef.current.offsetWidth);\n  };\n\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  const calculateColumns = () => {\n    let col = location.pathname === \"/admin/profiles\" ? 6 : 6;\n    if (type !== TEST_HEADER_TYPE.pending) col += 1;\n    if (type !== TEST_HEADER_TYPE.unprocessed) col += 1;\n    return col;\n  };\n\n  const tdWidth = calculateTdWidth(width - 60, calculateColumns());\n\n  return (\n    <thead ref={componentRef}>\n      <tr className={cssClass}>\n        <th style={{ width: `${widthCol || 50}px`, maxWidth: `${widthCol || 50}px` }}></th>\n\n        <HeaderItem\n          width={tdWidth - 50}\n          ItemKey=\"firstName\"\n          title=\"First Name\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n        />\n        <HeaderItem\n          width={tdWidth - 50}\n          ItemKey=\"lastName\"\n          title=\"Last Name\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n        />\n        <HeaderItem\n          width={tdWidth - 60}\n          ItemKey=\"email\"\n          title=\"Email\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"phoneNumber\"\n          title=\"Phone\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n        />\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"dob\"\n          title=\"DoB\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n        {/* <HeaderItem\n          width={tdWidth}\n          ItemKey=\"isVaccinated\"\n          title=\"isVaccinated\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        /> */}\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"street\"\n          title=\"Address\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"id_number\"\n          title=\"Id_Number\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"site_name\"\n          title=\"Show\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"lastUsed\"\n          title=\"Last Test Date\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n        <HeaderItem\n          width={tdWidth}\n          ItemKey=\"totalTest\"\n          title=\"Total Tests\"\n          flipSort={flipSort}\n          sortBy={sortBy}\n          sortDescending={sortDescending}\n          aligned=\"centered\"\n        />\n        <th\n          className=\"ellipsis border-0 centered text-grey\"\n          style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n        >\n          Actions\n        </th>\n      </tr>\n    </thead>\n  );\n};\n\nexport default ProfileHeader;\n","import React from \"react\";\nimport { Button, Form, Modal, Table } from \"react-bootstrap\";\n\nconst ProfileTableHeader = (props) => {\n  return (\n    <thead>\n      <tr>\n        <th\n          className=\"border-0 ellipsis\"\n          align=\"center\"\n              style={{\n                  width: '9%',\n            color: \"grey\",\n            fontWeight: \"bold\",\n          }}\n        >\n            First Name\n        </th>\n        <th\n            align=\"center\"\n          className=\"border-0\"\n          style={{\n              width: '9%',\n            color: \"grey\",\n            fontWeight: \"bold\",\n          }}\n        >\n            Last Name\n        </th>\n        <th\n          className=\"border-0 text-center\"\n          style={{\n              width: '11%',\n            color: \"grey\",\n            fontWeight: \"bold\",\n          }}\n        >\n            Email\n        </th>\n        <th\n            align=\"center\"\n          className=\"border-0 ellipsis\"\n          style={{\n              width: '12%',\n            color: \"grey\",\n            fontWeight: \"bold\",\n          }}\n        >\n            Phone Number\n        </th>\n        <th\n          className=\"border-0 text-center ellipsis\"\n          style={{\n              width: '9%',\n            color: \"grey\",\n            fontWeight: \"bold\",\n          }}\n        >\n            DOB\n        </th>\n        <th\n            align=\"center\"\n          className=\"border-0 ellipsis\"\n          style={{\n              width: '9%',\n            color: \"grey\",\n            fontWeight: \"bold\",\n            textAlign: \"center\",\n          }}\n        >\n            Address\n        </th>\n        <th\n            align=\"center\"\n          className=\"border-0 ellipsis\"\n          style={{\n              width: '9%',\n            color: \"grey\",\n            fontWeight: \"bold\",\n            textAlign: \"center\",\n          }}\n        >\n            ID_Number\n        </th>\n        <th\n            align=\"center\"\n          className=\"border-0 ellipsis\"\n          style={{\n              width: '6%',\n            color: \"grey\",\n            fontWeight: \"bold\",\n            textAlign: \"center\",\n          }}\n        >\n            Tests\n        </th>\n\n        <th\n            align=\"center\"\n          className=\"border-0 ellipsis\"\n          style={{\n            color: \"grey\",\n            fontWeight: \"bold\",\n            textAlign: \"center\",\n              width: '8%',\n          }}\n        >\n            Last Show\n        </th>\n\n        <th\n            align=\"center\"\n          className=\"border-0 ellipsis\"\n          style={{\n            color: \"grey\",\n            fontWeight: \"bold\",\n            textAlign: \"center\",\n              width: '11%'\n          }}\n        >\n            Last Test Date\n        </th>\n        <th\n            align=\"center\"\n          className=\"border-0 ellipsis\"\n          style={{\n              width: '7%',\n            color: \"grey\",\n            fontWeight: \"bold\",\n            textAlign: \"center\",\n          }}\n        >\n          Actions\n        </th>\n      </tr>\n    </thead>\n  );\n};\n\nexport default ProfileTableHeader;","import React from \"react\";\nimport { formatPhoneNumber, parseBooleanValue, formatDOB } from \"utils\";\nimport moment from \"moment\";\nimport { Button, Form, Modal, Table } from \"react-bootstrap\";\nimport ViewCheckBox from \"../CheckBox/ViewCheckBox\";\nimport ViewOnlyCheckBox from \"../CheckBox/ViewOnlyCheckBox\";\n\nconst ProfileTableItem = (props) => {\n  const { user, userNotToDelete, setUserNotToDelete, showSelection, updateDatePoint } = props;\n  const replaceData = (key, value) => {\n    if (updateDatePoint) updateDatePoint(key, value);\n  };\n  return (\n    <tr key={user.id}>\n      <td className=\"ellipsis\" title={user.firstName} onClick={() => replaceData(\"firstName\", user.firstName)}>\n        {user.firstName}\n      </td>\n      <td className=\"ellipsis\" title={user.lastName} onClick={() => replaceData(\"lastName\", user.lastName)}>\n        {user.lastName}\n      </td>\n      <td\n        className=\"ellipsis\"\n        style={{\n          textDecoration: \"underline\",\n          color: \"#A82632\",\n        }}\n        onMouseOver={(e) => {\n          e.target.style.cursor = \"pointer\";\n          e.target.style.textDecoration = \"none\";\n        }}\n        onMouseLeave={(e) => {\n          e.target.style.textDecoration = \"underline\";\n        }}\n        title={user.email}\n        onClick={() => replaceData(\"email\", user.email)}\n      >\n        {user.email}\n      </td>\n      <td\n        className=\"ellipsis\"\n        style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n        onMouseOver={(e) => {\n          e.target.style.cursor = \"pointer\";\n          e.target.style.textDecoration = \"none\";\n        }}\n        onMouseLeave={(e) => {\n          e.target.style.textDecoration = \"underline\";\n        }}\n        title={formatPhoneNumber(user.phoneNumber)}\n        onClick={() => replaceData(\"phoneNumber\", user.phoneNumber)}\n      >\n        {formatPhoneNumber(user.phoneNumber)}\n      </td>\n\n      <td\n        className=\"ellipsis\"\n        title={formatDOB(user.dob)}\n        style={{ textAlign: \"center\" }}\n        onClick={() => replaceData(\"dob\", user.dob)}\n      >\n        {formatDOB(user.dob)}\n      </td>\n      <td\n        className=\"ellipsis\"\n        title={user?.street}\n        style={{ textAlign: \"center\" }}\n        onClick={() => replaceData(\"street\", user)}\n      >\n        {user?.street}\n      </td>\n      <td\n        className=\"ellipsis\"\n        title={user?.id_number}\n        style={{ textAlign: \"center\" }}\n        onClick={() => replaceData(\"id_number\", user.id_number)}\n      >\n        {user?.id_number}\n      </td>\n      <td className=\"ellipsis\" title={user?.testCount} style={{ textAlign: \"center\" }}>\n        {user?.totalTest}\n      </td>\n      <td className=\"ellipsis\" title={user?.site_name} style={{ textAlign: \"center\" }}>\n        {user?.site_name}\n      </td>\n      <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n        {user?.lastUsed && user?.lastUsed !== \"null\" ? moment(user?.lastUsed).format(\"MM-DD-YYYY HH:mm\") : \"-\"}\n      </td>\n      <td style={{ textAlign: \"center\" }} className=\"ellipsis\">\n        {showSelection && (\n            <a style={{color: 'rgb(66, 206, 245)'}} className=\"cursor-pointer\" onClick={(e) => setUserNotToDelete({...user})}>Select</a>\n        )}\n      </td>\n    </tr>\n  );\n};\n\nexport default ProfileTableItem;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport { Card, Button, Form, Modal, Table } from \"react-bootstrap\";\nimport { AppContext } from \"context/app-context\";\nimport api from \"api\";\nimport Loader from \"components/Loader/Loader\";\nimport { formatPhoneNumber, parseBooleanValue, formatDOB } from \"utils\";\nimport { GENDER_TEXT } from \"constant\";\nimport moment from \"moment\";\nimport ProfileTableHeader from \"components/CrewProfile/ProfileTableHeader\";\nimport ProfileTableItem from \"components/CrewProfile/ProfileTableItem\";\n\nconst EmployeeCrewProfileLogsModal = (props) => {\n  const { data, handleClose, totalTestsCount, handleShowMergedProfileLogs } = props;\n  const [employees, setEmployees] = useState(data);\n  const [userNotToDelete, setUserNotToDelete] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const appContext = useContext(AppContext);\n\n  const handleConfirm = async (isConfirm) => {\n    if (!isConfirm) {\n      setUserNotToDelete(null);\n      return;\n    }\n    try {\n      setLoading(true);\n\n      const duplicateEmployee = employees.filter((u) => u.id !== userNotToDelete.id);\n      const primary_id = userNotToDelete?.mdID;\n      const deleted_id = duplicateEmployee?.map((e) => {\n        return e.mdID;\n      });\n\n      if (deleted_id.length === 0) {\n        appContext.showSuccessMessage(\"No Record to Delete\");\n        setLoading(false);\n        handleClose(true);\n        return;\n      }\n\n      const models = await api.deleteDuplicateEmployee(userNotToDelete, primary_id, deleted_id, appContext.user);\n      let length = models.deletedIds.length;\n      let message = ` Success:  You have deleted ${length}  Duplicate Profiles and combined ${totalTestsCount} tests`;\n\n      if (totalTestsCount === 0) {\n        message = \"Success: You have deleted \" + length + \" Duplicate Profiles.\";\n      }\n      appContext.showSuccessMessage(message);\n\n      setLoading(false);\n      handleClose(true);\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n      setLoading(false);\n    }\n  };\n\n  const handleUpdataPoint = (key, value) => {\n    if (userNotToDelete) {\n      let obj = { ...userNotToDelete };\n      if (key === \"street\") {\n        obj = {\n          ...obj,\n          street: value.street,\n          state: value.state,\n          ...(value.city && { city: value.city }),\n          ...(value.country && { country: value.country }),\n          ...(value.street2 && { street2: value.street2 }),\n        };\n      } else {\n        obj[`${key}`] = value;\n      }\n\n      setUserNotToDelete({ ...obj });\n    }\n  };\n\n  return (\n    <>\n      {!loading ? (\n        <Modal show animation={true} onHide={() => handleClose()} size=\"2xl\">\n          <Modal.Header closeButton>\n            <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n              Employee Data - Total Tests ({totalTestsCount})\n            </Modal.Title>\n          </Modal.Header>\n\n          <Modal.Body style={{ paddingTop: 0 }}>\n            <h5 className=\"mb-1 mt-0 fw-bolder\">Valid Profile</h5>\n            <Card>\n              <Card.Body className=\"px-2\">\n                <div className=\"table-responsive\">\n                  <Table className=\"table table-hover table-striped\">\n                    <ProfileTableHeader />\n                    <tbody>\n                      {userNotToDelete ? (\n                        <ProfileTableItem user={userNotToDelete} userNotToDelete={userNotToDelete}></ProfileTableItem>\n                      ) : (\n                        <td colSpan=\"11\">\n                          <div className=\"w-100 text-center\">Select Valid Profile from below options</div>\n                        </td>\n                      )}\n                    </tbody>\n                  </Table>\n                </div>\n              </Card.Body>\n            </Card>\n            <h5 className=\"mb-1 mt-0 fw-bolder\">Profile Options</h5>\n            <Card>\n              <Card.Body className=\"px-2\">\n                <Form>\n                  <div className=\"table-responsive\">\n                    <Table className=\"table table-hover table-striped table-fixed\">\n                      <ProfileTableHeader />\n                      <tbody>\n                        {employees?.map((user, index) => {\n                          return (\n                            <ProfileTableItem\n                              key={index}\n                              user={user}\n                              setUserNotToDelete={setUserNotToDelete}\n                              showSelection\n                              updateDatePoint={handleUpdataPoint}\n                            ></ProfileTableItem>\n                          );\n                        })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Form>\n              </Card.Body>\n            </Card>\n          </Modal.Body>\n\n          <Modal.Footer className=\"flex-row-reverse\">\n            {userNotToDelete && (\n              <Button\n                variant=\"primary\"\n                onClick={() => {\n                  handleConfirm(true);\n                }}\n              >\n                Combine Profiles\n              </Button>\n            )}\n            <Button variant=\"primary\" onClick={() => handleClose(false)}>\n              Close\n            </Button>\n          </Modal.Footer>\n        </Modal>\n      ) : (\n        <Loader />\n      )}\n    </>\n  );\n};\n\nexport default EmployeeCrewProfileLogsModal;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport { Button, Form, Modal, Table } from \"react-bootstrap\";\nimport { AppContext } from \"context/app-context\";\nimport api from \"api\";\nimport Loader from \"components/Loader/Loader\";\nimport { formatPhoneNumber, parseBooleanValue, formatDOB } from \"utils\";\nimport { GENDER_TEXT } from \"constant\";\nimport moment from \"moment\";\nimport { formatTest } from \"utils\";\n\nconst EmployeeCrewProfileMergedLogsModal = (props) => {\n  const { data, handleCloseMergedProfileLogs } = props;\n\n  const [tests, setTests] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const appContext = useContext(AppContext);\n\n\n  useEffect(() =>{\n    \n    if(data?.test){\n        const tests = data?.test?.map((t)=> formatTest(t));\n        setTests(tests);\n    }\n  }, [data?.test])\n  return (\n    <>\n      {!loading ? (\n        <Modal show animation={true} onHide={() => handleCloseMergedProfileLogs()} size=\"2xl\" >\n          <Modal.Header closeButton>\n            <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n             Combined Profiles\n            </Modal.Title>\n          </Modal.Header>\n\n\n          <Modal.Body style={{ paddingTop: 0 }} >\n      \n                <div className=\"d-flex justify-content-center\">\n                    <h4>\n                    Success:  You have deleted <b>{data?.deletedIds?.length}</b>  Duplicate Profiles and combined <b>{data?.test?.length}</b> tests\n                    </h4>\n             \n\n            </div>\n            <Form>\n              <div className=\"form-group-wrapper d-block\">\n                <div className=\"table-responsive\">\n                  <Table className=\"table-hover table-striped\">\n                    <thead>\n                      <tr>\n                        <th\n                          className={`border-0`}\n                          style={{\n                            color: \"grey\",\n                            fontWeight: \"bold\",\n                          }}\n                        >\n                          <div>\n                            <span>First Name</span>\n                          </div>\n                        </th>\n                        <th\n                          className={`border-0  `}\n                          style={{\n                            color: \"grey\",\n                            fontWeight: \"bold\",\n                          }}\n                        >\n                          <div>\n                            <span>Last Name</span>\n                          </div>\n                        </th>\n                        <th\n                          className={`border-0  `}\n                          style={{\n                            color: \"grey\",\n                            fontWeight: \"bold\",\n                          }}\n                        >\n                          <div>\n                            <span>Email</span>\n                          </div>\n                        </th>\n                        <th\n                          className={`border-0  `}\n                          style={{\n                            color: \"grey\",\n                            fontWeight: \"bold\",\n                          }}\n                        >\n                          <div>\n                            <span>Phone Number</span>\n                          </div>\n                        </th>\n\n               \n                        <th\n                          className={`border-0  `}\n                          style={{\n                            color: \"grey\",\n                            fontWeight: \"bold\",\n                            textAlign: \"center\"\n                          }}\n                        >\n                          <div>\n                            <span>Sequence No</span>\n                          </div>\n                        </th>\n                        <th\n                          className={`border-0  `}\n                          style={{\n                            color: \"grey\",\n                            fontWeight: \"bold\",\n                            textAlign: \"center\"\n                          }}\n                        >\n                          <div>\n                            <span>Test Type</span>\n                          </div>\n                        </th>\n                        <th\n                          className={`border-0  `}\n                          style={{\n                            color: \"grey\",\n                            fontWeight: \"bold\",\n                            textAlign: \"center\"\n                          }}\n                          \n                        >\n                          <div>\n                            <span>Result</span>\n                          </div>\n                        </th>\n                    \n                      </tr>\n                    </thead>\n                    <tbody>\n                      { \n                        tests?.map((testData, index) => {\n                        return (\n                          <tr >\n                            <td className=\"ellipsis\" title={testData.firstName}>\n                              {testData.firstName}\n                            </td>\n                            <td className=\"ellipsis\" title={testData.lastName}>\n                              {testData.lastName}\n                            </td>\n                            <td\n                              className=\"ellipsis\"\n                              style={{\n                                textDecoration: \"underline\",\n                                color: \"#A82632\",\n                              }}\n                              onMouseOver={(e) => {\n                                e.target.style.cursor = \"pointer\";\n                                e.target.style.textDecoration = \"none\";\n                              }}\n                              onMouseLeave={(e) => {\n                                e.target.style.textDecoration = \"underline\";\n                              }}\n                              onClick={() => testData?.email && window.open(`mailto:${testData.email}`)}\n                              title={testData.email}\n                            >\n                              {testData.email}\n                            </td>\n                            <td\n                              className=\"ellipsis\"\n                              style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n                              onMouseOver={(e) => {\n                                e.target.style.cursor = \"pointer\";\n                                e.target.style.textDecoration = \"none\";\n                              }}\n                              onMouseLeave={(e) => {\n                                e.target.style.textDecoration = \"underline\";\n                              }}\n                              onClick={() => {\n                                testData.phoneNumber && window.open(`tel:+1${testData.phoneNumber.replace(/\\D/g, \"\")}`);\n                              }}\n                              title={formatPhoneNumber(testData.phoneNumber)}\n                            >\n                              {formatPhoneNumber(testData.phoneNumber)}\n                            </td>\n                          \n                            <td className=\"ellipsis\" title={testData.sequenceNo}>\n                              {testData.sequenceNo}\n                            </td>\n                            <td className=\"ellipsis\"  title={testData?.test_type}>\n                              {testData?.test_type}\n                            </td>\n                            <td className=\"ellipsis\"  title={testData?.result}>\n                              {testData?.result}\n                            </td>\n                           \n                           \n                          </tr>\n                        );\n                      })\n                      }\n                    </tbody>\n                  </Table>\n                </div>\n              </div>\n            </Form>\n          </Modal.Body>\n\n          <Modal.Footer className=\"flex-row-reverse\">\n         \n            <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleCloseMergedProfileLogs(false)}>\n              Close\n            </Button>\n          </Modal.Footer>\n        </Modal>\n      ) : (\n        <Loader />\n      )}\n    </>\n  );\n};\n\nexport default EmployeeCrewProfileMergedLogsModal;\n","import React, { useState, useContext, useMemo, useRef, useCallback } from \"react\";\n\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n  Form,\n  DropdownButton,\n  Dropdown,\n  Modal,\n  InputGroup,\n  FormControl,\n} from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { CSVLink } from \"react-csv\";\nimport { Importer, ImporterField } from \"react-csv-importer\";\nimport { Link } from \"react-router-dom\";\nimport { PDFViewer } from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport TimeFilter from \"components/TimeFilter\";\nimport FilterSelect from \"components/FilterSelect\";\nimport Select from \"react-select\";\nimport { useLocation } from \"react-router-dom\";\nimport { useHistory } from \"react-router-dom\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport PGPagination from \"components/Pagination/PGPagination\";\nimport _ from \"lodash\";\nimport {\n  PAGE_LIMIT,\n  RESULT_COLOR,\n  TEST_HEADER_TYPE,\n  newRoleOptions,\n  SUPER_ADMIN_ID,\n  RESULT_VALUE,\n  TEST_EMPTY_OBJECT,\n} from \"constant\";\nimport {\n  changeSort,\n  formatPhoneNumber,\n  formatTest,\n  sortTestList,\n  sortingFilterInLC,\n  formatDateOfBirthDOB,\n  getDemoGraphics,\n  formatDOB,\n} from \"utils\";\nimport { AppContext } from \"context/app-context\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport ExportToExcelData from \"components/ExportToExcelData\";\nimport EmployeePDFLayout from \"components/PDF/EmployeePDFLayout\";\nimport moment from \"moment\";\nimport Loader from \"components/Loader/Loader\";\nimport AppTestLogsModal from \"components/Modal/AppTestLogsModal\";\nimport TestLogsModal from \"components/Modal/TestLogsModal\";\nimport ChangeTestConfigModal from \"components/Modal/ChangeTestConfigModal\";\nimport { debounce } from \"debounce\";\nimport { useInitialRender } from \"components/useInitialRender\";\nimport ProfileHeader from \"components/Table/ProfileHeader\";\nimport Filter from \"components/Filter\";\nimport EmployeeCrewProfileLogsModal from \"components/Modal/EmployeeCrewProfileLogsModal\";\nimport EmployeeCrewProfileMergedLogsModal from \"components/Modal/EmployeeCrewProfileMergedLogsModal\";\nimport { async } from \"@firebase/util\";\nimport Icon from \"components/Icon\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\n\nconst ProfilesView = () => {\n  const mainRef = useRef();\n  const [width, setWidth] = useState(0);\n  const history = useHistory();\n\n  useEffect(() => {\n    setWidth(mainRef.current.offsetWidth);\n  }, [mainRef]);\n\n  const handleResize = () => {\n    setWidth(mainRef.current.offsetWidth);\n  };\n\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  const importResult = [];\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [tests, setTests] = useState([]);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [removeDuplictaeModalShow, setRemoveDuplictaeModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [triggerFilter, setTriggerFilter] = useState();\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n  const [loading, setLoading] = useState(false);\n  const [testAppLogs, setTestAppLogs] = useState([]);\n  const [showAppLog, setShowAppLog] = useState(false);\n  const [showLog, setShowLog] = useState(false);\n  const [testLogs, setTestLogs] = useState([]);\n  const [pageNo, setPageNo] = useState(1);\n  const [openCreator, setOpenCreator] = useState(false);\n  const [selectedTest, setSelectedTest] = useState([]);\n  const [showMergedProfileLogs, setShowMergedProfileLogs] = useState(false);\n  const [savedEmployeeTests, setEmployeeTests] = useState([]);\n  const [employeeTotalTestsCount, setEmployeeTotalTestsCounts] = useState(0);\n  const [mergedProfilesTestsData, setMergedProfilesTestsData] = useState(\"\");\n  const { filterDates } = TimeFilter;\n\n  const location = useLocation();\n  const initialRender = useInitialRender();\n  const appContext = useContext(AppContext);\n\n  const searchTerms = [\"First Name\", \"Last Name\", \"Date of Birth\", \"Email\", \"Phone\", \"ID Number\", \"Show\"];\n\n  const selectedItem = [\n    \"firstName\",\n    \"lastName\",\n    \"dob\",\n    \"email\",\n    \"phoneNumber\",\n    //\"isVaccinated\",\n    \"street\",\n    \"ID Number\",\n    \"site_name\",\n    \"lastUsed\",\n  ];\n\n  if (!appContext) {\n    history.push(\"/login\");\n  }\n\n  const displayPdf = async (test) => {\n    handleSaveFilter();\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  const loadEmployees = async (params, dateFilter, page, orderBy, orderByDirection) => {\n    setLoading(true);\n    const filterParam = params;\n    try {\n      Object.assign(filterParam, { page: page });\n      if (dateFilter) {\n        const { start, end } = dateFilter;\n        if (start)\n          Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n        if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n      }\n      if (orderBy) {\n        Object.assign(filterParam, { orderBy, orderByDirection });\n      }\n\n      const pgList = await API.getEmployeeListFromPG(filterParam);\n      setLoading(false);\n\n      let ttlTests = tests.concat(pgList.rows);\n      if (pageNo === 1) {\n        setTotalRecord(pgList.total);\n        ttlTests = pgList.rows;\n      }\n      setAllSelected(false);\n      setTests(ttlTests);\n      refreshTestList(ttlTests);\n    } catch (err) {\n      setLoading(false);\n    }\n  };\n\n  useEffect(() => {\n    const savedFilters = appContext.testFilter;\n\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters?.crewprofile?.sortBy) {\n      setSortDescending(sortingFilters.crewprofile.sortDescending);\n      setSortBy(sortingFilters.crewprofile.sortBy);\n    }\n    if (savedFilters && savedFilters.location === \"profiles\") {\n      if (Object.keys(savedFilters.filter).length > 0) {\n        setFilter(savedFilters.filter);\n        setShowFilter(true);\n      }\n      if (Object.keys(savedFilters.timeFilter).length > 0) {\n        setTimeFilter(savedFilters.timeFilter);\n      }\n    }\n  }, []);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"crewprofile\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredTests.length === 0) return;\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    setPageNo(1);\n    fetchFromApi({ ...filter }, { ...timeFilter }, 1, sortBy, sortDescending);\n  }, [filter, timeFilter, sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      loadEmployees(Object.keys(filter).length === 0 ? { id: 1 } : filter, timeFilter, pageNo, sortBy, sortDescending);\n    }\n  }, [pageNo]);\n\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter, page, sortBy, sortDescending) => {\n      loadEmployees(filter, timeFilter, page, sortBy, sortDescending);\n    }, 800),\n    []\n  );\n\n  const refreshTestList = (list) => {\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredTests(list);\n    }\n  };\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filteredTests.length;\n    if (direction === \"next\" && page === totalPages && totalRecord > 0 && currentRecord < totalRecord) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: \"\", filter, timeFilter });\n  };\n\n  const handleCheckboxChange = (e, id, test) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    const prevFilteredTests = selectedTest.filter((t) => t.id !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n      setSelectedTest([...prevFilteredTests, test]);\n    } else {\n      setSelectedTest([...prevFilteredTests]);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const toggleCheckboxes = (val) => {\n    if (val) {\n      const newIds = [...checkboxes];\n      const newTests = [...selectedTest];\n      filteredTests.forEach((t) => {\n        if (newIds.indexOf(t.id) === -1) {\n          newIds.push(t.id);\n          newTests.push(t);\n        }\n      });\n      setCheckboxes(newIds);\n      setSelectedTest(newTests);\n    } else {\n      const newIds = checkboxes.filter((c) => filteredTests.findIndex((t) => t.id === c) === -1);\n      const newTests = selectedTest.filter((test) => newIds.includes(test.id));\n      setCheckboxes(newIds);\n      setSelectedTest(newTests);\n    }\n  };\n\n  const handleDuplicateTest = () => {\n    setRemoveDuplictaeModalShow(true);\n    setEmployeeTotalTestsCounts(selectedTest.reduce((totalTests, obj) => totalTests + obj.totalTest, 0));\n    setCheckboxes([...checkboxes]);\n\n    // code commentted as we now show only test counts\n    // const newIds = [...checkboxes];\n    // const newTests = [...selectedTest];\n    // let mdID = [];\n\n    // if(newTests)\n    // {\n    //   newTests?.forEach(element => {\n    //       mdID.push(element.mdID)\n    //     });\n    // }\n    // if(mdID) {\n    //   getEmployeeTests(mdID)\n    // }\n    // setCheckboxes(newIds);\n  };\n\n  const getEmployeeTests = (mdID) => {\n    let employeeTests;\n    let employeeTotalTestsCounts = 0;\n\n    setTimeout(async () => {\n      employeeTests = await API.getEmployeesTests(mdID);\n      if (employeeTests) {\n        employeeTests?.map((emp, index) => {\n          if (selectedTest[index].mdID === emp.id) {\n            selectedTest[index].testCount = emp.tests.length;\n          }\n          employeeTotalTestsCounts = employeeTotalTestsCounts + emp.tests.length;\n        });\n\n        setEmployeeTests(employeeTests);\n        setEmployeeTotalTestsCounts(employeeTotalTestsCounts);\n        setRemoveDuplictaeModalShow(true);\n        setSelectedTest(selectedTest);\n      }\n    }, 200);\n  };\n\n  const TableRow = ({ test }) => {\n    return (\n      <tr className=\"trDataWrapper\">\n        <td className={test.preRegTest ? \"ellipsis table-first-td\" : \"ellipsis\"} style={{ textAlign: \"left\" }}>\n          {/* <div className=\"d-flex align-items-center\">\n            <Form.Check className=\"me-2\">\n              <Form.Check.Input\n                type=\"checkbox\"\n                value={test.id}\n                checked={checkboxes.indexOf(test.id) !== -1}\n                onChange={(e) => handleCheckboxChange(e, test.id, test)}\n              ></Form.Check.Input>\n            </Form.Check>\n          </div> */}\n\n          <ViewOnlyCheckBox\n            bgColor=\"red\"\n            id={test.id}\n            checked={checkboxes.indexOf(test.id) !== -1}\n            item={test}\n            handleChange={(e) => handleCheckboxChange(e, test.id, test)}\n          />\n        </td>\n\n        <td className=\"ellipsis\" title={test.firstName}>\n          {test.firstName == \"undefined\" ? \"-\" : test.firstName}\n        </td>\n        <td className=\"table-column ellipsis\" title={test.lastName}>\n          {test.lastName == \"undefined\" ? \"-\" : test.lastName}\n        </td>\n\n        <td\n          className=\"table-column ellipsis text-dark-danger cursor-pointer\"\n          onClick={() => test?.email && window.open(`mailto:${test.email}`)}\n          title={test.email}\n        >\n          {test.email}\n        </td>\n        <td\n          className=\"table-column ellipsis text-dark-danger cursor-pointer\"\n          onClick={() => {\n            test.phoneNumber && window.open(`tel:${test.phoneNumber}`);\n          }}\n          title={test.phoneNumber && formatPhoneNumber(test.phoneNumber, test.countryCode)}\n        >\n          {test.phoneNumber && formatPhoneNumber(test.phoneNumber, test.countryCode)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={formatDOB(test.dob)}>\n          {test.dob == \"undefined\" ? \"-\" : formatDOB(test.dob)}\n        </td>\n        {/* <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.isVaccinated}>\n          {test?.isVaccinated ? \"true\" : \"false\"}\n        </td> */}\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.street}>\n          {test.street == \"undefined\" ? \"-\" : test.street}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.id_number}>\n          {test.id_number == \"undefined\" || \"\" ? \"-\" : test.id_number}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {test?.site_name && test?.site_name !== \"null\" ? test?.site_name : \"-\"}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {test?.lastUsed && test?.lastUsed !== \"null\" ? moment(test?.lastUsed).format(\"MM-DD-YYYY HH:mm\") : \"-\"}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {test?.totalTest || \"0\"}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <Link\n            className=\"text-dark-danger text-decoration-none text-dark-danger-hover\"\n            onClick={handleSaveFilter}\n            to={{ pathname: \"/admin/employee/\" + test.mdID, state: { admin: true, type: \"profile\", test: test } }}\n          >\n            View\n          </Link>\n        </td>\n      </tr>\n    );\n  };\n\n  return showPdf ? (\n    <PDFLayout setShowPdf={setShowPdf} testPdf={testPdf} testsLab={testsLab} />\n  ) : (\n    <>\n      <Container fluid>\n        <div className=\"shows-screen-parent\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                      {/* Date Range */}\n                      <FilterSelect setTimeFilter={setTimeFilter} />\n                      <Icon\n                        handleClick={async () => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n                      {/* <Icon\n                        disabled={checkboxes.length < 2}\n                        handleClick={async () => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            handleDuplicateTest();\n                          }\n                        }}\n                        title={\"Combine Profile\"}\n                        label={\"Profile\"}\n                        iconType={\"loadCrewIcon\"}\n                      /> */}\n                      {filteredTests.length > 0 && (\n                        <>\n                          {Object.keys(filter).length > 0 && (\n                            <>\n                              <ExportToExcelData\n                                items={filteredTests}\n                                selectedItem={selectedItem}\n                                appContext={appContext}\n                                filter={filter}\n                                timeFilter={timeFilter}\n                                title=\"Profile Tests\"\n                                sortBy={sortBy}\n                                setLoading={setLoading}\n                                profileView={true}\n                              />\n                              <EmployeePDFLayout\n                                tests={filteredTests}\n                                selectedItem={selectedItem}\n                                filter={filter}\n                                timeFilter={timeFilter}\n                                title=\"Profile Tests\"\n                                appContext={appContext}\n                                sortBy={sortBy}\n                              />\n                            </>\n                          )}\n                        </>\n                      )}\n                      <Icon\n                        handleClick={async () => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            handleDuplicateTest();\n                          }\n                        }}\n                        title={\"Combine Profiles\"}\n                        label={\"Combine\"}\n                        iconType={\"groupByZoneIcon\"}\n                        disabled={checkboxes.length < 2}\n                      />\n                    </div>\n                  </div>\n                  {showFilter && (\n                    <Filter\n                      filterTerms={searchTerms}\n                      setFilter={setFilter}\n                      filter={filter}\n                      triggerFilter={triggerFilter}\n                      setTriggerFilter={setTriggerFilter}\n                    />\n                  )}\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"striped-tabled-with-hover bg-transparent\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md-=\"6\">\n                      <Card.Title>\n                        <div className=\"\">\n                          Crew Profiles:\n                          <span className=\"ps-2\">{totalRecord}</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"6\">\n                      <PGPagination\n                        timeFilter={timeFilter}\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                        totalRecord={totalRecord}\n                        currentRecord={filteredTests.length}\n                        showSelectedRecord\n                        totalSelected={checkboxes.length}\n                      />\n                    </Col>\n                  </Row>\n                  {/* <div className=\"buttonHeader\">\n                    <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                      Filter\n                    </Button>\n                    <FilterSelect setTimeFilter={setTimeFilter} />\n                    <Button\n                      className=\"headerButton\"\n                      onClick={async () => {\n                        if (filteredTests && filteredTests.length > 0) {\n                          setAllSelected(!allSelected);\n                          toggleCheckboxes(!allSelected);\n                        }\n                      }}\n                    >\n                      {!allSelected ? \"Select All\" : \"Deselect All\"}\n                    </Button>\n                    {filteredTests.length > 0 && (\n                      <>\n                        {Object.keys(filter).length > 0 && (\n                          <>\n                            <ExportToExcelData\n                              items={filteredTests}\n                              selectedItem={selectedItem}\n                              appContext={appContext}\n                              filter={filter}\n                              timeFilter={timeFilter}\n                              title=\"Profile Tests\"\n                              sortBy={sortBy}\n                              setLoading={setLoading}\n                              profileView={true}\n                            />\n                            <EmployeePDFLayout\n                              tests={filteredTests}\n                              selectedItem={selectedItem}\n                              filter={filter}\n                              timeFilter={timeFilter}\n                              title=\"Profile Tests\"\n                              appContext={appContext}\n                              sortBy={sortBy}\n                            />\n                          </>\n                        )}\n                      </>\n                    )}\n                    <Button\n                      className=\"headerButton\"\n                      disabled={checkboxes.length < 2}\n                      onClick={async () => {\n                        if (filteredTests && filteredTests.length > 0) {\n                          handleDuplicateTest();\n                        }\n                      }}\n                    >\n                      Combine Profiles\n                    </Button>\n                  </div> */}\n                </Card.Header>\n\n                <Card.Body className=\"table-full-width px-0 pt-0 desktop-noScroll mt-0\">\n                  <div className=\"table-responsive pendingReleaseTable\">\n                    <Table className=\"separate-border-tr\" ref={mainRef}>\n                      <ProfileHeader\n                        type={TEST_HEADER_TYPE.completed}\n                        flipSort={flipSort}\n                        sortBy={sortBy}\n                        sortDescending={sortDescending}\n                        widthCol={60}\n                      />\n                      <tbody>\n                        {testsToMap &&\n                          testsToMap.map((test) => {\n                            return <TableRow key={test.id} test={test} />;\n                          })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      </Container>\n      {removeDuplictaeModalShow && (\n        <EmployeeCrewProfileLogsModal\n          data={selectedTest}\n          totalTestsCount={employeeTotalTestsCount}\n          handleClose={(isRefresh) => {\n            if (isRefresh) {\n              setTimeout(\n                () =>\n                  loadEmployees(\n                    Object.keys(filter).length === 0 ? { id: 1 } : filter,\n                    timeFilter,\n                    1,\n                    sortBy,\n                    sortDescending\n                  ),\n                1000\n              );\n            }\n            setCheckboxes([]);\n            setSelectedTest([]);\n            setRemoveDuplictaeModalShow(false);\n          }}\n          handleShowMergedProfileLogs={(data) => {\n            if (data) {\n              setMergedProfilesTestsData(data);\n              setShowMergedProfileLogs(true);\n            }\n          }}\n        />\n      )}\n\n      {showMergedProfileLogs && (\n        <EmployeeCrewProfileMergedLogsModal\n          data={mergedProfilesTestsData}\n          handleCloseMergedProfileLogs={(isRefresh) => {\n            // if (isRefresh) {\n            //   setTimeout(\n            //     () =>\n            // loadEmployees(\n            //   Object.keys(filter).length === 0 ? { id: 1 } : filter,\n            //   timeFilter,\n            //   1,\n            //   sortBy,\n            //   sortDescending\n            // ),\n            //       1000\n            //     );\n            //  }\n            setCheckboxes([]);\n            setSelectedTest([]);\n            setShowMergedProfileLogs(false);\n          }}\n        />\n      )}\n\n      {showLog && (\n        <TestLogsModal\n          data={testLogs}\n          handleClose={() => {\n            setShowLog(false);\n            setTestLogs([]);\n          }}\n        ></TestLogsModal>\n      )}\n\n      {showAppLog && (\n        <AppTestLogsModal\n          data={testAppLogs}\n          handleClose={() => {\n            setShowAppLog(false);\n            setTestAppLogs([]);\n          }}\n        ></AppTestLogsModal>\n      )}\n\n      {loading && <Loader />}\n    </>\n  );\n};\n\nexport default ProfilesView;\n","import React, { useState } from \"react\";\nimport { Button, Modal, Card, Table, Row, Col, Collapse } from \"react-bootstrap\";\nimport API from \"api\";\nimport { formatLogDate } from \"utils\";\nimport { async } from \"@firebase/util\";\n// import profileImageDefault from \"./../assets/img/default_profile.png\";\nimport profileImageDefault from \"../assets/img/default_profile.png\";\nconst EmployeeLogsEntries = (props) => {\n  const { employee, newDetails } = props;\n  const [show, setShow] = useState(false);\n  const handleExpand = () => {\n    setShow(!show);\n  };\n\n  // Add space before the Captital letter and then make first letter capital\n  function insertSpaces(string) {\n    string = string.replace(/([a-z])([A-Z])/g, \"$1 $2\");\n    string = string.replace(/([A-Z])([A-Z][a-z])/g, \"$1 $2\");\n    const capitalized = string.charAt(0).toUpperCase() + string.slice(1);\n    return capitalized;\n  }\n\n  function handleImageCheck(key, data) {\n    if (key === \"profileImage\" && data) {\n      let imagePAth = `https://medflow-images.s3.eu-west-1.amazonaws.com/public/profile/${encodeURIComponent(data)}`;\n      return (\n        <img\n          src={imagePAth}\n          width=\"100px\"\n          height=\"100px\"\n          onError={(e) => {\n            e.currentTarget.src = profileImageDefault;\n          }}\n        />\n      );\n    } else {\n      if (data === true) return \"True\";\n      if (data === false) return \"False\";\n      return data;\n    }\n  }\n\n  const TableRow = () => {\n    let oldDetails = JSON.parse(employee?.olddetail);\n    let objectKeys = Object.keys(newDetails);\n    const [image, setImage] = useState();\n    const [oldImage, setOldImage] = useState();\n    const [imageExt, setImageExt] = useState();\n    const [oldImageExt, setOldImageExt] = useState();\n    let notRequiredKeys = [\"createdAt\", \"updatedAt\", \"updatedBy\", \"updatedByName\"];\n    objectKeys = objectKeys.filter((obj) => !notRequiredKeys.includes(obj));\n    const handleAPiImage = async (data, type, imageType) => {\n      let testData = await API.getFileExternalStorage(data);\n      if (imageType === \"vac\") {\n        if (type === \"old\") {\n          setOldImage(testData);\n        } else {\n          setImage(testData);\n        }\n      } else if (imageType === \"ext\") {\n        if (type === \"old\") {\n          setOldImageExt(testData);\n        } else {\n          setImageExt(testData);\n        }\n      }\n    };\n\n    // for vaccinationCardImage\n    if (objectKeys.includes(\"vaccinationCardImage\")) {\n      if (newDetails[\"vaccinationCardImage\"]) {\n        handleAPiImage(newDetails[\"vaccinationCardImage\"], \"new\", \"vac\");\n      }\n\n      if (oldDetails[\"vaccinationCardImage\"]) {\n        handleAPiImage(oldDetails[\"vaccinationCardImage\"], \"old\", \"vac\");\n      }\n    }\n\n    // for external images\n    if (objectKeys.includes(\"externalTestImage\")) {\n      if (newDetails[\"externalTestImage\"]) {\n        handleAPiImage(newDetails[\"externalTestImage\"], \"new\", \"ext\");\n      }\n\n      if (oldDetails[\"externalTestImage\"]) {\n        handleAPiImage(oldDetails[\"externalTestImage\"], \"old\", \"ext\");\n      }\n    }\n\n    return (\n      <>\n        {objectKeys.map((keyName, i) => {\n          return (\n            <>\n              <tr key={i}>\n                <td>\n                  <b>{insertSpaces(keyName)} :</b>\n                </td>\n                {keyName === \"vaccinationCardImage\" || keyName === \"externalTestImage\" ? (\n                  <>\n                    {keyName === \"vaccinationCardImage\" && (\n                      <>\n                        <td>{image ? <img src={image} width=\"100px\" height=\"100px\" /> : \"-\"}</td>\n                        <td>{oldImage ? <img src={oldImage} width=\"100px\" height=\"100px\" /> : \"-\"}</td>\n                      </>\n                    )}\n\n                    {keyName === \"externalTestImage\" && (\n                      <>\n                        <td>\n                          {imageExt ? (\n                            <img\n                              src={imageExt}\n                              width=\"100px\"\n                              height=\"100px\"\n                              onError=\"this.onerror=null;this.src='./../assets/img/default_profile.png';\"\n                            />\n                          ) : (\n                            \"-\"\n                          )}\n                        </td>\n                        <td>{oldImageExt ? <img src={oldImageExt} width=\"100px\" height=\"100px\" /> : \"-\"}</td>\n                      </>\n                    )}\n                  </>\n                ) : (\n                  <>\n                    <td>{handleImageCheck(keyName, newDetails[keyName]) || \"-\"}</td>\n                    <td>{handleImageCheck(keyName, oldDetails[keyName]) || \"-\"}</td>\n                  </>\n                )}\n              </tr>\n            </>\n          );\n        })}\n      </>\n    );\n  };\n\n  return (\n    <>\n      <tr\n        onClick={() => handleExpand()}\n        onMouseOver={(e) => {\n          e.target.style.cursor = \"pointer\";\n        }}\n      >\n        <td>\n          <i\n            onMouseLeave={(e) => (e.target.style.color = \"black\")}\n            onMouseOver={(e) => {\n              e.target.style.color = \"#8B0000\";\n              e.target.style.cursor = \"pointer\";\n            }}\n            aria-hidden=\"true\"\n            className={show ? \"fas fa-minus\" : \"fas fa-plus\"}\n          />\n        </td>\n        <td>\n          <b style={{ fontSize: \"large\" }}>Updated By: </b>\n          <span className=\"emp-updated-text\">{newDetails.updatedByName}</span>\n          <span style={{ float: \"right\" }}>\n            <b style={{ fontSize: \"large\" }}>Created At: </b>\n            <span className=\"emp-updated-text\">{formatLogDate(employee.createdAt)}</span>\n          </span>\n        </td>\n      </tr>\n      {show && (\n        <tr className=\"subTableRow\">\n          <td colSpan={\"12\"} className=\"expended-table-wrapper\">\n            <Card className=\"striped-table-card\">\n              <Card.Body>\n                <div className=\"form-group-wrapper d-block\">\n                  <div className=\"table-responsive overFlow-y-hidden\">\n                    <Table className=\"table expandedTable\">\n                      <thead>\n                        <tr>\n                          <th style={{ width: \"20%\" }}></th>\n                          <th>New Details</th>\n                          <th>Old Details</th>\n                        </tr>\n                      </thead>\n                      <tbody>{<TableRow />}</tbody>\n                    </Table>\n                  </div>\n                </div>\n              </Card.Body>\n            </Card>\n          </td>\n        </tr>\n      )}\n    </>\n  );\n};\n\nexport default EmployeeLogsEntries;\n","import React, { useState, useEffect, useContext, useMemo, useRef } from \"react\";\nimport { Card, Table, Row, Col } from \"react-bootstrap\";\nimport \"react-activity/dist/Bounce.css\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport EmployeeLogsEntries from \"components/EmployeeLogsEntries\";\nimport { PAGE_LIMIT } from \"../constant\";\nimport { changeSort, calculateTdWidth } from \"../utils\";\n\nconst EmployeeLogs = (props) => {\n  const { employeeData } = props;\n  const componentRef = useRef();\n  const [width, setWidth] = useState(0);\n  const [errorMessage, setErrorMessage] = useState(\"\");\n  useEffect(() => {\n    setWidth(componentRef.current?.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current?.offsetWidth);\n  };\n\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n  useEffect(() => {\n    setTimeout(() => {\n      setErrorMessage(\"\");\n    }, 4000);\n  }, [errorMessage]);\n\n  const [filteredEmployeeLogs, setFilteredEmployeeLogs] = useState(employeeData);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n\n  useEffect(() => {\n    setFilteredEmployeeLogs(employeeData);\n  }, [employeeData]);\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const employeeLogsToMap = useMemo(() => {\n    const list = filteredEmployeeLogs ? [...filteredEmployeeLogs] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredEmployeeLogs, currentPage]);\n\n  useEffect(() => {\n    changeSort(sortBy, sortDescending, filteredEmployeeLogs, setFilteredEmployeeLogs);\n  }, [sortBy, sortDescending]);\n\n  const handleChangePage = (page) => setCurrentPage(page);\n  return (\n    <>\n      {filteredEmployeeLogs.length > 0 && (\n        <Row>\n          <Col md=\"12\">\n            <Card className=\"striped-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Employees Logs ({filteredEmployeeLogs?.length})\n                </Card.Title>\n                <MFPagination currentPage={currentPage} handleChangePage={handleChangePage} totalPages={totalPages} />\n              </Card.Header>\n              <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable overFlow-y-hidden\">\n                  <Table className=\"table-hover table-striped\">\n                    <tbody>\n                      {employeeLogsToMap &&\n                        employeeLogsToMap.map((employee, i) => {\n                          let newDetails = JSON.parse(employee.newdetail);\n                          if (Object.keys(newDetails).length > 0)\n                            return (\n                              <EmployeeLogsEntries key={i} index={i} employee={employee} newDetails={newDetails} />\n                            );\n                        })}\n                    </tbody>\n                  </Table>\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n      )}\n    </>\n  );\n};\n\nexport default EmployeeLogs;\n","import React, { useEffect, useState } from \"react\";\nimport Select from \"react-select\";\nimport { capitalizeLetter, formatPhoneNumber, formatDateOfBirthDOB } from \"utils\";\n\nconst ProfileListItems = (props) => {\n  const { item, handleMakeRelation, relations, options } = props;\n\n  const [selectedOption, setSelectedOption] = useState(null);\n\n  const relation = relations ? relations.find((ele) => ele.id === item.id) : null;\n  const initialSelectedOption = relation ? options.find((option) => option.value === relation?.relation) : options.find((option) => option.value === \"Dependent\");\n \n  useEffect(() => {\n    setSelectedOption(initialSelectedOption);\n  }, [initialSelectedOption]);\n \n  const onChangeHandler = (options) => {\n    setSelectedOption(options);\n    handleMakeRelation(item, options?.value);\n  };\n  \n  return (\n    <tr>\n      <td className=\"tdWidth14 ellipsis\">{capitalizeLetter(item.firstName)}</td>\n      <td className=\"tdWidth14 ellipsis\">{capitalizeLetter(item.lastName)}</td>\n      <td className=\"tdWidth10 ellipsis\">{item.sex}</td>\n      <td className=\"tdWidth14 ellipsis\">{formatDateOfBirthDOB(item.dob)}</td>\n      <td className=\"tdWidth18 ellipsis\">{formatPhoneNumber(item.phoneNumber, \"\", true)}</td>\n      <td className=\"realtionTdWidth \">\n        <Select\n          blurInputOnSelect={true}\n          menuPlacement=\"bottom\"\n          className=\"w-100\"\n          onChange={onChangeHandler}\n          value={selectedOption}\n          options={options}\n          styles={{\n            // Fixes the overlapping problem of the component\n            menu: (provided) => ({ ...provided, zIndex: 9999 }),\n          }}\n        />\n      </td>\n      <td onClick={() => handleMakeRelation(item, selectedOption?.value)}>\n        <button className=\"headerButton btn-fill btn btn-secondary cursor-pointer profileRelationButton\">\n          <i className=\"fa fa-plus\" />\n        </button>\n      </td> \n      {/* <TDNameWithDetail title={item.email} label={item.phoneNumber} /> */}\n      <td>\n        <div className=\"d-flex flex-wrap gap-3\"></div>\n      </td>\n    </tr>\n  );\n};\n\nexport default ProfileListItems;\n","import React from \"react\";\nimport { capitalizeLetter, formatPhoneNumber, formatDateOfBirthDOB } from \"utils\";\nimport { Table } from \"react-bootstrap\";\n\nconst RelationView = (props) => {\n  const { relations, handleDeleteRelation, isNotDeletable } = props;\n\n  return (\n    <div style={{ height: \"15vh\", overflow: \"auto\" }}>\n      <Table className=\"table table-striped\">\n        <thead>\n          <tr>\n            <th className=\"\">First Name</th>\n            <th className=\"\">Last Name</th>\n            <th className=\"\">Gender</th>\n            <th className=\"\">DoB</th>\n            <th className=\"\">Phone</th>\n            <th className=\"\">Relation</th>\n            {!isNotDeletable && <th className=\"\">Action</th>}\n          </tr>\n        </thead>\n        <tbody>\n          {relations?.map((item, i) => {\n            return (\n              <tr key={`relation_${i}`}>\n                <td>{capitalizeLetter(item.firstName)}</td>\n                <td>{capitalizeLetter(item.lastName)}</td>\n                <td>{item.sex}</td>\n                <td>{formatDateOfBirthDOB(item.dob)}</td>\n                <td>{formatPhoneNumber(item.phoneNumber || item.phone_number, \"\", true)}</td>\n                <td>{item.relation}</td>\n                {!isNotDeletable && (\n                  <td>\n                    <i className=\"fa fa-trash\" onClick={() => handleDeleteRelation(item)} />\n                  </td>\n                )}\n              </tr>\n            );\n          })}\n        </tbody>\n      </Table>\n    </div>\n  );\n};\n\nexport default RelationView;\n","export const employeesSelector = (state) => state.employees;\nexport const employeesListSelector = (state) => state.employees.employees;\nexport const openCreatorSelector = (state) => state.employees.openCreator;\n\nexport const newUserSelector = (state) => state.employees.newUser;\n\nexport const employeesFilterSelector = (state) => state.employees.employeesFilter;\nexport const proxyRelationsSelector = (state) => state.employees.proxyRelations;\nexport const selectedEmployeeForTestSelector = (state) => state.employees.selectedEmployeeForTest;\n","import React, { useState, useEffect, useCallback, useRef, useContext } from \"react\";\nimport { Button, Form, Modal, Card, Table, Row, Col } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { TEST_TYPES, CONFIG } from \"constant\";\nimport { LOCATIONS_OPTIONS } from \"constant\";\nimport { formatDateMDY, capitalizeLetter, formatPhoneNumber, formatDateOfBirthDOB } from \"utils\";\nimport moment from \"moment\";\n// import DatePicker from \"react-date-picker\";\nimport { debounce } from \"debounce\";\nimport API from \"api\";\nimport Loader from \"components/Loader/Loader\";\nimport { parseJSONObject, mergeArraysById } from \"utils\";\n\n// import FilterPopOver from \"components/FilterPopOver\";\nimport Icon from \"components/Icon\";\nimport { COMBINE_PROFILE } from \"constant\";\nimport { AppContext } from \"../../context/app-context\";\nimport ProfileListItems from \"views/Patient/ProfileRelationListItem\";\nimport Filter from \"components/Filter\";\nimport RelationView from \"views/Patient/RelationView\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setProxyRelations } from \"store/features/employees/employeesSlice\";\nimport { proxyRelationsSelector } from \"store/features/employees/employeesSelectors\";\n\nconst ProfileRelationModal = (props) => {\n  const { handleClose, employeesId, handleChangeRelations, patient } = props;\n  const appContext = useContext(AppContext);\n  const [users, setUsers] = useState([]);\n  const [filter, setFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filteredUsers, setFilteredUsers] = useState([]);\n  const [triggerFilter, setTriggerFilter] = useState();\n  const [relationOptions, setRelationOptions] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const [timeFilter, setTimeFilter] = useState(\"All Users\");\n  const [fullscreen, setFullscreen] = useState(true);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [pageNo, setPageNo] = useState(1);\n  const proxyRelations = useSelector(proxyRelationsSelector);\n  const [selectedProxyRelations, setSelectedProxyRelations] = useState(proxyRelations);\n\n  const dispatch = useDispatch();\n\n  useEffect(() => {\n    getRelationsData();\n  }, []);\n\n  const filterUsersAfterSave = (relData) => {\n    const proxyRelArr = relData || selectedProxyRelations;\n\n    // const filtered = filteredUsers.filter(\n    //   (user) => !proxyRelArr.every((relation) => relation.mdID === user.mdID)\n    // );\n    const filtered = filteredUsers.filter((user) => !proxyRelArr.some((relation) => relation.mdID === user.mdID));\n\n    setFilteredUsers(filtered);\n  };\n\n  const getRelationsData = async () => {\n    const data = await API.getProxyContactData();\n    const dataToSave = data\n      ?.map((d) => {\n        return { value: d.name, label: d.name };\n      })\n      .sort((a, b) => a.label.localeCompare(b.label)); // Sort alphabetically by label\n\n    setRelationOptions(dataToSave);\n  };\n\n  const handleMakeRelation = async (item, relation) => {\n    if (item.mdID && relation) {\n      const isExists = proxyRelations.find((f) => f.mdID === item.mdID);\n      if (isExists) {\n        appContext.showErrorMessage(`Relation already exist`);\n        return;\n      }\n      const newRelationList = [...selectedProxyRelations, { ...item, relation: relation }];\n\n      setSelectedProxyRelations(newRelationList);\n\n      await handleSave(newRelationList);\n      dispatch(setProxyRelations(newRelationList));\n      filterUsersAfterSave(newRelationList);\n    }\n  };\n\n  const onSaveChanges = () => {\n    // handleSave(selectedProxyRelations);\n    // dispatch(setProxyRelations(selectedProxyRelations));\n    // filterUsersAfterSave();\n  };\n\n  const [checkboxes, setCheckboxes] = useState([]);\n  const searchTerms = [\"First Name\", \"Last Name\", \"Email\", \"Phone\"];\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n        if (key === \"Lab\") {\n          return obj.labID && appContext.getLabName(obj.labID).toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"Show\") {\n          const siteIds = appContext.sites\n            .filter((s) => s.name.toLowerCase().includes(filters[key].toLowerCase()))\n            .map((s) => s.id);\n          return siteIds.includes(obj.siteID);\n        }\n        if (key === \"ShowID\") {\n          return obj.siteID === filters[key];\n        }\n        if (key === \"Client\") {\n          return (\n            obj.clientID && appContext.getClientName(obj.clientID).toLowerCase().includes(filters[key].toLowerCase())\n          );\n        }\n        if (key === \"result\") {\n          return obj[key] && obj[\"viewedResult\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n        if (key === \"emailSend\") {\n          return obj.emailSend !== null && obj.emailSend == filters[key];\n        }\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    return models;\n  };\n\n  useEffect(() => {\n    if (users.length > 0) {\n      setFilteredUsers(nestedFilter(users, filter));\n    }\n  }, [filter]);\n\n  const handleSave = async (newRelationList) => {\n    try {\n      setLoading(true);\n      const relationList = newRelationList.filter((f) => f.relation !== COMBINE_PROFILE);\n      const combineList = newRelationList.filter((f) => f.relation === COMBINE_PROFILE);\n      let result = await API.updateRelations({\n        id: employeesId,\n        connectedTo: relationList.map((m) => ({ id: m.mdID, relation: m.relation, relationType: \"Child\" })),\n      });\n      const conntedTo = parseJSONObject(result?.updatedEmployee?.connectedTo || []);\n\n      const proxyProfiles = mergeArraysById(conntedTo, result?.updatedEmployee?.proxyProfiles);\n      dispatch(setProxyRelations(proxyProfiles));\n\n      let logData = {\n        employeeID: employeesId,\n        slug: \"Proxy Update\",\n        auditType: \"ProxyProfile\",\n        action: \"View Details\",\n        relations: JSON.stringify(\n          relationList.map((m) => ({\n            id: m.mdID,\n            firstName: m.firstName,\n            lastName: m.lastName,\n            relation: m.relation,\n          }))\n        ),\n        companyID: CONFIG.clientID,\n        userName: appContext?.user?.name,\n        userID: appContext.user.sub,\n      };\n\n      await API.addLogs(logData);\n      if (combineList.length > 0) {\n        const res = await API.mergeEmployeeLogs(\n          employeesId,\n          combineList.map((m) => m.mdID)\n        );\n        if (res.data) {\n          for (const emp of combineList) {\n            await API.deleteEmployee(emp.mdID);\n          }\n\n          let logData = {\n            slug: \"Proxy Update\",\n            employeeID: employeesId,\n            auditType: \"CombineProfile\",\n            action: \"View Details\",\n            deletedIds: JSON.stringify(\n              combineList.map((m) => ({\n                id: m.mdID,\n                firstName: m.firstName,\n                lastName: m.lastName,\n                phoneNumber: m.phoneNumber || m.phone_number,\n              }))\n            ),\n            companyID: appContext.company.id,\n            userName: appContext.user.name,\n            userID: appContext.user.sub,\n          };\n          await API.addLogs(logData);\n        }\n      }\n      setLoading(false);\n      appContext.showSuccessMessage(\"Proxy relation updated successfully!\");\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  useEffect(() => {\n    setPageNo(1);\n    fetchFromApi({ ...filter }, { ...timeFilter }, 1, sortBy, sortDescending);\n  }, [filter, timeFilter, sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      loadEmployees(Object.keys(filter).length === 0 ? { id: 1 } : filter, timeFilter, pageNo, sortBy, sortDescending);\n    }\n  }, [pageNo]);\n\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter, page, sortBy, sortDescending) => {\n      loadEmployees(filter, timeFilter, page, sortBy, sortDescending);\n    }, 800),\n    [proxyRelations]\n  );\n\n  const loadEmployees = async (params, dateFilter, page, orderBy, orderByDirection) => {\n    setLoading(true);\n    const filterParam = params;\n    try {\n      Object.assign(filterParam, { page: page });\n      if (dateFilter) {\n        const { start, end } = dateFilter;\n        if (start)\n          Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n        if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n      }\n      if (orderBy) {\n        Object.assign(filterParam, { orderBy, orderByDirection });\n      }\n\n      const pgList = await API.getEmployeeListFromPG(filterParam);\n\n      const filterEmployees = pgList.rows.filter(\n        (f) => f.mdID !== employeesId && proxyRelations.findIndex((i) => i.mdID === f.mdID) === -1\n      );\n      setUsers(filterEmployees);\n      setFilteredUsers(filterEmployees);\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n    }\n  };\n\n  return (\n    <Modal show onHide={handleClose} animation={true} size=\"2x2\" scrollable keyboard={true} className=\"second-modal\">\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\">{`Manage Proxy - ${patient.first} ${patient.last}`}</Modal.Title>\n      </Modal.Header>\n      <Modal.Body>\n        <Card\n          className={`strpied-tabled-with-hover  ${\n            filteredUsers.length === 1 || filteredUsers.length === 2 ? \"test-details-table\" : \"\"\n          }`}\n        >\n          <Card.Body className=\"table-full-width desktop-noScroll\">\n            <Filter\n              filterTerms={searchTerms}\n              setFilter={setFilter}\n              filter={filter}\n              triggerFilter={triggerFilter}\n              setTriggerFilter={setTriggerFilter}\n              isUsersTable={true}\n            />\n\n            <div className={\"table-responsive \"}>\n              <Table className=\"table table-fixed\">\n                <thead>\n                  <tr>\n                    <th className=\"tdWidth14\">First Name</th>\n                    <th className=\"tdWidth14\">Last Name</th>\n                    <th className=\"tdWidth10\">Gender</th>\n                    <th className=\"tdWidth14\">DoB</th>\n                    <th className=\"tdWidth18\">Phone</th>\n                    <th className=\"realtionTdWidth\">Relationship</th>\n                    <th></th>\n                  </tr>\n                </thead>\n                <tbody>\n                  {filteredUsers.length > 0 &&\n                    filteredUsers.map((emp, index) =>\n                      employeesId ? (\n                        <ProfileListItems\n                          key={emp.mdID}\n                          options={relationOptions}\n                          //   handleCheck={handleCheckBox}\n                          item={emp}\n                          employeeId={employeesId}\n                          index={index}\n                          checkboxes={checkboxes}\n                          handleMakeRelation={handleMakeRelation}\n                          relations={proxyRelations}\n                        />\n                      ) : (\n                        <></>\n                      )\n                    )}\n                </tbody>\n              </Table>\n            </div>\n          </Card.Body>\n        </Card>\n      </Modal.Body>\n      {/* <div className=\"px-4 pt-2\" style={{ minHeight: \"3vh\" }}>\n        {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n      </div> */}\n      <Modal.Footer>\n        <div className=\"d-flex justify-content-between  w-100\">\n          <Button className=\"profileButton btn-fill createButtons\" variant=\"primary\" onClick={handleClose}>\n            Close\n          </Button>\n          {/* <Button className=\"profileButton btn-fill createButtons\" variant=\"primary\" onClick={onSaveChanges}>\n            Save\n          </Button> */}\n        </div>\n      </Modal.Footer>\n      {loading && <Loader />}\n      {/* {showConfirmationMessage && (\n        <ConfirmationModal\n          show={showConfirmationMessage ? true : false}\n          title=\"Update Custom Schedule\"\n          message={showConfirmationMessage}\n          handleConfirm={handleConfirm}\n          closeBtn\n        />\n      )} */}\n    </Modal>\n  );\n};\n\nexport default ProfileRelationModal;\n","import React, { useState, useEffect } from \"react\";\nimport API from \"api\";\nimport { Card, Form, Container, Row, Col, Modal, Table } from \"react-bootstrap\";\n\nimport { getConnectedToValue } from \"utils\";\n\nconst RelationView = (props) => {\n  const [connected, setConnected] = useState([]);\n  const [expandReltionList, setExpandRelationList] = useState(true);\n\n  const { employee } = props;\n\n  useEffect(async () => {\n    if (employee) {\n      const connectedTo = getConnectedToValue(employee.connectedTo);\n\n      if (connectedTo.length === 0) return;\n\n      const employeeList = await API.employeeByIds(connectedTo?.map((item) => item.id));\n      const relationList = employeeList.map((m) => {\n        const findRes = connectedTo.find((f) => f.id === m.id);\n        if (findRes) {\n          return {\n            ...m,\n            relation: findRes.relation,\n            manageAs: findRes.relationType === \"Parent\" ? \"Main Contact\" : \"Sub Contact\",\n            firstName: m.first,\n            lastName: m.last,\n            phoneNumber: m.phone_number,\n            mdID: m.id,\n          };\n        }\n        return { ...m };\n      });\n      setConnected(relationList);\n    }\n\n    // getConnectedProfiles(Employee?.connectedTo);\n  }, [employee]);\n\n  return (\n    <Row className=\"mx-0\">\n      <Col md=\"12\">\n        <Card className=\"striped-tabled-with-hover\">\n          <Card.Header>\n            <Card.Title\n              as=\"h4\"\n              style={{\n                marginBottom: 10,\n                fontWeight: \"bold\",\n                color: \"#565656\",\n              }}\n            >\n              Proxy Contacts ({connected.length})\n            </Card.Title>\n          </Card.Header>\n          <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n            <div>\n              {expandReltionList && (\n                <Card>\n                  <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                    <Table className=\"table-hover table-striped\">\n                      <thead>\n                        <tr>\n                          <th className=\"tdWidth12\">First Name</th>\n                          <th className=\"tdWidth12\">Last Name</th>\n                          <th className=\"tdWidth12\">Email</th>\n                          <th className=\"tdWidth12\">Relation</th>\n                          <th className=\"tdWidth12\">Manage As A</th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {connected?.map((item, i) => {\n                          return (\n                            <tr>\n                              <td>{item.firstName}</td>\n                              <td>{item.lastName}</td>\n                              <td>{item.email}</td>\n                              <td>{item.relation}</td>\n                              <td>{item.manageAs}</td>\n                            </tr>\n                          );\n                        })}\n                      </tbody>\n                    </Table>\n                  </Card.Body>\n                </Card>\n              )}\n            </div>\n          </Card.Body>\n        </Card>\n      </Col>\n    </Row>\n  );\n};\n\nexport default RelationView;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport editIcon from \"../assets/img/edit-icon.svg\";\nimport saveIcon from \"../assets/img/save-icon.png\";\nimport cancelIcon from \"../assets/img/cancel-icon.png\";\nimport Default_Profile from \"../assets/img/default_profile.png\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\n// react-bootstrap components\nimport { Button, Card, Form, Container, Row, Col, Modal, Table } from \"react-bootstrap\";\nimport { useLocation } from \"react-router-dom\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport API from \"api\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { AppContext } from \"../context/app-context\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { TEST_TYPE_VALUE, countryListAllIsoData, IMAGE_UPLOAD_TYPE } from \"constant\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport userProfileImage from \"../assets/img/user-profile.png\";\nimport SwitchToggle from \"../components/SwitchToggle/SwitchToggle\";\nimport RadioButton from \"../components/RadioButton/RadioButton\";\n\nimport {\n  getDemoGraphics,\n  formatZip,\n  formatTest,\n  isValidPhone,\n  setPhoneNo,\n  formatPhoneNumber,\n  formatDateOfBirthDOB,\n  phoneFormatter,\n  formatQuaratineDisplayDate,\n  parseTestType,\n  FormatAWSDate,\n  isValidName,\n  isValidPhoneWithCode,\n  isValidIdNum,\n  getValidName,\n  convertToLower,\n  isValidZipCode,\n  validSpace,\n  convertToUpper,\n  getPhoneNo,\n  isValidEmail,\n  isValidUrl,\n  getConnectedToValue,\n} from \"../utils\";\nimport \"react-activity/dist/Bounce.css\";\nimport { Storage } from \"aws-amplify\";\nimport ImageView from \"components/Image/ImageView\";\nimport ReactPDF from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport moment from \"moment\";\nimport QuarantineModal from \"components/Modal/QuarantineModal\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport TestView from \"components/TestView\";\nimport EmployeeLogs from \"components/EmployeeLogs\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport \"react-tabs/style/react-tabs.css\";\nimport Loader from \"../components/Loader/Loader\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport { newRegisterObj } from \"constant\";\nimport { PROFILE_IMAGE_PATH } from \"constant\";\nimport ProfileRelationModal from \"views/Patient/ProfileRelationModalOnModal\";\nimport api from \"api\";\nimport RelationView from \"components/Profile/RelationView\";\nlet actualProfilePath = \"\";\n\nconst ProfileEmployeeTest = (props) => {\n  const location = useLocation();\n  const { state } = location;\n  const [test, setTest] = useState();\n  const [site, setSite] = useState();\n  const [lab, setLab] = useState();\n  const [siteContactPhone, setSiteContactPhone] = useState();\n  const [demographics, setDemographics] = useState();\n  const [showAlert, setShowAlert] = useState(false);\n  const [modalShow, setModalShow] = useState(false);\n  const [releaseTo, setReleaseTo] = useState([]);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [signature, setSignature] = useState();\n  const [loading, setLoading] = useState(false);\n  const [hippaConsent, setHippaConsent] = useState(false);\n  const [showImages, setShowImages] = useState(null);\n  const [showSubmitAlert, setShowSubmitAlert] = useState(false);\n  const [editButton, setEditButton] = useState(true);\n  const [editInfo, setEditInfo] = useState();\n  const [Employee, setEmployee] = useState();\n  const [error, setError] = useState(\"\");\n  const [openQuarantined, setOpenQuaratined] = useState(false);\n  const [allowToEditQuarantine, setAllowToEditQuarantine] = useState(false);\n  const [openDataChangeConfirmation, setOpenDataChangeConfirmation] = useState(false);\n  const [patternConsent, setPatternConsent] = useState(false);\n  const [phoneError, setPhoneError] = useState(\"\");\n  const [testViews, setTestViews] = useState([]);\n  const [employeeLogs, setEmployeeLogs] = useState([]);\n  const [loadingTestView, setLoadingTestView] = useState(false);\n  const [vaccinationImage, setVaccinationImage] = useState(\"\");\n  const [externalTestImage, setExternalTestImage] = useState(\"\");\n  const [changeData, setchangeData] = useState({});\n  const [changeDataCheck, setchangeDataCheck] = useState(true);\n  const appContext = useContext(AppContext);\n  const [profileImage, setProfileImage] = useState(Default_Profile);\n  const [showProfileModal, setProfileModal] = useState(false);\n\n  const hideAlert = () => {\n    props.history.push(\"/admin/pendingrelease\");\n    setShowAlert(false);\n  };\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setEmployee({ ...Employee, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setEmployee({ ...Employee, ...addressObj });\n    }\n  };\n\n  const triggerNewData = (data) => {\n    const {\n      match: { params },\n    } = props;\n    if (data.id !== params.employeeId) return;\n    if (!editButton) {\n      setchangeData(data);\n      setOpenDataChangeConfirmation(true);\n    } else {\n      setEditInfo(data);\n      setDemographics(getDemoGraphics(data));\n      setEmployee(getDemoGraphics(data));\n      setTest(data);\n    }\n  };\n\n  // SETTING UP LISTNER\n  useEffect(() => {\n    if (changeDataCheck && appContext?.testObject && appContext.testObject?.opType === \"UPDATE\") {\n      triggerNewData(appContext.testObject.element);\n    }\n  }, [appContext?.testObject]);\n\n  // SETTING UP LISTNER\n  useEffect(() => {\n    if (changeDataCheck && appContext?.eventObject && appContext.eventObject?.opType === \"UPDATE\") {\n      triggerNewData(appContext.eventObject.element);\n    }\n  }, [appContext?.eventObject]);\n\n  const handleDataChangeConfirm = async (isConfirm) => {\n    if (isConfirm) {\n      setOpenDataChangeConfirmation(false);\n      setEditInfo(changeData);\n      setDemographics(getDemoGraphics(changeData));\n      setEmployee(getDemoGraphics(changeData));\n      setTest(changeData);\n    } else {\n      setOpenDataChangeConfirmation(false);\n    }\n  };\n\n  const getTest = async (id) => {\n    try {\n      const model = await API.getRecordById(id, \"employee\");\n      console.log(\"modelAPi\", model);\n      if (model.length > 0) {\n        model[0][\"employee_demographics\"] = model[0];\n        console.log(\"model[00]\", model[0]);\n\n        if (model[0]?.id) {\n          let models = await API.getRecordById(model[0].id, \"employee\");\n          let vacinatedFilePath = models[0]?.vaccinationCardImage;\n          let imageProfileNew = models[0]?.profileImage;\n          let externalTestFilePath = models[0]?.externalTestImage;\n          let autoRelease = models[0]?.autoRelease || models[0]?.autoRelease == \"1\" ? true : false;\n          let sendSMS = hasKeyOfSMS(model[0]);\n          let sendEmail = hasKeyOfEmail(model[0]);\n          //console.log(\"autoRelease sendSMS sendEmail\", autoRelease + \" \" + sendSMS + \" \" + sendEmail);\n          setEmployee({\n            ...Employee,\n            vaccinationCardImage: vacinatedFilePath,\n            externalTestImage: externalTestFilePath,\n            autoRelease,\n            sendSMS,\n            sendEmail,\n          });\n          model[0].sendSMS = sendSMS;\n          model[0].sendEmail = sendEmail;\n          if (externalTestFilePath) {\n            let getExternalTestImage = await API.getFileExternalStorage(externalTestFilePath);\n            setExternalTestImage(getExternalTestImage);\n          }\n          if (vacinatedFilePath) {\n            let getVacinationCardImage = await API.getFileExternalStorage(vacinatedFilePath);\n            setVaccinationImage(getVacinationCardImage);\n          }\n          if (imageProfileNew) {\n            let path = `${model[0]?.phone_number}-profile-image.png`;\n            if (imageProfileNew.includes(\"_#datePattern#_\")) {\n              path = imageProfileNew;\n            }\n\n            actualProfilePath = path;\n            setProfileImage(`${PROFILE_IMAGE_PATH}${encodeURIComponent(path)}`);\n          }\n        }\n\n        setEditInfo(getDemoGraphics(model[0]));\n        setDemographics(getDemoGraphics(model[0]));\n        setEmployee(getDemoGraphics(model[0]));\n        setTest(model[0]);\n      }\n    } catch (err) {\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  const {\n    match: { params },\n  } = props;\n\n  useEffect(() => {\n    setLoading(true);\n    const {\n      match: { params },\n    } = props;\n    getTest(params.employeeId);\n  }, []);\n\n  useEffect(() => {\n    if (appContext.user) setAllowToEditQuarantine(appContext.user.isSite() || appContext.user.isClient());\n  }, [appContext.user]);\n\n  useEffect(() => {\n    if (test && Object.keys(test).length > 0) {\n      handleViewTest(test.id);\n      handleEmployeeLogs(test.id);\n    }\n  }, [test]);\n\n  const hasKeyOfSMS = (model) => {\n    if (model.hasOwnProperty(\"sendSMS\")) {\n      let sendSMS = model?.sendSMS || model.sendSMS == \"1\" ? true : false;\n      return sendSMS;\n    }\n    return true;\n  };\n\n  const hasKeyOfEmail = (model) => {\n    if (model.hasOwnProperty(\"sendEmail\")) {\n      let sendEmail = model?.sendEmail || model.sendEmail == \"1\" ? true : false;\n      return sendEmail;\n    }\n    return true;\n  };\n\n  // const getFileFromStorage = async (file, setImage) => {\n  //   if (file) {\n  //     try {\n  //       const path = await Storage.get(file);\n  //       setImage(path);\n  //       console.log(\"path\", path);\n  //       return true;\n  //     } catch {\n  //       console.log(\"Image loading fail\");\n  //     }\n  //   } else {\n  //     return false;\n  //   }\n  // };\n\n  // useEffect(async () => {\n\n  // }, []);\n\n  const handleViewTest = async (id) => {\n    setLoadingTestView(true);\n    const tests = await API.getAdminTestList(id);\n    setTestViews(tests.filter((t) => !t._deleted));\n    setLoadingTestView(false);\n  };\n\n  // handle employee logs\n  const handleEmployeeLogs = async (id) => {\n    let employeeLogs = await API.getProfileUpdateLogs(id);\n    employeeLogs = employeeLogs.sort((a, b) => (b.createdAt > a.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : 0));\n    setEmployeeLogs(employeeLogs);\n  };\n\n  useEffect(() => {\n    if (editInfo && editInfo.employee_demographics) {\n      const emp = getDemoGraphics(editInfo);\n      const list = countryListAllIsoData.find((f) => f.name === emp.country) || { code: \"US\" };\n      setEmployee(emp);\n      setDemographics({ ...emp, isoCode: list.code });\n    }\n  }, [editInfo]);\n\n  useEffect(() => {\n    const getSite = async (id) => {\n      const model = await API.findSiteByID(id);\n      model.length > 0 && setSite(model[0]);\n    };\n\n    const getSignature = async (test) => {\n      const imgObject = [];\n\n      try {\n        const siteID = test.baseSiteID || test.siteID;\n        const fileName = `${siteID}&&${test.id}&&sig.png`;\n        const sigt = await Storage.get(fileName);\n        setSignature(sigt);\n        imgObject.push({ title: \"HIPAA Consent\", isHIPPA: true, imgSrc: sigt });\n\n        const sig = await Storage.get(`${test.id}&&${siteID}&&ins-f.jpeg`);\n        const isValidInsF = await isValidUrl(sig);\n        if (sig) imgObject.push({ title: \"Insurance Card Front\", isHIPPA: false, imgSrc: sig, isExist: isValidInsF });\n        const sig1 = await Storage.get(`${test.id}&&${siteID}&&ins-b.jpeg`);\n        const isValidInsB = await isValidUrl(sig1);\n        if (sig1) imgObject.push({ title: \"Insurance Card Back\", isHIPPA: false, imgSrc: sig1, isExist: isValidInsB });\n      } catch (error) {\n        console.log(\"Image Error\", error);\n      }\n\n      if (imgObject.length > 0) {\n        setShowImages(imgObject);\n      }\n      setHippaConsent(true);\n    };\n\n    // if (test) {\n    //   setSite(getSite(test.siteID));\n    //   appContext.getLab(test).then((resp) => setLab(resp));\n    //   getSignature(test);\n    // }\n\n    setLoading(false);\n  }, [test]);\n\n  useEffect(() => {\n    site && setSiteContactPhone(site.contact_phone);\n  }, [site]);\n\n  function calculate_age(dob) {\n    const val = formatDateOfBirthDOB(dob);\n    const years = moment().diff(val, \"years\", false);\n    return years;\n  }\n\n  const captalizeFirst = (string) => {\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  };\n\n  const formatIDNo = () => {\n    if (calculate_age(demographics?.dob) < 18) {\n      const id = demographics?.id_number;\n      if (id && id.length > 5) {\n        return `${id.substring(0, 3)}-${id.substring(3, 5)}-${id.substring(5)}`;\n      }\n      if (id && id.length > 3) {\n        return `${id.substring(0, 3)}-${id.substring(3)}`;\n      }\n      return demographics?.id_number;\n    }\n    return demographics?.id_number;\n  };\n\n  const showSubmitButton = () => {\n    if (!test) return true;\n    const st = test.status.toLowerCase();\n    if (st === \"new\") return true;\n    if (st === \"pending\" && !test.result) return true;\n    return false;\n  };\n  const ImageUpload = async (fileName, image) => {\n    if (image instanceof Object) {\n      await Storage.put(fileName, image);\n      return fileName;\n    } else {\n      return \"\";\n    }\n  };\n\n  const handleSave = async () => {\n    console.log(\"handleSave\", Employee);\n    let phone_number = \"\";\n    let countryCode = \"\";\n    if (!Employee) return;\n    if (!Employee.first) {\n      setError(\"First name is required\");\n      return;\n    }\n    if (!isValidName(Employee.first)) {\n      setError(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!Employee.last) {\n      setError(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(Employee.last)) {\n      setError(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n\n    if (!Employee.email) {\n      setError(\"Email name is required\");\n      return;\n    }\n    if (!isValidEmail(Employee.email)) {\n      setError(\"Invalid Email\");\n      return;\n    }\n    if (!Employee.phone_number) {\n      setError(\"Phone name is required\");\n      return;\n    }\n    // FOR PHONE CHECK COUTRY CODE FOR INTERNATIONAL RECORD VERIFICATION\n    const phone = formatPhoneNumberIntl(Employee.phone_number);\n    const phoneArr = phone.split(\" \");\n    // check Country code exist\n\n    if (phoneArr[0].includes(\"+\")) {\n      let [cc, pNo] = getPhoneNo(Employee.phone_number, phoneArr[0]);\n      phone_number = pNo;\n      countryCode = cc;\n    } else {\n      phone_number = Employee.phone_number;\n      countryCode = Employee.countryCode ? Employee.countryCode : \"+1\";\n    }\n\n    if (phoneError || !isValidPhoneWithCode(`${countryCode}${phone_number}`)) {\n      setError(\"Invalid Phone Number\");\n      return;\n    }\n    if (!Employee.dob) {\n      setError(\"DOB is required\");\n      return;\n    }\n    if (Employee.dob === \"Invalid date\") {\n      setError(\"Invalid Date of Birth\");\n      return;\n    }\n    if (!isValidZipCode(demographics?.isCode || \"US\", Employee.zip)) {\n      setError(\"Invalid Postal Code\");\n      return;\n    }\n    if (!Employee.id_number) {\n      setError(`${calculate_age(Employee.dob) < 18 ? \"SSN\" : \"ID Number\"} is required`);\n      return;\n    }\n    if (!isValidIdNum(Employee.id_number)) {\n      setError(`Invalid ${calculate_age(Employee.dob) < 18 ? \"SSN\" : \"ID Number\"} must contains at least 5 characters`);\n      return;\n    }\n\n    setLoading(true);\n    setchangeDataCheck(false);\n\n    const models = await API.getRecordById(test.id, \"employee\");\n    const versionNo = models[0]?._version || null;\n    //const filename = await API.getFileProfileStorage(imageName)\n    // Vacination Image\n    let vaccinationFileName = \"\";\n    if (typeof vaccinationImage === \"object\") {\n      vaccinationFileName = await API.saveFileExternalStorage(\n        phone_number,\n        test.id,\n        IMAGE_UPLOAD_TYPE.VacinationCard,\n        vaccinationImage\n      );\n    }\n    // External Test Image\n    let externalImageFileName = \"\";\n    if (typeof externalTestImage === \"object\") {\n      externalImageFileName = await API.saveFileExternalStorage(\n        phone_number,\n        test.id,\n        IMAGE_UPLOAD_TYPE.ExternalTest,\n        externalTestImage\n      );\n    }\n\n    if (profileImage && typeof profileImage === \"object\") {\n      let imageFormatWithUtcTime = `_#datePattern#_${moment().utc().format(\"YYYY-MM-DD HH:mm\")}`;\n      const imageName = `${Employee?.phone_number}-profile-image${imageFormatWithUtcTime}.png`;\n      await Storage.put(`profile/${imageName}`, profileImage, { bucket: \"medflow-images\" });\n      Employee.profileImage = imageName;\n      setProfileImage(`${PROFILE_IMAGE_PATH}${encodeURIComponent(imageName)}`);\n    } else if (profileImage && profileImage !== Default_Profile && Employee?.profileImage) {\n      Employee.profileImage = actualProfilePath;\n    } else {\n      Employee.profileImage = \"\";\n    }\n    // return;\n\n    const emp = {\n      ...Employee,\n      countryCode: countryCode,\n      vaccinationCardImage: vaccinationFileName ? vaccinationFileName : Employee.vaccinationCardImage,\n      externalTestImage: externalImageFileName ? externalImageFileName : Employee.externalTestImage,\n      _version: versionNo,\n      updatedBy: appContext.user.sub,\n      updatedByName: appContext.user.name,\n      phone_number: phone_number,\n    };\n\n    try {\n      const updateEmployee = await API.updateEmployeeProfile(emp);\n      setEditInfo(updateEmployee);\n      setTest(updateEmployee);\n      setEmployee(updateEmployee);\n      setEditButton(true);\n      switch (location?.state?.type) {\n        case \"pendingRelease\":\n          appContext.resetPendingTests();\n          break;\n        case \"inconclusiveTest\":\n          appContext.resetInvalidTests();\n          break;\n      }\n\n      appContext.showSuccessMessage(\"Employee updated Successfully\");\n      const {\n        match: { params },\n      } = props;\n\n      getTest(params.employeeId);\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error in crew save\", err);\n      appContext.showErrorMessage(err.message);\n      setLoading(false);\n    }\n    setTimeout(() => {\n      setchangeDataCheck(true);\n    }, 60000);\n  };\n  const handelCancelButton = async () => {\n    setEditButton(true);\n\n    if (!Employee) return;\n    if (!editInfo?.profileImage) {\n      setProfileImage(Default_Profile);\n    }\n    if (!editInfo?.externalTestImage) {\n      setExternalTestImage(\"\");\n    }\n    if (!editInfo?.vaccinationCardImage) {\n      setVaccinationImage(\"\");\n    }\n    setEmployee(getDemoGraphics(editInfo));\n\n    // const {\n    //   match: { params },\n    // } = props;\n    // getTest(params.employeeId);\n\n    let getExternalTestImage = await API.getFileExternalStorage(Employee?.externalTestImage);\n    if (!getExternalTestImage) setExternalTestImage(\"\");\n    let getVacinationCardImage = await API.getFileExternalStorage(Employee?.vaccinationImage);\n    if (!getVacinationCardImage) setVaccinationImage(\"\");\n  };\n  const emailTest = (t) => {\n    setLoading(true);\n    const test = formatTest(t);\n    appContext.getLab(test).then(async (resp) => {\n      ReactPDF.pdf(<PDF test={test} testsLab={resp} parseTestResultForPDF={appContext.parseTestResultForPDF} />)\n        .toBlob()\n        .then(async (data) => {\n          try {\n            const fileName = `${test.id}-result.pdf`;\n            await Storage.put(fileName, data);\n            await API.sendEmailToCrew([{ email: test.email, fileName: `public/${fileName}` }]);\n            await API.updateEmailStatus(test.id);\n            // send sms as well if email is sending first time\n            if (!test.emailSend && test.phone_number) {\n              let smsMessage = `Hello, your test results are in for your test with ${test.site_name}, please log into Med Flow to review.`;\n              const siteObj = appContext.sites.find((s) => s.id === test.siteID);\n              if (siteObj && siteObj.messageResulted && result === \"negative\") {\n                smsMessage = siteObj.messageResulted;\n              } else if (siteObj && siteObj.messagePositive && result === \"positive\") {\n                smsMessage = siteObj.messagePositive;\n              }\n              await API.sendSMSNotification(setPhoneNo(test.phone_number), smsMessage);\n            }\n            setLoading(false);\n            appContext.showSuccessMessage(\"Email has been sent successfully\");\n          } catch (error) {\n            console.log(\"Error\");\n            setLoading(false);\n          }\n        });\n    });\n  };\n\n  const handleSaveQuarantine = async (obj) => {\n    try {\n      await API.updateQuarantineData(test.id, obj.startDate, obj.endDate);\n      getTest(test.id);\n      window.location.reload();\n      appContext.showSuccessMessage(\"Quarantine dates changed successfully\");\n    } catch (err) {\n      appContext.showErrorMessage(err.message);\n    }\n  };\n\n  const isPatternTest = () =>\n    test && test.test_type === \"PCR\" && test.patternTestAnswer && test.patternTestAnswer.length > 5;\n\n  const downloadBlob = (blob, filename) => {\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement(\"a\");\n    a.href = url;\n    a.download = filename || \"download\";\n    const clickHandler = () => {\n      setTimeout(() => {\n        URL.revokeObjectURL(url);\n        a.removeEventListener(\"click\", clickHandler);\n      }, 150);\n    };\n    a.addEventListener(\"click\", clickHandler, false);\n    a.click();\n    return a;\n  };\n  const patternConsentFile = async () => {\n    if (!test) return \"\";\n    const siteID = test.baseSiteID || test.siteID;\n    const fileName = `${siteID}-${test.id}-pattern.pdf`;\n    const result = await Storage.get(fileName, { download: true });\n    downloadBlob(result.Body, `${test.barcode}-pattern.pdf`);\n  };\n\n  const dataOfBirthParse = (dob) => {\n    if (dob && dob !== \"Invalid date\") {\n      return formatDateOfBirthDOB(dob);\n    }\n    return moment().format(\"MM/DD/YYYY\");\n  };\n\n  const showResultPDF = async (test) => {\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const handleRadioButtonChange = (e) => {\n    if (e.target.name === \"isVaccinated\") {\n      if (e.target.value === \"yes\") {\n        setEmployee({ ...Employee, isVaccinated: e.target.checked && true });\n      } else {\n        setEmployee({ ...Employee, isVaccinated: e.target.checked && false });\n      }\n    } else {\n      if (e.target.value === \"yes\") {\n        setEmployee({ ...Employee, isBooster: e.target.checked && true });\n      } else {\n        setEmployee({ ...Employee, isBooster: e.target.checked && false });\n      }\n    }\n  };\n\n  const handleToogleChange = (e) => {\n    if (e.target.name === \"sendSMS\") {\n      if (Employee?.sendSMS == \"1\") {\n        setEmployee({ ...Employee, sendSMS: Employee?.sendSMS == \"1\" ? false : true });\n      } else {\n        setEmployee({ ...Employee, sendSMS: Employee?.sendSMS == \"0\" ? true : false });\n      }\n    }\n    if (e.target.name === \"sendEmail\") {\n      if (Employee?.sendEmail == \"1\") {\n        setEmployee({ ...Employee, sendEmail: Employee?.sendEmail == \"1\" ? false : true });\n      } else {\n        setEmployee({ ...Employee, sendEmail: Employee?.sendEmail == \"0\" ? true : false });\n      }\n    }\n    if (e.target.name === \"autoRelease\") {\n      if (Employee?.autoRelease == \"1\") {\n        setEmployee({ ...Employee, autoRelease: Employee?.autoRelease == \"1\" ? false : true });\n      } else {\n        setEmployee({ ...Employee, autoRelease: Employee?.autoRelease == \"0\" ? true : false });\n      }\n    }\n  };\n\n  const makeRelationModal = (e) => {\n    console.log(\"clicked::\", e);\n    e.preventDefault();\n    e.stopPropagation();\n    setProfileModal(!showProfileModal);\n  };\n\n  return showPdf ? (\n    <PDFLayout setShowPdf={setShowPdf} testPdf={testPdf} testsLab={testsLab} />\n  ) : !loading ? (\n    <>\n      <div className=\"parent-wrapper\">\n        <SweetAlert show={showAlert} success title=\"Success\" onConfirm={hideAlert}>\n          Test Released\n        </SweetAlert>\n        <SweetAlert\n          show={showSubmitAlert}\n          success\n          title=\"Success\"\n          onConfirm={() => {\n            window.history.back();\n            setShowSubmitAlert(false);\n          }}\n        >\n          Test Submitted Successfully.\n        </SweetAlert>\n        <div className=\"crew-member-profile\">\n          <div className=\"crew-member-profile-inner\">\n            <div className=\"d-md-flex  justify-content-between\">\n              <Col md=\"3\" className=\"wrapper-profile\">\n                <div className=\"card-body px-3 pt-3\">\n                  <div className=\"d-flex align-items-center justify-content-between\">\n                    <h4 className=\"profile-title my-0 text-black\">\n                      {\" \"}\n                      Patient Profile\n                      {calculate_age(demographics?.dob) < 18 ? <span className=\"crew-minor-text\">- Minor</span> : null}\n                    </h4>\n                    {/* {\n                        editButton &&\n                        <img src={editIcon} alt=\"edit icon\" className=\"d-inline-block edit-icon\"  onClick={() => setEditButton(false)} />\n                      }\n                      {\n                    \n                        !editButton && (\n                            <div>    \n                              <img src={saveIcon} alt=\"save icon\" className=\"d-inline-block edit-icon cursor-pointer me-2\"  onClick={handleSave} />\n                              <img src={cancelIcon} alt=\"cancel icon\" className=\"d-inline-block edit-icon cursor-pointer\"  onClick={handelCancelButton} />\n                            </div>\n                        )\n                      } */}\n                  </div>\n                  <div className=\"profile-image mt-4 position-relative text-center\">\n                    <div className=\"crew-image-wrapper\">\n                      <figure className=\"profile-image-wrapper\">\n                        {!editButton ? (\n                          <ImageInput\n                            type=\"profile\"\n                            setSelectedImage={setProfileImage}\n                            selectedImage={profileImage}\n                            cameraIcon\n                          />\n                        ) : (\n                          <div className=\"\">\n                            <img src={profileImage} alt=\"profile-image\" />\n                          </div>\n                        )}\n                      </figure>\n                    </div>\n                    <p className=\"text-center mt-3 text-black mb-0\">{`${Employee?.first} ${Employee?.last}`}</p>\n                    <small className=\"mb-0 text-center text-grey\">ID Number: {Employee?.id_number}</small>\n                    <br />\n                    <small className=\"mb-0 text-center text-primary-color\">{Employee?.email}</small>\n                  </div>\n                  <hr className=\"horizontal-line\" />\n                  <div className=\"settings-profile\">\n                    <h4 className=\"profile-title\">Settings</h4>\n                    <div className=\"d-flex align-items-center justify-content-between profile-detail mb-3\">\n                      <span>Send SMS</span>\n                      <SwitchToggle\n                        id=\"sendSMS\"\n                        name=\"sendSMS\"\n                        handleToogleChange={handleToogleChange}\n                        checked={Employee?.sendSMS == \"1\" ? true : false}\n                        disabled={editButton}\n                      />\n                    </div>\n                    <div\n                      className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-3\"\n                    >\n                      <span>Send Email</span>\n                      <SwitchToggle\n                        id=\"sendEmail\"\n                        name=\"sendEmail\"\n                        handleToogleChange={handleToogleChange}\n                        checked={Employee?.sendEmail == \"1\" ? true : false}\n                        disabled={editButton}\n                      />\n                    </div>\n                    <div\n                      className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-3\"\n                    >\n                      <span>Auto Release</span>\n                      <SwitchToggle\n                        id=\"autoRelease\"\n                        name=\"autoRelease\"\n                        handleToogleChange={handleToogleChange}\n                        checked={Employee?.autoRelease == \"1\" ? true : false}\n                        disabled={editButton}\n                      />\n                    </div>\n                    <h4 className=\"profile-title\">Notes</h4>\n                    <div className=\"mb-3\">\n                      <textarea\n                        readOnly={editButton}\n                        className=\"form-control\"\n                        onChange={(e) => setEmployee({ ...Employee, note: e.target.value })}\n                        value={Employee?.note}\n                        defaultValue={demographics?.note}\n                        placeholder={`${!editButton ? \"Enter Notes\" : \"\"}`}\n                        type=\"text\"\n                      ></textarea>\n                    </div>\n                  </div>\n                </div>\n              </Col>\n              <Col md=\"9\" className=\"border-left-1\">\n                <div className=\"personal-info-wrapper pt-3 px-3\">\n                  <div className=\"row\">\n                    <div className=\"col-md-4\">\n                      <h4 className=\"text-decoration-underline text-black mt-0\">Personal Info</h4>\n                    </div>\n                    {/* <div className=\"col-md-4\">\n                      {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n                    </div> */}\n                    <div className=\"col-md-4\"></div>\n                  </div>\n                  <div className=\"testAdmin createClientsWrapper\">\n                    <div className=\"crew-profile-info\">\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">First Name</label>\n                        <Form.Control\n                          readOnly={editButton}\n                          className={`${!editButton ? \"modalInput\" : \"\"}`}\n                          onChange={(e) => setEmployee({ ...Employee, first: e.target.value })}\n                          value={Employee?.first}\n                          defaultValue={demographics?.first}\n                          placeholder={`${!editButton ? \"Enter First Name \" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">Last Name</label>\n                        <Form.Control\n                          readOnly={editButton}\n                          className={`${!editButton ? \"modalInput\" : \"\"}`}\n                          onChange={(e) => setEmployee({ ...Employee, last: e.target.value })}\n                          value={Employee?.last}\n                          defaultValue={demographics?.last}\n                          placeholder={`${!editButton ? \"Enter Last Name \" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">Email Address</label>\n                        <Form.Control\n                          className={`${!editButton ? \"modalInput underlinedText\" : \"underlinedText\"}`}\n                          onMouseOver={(e) => {\n                            editButton ? (e.target.style.cursor = \"pointer\") : (e.target.style.cursor = \"auto\");\n                            e.target.style.textDecoration = \"underline\";\n                          }}\n                          onClick={() =>\n                            editButton ? Employee?.email && window.open(`mailto:${Employee.email}`) : false\n                          }\n                          onChange={(e) => setEmployee({ ...Employee, email: e.target.value })}\n                          value={Employee?.email}\n                          readOnly={editButton}\n                          defaultValue={test?.email}\n                          placeholder={`${!editButton ? \"Enter Email \" : \"\"}`}\n                          type=\"email\"\n                        />\n                      </Form.Group>\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">Phone Number</label>\n                        {editButton ? (\n                          <Form.Control\n                            className={`${!editButton ? \"modalInput underlinedText\" : \"underlinedText\"}`}\n                            onMouseOver={(e) => {\n                              editButton ? (e.target.style.cursor = \"pointer\") : (e.target.style.cursor = \"auto\");\n                              e.target.style.textDecoration = \"underline\";\n                            }}\n                            onClick={() =>\n                              editButton\n                                ? Employee?.phone_number && window.open(`tel:+1${Employee.phone_number}`)\n                                : false\n                            }\n                            onChange={(e) => setEmployee({ ...Employee, phone_number: setPhoneNo(e.target.value) })}\n                            readOnly\n                            maxLength={15}\n                            value={formatPhoneNumber(Employee?.phone_number, Employee?.countryCode || \"+1\")}\n                            defaultValue={formatPhoneNumber(Employee?.phone_number, Employee?.countryCode || \"+1\")}\n                            placeholder={`${!editButton ? \"Enter Phone Number \" : \"\"}`}\n                            type=\"text\"\n                          />\n                        ) : (\n                          <PhoneNoInput\n                            error={setPhoneError}\n                            handleChange={(e) => {\n                              setEmployee({ ...Employee, phone_number: e });\n                            }}\n                            value={formatPhoneNumber(Employee?.phone_number, Employee?.countryCode || \"+1\")}\n                            cssCode={\"crewPhoneInput w-100\"}\n                          />\n                        )}\n                      </Form.Group>\n                    </div>\n                    <div className=\"crew-profile-row2\">\n                      <Form.Group className=\"form-group-wrapper w-100\">\n                        <label className=\"mt-0 modalLineHeaders text-capitalize\">Address</label>\n                        {/* <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setEmployee({ ...Employee, street: e.target.value })}\n                              readOnly={editButton}\n                              value={Employee?.street}\n                              defaultValue={demographics?.street}\n                              placeholder={`${!editButton ? \"Enter Address  \" : \"\"}`}\n                              type=\"text\"\n                            /> */}\n                        <AutoCompleteAddress value={Employee?.street} handleChange={handleUpdateAddress} />\n                      </Form.Group>\n                      <Form.Group className=\"form-group-wrapper w-100\">\n                        <label className=\"mt-0 modalLineHeaders text-capitalize\">Address 2</label>\n                        <Form.Control\n                          className={`${!editButton ? \"modalInput\" : \"\"}`}\n                          readOnly={editButton}\n                          onChange={(e) => setEmployee({ ...Employee, street2: e.target.value })}\n                          value={Employee?.street2}\n                          defaultValue={demographics?.street2}\n                          placeholder={`${!editButton ? \"Enter Address 2 \" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                      <Form.Group className=\"form-group-wrapper w-100\">\n                        <label className=\"mt-0 modalLineHeaders text-capitalize\">City</label>\n                        <Form.Control\n                          readOnly={editButton}\n                          className={`${!editButton ? \"modalInput\" : \"\"}`}\n                          onChange={(e) => setEmployee({ ...Employee, city: e.target.value })}\n                          value={Employee?.city}\n                          defaultValue={demographics?.city}\n                          placeholder={`${!editButton ? \"Enter City\" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </div>\n                    <div className=\"crew-profile-info\">\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">State</label>\n                        <Form.Control\n                          className={`${!editButton ? \"modalInput\" : \"\"}`}\n                          readOnly={editButton}\n                          onChange={(e) => setEmployee({ ...Employee, state: e.target.value })}\n                          value={Employee?.state}\n                          defaultValue={demographics?.state}\n                          maxLength={35}\n                          placeholder={`${!editButton ? \"Enter Country\" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">Postal Code</label>\n                        <Form.Control\n                          className={`${!editButton ? \"modalInput\" : \"\"}`}\n                          onChange={(e) => setEmployee({ ...Employee, zip: e.target.value })}\n                          readOnly={editButton}\n                          value={Employee?.isoCode === \"US\" ? formatZip(Employee?.zip) : Employee?.zip}\n                          defaultValue={Employee?.isoCode === \"US\" ? formatZip(Employee?.zip) : Employee?.zip}\n                          placeholder={`${!editButton ? \"Enter Postal Code \" : \"\"}`}\n                          maxLength={10}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">Date of Birth</label>\n                        {editButton ? (\n                          <Form.Control\n                            readOnly={editButton}\n                            value={formatDateOfBirthDOB(Employee?.dob)}\n                            defaultValue={formatDateOfBirthDOB(demographics?.dob)}\n                            placeholder=\"Date of Birth\"\n                            type=\"text\"\n                          />\n                        ) : (\n                          <div>\n                            <SingleDatePicker\n                              onApply={(event, picker) => {\n                                setEmployee({ ...Employee, dob: moment(picker.startDate).format(\"YYYY-MM-DD\") });\n                              }}\n                              value={dataOfBirthParse(Employee?.dob)}\n                              startDate={dataOfBirthParse(Employee?.dob)}\n                            />\n                          </div>\n                        )}\n                      </Form.Group>\n                      <Form.Group className=\"form-group-wrapper\" readOnly={editButton} plaintext>\n                        {calculate_age(demographics?.dob) > 18 ? (\n                          <label className=\"modalLineHeaders mt-0 text-capitalize\">ID Number</label>\n                        ) : (\n                          <label>SSN</label>\n                        )}\n                        <Form.Control\n                          readOnly={editButton}\n                          className={`${!editButton ? \"modalInput\" : \"\"}`}\n                          value={Employee?.id_number}\n                          onChange={(e) => setEmployee({ ...Employee, id_number: e.target.value })}\n                          defaultValue={formatIDNo()}\n                          placeholder=\"ID Number\"\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"p-3\">\n                  <h4 className=\"text-decoration-underline text-black mt-0\">Additional Info</h4>\n                  <Row className=\"additional-info\">\n                    <Col md=\"4\" className=\"testAdmin createClientsWrapper border-right-1\">\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">Insurance Carrier</label>\n                        <Form.Control\n                          className={`height-32 ${!editButton ? \"modalInput\" : \"\"}`}\n                          readOnly={editButton}\n                          onChange={(e) => setEmployee({ ...Employee, insurance_name: e.target.value })}\n                          value={Employee?.insurance_name}\n                          defaultValue={demographics?.insurance_name}\n                          placeholder={`${!editButton ? \"Enter Insurance Carrier\" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">Insurance ID</label>\n                        <Form.Control\n                          className={`height-32 ${!editButton ? \"modalInput\" : \"\"}`}\n                          readOnly={editButton}\n                          onChange={(e) => setEmployee({ ...Employee, insurance_number: e.target.value })}\n                          value={Employee?.insurance_number}\n                          defaultValue={demographics?.insurance_number}\n                          placeholder={`${!editButton ? \"Enter Insurance Id\" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group>\n                      <div className=\"w-100\">\n                        {showImages && (\n                          <div className=\"d-block\">\n                            <div className=\"cards-heading\">\n                              <span>Insurance</span> Card Images\n                            </div>\n                            <div className=\"test-details-wrapper rounded-2\">\n                              <div className=\"imageWrapper\">\n                                {showImages.filter((i) => i.isHIPPA === false && i.isExist).length > 0 ? (\n                                  showImages\n                                    .filter((i) => i.isHIPPA === false && i.isExist)\n                                    .map((showImg, index) => {\n                                      return (\n                                        <ImageView\n                                          key={index}\n                                          cssClass=\"border-0 p-3\"\n                                          imgSrc={showImg.imgSrc}\n                                          onClick={() => handleImageClick(showImg.imgSrc)}\n                                        />\n                                      );\n                                    })\n                                ) : (\n                                  <div className=\"d-flex align-items-center justify-content-between w-100\">\n                                    <ImageView key={0} cssClass=\"border-0 p-3\" imgSrc={\"\"} />\n                                  </div>\n                                )}\n                              </div>\n                            </div>\n                          </div>\n                        )}\n                      </div>\n                    </Col>\n                    <Col md=\"4\" className=\"additional-info-radios border-right-1\">\n                      <div className=\"mt-3\">\n                        <label className=\"status\">Vaccination Status:</label>\n                        <div className=\"d-flex justify-content-around align-items-center\">\n                          <RadioButton\n                            id=\"isVaccinated_yes\"\n                            label=\"Yes\"\n                            name=\"isVaccinated\"\n                            disabled={editButton}\n                            checked={Employee?.isVaccinated ? true : false}\n                            value=\"yes\"\n                            handleRadioButtonChange={handleRadioButtonChange}\n                          />\n                          <RadioButton\n                            id=\"isVaccinated_No\"\n                            label=\"No\"\n                            name=\"isVaccinated\"\n                            disabled={editButton}\n                            checked={!Employee?.isVaccinated ? true : false}\n                            value=\"no\"\n                            handleRadioButtonChange={handleRadioButtonChange}\n                          />\n                        </div>\n                      </div>\n\n                      <div className=\"w-100 pt-72\">\n                        <div className=\"d-block\">\n                          <div className=\"cards-heading\">\n                            <span>Vaccination</span> Card Image\n                          </div>\n                          <div className=\"test-details-wrapper rounded-2\">\n                            <div className=\"imageWrapper\">\n                              {!editButton ? (\n                                <ImageInput\n                                  cssClass=\"vaccinationField\"\n                                  setSelectedImage={setVaccinationImage}\n                                  selectedImage={vaccinationImage}\n                                />\n                              ) : (\n                                <div className=\"form-group-wrapper w-100\">\n                                  {vaccinationImage && (\n                                    <ImageView cssClass=\"border-0 p-3\" imgSrc={vaccinationImage} crewProfile={true} />\n                                  )}\n                                </div>\n                              )}\n                            </div>\n                          </div>\n                        </div>\n                      </div>\n                    </Col>\n                    <Col md=\"4\" className=\"additional-info-radios\">\n                      <div className=\"mt-3\">\n                        <label className=\"status\">Booster Status:</label>\n                        <div className=\"d-flex justify-content-around align-items-center\">\n                          <RadioButton\n                            id=\"isBooster_yes\"\n                            label=\"Yes\"\n                            name=\"isBooster\"\n                            disabled={editButton}\n                            checked={Employee?.isBooster ? true : false}\n                            value=\"yes\"\n                            handleRadioButtonChange={handleRadioButtonChange}\n                          />\n                          <RadioButton\n                            id=\"isBooster_No\"\n                            label=\"No\"\n                            name=\"isBooster\"\n                            disabled={editButton}\n                            checked={!Employee?.isBooster ? true : false}\n                            value=\"no\"\n                            handleRadioButtonChange={handleRadioButtonChange}\n                          />\n                        </div>\n                      </div>\n                      <div className=\"w-100 pt-72\">\n                        <div className=\"d-block\">\n                          <div className=\"cards-heading\">\n                            <span>External</span> Test Result\n                          </div>\n                          <div className=\"test-details-wrapper rounded-2\">\n                            <div className=\"imageWrapper\">\n                              {!editButton ? (\n                                <ImageInput\n                                  cssClass=\"vaccinationField\"\n                                  setSelectedImage={setExternalTestImage}\n                                  selectedImage={externalTestImage}\n                                />\n                              ) : (\n                                <div className=\"form-group-wrapper w-100\">\n                                  {externalTestImage && (\n                                    <ImageView cssClass=\"border-0 p-3\" imgSrc={externalTestImage} crewProfile={true} />\n                                  )}\n                                </div>\n                              )}\n                            </div>\n                          </div>\n                        </div>\n                      </div>\n                    </Col>\n                  </Row>\n                  <div className=\"text-right w-100\">\n                    {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n\n                    {editButton && (\n                      <Button\n                        className=\"profileButton btn-fill createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        variant=\"primary\"\n                        onClick={() => setEditButton(false)}\n                      >\n                        Edit Info\n                      </Button>\n                    )}\n\n                    {!editButton && (\n                      <Button\n                        className=\"profileButton btn-fill createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        variant=\"secondary\"\n                        onClick={handleSave}\n                      >\n                        {\" \"}\n                        Save{\" \"}\n                      </Button>\n                    )}\n\n                    {!editButton && (\n                      <Button\n                        className=\"profileButton btn-fill createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        variant=\"primary\"\n                        onClick={handelCancelButton}\n                      >\n                        Cancel\n                      </Button>\n                    )}\n                  </div>\n                </div>\n              </Col>\n            </div>\n          </div>\n        </div>\n\n        <RelationView employee={Employee} />\n\n        <Row className=\"mx-0\">\n          <Col md=\"12\">\n            <div className=\"system-settings-wrapper\">\n              {testViews && <TestView testData={testViews} loader={loadingTestView} handleResultPDF={showResultPDF} />}\n            </div>\n            <div className=\"system-settings-wrapper\">\n              {employeeLogs && <EmployeeLogs employeeData={employeeLogs} />}\n            </div>\n          </Col>\n        </Row>\n      </div>\n\n      <Modal\n        show={modalShow}\n        // style={{ transform: \"translate(0, -30%)\" }}\n        animation={true}\n        onHide={() => setModalShow(false)}\n        centered\n        size={\"md\"}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title id=\"contained-modal-title-vcenter\">Release Test Results</Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n          <p>Select all that apply: </p>\n          <div className=\"checkboxRow\">\n            <label className=\"checkboxLabel\">\n              <input\n                disabled={!siteContactPhone}\n                value=\"site\"\n                onChange={(e) => {\n                  if (e.target.checked) {\n                    setReleaseTo({\n                      ...releaseTo,\n                      [e.target.value]: siteContactPhone,\n                    });\n                  } else {\n                    const newReleaseTo = releaseTo;\n                    delete newReleaseTo[e.target.value];\n                    setReleaseTo(newReleaseTo);\n                  }\n                }}\n                className=\"releaseCheckbox\"\n                type=\"checkbox\"\n              />\n              Health and Safety Officer\n            </label>\n            <label>\n              <input\n                value=\"crew\"\n                onChange={(e) => {\n                  if (e.target.checked) {\n                    setReleaseTo({\n                      ...releaseTo,\n                      [e.target.value]: setPhoneNo(test?.phone_number),\n                    });\n                  } else {\n                    const newReleaseTo = releaseTo;\n                    delete newReleaseTo[e.target.value];\n                    setReleaseTo(newReleaseTo);\n                  }\n                }}\n                className=\"releaseCheckbox\"\n                type=\"checkbox\"\n              />\n              Crew Member\n            </label>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button className=\"modalButtons\" variant=\"secondary\" onClick={() => setModalShow(false)}>\n            Cancel\n          </Button>\n          <Button\n            className=\"modalButtons\"\n            variant=\"primary\"\n            onClick={async () => {\n              if (releaseTo.length === 0) return;\n              setLoading(true);\n              const params = [];\n              params.push({\n                id: test.id,\n                status: \"Processed\",\n                timerStatus: \"Processed\",\n                sequenceNo: test.sequenceNo,\n                invalidResultStatus: 1,\n              });\n              const ids = [{ id: test.id, sequenceNo: test.sequenceNo }];\n              await GQAPI.releaseTest(params);\n              if (releaseTo.crew) {\n                await GQAPI.sendEmailToPendingRelease(params);\n              }\n\n              const logs = {\n                ids: ids,\n                userID: appContext.user?.sub,\n                userName: appContext.user?.name,\n                slug: test.result.toLowerCase() !== \"positive\" ? \"Inconclusive Release\" : \"Pending Release\",\n              };\n\n              await GQAPI.addTestLogs(logs);\n\n              releaseTo.site &&\n                (await API.sendSMSNotification(\n                  releaseTo.site,\n                  `Hello, there was a positive (${TEST_TYPE_VALUE[test.test_type]}) test result for ${\n                    site.name\n                  }. please login to your Health & Safety Portal to review.`\n                ));\n\n              await appContext.resetPendingTests([test.id]);\n              props.history.push(\"/admin/pendingrelease\");\n              appContext.showSuccessMessage(`Success! You have released test`);\n              setLoading(false);\n            }}\n          >\n            Release Results\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      {openQuarantined && (\n        <QuarantineModal test={test} handleSave={handleSaveQuarantine} handleClose={() => setOpenQuaratined(false)} />\n      )}\n\n      {openDataChangeConfirmation && (\n        <ConfirmationModal\n          show={openDataChangeConfirmation}\n          title=\"Test Update Alert\"\n          message={`New Changes occures, are you want to update your edit info!`}\n          handleConfirm={handleDataChangeConfirm}\n        />\n      )}\n\n      {showProfileModal && (\n        <ProfileRelationModal\n          filterEmployees={appContext?.users?.filter(\n            (f) => f.id !== Employee.id && connected.findIndex((i) => i.id === f.id) === -1\n          )}\n          employeesId={Employee.id}\n          getConnectedProfiles={getConnectedProfiles}\n          connected={connected}\n          handleClose={() => {\n            setProfileModal(!showProfileModal);\n          }}\n        />\n      )}\n    </>\n  ) : (\n    <Loader />\n  );\n};\n\nexport default ProfileEmployeeTest;\n","\nimport Styles from \"./CloseButton.module.css\";\n\nconst CloseButton = (props) => {\n  const {handleClose} = props;\n  return (\n    \n    <div className={`${Styles.closeButton}`}  onClick={handleClose}>\n      <span variant=\"primary\" className={`${Styles.btnClose}`}>\n        <i className=\"fa fa-times\"></i>\n      </span>\n    </div>\n  );\n}\nexport default CloseButton;","import React from \"react\";\nimport Styles from \"./FilledCheckBox.module.css\";\n\nconst MultiInlineCheckBox = (props) => {\n  const { label, secondaryLabel, isChecked, handleChange, handleAdmitChange, isAdmitChecked } = props;\n\n  return (\n    <div className={`${Styles.filledCheckBox}`}>\n      <input\n        className={`${Styles.checkbox}`}\n        checked={isChecked}\n        type=\"checkbox\"\n        onChange={() => {\n          handleChange(!isChecked);\n        }}\n      />\n      <label className={`${Styles.customLabel}`}>\n        <div className=\"d-flex justify-content-between align-items-center\">\n          <span>{label}</span>\n          <span>\n            <div className={`${Styles.filledCheckBox}`}>\n              {isChecked && (\n                <div className={`${Styles.multiCheckBox}`}>\n                  <input\n                    className={`${Styles.checkbox}`}\n                    type=\"checkbox\"\n                    checked={isChecked && isAdmitChecked ? isAdmitChecked : false}\n                    onChange={() => {\n                      handleAdmitChange(!isAdmitChecked);\n                    }}\n                  />\n                  <label className={`${Styles.multiLabel}`}>\n                    <span className={`checkbox ${isChecked ? \"checkbox--active\" : \"\"}`} aria-hidden=\"true\" />\n                    {secondaryLabel}\n                  </label>\n                </div>\n              )}\n            </div>\n          </span>\n        </div>\n      </label>\n    </div>\n  );\n};\nexport default MultiInlineCheckBox;\n","import React, { useContext, useState, useMemo, useRef } from \"react\";\nimport { Button, Card, Table, Row, Col, Modal, Form, Container } from \"react-bootstrap\";\nimport { useLocation, Link } from \"react-router-dom\";\nimport SortIcon from \"components/SortIcon\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport { Auth } from \"aws-amplify\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport Select from \"react-select\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport TextAreaEditor from \"components/TextAreaEditor\";\nimport {\n  PAGE_LIMIT,\n  weekDaysOptions,\n  WEEK_DAYS,\n  TestTypeOptions,\n  getPreRegistrationLink,\n  TEST_ORDER_QTY,\n  PRE_REGISTRATION_TEST_TYPE,\n  TEST_TYPE_VALUE,\n} from \"constant\";\nimport ContactInfo from \"components/Modal/ContactInfo\";\nimport TestTypeDurationModal from \"components/Modal/TestTypeDurationModal\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport {\n  changeSort,\n  formatPhoneNumber,\n  isValidPhone,\n  phoneFormatter,\n  getDropDownValue,\n  parseBooleanValue,\n  parseIntValue,\n  calculateTdWidth,\n  sortTestList,\n  sortingFilterInLC,\n  isValidEmail,\n  formatDateMDY,\n  siteStatus,\n} from \"utils\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport ChangeStatusModal from \"components/Modal/ChangeStatusModal\";\nimport { QRCode } from \"react-qrcode-logo\";\nimport logo from \"assets/img/logo.jpg\";\nimport { AppContext } from \"context/app-context\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\nimport TextEditor from \"views/TextEditor\";\nimport moment from \"moment\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport Loader from \"../../components/Loader/Loader\";\nimport TRData from \"../../components/Table/TRData\";\nimport Icon from \"components/Icon\";\nimport FilledCheckBox from \"components/CheckBox/FilledCheckBox/FilledCheckBox\";\nimport CloseButton from \"components/CloseButton/CloseButton\";\nimport MultiInlineCheckBox from \"components/CheckBox/FilledCheckBox/MultiInlineCheckBox\";\nimport CustomDropDown from \"components/CustomDropDown/CustomDropDown\";\nimport CustomInput from \"components/CustomInput/CustomInput\";\nimport TextArea from \"components/TextArea/TextArea\";\nimport ShowSettingsModal from \"components/SitesView/ShowSettingsModal\";\n// import ShowSettingsModal from \"components/SitesView/ShowSettingsModal\";\n\nconst SitesView = () => {\n  const mainRef = useRef();\n  const [mainWidth, setMainWidth] = useState(0);\n  const currentURL = window.location.href;\n  const handleResize = () => {\n    if (mainRef.current) setMainWidth(mainRef.current.offsetWidth);\n  };\n\n  useEffect(() => handleResize(), [mainRef]);\n\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  let defaultSafeAdmin = { name: \"\", phone: \"\", email: \"\" };\n  const tdWidth = calculateTdWidth(mainWidth - 110, 21);\n  const [siteTests, setSiteTests] = useState([]);\n  const [sites, setSites] = useState([]);\n  const [filteredSites, setFilteredSites] = useState([]);\n  const [clients, setClients] = useState([]);\n  const [labs, setLabs] = useState([]);\n  const [openCreator, setOpenCreator] = useState(false);\n  const [newSite, setNewSite] = useState({});\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [loading, setLoading] = useState(true);\n  const location = useLocation();\n  const [triggerFilter, setTriggerFilter] = useState(false);\n  const [warningModal, setWarningModal] = useState(false);\n  const [showToDelete, setShowToDelete] = useState(\"\");\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showModalTestType, setshowModalTestType] = useState(false);\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [showPatternEditor, setShowPattrenEditor] = useState(false);\n  const [showCopyText, setShowCopyText] = useState(false);\n  const [error, setError] = useState(\"\");\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [showArchive, setShowArchive] = useState(false);\n  const [openStatus, setOpenStatus] = useState(false);\n  const [selectedStatus, setSelectedStatus] = useState({});\n  const [safeCampAdmin, setSafeCampAdmin] = useState(defaultSafeAdmin);\n  const { filterDates } = TimeFilter;\n  const [adminList, setAdminList] = useState([]);\n  const [showSettings, setShowSettings] = useState(false);\n\n  const searchTerms = [\n    \"Name\",\n    \"Client\",\n    \"Contact Name\",\n    \"Contact Email\",\n    \"Contact Phone\",\n    \"Automate Rapid Test\",\n    \"Insurance Info\",\n    \"Insurance Card\",\n    \"Vaccination Card\",\n    \"Vaccination Admit\",\n    \"External Test\",\n    \"External Test Admit\",\n    \"Pattern Testing\",\n    \"Pre-Registration\",\n    \"Shipment\",\n    \"HR Registration\",\n    \"Show Status\",\n  ];\n\n  const appContext = useContext(AppContext);\n\n  const handleClose = () => {\n    setOpenCreator(false);\n    setSafeCampAdmin(defaultSafeAdmin);\n  };\n\n  const showWarningModal = () => {\n    setWarningModal(true);\n  };\n\n  const exitModal = () => {\n    setWarningModal(false);\n  };\n\n  const isValidToSave = () => {\n    if (!newSite.name) {\n      setError(\"Show name is required\");\n      return false;\n    }\n\n    if (!newSite.contact) {\n      setError(\"Primary contact info is required\");\n      return false;\n    }\n\n    if (!newSite.phone) {\n      setError(\"Phone is required\");\n      return false;\n    }\n\n    if (!newSite.email) {\n      setError(\"Email is required\");\n      return false;\n    }\n    if (!isValidEmail(newSite.email)) {\n      setError(\"Invalid Email\");\n      return false;\n    }\n    if (newSite.isNew && !newSite.clientID) {\n      setError(\"Please select the client\");\n      return false;\n    }\n\n    if (!newSite.startDate) {\n      setError(\"Show start date is required\");\n      return false;\n    }\n\n    if (!isValidPhone(newSite.phone)) {\n      setError(\"Invalid Phone Number\");\n      return false;\n    }\n    if (newSite.startDate && !moment(newSite.startDate, \"YYYY-MM-DD\", true).isValid()) {\n      setError(\"Invalid Start Date\");\n      return false;\n    }\n\n    // // Check Start date less than current date\n    // if (\n    //   moment(newSite.startDate).isBefore(moment()) &&\n    //   !moment(newSite.startDate).isSame(moment().format(\"YYYY-MM-DD\"))\n    // ) {\n    //   setError(\"Start Date Should Be Greater than Current Date\");\n    //   return false;\n    // }\n\n    if (newSite.endDate) {\n      if (!moment(newSite.endDate, \"YYYY-MM-DD\", true).isValid()) {\n        setError(\"Invalid End Date\");\n        return false;\n      }\n\n      if (\n        moment(newSite.endDate).isBefore(moment(newSite.startDate)) &&\n        !moment(newSite.endDate).isSame(moment(newSite.startDate).format(\"YYYY-MM-DD\"))\n      ) {\n        setError(\"End Date Should Be Greater Than Start Date\");\n        return false;\n      }\n    }\n\n    if (newSite.preRegistration && !newSite.orderKitDate) {\n      setError(\"Order Cutoff Date required\");\n      return false;\n    }\n\n    if (\n      newSite.preRegistration &&\n      newSite.orderKitDate &&\n      !moment(newSite.orderKitDate, \"YYYY-MM-DDTHH:mm\", true).isValid()\n    ) {\n      setError(\"Invalid Order Cutoff Date\");\n      return false;\n    }\n\n    if (newSite.preRegistration && newSite.orderKitDate) {\n      // if (\n      //   moment(newSite.orderKitDate).isBefore(moment(newSite.startDate)) &&\n      //   !moment(newSite.orderKitDate).isSame(moment(newSite.startDate).format(\"YYYY-MM-DD\"))\n      // ) {\n      //   setError(\"Order Cutoff Date Should Be Greater than Start Date\");\n      //   return false;\n      // }\n\n      if (\n        moment(newSite.orderKitDate).isAfter(moment(newSite.endDate)) &&\n        !moment(newSite.orderKitDate).isSame(moment(newSite.endDate).format(\"YYYY-MM-DD\"))\n      ) {\n        setError(\"Order Cutoff Date Should Not Be Greater Than End Date\");\n        return false;\n      }\n    }\n    return true;\n  };\n  const createSite = async () => {\n    if (!isValidToSave()) {\n      return;\n    }\n    handleClose();\n    try {\n      setLoading(true);\n      /* const signUp = await Auth.signUp({\n        username: `+${newSite.phone.replace(/\\D/g, \"\")}`,\n        password: newSite.password,\n        attributes: {\n          email: newSite.email,\n          \"custom:role\": \"Employers\",\n          \"custom:autoConfirm\": \"true\",\n          \"custom:firstName\": newSite.contact.split(\" \")[0],\n          \"custom:lastName\": newSite.contact.split(\" \")[1],\n        },\n      });\n      const newest = await API.createSite(newSite, signUp.userSub); */\n\n      Object.assign(newSite, {\n        safeCampAdmin: JSON.stringify(safeCampAdmin),\n      });\n      const newest = await API.createSite(newSite);\n      setNewSite({});\n      appContext.resetSites();\n      appContext.showSuccessMessage(\"Show created successfully\");\n    } catch (error) {\n      console.log(error);\n      appContext.showErrorMessage(error.message);\n      setLoading(false);\n      setOpenCreator(true);\n    }\n  };\n\n  const deleteSite = async (id) => {\n    try {\n      await API.deleteSite(id);\n      appContext.resetSites();\n      appContext.showSuccessMessage(\"Site removed successfully\");\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n  };\n\n  const updateSite = async () => {\n    if (!isValidToSave()) {\n      console.log(\"in isValid to Save\");\n      return;\n    }\n    handleClose();\n    try {\n      setLoading(true);\n      Object.assign(newSite, {\n        safeCampAdmin: JSON.stringify(safeCampAdmin),\n      });\n      const update = await API.updateSite(newSite);\n      setNewSite({});\n      appContext.resetSites();\n      appContext.showSuccessMessage(\"Site update successfully\");\n    } catch (error) {\n      console.log(\"UPDATE SITE ERROR:\", error);\n      appContext.showErrorMessage(error.message);\n    }\n  };\n\n  const updateSettings = async () => {\n    handleClose();\n    try {\n      setLoading(true);\n      Object.assign(newSite, {\n        safeCampAdmin: JSON.stringify(safeCampAdmin),\n      });\n      console.log(\"Update Settings only:\", newSite);\n      const update = await API.updateSite(newSite);\n      setShowSettings(false);\n      appContext.resetSites();\n      appContext.showSuccessMessage(\"Site update successfully\");\n    } catch (error) {\n      console.log(\"UPDATE SITE ERROR:\", error);\n      appContext.showErrorMessage(error.message);\n    }\n  };\n\n  const getName = (id) => {\n    if (!clients) return \"\";\n    const clientObj = clients.find((client) => client.id === id);\n    return clientObj ? clientObj.name : \"N/A\";\n  };\n\n  const getLabName = (id) => {\n    const lab = labs.find((lab) => lab.id === id);\n    console.log(lab);\n    return lab ? lab.name : \"\";\n  };\n\n  const filterSites = (term, input) => {\n    switch (term) {\n      case \"client\":\n        setFilteredSites(sites.filter((site) => getName(site[\"clientID\"]).toLowerCase().includes(input.toLowerCase())));\n        break;\n      case \"lab\":\n        setFilteredSites(sites.filter((site) => getLabName(site[\"labID\"]).toLowerCase().includes(input.toLowerCase())));\n        break;\n      default:\n        setFilteredSites(\n          sites.filter((site) => {\n            return site[term].toLowerCase().includes(input.toLowerCase());\n          })\n        );\n    }\n    // term === \"client\"\n    //   ? setFilteredSites(\n    //       sites.filter((site) =>\n    //         getName(site[\"clientID\"])\n    //           .toLowerCase()\n    //           .includes(input.toLowerCase())\n    //       )\n    //     )\n    //   : setFilteredSites(\n    //       sites.filter((site) => {\n    //         console.log(site[term], \"filtering\", sites)\n    //         return site[term].toLowerCase().includes(input.toLowerCase())\n    //       })\n    //     );\n  };\n\n  const sitesToMap = useMemo(() => {\n    const list = filterDates(\n      filteredSites.filter((s) => s.isArchive === showArchive),\n      timeFilter\n    );\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredSites, currentPage, timeFilter, showArchive]);\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n        if (key === \"Lab\") {\n          return obj.labID && getLabName(obj.labID).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n\n        if (key === \"Client\") {\n          return obj.clientID && getName(obj.clientID).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"antigen\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"insurance_required\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"sendInsuranceCard\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"vaccinationCard\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"admit\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"externalTest\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"externalTestAdmit\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"patternTesting\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"preRegistration\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"enableShipment\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"isHRPR\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n\n        if (key === \"status\") {\n          return parseInt(obj[key]) === parseInt(filters[key]);\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    return models;\n  };\n\n  useEffect(() => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.sites.sortBy) {\n      setSortDescending(sortingFilters.sites.sortDescending);\n      setSortBy(sortingFilters.sites.sortBy);\n    }\n    loadSiteData();\n    loadSummary();\n  }, []);\n\n  useEffect(() => {\n    if (appContext?.admins) {\n      setAdminList(appContext.admins);\n    }\n  }, [appContext?.admins]);\n\n  useEffect(() => {\n    refreshSummary(sites, siteTests);\n  }, [siteTests]);\n\n  useEffect(() => {\n    loadSiteData();\n    setLoading(false);\n    refreshSummary(appContext.sites, siteTests);\n  }, [appContext.clients, appContext.sites, appContext.labs]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"sites\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredSites.length === 0) return;\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredSites,\n      setFilteredSites,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName,\n      appContext.getSiteTests\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (location.state) {\n      setShowFilter(true);\n      setFilter({ ...filter, [location.state.term]: location.state.name });\n      setTriggerFilter(true);\n    }\n    setTimeout(() => setShowFilter(false), 1);\n  }, [location.state]);\n\n  useEffect(() => {\n    refreshSites();\n  }, [filter, triggerFilter]);\n\n  const loadSiteData = () => {\n    if (appContext.clients.length > 0) {\n      const whiteLableIds = []; // appContext.clients.filter((c) => c.whiteLabel).map((w) => w.id);\n      const medFlowSites = appContext.sites.filter((s) => !whiteLableIds.includes(s.clientID));\n      setClients(appContext.clients);\n      setSites(medFlowSites);\n      refreshSites();\n      setLabs(appContext.labs);\n    } else {\n      setSites(appContext.sites);\n      refreshSites();\n      setLabs(appContext.labs);\n    }\n  };\n\n  const loadSummary = async () => {\n    const clientSummary = await API.getSummaryFromPG({ summary: \"site\" });\n    console.log(\"clientSummary::::\", clientSummary.rows);\n    setSiteTests(clientSummary.rows);\n  };\n\n  const refreshSummary = (data, summary) => {\n    if (data.length === 0) return;\n    if (summary.length === 0) {\n      setFilteredSites(data);\n      return;\n    }\n    const newList = data.map((c) => {\n      const obj = summary.find((x) => x.id === c.id);\n      return { ...c, totalTest: obj ? obj.totalTest : 0 };\n    });\n    const list = nestedFilter([...newList], filter);\n    setSites([...newList]);\n    setFilteredSites(list);\n  };\n\n  const refreshSites = () => {\n    const siteList = nestedFilter(sites, filter);\n\n    if (sortBy) {\n      setFilteredSites(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          siteList,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredSites(siteList);\n    }\n  };\n\n  const handleFilterChange = (event, picker) => setTimeFilter({ start: picker.startDate, end: picker.endDate });\n  const handleFilterCancel = (event, picker) => setTimeFilter({});\n  const handleChangePage = (page) => setCurrentPage(page);\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const getClientObj = (id) => {\n    if (!id) return null;\n    const obj = clients.find((c) => c.id === id);\n    if (obj) {\n      return { value: obj.id, label: obj.name };\n    }\n    return null;\n  };\n\n  const setLabAntigenAutomate = (site) => {\n    if (site.antigen) {\n      return `${parseBooleanValue(site.antigen)} ${site.automateTestType ? \"-\" : \"\"} ${site.automateTestType || \"\"}`;\n    }\n    return parseBooleanValue(site.antigen);\n  };\n\n  const createMoreInfo = (type, id) => {\n    let infoObj = null;\n    if (type === \"site\") infoObj = appContext.sites.find((site) => site.id === id);\n    else if (type === \"client\") infoObj = appContext.clients.find((client) => client.id === id);\n    else infoObj = labs.find((lab) => lab.id === id);\n\n    if (infoObj) {\n      setMoreInfo({\n        type,\n        name: infoObj.name,\n        contact: infoObj.contact_name,\n        phone: infoObj.contact_phone,\n        email: infoObj.contact_email,\n      });\n      setModalShow(true);\n    }\n  };\n\n  const getMoreInfo = (type, id) => {\n    let infoObj = null;\n    if (type === \"site\") infoObj = appContext.sites.find((site) => site.id === id);\n    else if (type === \"client\") infoObj = appContext.clients.find((client) => client.id === id);\n    else infoObj = labs.find((lab) => lab.id === id);\n\n    if (infoObj) {\n      return {\n        type,\n        name: infoObj.name,\n        contact: infoObj.contact_name,\n        phone: infoObj.contact_phone,\n        email: infoObj.contact_email,\n      };\n    }\n    return {};\n  };\n\n  const handleCloseContactInfo = () => {\n    setMoreInfo({});\n    setModalShow(false);\n  };\n\n  const onHandleMessageChange = (msg, key, type) => {\n    console.log(msg, key, type);\n    const obj = { ...newSite };\n    Object.assign(obj, {\n      messageReTest: {\n        message: msg,\n        type,\n      },\n    });\n    setNewSite(obj);\n  };\n\n  const downloadQRCode = (siteName) => {\n    const canvas = document.getElementById(\"qr-gen\");\n    const pngUrl = canvas.toDataURL(\"image/png\").replace(\"image/png\", \"image/octet-stream\");\n    let downloadLink = document.createElement(\"a\");\n    downloadLink.href = pngUrl;\n    downloadLink.download = siteName ? `${siteName}.png` : `${newSite.name}.png`;\n    document.body.appendChild(downloadLink);\n    downloadLink.click();\n    document.body.removeChild(downloadLink);\n  };\n  const handleCopyPRLink = (id) => {\n    navigator.clipboard.writeText(getPreRegistrationLink(id));\n    setShowCopyText(true);\n    setTimeout(() => setShowCopyText(false), 2000);\n  };\n\n  const getTotalTest = (site) => {\n    if (!site.totalTest || site.totalTest === 0) {\n      return <>0</>;\n    }\n    return (\n      <Link\n        className=\"text-primary-black text-decoration-none\"\n        to={{\n          pathname: `/admin/totaltests`,\n          state: { name: site.name, term: \"Show\", models: sites },\n        }}\n      >\n        {site.totalTest}\n      </Link>\n    );\n  };\n\n  const getOrderKitDate = (site) => {\n    if (site.orderKitDate) {\n      return formatDateMDY(site.orderKitDate);\n    }\n    return \"\";\n  };\n\n  const handleChangeArchive = async () => {\n    const updateSelectedSites = sitesToMap.filter((site) => checkboxes.includes(site.id));\n    if (!updateSelectedSites.length) {\n      return;\n    }\n    try {\n      setLoading(true);\n      const ttl = updateSelectedSites.length;\n      for (let i = 0; i < ttl; i++) {\n        const data = await API.updateSiteArchive(updateSelectedSites[i].id, !updateSelectedSites[i].isArchive);\n      }\n\n      appContext.resetSites();\n      setCheckboxes([]);\n      setAllSelected(false);\n      appContext.showSuccessMessage(`Sites ${showArchive ? \"Unarchive\" : \"Archive\"} successfully`);\n      setLoading(false);\n    } catch (error) {\n      setLoading(false);\n      console.log(\"UPDATE SITE ARCHIVE ERROR:\", error);\n      appContext.showErrorMessage(error.message);\n    }\n  };\n\n  // const toggleCheckboxes = (val) => setCheckboxes(val ? sitesToMap.map((t) => t.id) : []);\n  const handleCheckboxChange = (e, id) => {\n    console.log(id);\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const handleStatusClose = () => {\n    setOpenStatus(false);\n  };\n\n  const handleUpdateStatus = async (status) => {\n    try {\n      setLoading(true);\n      if (Object.keys(selectedStatus).length === 0) return;\n      await API.updateSiteStatus(selectedStatus.id, status);\n      setSelectedStatus({});\n      // refreshSites;\n      // appContext.resetSites();\n      appContext.showSuccessMessage(\"Show updated successfully\");\n      loadSiteData();\n      setLoading(false);\n    } catch (error) {\n      console.log(error);\n      appContext.showErrorMessage(error.message);\n      setLoading(false);\n    }\n  };\n\n  const handleChangePendingStatus = (status) => {\n    if (status) {\n      setFilteredSites(pendingSites);\n      setShowPendingStatus(true);\n    } else {\n      setFilteredSites(originalSites);\n      setShowPendingStatus(false);\n    }\n  };\n\n  const openSite = (siteID) => {\n    let url = `${window.location.origin}/site/tests/${siteID}`;\n    window.open(url);\n  };\n  const handleShowSettingsModal = (e, site) => {\n    console.log(e);\n    setShowSettings(true);\n    setNewSite(site);\n  };\n\n  const dropdownOption = [\n    {\n      label: \"1\",\n      value: \"1\",\n    },\n    {\n      label: \"2\",\n      value: \"2\",\n    },\n    {\n      label: \"3\",\n      value: \"3\",\n    },\n    {\n      label: \"4\",\n      value: \"4\",\n    },\n    {\n      label: \"5\",\n      value: \"5\",\n    },\n  ];\n  const TableRow = ({ site }) => {\n    return (\n      <tr className={`${site.status === 0 && \"appleEventRow\"}`}>\n        <td className=\"icon\" style={{ width: \"45px\", minWidth: \"45px\", maxWidth: \"45px\" }}>\n          <i\n            className=\"fas fa-edit\"\n            onMouseLeave={(e) => (e.target.style.color = \"black\")}\n            onMouseOver={(e) => {\n              e.target.style.color = \"blue\";\n              e.target.style.cursor = \"pointer\";\n            }}\n            aria-hidden=\"true\"\n            id={site.id}\n            onClick={async (e) => {\n              setNewSite({\n                isNew: false,\n                id: site.id,\n                name: site.name,\n                contact: site.contact_name || site.contact || site.contact_phone,\n                phone: site.phone || site.contact_phone || site.phone_number,\n                email: site.contact_email,\n                antigen: site.antigen,\n                automateTestType: site.automateTestType,\n                insurance_required: site.insurance_required,\n                startDate: site.startDate,\n                endDate: site.endDate,\n                sendInsuranceCard: site.sendInsuranceCard,\n                resetTestDay: site.resetTestDay,\n                clientID: site.clientID,\n                showOnSummaryScreen: site.showOnSummaryScreen || false,\n                messageTested: site.messageTested,\n                messageResulted: site.messageResulted,\n                messagePositive: site.messagePositive,\n                isArchive: site.isArchive,\n                vaccinationCard: site.vaccinationCard,\n                externalTest: site.externalTest,\n                externalTestType: site.externalTestType,\n                externalTestAdmit: site.externalTestAdmit,\n                patternTesting: site.patternTesting,\n                patternHippa: site.patternHippa,\n                preRegistration: site.preRegistration,\n                admit: site.admit,\n                orderKitType: site.orderKitType,\n                orderKitDate: moment(site.orderKitDate).format(\"YYYY-MM-DDTHH:mm\"),\n                enableShipment: site.enableShipment,\n                orderQuantity: site.orderQuantity,\n                messageReTest: site.messageReTest,\n                isPCRCustody: site.isPCRCustody,\n                isHRPR: site.isHRPR,\n              });\n              if (site.safeCampAdmin) {\n                let adminData = site.safeCampAdmin;\n                if (typeof adminData === \"string\") {\n                  JSON.parse(adminData);\n                } else {\n                  setSafeCampAdmin(adminData);\n                }\n              }\n              setOpenCreator(true);\n            }}\n          />\n        </td>\n        {/* <td className=\"ellipsis\" style={{ textAlign: \"left\" }}>\n          <Form.Check>\n            <Form.Check.Input\n              type=\"checkbox\"\n              value={site.id}\n              checked={checkboxes.indexOf(site.id) !== -1}\n              onChange={(e) => handleCheckboxChange(e, site.id)}\n            ></Form.Check.Input>\n          </Form.Check>\n        </td> */}\n        <td className=\"ellipsis\" title={site.name}>\n          {site.name}\n        </td>\n        <td className=\"ellipsis\" title={site.clientID && getName(site.clientID)}>\n          <a\n            style={{ color: \"#42cef5\" }}\n            onClick={() => createMoreInfo(\"client\", site.clientID)}\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n          >\n            {site.clientID && getName(site.clientID)}\n          </a>\n        </td>\n        <td className=\"ellipsis\" title={site.contact_name}>\n          {site.contact_name}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{\n            textDecoration: \"underline\",\n            color: \"#A82632\",\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => site.contact_email && window.open(`mailto:${site.contact_email}`)}\n          title={site.contact_email}\n        >\n          {site.contact_email}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => {\n            (site.contact_phone || site.phone_number) &&\n              window.open(`tel:${formatPhoneNumber(site.contact_phone || site.phone_number)}`);\n          }}\n          title={formatPhoneNumber(site.contact_phone || site.phone_number)}\n        >\n          {formatPhoneNumber(site.contact_phone || site.phone_number)}\n        </td>\n        <td className=\"ellipsis\" title={getOrderKitDate(site)} style={{ textAlign: \"center\" }}>\n          {getOrderKitDate(site)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {getTotalTest(site)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {setLabAntigenAutomate(site)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(site.insurance_required)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(site.sendInsuranceCard)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(site.vaccinationCard)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(site.admit)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(site.externalTest)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(site.externalTestAdmit)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(site.patternTesting)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(site.preRegistration)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(site.enableShipment)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(site.isHRPR)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <a\n            style={{ color: \"#42cef5\" }}\n            onClick={() => {\n              if (siteStatus(\"E\".status) === \"Active\") return;\n              setSelectedStatus(site);\n              setOpenStatus(true);\n            }}\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n          >\n            {siteStatus(\"E\".status)}\n          </a>\n        </td>\n        <td>\n          <Link\n            style={{ color: \"#42cef5\" }}\n            className=\"ellipsis\"\n            onClick={() => {\n              openSite(site?.id);\n            }}\n          >\n            Launch Portal\n          </Link>\n        </td>\n        <td className=\"icon\" style={{ width: \"45px\", minWidth: \"45px\", maxWidth: \"45px\" }}>\n          <i\n            className=\"fa fa-trash\"\n            onMouseLeave={(e) => {\n              e.target.style.color = \"black\";\n            }}\n            onMouseOver={(e) => {\n              e.target.style.color = \"#8B0000\";\n              e.target.style.cursor = \"pointer\";\n            }}\n            aria-hidden=\"true\"\n            id={site.id}\n            onClick={(e) => (showWarningModal(), setShowToDelete(e.target.id))}\n          />\n        </td>\n      </tr>\n    );\n  };\n\n  const getWeekDaySelectedValue = (val) => {\n    return { value: val, label: WEEK_DAYS[val] };\n  };\n\n  const handleSave = () => {\n    if (newSite.isNew) createSite();\n    else updateSite();\n  };\n  const handleSettings = () => {\n    updateSettings();\n  };\n\n  const toggleCheckboxes = (val) => {\n    setCheckboxes(val ? sitesToMap.filter((s) => s.isArchive === showArchive).map((t) => t.id) : []);\n  };\n  const handleChange = () => {\n    console.log(\"handleChange\");\n  };\n  const handleDelete = (id) => {\n    showWarningModal(), setShowToDelete(id);\n  };\n  const handleEdit = (site) => {\n    setNewSite({\n      isNew: false,\n      id: site.id,\n      name: site.name,\n      contact: site.contact_name,\n      phone: site.contact_phone || site.phone_number,\n      email: site.contact_email,\n      antigen: site.antigen,\n      automateTestType: site.automateTestType,\n      insurance_required: site.insurance_required,\n      startDate: site.startDate,\n      endDate: site.endDate,\n      sendInsuranceCard: site.sendInsuranceCard,\n      resetTestDay: site.resetTestDay,\n      clientID: site.clientID,\n      showOnSummaryScreen: site.showOnSummaryScreen || false,\n      messageTested: site.messageTested,\n      messageResulted: site.messageResulted,\n      messagePositive: site.messagePositive,\n      isArchive: site.isArchive,\n      vaccinationCard: site.vaccinationCard,\n      externalTest: site.externalTest,\n      externalTestType: site.externalTestType,\n      externalTestAdmit: site.externalTestAdmit,\n      patternTesting: site.patternTesting,\n      patternHippa: site.patternHippa,\n      preRegistration: site.preRegistration,\n      admit: site.admit,\n      orderKitType: site.orderKitType,\n      orderKitDate: moment(site.orderKitDate).format(\"YYYY-MM-DDTHH:mm\"),\n      enableShipment: site.enableShipment,\n      orderQuantity: site.orderQuantity,\n      messageReTest: site.messageReTest,\n      isPCRCustody: site.isPCRCustody,\n      isHRPR: site.isHRPR,\n    });\n\n    if (site.safeCampAdmin) {\n      let adminData = site.safeCampAdmin;\n      if (typeof adminData === \"string\") {\n        JSON.parse(adminData);\n      } else {\n        setSafeCampAdmin(adminData);\n      }\n    }\n    setOpenCreator(true);\n  };\n  const handleLaunchPortal = (id) => {\n    openSite(id);\n  };\n  return (\n    <div className=\"container-fluid\">\n      {!loading ? (\n        <div className=\"shows-screen-parent\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                      <Icon\n                        handleClick={async () => {\n                          if (sitesToMap && sitesToMap.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n                      <Icon\n                        //disabled={filteredSites.filter((s) => s.isArchive === showArchive).length === 0  && !showArchive}\n                        handleClick={() => setShowArchive(!showArchive)}\n                        title={\"Show Archive\"}\n                        label={\"Show Archive\"}\n                        iconType={\"showArchiveIcon\"}\n                      />\n                    </div>\n                    <Icon\n                      handleClick={() => (\n                        setOpenCreator(true),\n                        setNewSite({\n                          isNew: true,\n                          sendInsuranceCard: false,\n                          showOnSummaryScreen: false,\n                          isArchive: false,\n                          vaccinationCard: false,\n                          admit: false,\n                          externalTest: false,\n                          externalTestAdmit: false,\n                          patternTesting: false,\n                          preRegistration: false,\n                          isPCRCustody: false,\n                          orderQuantity: 2,\n                          isHRPR: false,\n                        })\n                      )}\n                      title={\"Create\"}\n                      label={\"Create\"}\n                      disabled={filteredSites.filter((s) => s.isArchive === showArchive).length === 0}\n                      iconType={\"createIcon\"}\n                    />\n                  </div>\n                  <div>\n                    {showFilter && (\n                      <Filter\n                        filterTerms={searchTerms}\n                        setFilter={setFilter}\n                        filter={filter}\n                        triggerFilter={triggerFilter}\n                        setTriggerFilter={setTriggerFilter}\n                      />\n                    )}\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"striped-tabled-with-hover bg-transparent\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md-=\"6\">\n                      <Card.Title>\n                        <div className=\"\">\n                          Total Shows:\n                          <span className=\"ps-2\">\n                            {\" \"}\n                            {filteredSites.filter((s) => s.isArchive === showArchive).length}\n                          </span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"6\">\n                      <MFPagination\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                      />\n                    </Col>\n                  </Row>\n                </Card.Header>\n\n                {/* <div className=\"buttonHeader clientsButtonHeader justify-content-between mb-1\">\n                      <div className=\"buttonHeader clientsButtonHeader\">\n                        <Button className=\"headerButton mb-0\" onClick={() => setShowFilter(!showFilter)}>\n                          Filter\n                        </Button>\n                        <Button\n                          className=\"headerButton\"\n                          onClick={() => {\n                            const length = sitesToMap.filter((s) => s.isArchive === showArchive).length;\n                            if (sitesToMap && length > 0) {\n                              setAllSelected(!allSelected);\n                              toggleCheckboxes(!allSelected);\n                            }\n                          }}\n                        >\n                          {!allSelected ? \"Select All\" : \"Deselect All\"}\n                        </Button>\n                        <Button\n                          className=\"headerButton\"\n                          disabled={filteredSites.filter((s) => s.isArchive === showArchive).length === 0}\n                          onClick={() => setShowArchive(!showArchive)}\n                        >\n                          {showArchive ? \"Hide Archive\" : \"Show Archive\"}\n                        </Button>\n                      </div>\n                      <Button\n                        className=\"createButtons\"\n                        onClick={() => (\n                          setOpenCreator(true),\n                          setNewSite({\n                            isNew: true,\n                            sendInsuranceCard: false,\n                            showOnSummaryScreen: false,\n                            isArchive: false,\n                            vaccinationCard: false,\n                            admit: false,\n                            externalTest: false,\n                            externalTestAdmit: false,\n                            patternTesting: false,\n                            preRegistration: false,\n                            isPCRCustody: false,\n                            orderQuantity: 2,\n                            isHRPR: false,\n                          })\n                        )}\n                      >\n                        Create a Show\n                      </Button>\n                    </div> */}\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll pt-0\">\n                  <div className=\"table-responsive pendingReleaseTable\" ref={mainRef}>\n                    <Table\n                      className=\"separate-border-tr\"\n                      // style={{ width: mainWidth, maxWidth: mainWidth, minWidth: mainWidth }}\n                    >\n                      <thead>\n                        <tr>\n                          <th>\n                            {/* <ViewOnlyCheckBox bgColor=\"red\" id={item.id} checked={checkboxes.indexOf(item.id) !== -1}  item={item} handleChange={(e) => handleCheckBoxChange(e , item.id)} /> */}\n                            select\n                          </th>\n                          {/* <th style={{ width: tdWidth, maxWidth: tdWidth }}>{showArchive ? \"Unarchive\" : \"Archive\"}</th> */}\n                          <HeaderItem\n                            // width={tdWidth}\n                            ItemKey=\"name\"\n                            title=\"Show Details\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            cssClass=\"ellipsis w-TwelvePercent\"\n                          />\n                          <HeaderItem\n                            // width={tdWidth}\n                            ItemKey=\"Client COntact\"\n                            title=\"Client Contact\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            cssClass=\"ellipsis w-TwelvePercent\"\n                          />\n                          <HeaderItem\n                            // width={tdWidth}\n                            ItemKey=\"contact_name\"\n                            title=\"Show Runner\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            cssClass=\"ellipsis w-TwelvePercent\"\n                          />\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"contact_email\"\n                          title=\"Contact's Email\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"contact_phone\"\n                          title=\"Contact's Phone\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"orderKitDate\"\n                          title=\"Order Cutoff DateTime\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        /> */}\n                          <HeaderItem\n                            // width={tdWidth}\n                            ItemKey=\"totalTests\"\n                            title=\"Total Test\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                            cssClass=\"ellipsis sevenPercent\"\n                          />\n                          <HeaderItem\n                            // width={tdWidth}\n                            ItemKey=\"preRegistration\"\n                            title=\"Pre-Registration\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"antigen\"\n                          title=\"Automate Rapid Test\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"insurance_required\"\n                          title=\"Insurance Info\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"sendInsuranceCard\"\n                          title=\"Insurance Card\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"vaccinationCard\"\n                          title=\"Vaccination Card\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"admit\"\n                          title=\"Vaccination Admit\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"externalTest\"\n                          title=\"External Test\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"externalTestAdmit\"\n                          title=\"External Test Admit\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"patternTesting\"\n                          title=\"Pattern Testing\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"preRegistration\"\n                          title=\"Pre-Registration\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                          {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"enableShipment\"\n                          title=\"Shipment\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n\n                          <HeaderItem\n                            // width={tdWidth}\n                            ItemKey=\"isHRPR\"\n                            title=\"Test Type\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            // width={tdWidth}\n                            ItemKey=\"isHRPR\"\n                            title=\"Action\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n\n                          <HeaderItem\n                            // width={tdWidth}\n                            ItemKey=\"status\"\n                            title=\"Status\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          {/* <th className=\"border-0 centered text-grey\" style={{ fontWeight: \"bold\" }}>\n                            Download\n                          </th> */}\n                          {/* <th className=\"border-0 centered text-grey\" style={{ fontWeight: \"bold\" }}>\n                            View\n                          </th> */}\n                          <th className=\"border-0 centered text-grey\" style={{ fontWeight: \"bold\" }}>\n                            Actions\n                          </th>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {sitesToMap &&\n                          sitesToMap\n                            .filter((s) => s.isArchive === showArchive)\n                            .map((site) => {\n                              return (\n                                <>\n                                  {/* <TableRow key={site.id} site={site} /> */}\n                                  <TRData\n                                    key={site.id}\n                                    item={site}\n                                    site={site}\n                                    getName={getName}\n                                    appContext={appContext}\n                                    getMoreInfo={getMoreInfo}\n                                    getTotalTest={getTotalTest}\n                                    handleDelete={handleDelete}\n                                    handleEdit={() => handleEdit(site)}\n                                    handleLaunchPortal={handleLaunchPortal}\n                                    handleShowSettingsModal={(e) => handleShowSettingsModal(e, site)}\n                                    handleCopyPRLink={handleCopyPRLink}\n                                    downloadQRCode={downloadQRCode}\n                                    currentURL={currentURL}\n                                    handleCheckBoxChange={handleCheckboxChange}\n                                    checkboxescehcked={checkboxes}\n                                  />\n                                </>\n                              );\n                            })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n            <ContactInfo show={modalShow} moreInfo={moreInfo} handleClose={handleCloseContactInfo} />\n            {showModalTestType && (\n              <TestTypeDurationModal\n                data={new \"E\".externalTestType() ? JSON.parse(newSite.externalTestType) : []}\n                handleSave={(val) => setNewSite({ ...newSite, externalTestType: val })}\n                handleClose={() => setshowModalTestType(false)}\n              />\n            )}\n\n            {/*<Col md=\"12\">*/}\n            {/*  <div className=\"pendingReleaseTable\">*/}\n            {/*    <table className=\"w-100 separate-border-tr\">*/}\n            {/*      <tbody>*/}\n            {/*       */}\n            {/*      </tbody>*/}\n            {/*    </table>*/}\n            {/*  </div>*/}\n            {/*</Col>*/}\n          </Row>\n        </div>\n      ) : (\n        <Loader />\n      )}\n      <Modal\n        show={openCreator}\n        // style={{ transform: \"translate(0, -30%)\" }}\n        animation={true}\n        onHide={() => {\n          setOpenCreator({});\n          handleClose();\n        }}\n        // centered\n        size={\"xl\"}\n      >\n        {/* <Modal.Header closeButton className=\"mb-0\">\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {newSite.isNew ? \"Create Show\" : \"Update Show\"}\n          </Modal.Title>\n        </Modal.Header> */}\n\n        <Modal.Body className=\"model-runner\" style={{ paddingTop: 0, paddingBottom: 0 }}>\n          <CloseButton handleClose={() => setOpenCreator(false)} />\n          <div className=\"createShowWrapper\">\n            <div className=\"createShowInner settingRightCol px-2\">\n              <div className=\"updateRightSid mb-5\">\n                <h5 className=\" underlinedText  updateText orderCutdate\">Show Details</h5>\n                <div className=\"createClientsWrapper clientWrapperAgain align-items-center\">\n                  <div className=\"form-group-wrapper form-wrapper-ed\">\n                    <label className=\"modalLineHeaders\">Show Name: </label>\n                    <input\n                      className=\"modalInput form-control customInput\"\n                      value={newSite.name}\n                      placeholder=\"Show Name\"\n                      style={{ width: \"100%\" }}\n                      onChange={(e) => setNewSite({ ...newSite, name: e.target.value })}\n                    />\n                  </div>\n                  <div className=\"form-group-wrapper form-wrapper-ed\">\n                    <label className=\"modalLineHeaders\">Primary Contact: </label>\n                    <input\n                      className=\"modalInput\"\n                      value={newSite.contact}\n                      placeholder=\"Primary Contact\"\n                      style={{ width: \"100%\" }}\n                      onChange={(e) => setNewSite({ ...newSite, contact: e.target.value })}\n                    />\n                  </div>\n                  <div className=\"form-group-wrapper form-wrapper-ed\">\n                    <label className=\"modalLineHeaders respInput\">Phone #: </label>\n\n                    <PhoneNoInput\n                      value={newSite.phone}\n                      handleChange={(e) => setNewSite({ ...newSite, phone: e })}\n                      cssCode={\"w-100\"}\n                    />\n                  </div>\n\n                  <div className=\"form-group-wrapper clientWrapperUniq\">\n                    <label className=\"modalLineHeaders\">Email: </label>\n                    <input\n                      className=\"modalInput\"\n                      value={newSite.email}\n                      placeholder=\"Email\"\n                      style={{ width: \"100%\" }}\n                      onChange={(e) => setNewSite({ ...newSite, email: e.target.value })}\n                    />\n                  </div>\n                  {/* <div className=\"form-group-wrapper\">\n               <label className=\"modalLineHeaders\">Temporary Password: </label>\n               <input\n                className=\"modalInput\"\n                type=\"password\"\n                value={newSite.password}\n                placeholder=\"Temp Password\"\n                style={{ width: \"100%\", marginBottom: \"10px\" }}\n                onChange={(e) => setNewSite({ ...newSite, password: e.target.value })}\n               />\n               </div> */}\n                  <div className=\"form-group-wrapper clientWrapperUniq dateWrapper\">\n                    <label className=\"modalLineHeaders\">Start Date: </label>\n                    <input\n                      className=\"modalInput\"\n                      type=\"date\"\n                      value={newSite.startDate}\n                      placeholder=\"Start Date\"\n                      style={{ width: \"100%\", marginBottom: \"10px\" }}\n                      onChange={(e) => setNewSite({ ...newSite, startDate: e.target.value })}\n                    />\n                  </div>\n                  <div className=\"form-group-wrapper  clientWrapperUniq dateWrapper\">\n                    <label className=\"modalLineHeaders\">End Date: </label>\n                    <input\n                      className=\"modalInput\"\n                      type=\"date\"\n                      value={newSite.endDate}\n                      placeholder=\"End Date\"\n                      style={{ width: \"100%\", marginBottom: \"10px\" }}\n                      onChange={(e) => setNewSite({ ...newSite, endDate: e.target.value })}\n                    />\n                  </div>\n\n                  <div className=\"form-group-wrapper clientWrapperUniq col-lg-4 col-sm-12\">\n                    <label className=\"modalLineHeaders\">Client: </label>\n                    <Select\n                      options={clients.map((client) => {\n                        return { value: client.id, label: client.name };\n                      })}\n                      blurInputOnSelect={true}\n                      defaultValue={null}\n                      menuPlacement=\"auto\"\n                      placeholder=\"Select a Client\"\n                      value={getClientObj(newSite.clientID)}\n                      onChange={(e) => setNewSite({ ...newSite, clientID: e.value })}\n                      className=\"w-100 siteSelector\"\n                    />\n                  </div>\n\n                  <div className=\"form-group-wrapper dateWrapper dateWrapperAgain orderCutdate col-lg-12 col-md-6\">\n                    <label className=\"modalLineHeaders\">Order Cutoff DateTime: </label>\n                    <input\n                      className=\"modalInput respInput\"\n                      type=\"datetime-local\"\n                      value={newSite.orderKitDate}\n                      style={{ width: \"100%\", marginBottom: \"10px\" }}\n                      onChange={(e) => setNewSite({ ...newSite, orderKitDate: e.target.value })}\n                    />\n                  </div>\n                </div>\n\n                <div className=\"messages-area-show\">\n                  <div className=\"createClientsWrapper clientWrapperAgain\">\n                    <div className=\"form-group-wrapper form-wrapper-ed\">\n                      <label className=\"modalLineHeaders\"> Message Tested:</label>\n                      <textarea\n                        className=\"textAreaWrapper\"\n                        onChange={(e) => setNewSite({ ...newSite, messageTested: e.target.value })}\n                      >\n                        {newSite.messageTested}\n                      </textarea>\n                    </div>\n                    <div className=\"form-group-wrapper form-wrapper-ed\">\n                      <label className=\"modalLineHeaders\"> Message Resulted:</label>\n                      <textarea\n                        className=\"textAreaWrapper\"\n                        onChange={(e) => setNewSite({ ...newSite, messageResulted: e.target.value })}\n                      >\n                        {newSite.messageResulted}\n                      </textarea>\n                    </div>\n                    <div className=\"form-group-wrapper form-wrapper-ed\">\n                      <label className=\"modalLineHeaders\"> Message Positive:</label>\n                      <textarea\n                        className=\"textAreaWrapper\"\n                        onChange={(e) => setNewSite({ ...newSite, messagePositive: e.target.value })}\n                      >\n                        {newSite.messagePositive}\n                      </textarea>\n                    </div>\n                  </div>\n                  <TextAreaEditor\n                    message={newSite.messageReTest?.message}\n                    name=\"reTestVerbiage\"\n                    label=\"Re-Test Verbiage\"\n                    type={newSite.messageReTest?.type}\n                    handleChange={onHandleMessageChange}\n                  />\n                </div>\n                <div className=\"wrapperShowRunnerArea\">\n                  <h5 className=\"underlinedText  updateText orderCutdate\">Show Runner</h5>\n                  {/* <p style={{ fontSize: \"18px\", fontWeight: \"600\" }} className=\"orderCutdate\"> Show Runner </p> */}\n                  <div className=\"showRunnerArea d-flex align-items-center \">\n                    <div className=\"form-group-wrapper form-wrapper-ed safecamp-admin-wrapper\">\n                      <label className=\"modalLineHeaders headingRunner\"> Select Admin: </label>\n                      <Select\n                        className=\"siteSelector w-100 respInput\"\n                        options={adminList}\n                        blurInputOnSelect={true}\n                        defaultValue={null}\n                        menuPlacement=\"auto\"\n                        placeholder=\"Select Admin\"\n                        value={safeCampAdmin.name ? { label: safeCampAdmin.name, value: safeCampAdmin.userName } : null}\n                        onChange={(e) =>\n                          setSafeCampAdmin({\n                            ...safeCampAdmin,\n                            name: e.label,\n                            userName: e.value,\n                            phone: e.phone,\n                            email: e.email,\n                          })\n                        }\n                      />\n                    </div>\n\n                    <div className=\"form-group-wrapper form-wrapper-ed safecamp-admin-wrapper\">\n                      <label className=\"modalLineHeaders headingRunner\">Phone: </label>\n                      <PhoneNoInput\n                        value={safeCampAdmin?.phone}\n                        handleChange={(e) => setSafeCampAdmin({ ...safeCampAdmin, phone: e })}\n                      />\n                    </div>\n                    <div className=\"form-group-wrapper  form-wrapper-ed safecamp-admin-wrapper\">\n                      <label className=\"modalLineHeaders headingRunner\"> Email: </label>\n                      <input\n                        className=\"modalInput\"\n                        value={safeCampAdmin?.email}\n                        placeholder=\"Email\"\n                        style={{ width: \"100%\" }}\n                        onChange={(e) => setSafeCampAdmin({ ...safeCampAdmin, email: e.target.value })}\n                      />\n                    </div>\n                  </div>\n                </div>\n                {error && <ErrorMessage error={error} handleChang={() => setError(\"\")} />}\n                <div className=\"updateButtonRetest text-end pt-5 pr-10\">\n                  <Button variant=\"primary\" className=\"modalButtons\" onClick={handleSave}>\n                    {newSite.isNew ? \"Create\" : \"Update\"}\n                  </Button>\n                </div>\n              </div>\n            </div>\n            <div className=\"createSettingsWrapper createEditWrapper\">\n              <div className=\"\">\n                <h5 className=\"text-uppercase updateText\">update show</h5>\n                <FilledCheckBox\n                  label=\"Automate Rapid Test\"\n                  id=\"checbkbox-1\"\n                  isChecked={newSite.antigen}\n                  handleChange={(e) => setNewSite({ ...newSite, antigen: !newSite.antigen })}\n                />\n                {newSite.antigen && (\n                  <div className=\"form-group-wrapper d-block selectTestWrapper\">\n                    <div className=\"form-group-wrapper\">\n                      <label className=\"modalLineHeaders\">Select Test: </label>\n                      <Select\n                        className=\"siteSelector w-100\"\n                        options={TestTypeOptions}\n                        blurInputOnSelect={true}\n                        defaultValue={null}\n                        menuPlacement=\"auto\"\n                        isSearchable={false}\n                        placeholder=\"Test Type\"\n                        value={\n                          newSite.automateTestType\n                            ? { label: newSite.automateTestType, value: newSite.automateTestType }\n                            : \"\"\n                        }\n                        onChange={(e) => setNewSite({ ...newSite, automateTestType: e.value })}\n                      />\n                    </div>\n                    <div className=\"form-group-wrapper\">\n                      <label className=\"modalLineHeaders\">Reset on: </label>\n                      <Select\n                        className=\"siteSelector w-100\"\n                        options={weekDaysOptions}\n                        blurInputOnSelect={true}\n                        defaultValue={null}\n                        menuPlacement=\"auto\"\n                        isSearchable={false}\n                        placeholder=\"Reset on\"\n                        value={getWeekDaySelectedValue(newSite.resetTestDay ?? \"0\")}\n                        onChange={(e) => setNewSite({ ...newSite, resetTestDay: e.value })}\n                      />\n                    </div>\n                  </div>\n                )}\n\n                <FilledCheckBox\n                  label=\"Scan Insurance Card\"\n                  id=\"checbkbox-2\"\n                  isChecked={newSite.sendInsuranceCard}\n                  handleChange={(e) =>\n                    setNewSite({\n                      ...newSite,\n                      sendInsuranceCard: !newSite.sendInsuranceCard,\n                    })\n                  }\n                />\n                <FilledCheckBox\n                  label=\"Capture Insurance Information\"\n                  id=\"checbkbox-3\"\n                  isChecked={newSite.insurance_required}\n                  handleChange={(e) =>\n                    setNewSite({\n                      ...newSite,\n                      insurance_required: !newSite.insurance_required,\n                    })\n                  }\n                />\n                <FilledCheckBox\n                  label=\"Exclude from Summary\"\n                  id=\"checbkbox-4\"\n                  isChecked={newSite.showOnSummaryScreen}\n                  handleChange={(e) =>\n                    setNewSite({\n                      ...newSite,\n                      showOnSummaryScreen: !newSite.showOnSummaryScreen,\n                    })\n                  }\n                />\n\n                <MultiInlineCheckBox\n                  label=\"Vaccination Card\"\n                  id=\"checbkbox-5\"\n                  isChecked={newSite.vaccinationCard}\n                  handleChange={(e) =>\n                    setNewSite({\n                      ...newSite,\n                      vaccinationCard: !newSite.vaccinationCard,\n                    })\n                  }\n                  isAdmitChecked={newSite.admit}\n                  handleAdmitChange={(e) =>\n                    setNewSite({\n                      ...newSite,\n                      admit: newSite.vaccinationCard ? newSite.admit : false,\n                    })\n                  }\n                  secondaryLabel=\"admit\"\n                />\n                <MultiInlineCheckBox\n                  label=\"External Test\"\n                  id=\"checbkbox-7\"\n                  isChecked={newSite.externalTest}\n                  handleChange={(e) =>\n                    setNewSite({\n                      ...newSite,\n                      externalTest: !newSite.externalTest,\n                    })\n                  }\n                  isAdmitChecked={newSite.externalTestAdmit}\n                  handleAdmitChange={(e) =>\n                    setNewSite({\n                      ...newSite,\n                      externalTestAdmit: newSite.externalTest ? newSite.externalTestAdmit : false,\n                    })\n                  }\n                  secondaryLabel=\"admit\"\n                />\n                <div>\n                  <FilledCheckBox\n                    label=\"Pattern Testing\"\n                    id=\"checbkbox-9\"\n                    isChecked={newSite.patternTesting}\n                    handleChange={(e) =>\n                      setNewSite({\n                        ...newSite,\n                        patternTesting: !newSite.patternTesting,\n                      })\n                    }\n                  />\n\n                  {newSite.patternTesting && (\n                    <div className=\"d-flex justify-content-between align-items-center\">\n                      <div\n                        className=\"fontFourteen\"\n                        style={{ paddingLeft: \"8px\" }}\n                        onClick={() => setShowPattrenEditor(true)}\n                      >\n                        Disclaimer\n                      </div>\n                      <div className=\"linkedText\" onClick={() => setShowPattrenEditor(true)}>\n                        {newSite.isNew ? \"Edit Text\" : \"Update Text\"}\n                      </div>\n                      {showPatternEditor && (\n                        <TextEditor\n                          text={newSite.patternHippa ?? \"\"}\n                          handleSave={(val) => {\n                            setShowPattrenEditor(false);\n                            setNewSite({ ...newSite, patternHippa: val });\n                          }}\n                          handleClose={() => setShowPattrenEditor(false)}\n                        />\n                      )}\n                    </div>\n                  )}\n                </div>\n                <div>\n                  <FilledCheckBox\n                    label=\"Pre-Registration\"\n                    id=\"checbkbox-10\"\n                    isChecked={newSite.preRegistration}\n                    handleChange={(e) =>\n                      setNewSite({\n                        ...newSite,\n                        preRegistration: !newSite.preRegistration,\n                      })\n                    }\n                  />\n\n                  {newSite.isNew === false && newSite.preRegistration && (\n                    <>\n                      <div className=\"d-flex justify-content-between align-items-center position-relative\">\n                        {showCopyText && <div className=\"copy-link-text\">Copy to clipboard!</div>}\n                        <div className=\"fontFourteen\" style={{ paddingLeft: \"8px\" }}>\n                          QR Code\n                        </div>\n                        <div className=\"d-flex align-items-center justify-content-between qr-code-download\">\n                          <div onClick={() => handleCopyPRLink(newSite.id)}>\n                            <i className=\"fas fa-copy\" />\n                          </div>\n                          <div onClick={() => downloadQRCode()}>\n                            <i className=\"fas fa-download\"></i>\n                          </div>\n                          <span style={{ display: \"none\" }}>\n                            <QRCode\n                              id=\"qr-gen\"\n                              ecLevel={\"H\"}\n                              value={getPreRegistrationLink(newSite.id, currentURL)}\n                              enableCORS={true}\n                              logoImage={logo}\n                              size=\"250\"\n                              logoHeight={\"70\"}\n                              logoWidth={\"70\"}\n                              fgColor={\"#000\"}\n                              bgColor={\"#fff\"}\n                            />\n                          </span>\n                        </div>\n                      </div>\n                      <div className=\"d-flex justify-content-between align-items-center position-relative\">\n                        <div className=\"fontFourteen\" style={{ paddingLeft: \"8px\" }}>\n                          Test Quantity\n                        </div>\n                        <div className=\"d-flex align-items-center justify-content-between\">\n                          <Select\n                            options={TEST_ORDER_QTY}\n                            blurInputOnSelect={true}\n                            value={\n                              newSite.orderQuantity\n                                ? { value: newSite.orderQuantity, label: newSite.orderQuantity }\n                                : { value: 2, label: 2 }\n                            }\n                            menuPlacement=\"auto\"\n                            placeholder=\"Select Quantity\"\n                            className=\"w-100\"\n                            onChange={(e) =>\n                              setNewSite({\n                                ...newSite,\n                                orderQuantity: e.value,\n                              })\n                            }\n                          />\n                        </div>\n                      </div>\n                      <div className=\"d-flex justify-content-between align-items-center position-relative\">\n                        <div className=\"fontFourteen\" style={{ paddingLeft: \"8px\" }}>\n                          Test Type\n                        </div>\n                        <div className=\"d-flex align-items-center justify-content-between\">\n                          <Select\n                            options={PRE_REGISTRATION_TEST_TYPE}\n                            blurInputOnSelect={true}\n                            value={\n                              newSite.orderKitType\n                                ? { label: TEST_TYPE_VALUE[newSite.orderKitType], value: newSite.orderKitType }\n                                : null\n                            }\n                            menuPlacement=\"auto\"\n                            placeholder=\"Select Test\"\n                            className=\"w-100 mt-2\"\n                            onChange={(e) =>\n                              setNewSite({\n                                ...newSite,\n                                orderKitType: e.value,\n                              })\n                            }\n                          />\n                        </div>\n                      </div>\n                      {(newSite.orderKitType === \"Antigen\" || newSite.orderKitType === \"Lucira\") && (\n                        <FilledCheckBox\n                          label=\"Enable Shipment\"\n                          id=\"checbkbox-11\"\n                          isChecked={newSite.enableShipment || false}\n                          handleChange={(e) =>\n                            setNewSite({\n                              ...newSite,\n                              enableShipment: e.target.checked,\n                            })\n                          }\n                        />\n                      )}\n                    </>\n                  )}\n\n                  {newSite.isNew === true && newSite.preRegistration && (\n                    <FilledCheckBox\n                      label=\"Enable Shipment\"\n                      id=\"checbkbox-12\"\n                      isChecked={newSite.enableShipment || false}\n                      handleChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          enableShipment: e.target.checked,\n                        })\n                      }\n                    />\n                  )}\n                </div>\n\n                <FilledCheckBox\n                  label=\"HR Registration\"\n                  id=\"checbkbox-13\"\n                  isChecked={newSite.isHRPR || false}\n                  handleChange={(e) =>\n                    setNewSite({\n                      ...newSite,\n                      isHRPR: !newSite.isHRPR,\n                    })\n                  }\n                />\n                <FilledCheckBox\n                  label=\"Chain of Custody\"\n                  id=\"checbkbox-14\"\n                  isChecked={newSite.isPCRCustody || false}\n                  handleChange={(e) =>\n                    setNewSite({\n                      ...newSite,\n                      isPCRCustody: !newSite.isPCRCustody,\n                    })\n                  }\n                />\n                <FilledCheckBox\n                  label=\"Archive\"\n                  id=\"checbkbox-15\"\n                  isChecked={newSite.isArchive || false}\n                  handleChange={(e) =>\n                    setNewSite({\n                      ...newSite,\n                      isArchive: !newSite.isArchive,\n                    })\n                  }\n                />\n              </div>\n            </div>\n          </div>\n        </Modal.Body>\n        {/* <Modal.Footer style={{ borderTop: \"1px solid red\", paddingTop: \"15px\" }}>\n          <Button\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              setNewSite({});\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n\n        </Modal.Footer> */}\n      </Modal>\n\n      <Modal\n        centered\n        show={warningModal}\n        // style={{ transform: \"translate(0, -30%)\" }}\n        onHide={exitModal}\n        backdrop=\"static\"\n      >\n        <Modal.Header closeButton={exitModal}>\n          <Modal.Title className=\"my-0\">Delete Show</Modal.Title>\n        </Modal.Header>\n        <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n          <Modal.Title id=\"contained-modal-title-vcenter\">Are you sure you want to delete this show?</Modal.Title>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button variant=\"primary\" onClick={exitModal}>\n            Go back\n          </Button>\n          <Button\n            variant=\"danger\"\n            onClick={() => {\n              deleteSite(showToDelete);\n              exitModal();\n            }}\n          >\n            Confirm\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      {openStatus && (\n        <ChangeStatusModal\n          handleSave={handleUpdateStatus}\n          handleClose={handleStatusClose}\n          selectedStatus={selectedStatus?.status}\n        />\n      )}\n      {showSettings && (\n        // <Modal\n        //   show={showSettings}\n        //   animation={true}\n        //   onHide={() => {\n        //     setShowSettings({});\n        //     // handleClose();\n        //   }}\n        //   // centered\n        //   size={\"xl\"}\n        // >\n        //   <Modal.Body className=\"p-0\">\n        //     <CloseButton handleClose={() => setShowSettings(false)} />\n        //     <Container className=\"px-0\">\n        //       <Row>\n        //         <Col lg={6} md={12} xs={12} sm={12} className=\"p-0\">\n        //           <div className=\"settingLeftSide\">\n        //             <h4 className=\"text-uppercase settingText mt-0\">settings</h4>\n        //             <FilledCheckBox label=\"Automate Rapid Test\" id=\"checbkbox\" />\n        //             <FilledCheckBox label=\"Automate Rapid Test\" id=\"checbkbox2\" />\n        //             <FilledCheckBox label=\"Automate Rapid Test\" id=\"checbkbox3\" />\n        //             <FilledCheckBox label=\"Automate Rapid Test\" id=\"checbkbox4\" />\n        //             <FilledCheckBox label=\"Automate Rapid Test\" id=\"checbkbox5\" />\n        //             <MultiInlineCheckBox label=\"Automate Rapid Test\" id=\"checbkbox10\" secondaryLabel=\"admin\" />\n        //             <MultiInlineCheckBox label=\"Automate Rapid Test\" id=\"checbkbox12\" secondaryLabel=\"admin\" />\n        //             <FilledCheckBox label=\"Automate Rapid Test\" id=\"checbkbox6\" />\n        //             <FilledCheckBox label=\"Automate Rapid Test\" id=\"checbkbox7\" />\n        //             <FilledCheckBox label=\"Automate Rapid Test\" id=\"checbkbox8\" />\n        //             <FilledCheckBox label=\"Automate Rapid Test\" id=\"checbkbox9\" />\n        //           </div>\n        //         </Col>\n        //         <Col lg={6} md={12} xs={12} sm={12} className=\"settingRightCol p-0\">\n        //           <div className=\"settingRightSide\">\n        //             <div className=\"settingPopupMain d-flex flex-column justify-content-center align-items-center\">\n        //               <span className=\"text-center\">\n        //                 <h4 className=\"text-uppercase mt-0\">Please manage all show</h4>\n        //                 <p>If any Changes have been Apply Please Click on Update Button</p>\n        //               </span>\n        //               <button className=\"updateBtn d-flex justify-content-center text-white text-uppercase\" style={{}}>\n        //                 Update{\" \"}\n        //               </button>\n        //             </div>\n        //           </div>\n        //         </Col>\n        //       </Row>\n        //     </Container>\n        //   </Modal.Body>\n        // </Modal>\n        <Modal\n          show={showSettings}\n          animation={true}\n          onHide={() => {\n            setShowSettings({});\n            // handleClose();\n          }}\n          // centered\n          size={\"xl\"}\n        >\n          <Modal.Body className=\"p-0\">\n            <CloseButton handleClose={() => setShowSettings(false)} />\n            {/* <ShowSettingsModal /> */}\n            <Container>\n              <Row className=\"customUpdateRow\">\n                <Col lg={4} md={12} xs={12} sm={12} className=\"p-0\">\n                  <div className=\"updateLeftSide\">\n                    <h5 className=\"text-uppercase updateText\">Settings</h5>\n                    <FilledCheckBox\n                      label=\"Automate Rapid Test\"\n                      id=\"checbkbox-1\"\n                      isChecked={newSite.antigen}\n                      handleChange={(e) => setNewSite({ ...newSite, antigen: !newSite.antigen })}\n                    />\n                    {newSite.antigen && (\n                      <div className=\"form-group-wrapper d-block selectTestWrapper\">\n                        <div className=\"form-group-wrapper\">\n                          <label className=\"modalLineHeaders\">Select Test: </label>\n                          <Select\n                            className=\"siteSelector w-100\"\n                            options={TestTypeOptions}\n                            blurInputOnSelect={true}\n                            defaultValue={null}\n                            menuPlacement=\"auto\"\n                            isSearchable={false}\n                            placeholder=\"Test Type\"\n                            value={\n                              newSite.automateTestType\n                                ? { label: newSite.automateTestType, value: newSite.automateTestType }\n                                : \"\"\n                            }\n                            onChange={(e) => setNewSite({ ...newSite, automateTestType: e.value })}\n                          />\n                        </div>\n                        <div className=\"form-group-wrapper\">\n                          <label className=\"modalLineHeaders\">Reset on: </label>\n                          <Select\n                            className=\"siteSelector w-100\"\n                            options={weekDaysOptions}\n                            blurInputOnSelect={true}\n                            defaultValue={null}\n                            menuPlacement=\"auto\"\n                            isSearchable={false}\n                            placeholder=\"Reset on\"\n                            value={getWeekDaySelectedValue(newSite.resetTestDay ?? \"0\")}\n                            onChange={(e) => setNewSite({ ...newSite, resetTestDay: e.value })}\n                          />\n                        </div>\n                      </div>\n                    )}\n\n                    <FilledCheckBox\n                      label=\"Scan Insurance Card\"\n                      id=\"checbkbox-2\"\n                      isChecked={newSite.sendInsuranceCard}\n                      handleChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          sendInsuranceCard: !newSite.sendInsuranceCard,\n                        })\n                      }\n                    />\n                    <FilledCheckBox\n                      label=\"Capture Insurance Information\"\n                      id=\"checbkbox-3\"\n                      isChecked={newSite.insurance_required}\n                      handleChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          insurance_required: !newSite.insurance_required,\n                        })\n                      }\n                    />\n                    <FilledCheckBox\n                      label=\"Exclude from Summary\"\n                      id=\"checbkbox-4\"\n                      isChecked={newSite.showOnSummaryScreen}\n                      handleChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          showOnSummaryScreen: !newSite.showOnSummaryScreen,\n                        })\n                      }\n                    />\n\n                    <MultiInlineCheckBox\n                      label=\"Vaccination Card\"\n                      id=\"checbkbox-5\"\n                      isChecked={newSite.vaccinationCard}\n                      handleChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          vaccinationCard: !newSite.vaccinationCard,\n                        })\n                      }\n                      isAdmitChecked={newSite.admit}\n                      handleAdmitChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          admit: !newSite.admit,\n                        })\n                      }\n                      secondaryLabel=\"admit\"\n                    />\n                    <MultiInlineCheckBox\n                      label=\"External Test\"\n                      id=\"checbkbox-7\"\n                      isChecked={newSite.externalTest}\n                      handleChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          externalTest: !newSite.externalTest,\n                        })\n                      }\n                      isAdmitChecked={newSite.externalTestAdmit}\n                      handleAdmitChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          externalTestAdmit: !newSite.externalTestAdmit,\n                        })\n                      }\n                      secondaryLabel=\"admit\"\n                    />\n\n                    <div>\n                      <FilledCheckBox\n                        label=\"Pattern Testing\"\n                        id=\"checbkbox-9\"\n                        isChecked={newSite.patternTesting}\n                        handleChange={(e) =>\n                          setNewSite({\n                            ...newSite,\n                            patternTesting: !newSite.patternTesting,\n                          })\n                        }\n                      />\n\n                      {newSite.patternTesting && (\n                        <div className=\"d-flex justify-content-between align-items-center\">\n                          <div\n                            className=\"fontFourteen\"\n                            style={{ paddingLeft: \"8px\" }}\n                            onClick={() => setShowPattrenEditor(true)}\n                          >\n                            Disclaimer\n                          </div>\n                          <div className=\"linkedText\" onClick={() => setShowPattrenEditor(true)}>\n                            {newSite.isNew ? \"Edit Text\" : \"Update Text\"}\n                          </div>\n                          {showPatternEditor && (\n                            <TextEditor\n                              text={newSite.patternHippa ?? \"\"}\n                              handleSave={(val) => {\n                                setShowPattrenEditor(false);\n                                setNewSite({ ...newSite, patternHippa: val });\n                              }}\n                              handleClose={() => setShowPattrenEditor(false)}\n                            />\n                          )}\n                        </div>\n                      )}\n                    </div>\n\n                    <div>\n                      <FilledCheckBox\n                        label=\"Pre-Registration\"\n                        id=\"checbkbox-100\"\n                        isChecked={newSite.preRegistration}\n                        handleChange={(e) =>\n                          setNewSite({\n                            ...newSite,\n                            preRegistration: !newSite.preRegistration,\n                          })\n                        }\n                      />\n\n                      {newSite.preRegistration && (\n                        <>\n                          <div className=\"d-flex justify-content-between align-items-center position-relative\">\n                            {showCopyText && <div className=\"copy-link-text\">Copy to clipboard!</div>}\n                            <div className=\"fontFourteen\" style={{ paddingLeft: \"8px\" }}>\n                              QR Code\n                            </div>\n                            <div className=\"d-flex align-items-center justify-content-between qr-code-download\">\n                              <div onClick={() => handleCopyPRLink(newSite.id)}>\n                                <i className=\"fas fa-copy\" />\n                              </div>\n                              <div onClick={() => downloadQRCode()}>\n                                <i className=\"fas fa-download\"></i>\n                              </div>\n                              <span style={{ display: \"none\" }}>\n                                <QRCode\n                                  id=\"qr-gen\"\n                                  ecLevel={\"H\"}\n                                  value={getPreRegistrationLink(newSite.id, currentURL)}\n                                  enableCORS={true}\n                                  logoImage={logo}\n                                  size=\"250\"\n                                  logoHeight={\"70\"}\n                                  logoWidth={\"70\"}\n                                  fgColor={\"#000\"}\n                                  bgColor={\"#fff\"}\n                                />\n                              </span>\n                            </div>\n                          </div>\n                          <div className=\"d-flex justify-content-between align-items-center position-relative\">\n                            <div className=\"fontFourteen\" style={{ paddingLeft: \"8px\" }}>\n                              Test Quantity\n                            </div>\n                            <div className=\"d-flex align-items-center justify-content-between\">\n                              <Select\n                                options={TEST_ORDER_QTY}\n                                blurInputOnSelect={true}\n                                value={\n                                  newSite.orderQuantity\n                                    ? { value: newSite.orderQuantity, label: newSite.orderQuantity }\n                                    : { value: 2, label: 2 }\n                                }\n                                menuPlacement=\"auto\"\n                                placeholder=\"Select Quantity\"\n                                className=\"w-100\"\n                                onChange={(e) =>\n                                  setNewSite({\n                                    ...newSite,\n                                    orderQuantity: e.value,\n                                  })\n                                }\n                              />\n                            </div>\n                          </div>\n                          <div className=\"d-flex justify-content-between align-items-center position-relative\">\n                            <div className=\"fontFourteen\" style={{ paddingLeft: \"8px\" }}>\n                              Test Type\n                            </div>\n                            <div className=\"d-flex align-items-center justify-content-between\">\n                              <Select\n                                options={PRE_REGISTRATION_TEST_TYPE}\n                                blurInputOnSelect={true}\n                                value={\n                                  newSite.orderKitType\n                                    ? { label: TEST_TYPE_VALUE[newSite.orderKitType], value: newSite.orderKitType }\n                                    : null\n                                }\n                                menuPlacement=\"auto\"\n                                placeholder=\"Select Test\"\n                                className=\"w-100 mt-2\"\n                                onChange={(e) =>\n                                  setNewSite({\n                                    ...newSite,\n                                    orderKitType: e.value,\n                                  })\n                                }\n                              />\n                            </div>\n                          </div>\n                          {(newSite.orderKitType === \"Antigen\" || newSite.orderKitType === \"Lucira\") && (\n                            <FilledCheckBox\n                              label=\"Enable Shipment\"\n                              id=\"checbkbox-11\"\n                              isChecked={newSite.enableShipment || false}\n                              handleChange={(e) =>\n                                setNewSite({\n                                  ...newSite,\n                                  enableShipment: e.target.checked,\n                                })\n                              }\n                            />\n                          )}\n                        </>\n                      )}\n\n                      {newSite.isNew === true && newSite.preRegistration && (\n                        <FilledCheckBox\n                          label=\"Enable Shipment\"\n                          id=\"checbkbox-12\"\n                          isChecked={newSite.enableShipment || false}\n                          handleChange={(e) =>\n                            setNewSite({\n                              ...newSite,\n                              enableShipment: e.target.checked,\n                            })\n                          }\n                        />\n                      )}\n                    </div>\n\n                    <FilledCheckBox\n                      label=\"HR Registration\"\n                      id=\"checbkbox-13\"\n                      isChecked={newSite.isHRPR || false}\n                      handleChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          isHRPR: !newSite.isHRPR,\n                        })\n                      }\n                    />\n                    <FilledCheckBox\n                      label=\"Chain of Custody\"\n                      id=\"checbkbox-14\"\n                      isChecked={newSite.isPCRCustody || false}\n                      handleChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          isPCRCustody: !newSite.isPCRCustody,\n                        })\n                      }\n                    />\n                    <FilledCheckBox\n                      label=\"Archive\"\n                      id=\"checbkbox-15\"\n                      isChecked={newSite.isArchive || false}\n                      handleChange={(e) =>\n                        setNewSite({\n                          ...newSite,\n                          isArchive: !newSite.isArchive,\n                        })\n                      }\n                    />\n                  </div>\n                </Col>\n                <Col lg={8} md={12} xs={12} sm={12} className=\"settingRightCol p-0\">\n                  <div className=\"settingRightSide\">\n                    <div className=\"settingPopupMain d-flex flex-column justify-content-center align-items-center\">\n                      <span className=\"text-center\">\n                        <h4 className=\"text-uppercase mt-0\">Please manage all show</h4>\n                        <p>If any Changes have been Apply Please Click on Update Button</p>\n                      </span>\n                      <button\n                        className=\"updateBtn d-flex justify-content-center text-white text-uppercase\"\n                        onClick={handleSettings}\n                        style={{}}\n                      >\n                        Update{\" \"}\n                      </button>\n                    </div>\n                  </div>\n                </Col>\n              </Row>\n            </Container>\n          </Modal.Body>\n        </Modal>\n      )}\n    </div>\n  );\n};\n\nexport default SitesView;\n","import InputField from \"components/InputField/InputField\";\nimport { REPORT_OPTIONS } from \"constant\";\nimport React, { useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport moment from \"moment\";\nimport { callAmplifyAPI } from \"views/GraphQL/gqApi\";\nimport MainTable from \"components/Table/MainTable\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport Icon from \"components/Icon\";\nimport Loader from \"components/Loader/Loader\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { TABLE_COLUMN_TYPES } from \"constant\";\n\nconst convertObjectKeysToArray = (inputObject) => {\n  return Object.keys(inputObject).map((key, id) => {\n    const title = key\n      .split(\"_\") // Split by underscore\n      .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n      .join(\" \");\n\n    // Base object\n    const result = {\n      id: id,\n      itemKey: key,\n      title: title,\n      isCheck: true,\n      type: TABLE_COLUMN_TYPES.text,\n      textAlign: \"center\",\n    };\n\n    return result;\n  });\n};\nconst ReportDataModal = ({ handleClose, appContext }) => {\n  const [loading, setLoading] = useState(false);\n  const [reportResult, setReportResult] = useState([]);\n  const [error, setError] = useState(false);\n  const [reportData, setReportData] = useState({ type: \"\", startDate: \"\", endDate: \"\" });\n  const [columns, setColumns] = useState([]);\n  const handleChangeReportOption = (selectedOption) => {\n    setReportResult([]);\n    setReportData((prevState) => ({\n      ...prevState,\n      type: selectedOption ? selectedOption.value : null,\n    }));\n  };\n\n  const handleSave = async () => {\n    if (!reportData?.type) {\n      setError(true);\n      return;\n    }\n    setLoading(true);\n    try {\n      const response = await callAmplifyAPI(\"/reports/tat\", reportData);\n\n      if (response?.rows[0]?.positivity_ratio) {\n        const updatedRows = response.rows.map((row) => {\n          if (row.positivity_ratio !== undefined && row.positivity_ratio !== null) {\n            return {\n              ...row,\n              positivity_ratio: `${row.positivity_ratio}%`,\n            };\n          }\n          return row;\n        });\n        setReportResult(updatedRows);\n      } else {\n        setReportResult(response?.rows);\n      }\n\n      const personalization = convertObjectKeysToArray(response?.rows[0]);\n      setColumns(personalization);\n    } catch (error) {\n      console.log(\"🚀 ~ handleSave ~ error:\", error);\n    }\n    setLoading(false);\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={handleClose}\n        backdrop=\"static\"\n        centered\n        size={\"2xl\"}\n        keyboard={true}\n        className=\"seperateModal \"\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Report\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body style={{ paddingTop: 0 }}>\n          {loading && <Loader />}\n\n          <div className=\"row mb-3\">\n            <div className=\"d-flex gap-2 w-100\">\n              <div className=\"col-lg-4 col-4 mb-3\">\n                <label className=\"modalLineHeaders\">Start Date: </label>\n                <input\n                  className=\"modalInput\"\n                  type=\"date\"\n                  style={{\n                    width: \"100%\",\n                    flexShrink: \"initial\",\n                  }}\n                  value={reportData?.startDate}\n                  placeholder=\"Start Date\"\n                  onChange={(e) =>\n                    setReportData((prevState) => ({\n                      ...prevState,\n                      startDate: moment(e.target.value).format(\"YYYY-MM-DD\"),\n                    }))\n                  }\n                  min={moment(\"1900-01-01\").format(\"YYYY-MM-DD\")}\n                  max={moment().format(\"YYYY-MM-DD\")}\n                />\n              </div>\n              <div className=\"col-lg-4 col-4 mb-3\">\n                <label className=\"modalLineHeaders\">End Date: </label>\n                <input\n                  className=\"modalInput\"\n                  type=\"date\"\n                  style={{\n                    width: \"100%\",\n                    flexShrink: \"initial\",\n                  }}\n                  value={reportData?.endDate}\n                  placeholder=\"End Date\"\n                  onChange={(e) =>\n                    setReportData((prevState) => ({\n                      ...prevState,\n                      endDate: moment(e.target.value).format(\"YYYY-MM-DD\"),\n                    }))\n                  }\n                  min={moment(\"1900-01-01\").format(\"YYYY-MM-DD\")}\n                  max={moment().format(\"YYYY-MM-DD\")}\n                />\n              </div>\n              <div className=\"col-lg-4 col-4 mb-3\">\n                <label className=\"modalLineHeaders\">\n                  Type <span style={{ color: \"red\" }}>*</span>\n                </label>\n                <InputField\n                  type=\"dropDown\"\n                  groupWrapper=\"w-100\"\n                  options={REPORT_OPTIONS}\n                  labelStyle=\"modalLineHeaders mt-0\"\n                  index=\"value\"\n                  isClearable={true}\n                  value={REPORT_OPTIONS?.find((r) => r.value === reportData?.type)}\n                  placeholder=\"Select Type\"\n                  handleChange={handleChangeReportOption}\n                />\n              </div>\n            </div>\n          </div>\n\n          {reportResult?.length > 0 && (\n            <div\n              className=\"d-block p-1\"\n              style={{\n                border: \"1px solid #f2f2f2\",\n                backgroundColor: \"#f2f2f2\",\n                maxHeight: \"400px\",\n                overflowY: \"auto\",\n                minHeight: \"65vh\",\n              }}\n            >\n              <MainTable\n                trDataWrapperHeader=\"bg-white\"\n                cssClass=\"table-noresponsive \"\n                rows={reportResult ?? []}\n                columns={columns}\n              />\n            </div>\n          )}\n          <div className=\"d-flex w-100\" style={{ justifyContent: \"space-between\", alignItems: \"center\" }}>\n            <div className=\"\">\n              {error && <ErrorMessage error={\"Type is required\"} handleChange={() => setError(\"\")} />}\n            </div>\n            <div className=\" d-flex\">\n              {reportResult?.length > 0 && (\n                <ExportToExcel\n                  setLoading={setLoading}\n                  appContext={appContext}\n                  items={reportResult ?? []}\n                  title={`${reportData?.type?.toLowerCase().replace(/\\s+/g, \"_\").concat(\"_\")}`}\n                  selectedItem={columns?.map((c) => c.itemKey)}\n                  filter={{}}\n                  isPlainButton={true}\n                />\n              )}\n              <Button\n                className=\"profileButton btn-fill createButtons\"\n                style={{\n                  marginTop: 10,\n                }}\n                variant=\"secondary\"\n                onClick={() => handleSave()}\n              >\n                View Report\n              </Button>\n            </div>\n          </div>\n        </Modal.Body>\n      </Modal>\n    </>\n  );\n};\n\nexport default ReportDataModal;\n","import React, { useState, useContext, useMemo, useRef, useCallback } from \"react\";\n\n// react-bootstrap components\nimport { Card, Container, Row, Col, Modal, Button } from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport { useLocation } from \"react-router-dom\";\nimport { Storage } from \"aws-amplify\";\nimport \"react-activity/dist/Bounce.css\";\nimport {\n  formatTest,\n  sortTestList,\n  sortingFilterInLC,\n  isAllowToArchive,\n  formattedString,\n  env,\n  getClientSpecificString,\n} from \"utils\";\nimport FilterSelect from \"components/FilterSelect\";\nimport ContactInfo from \"components/Modal/ContactInfo\";\nimport PGPagination from \"components/Pagination/PGPagination\";\nimport { AppContext } from \"context/app-context\";\nimport { PAGE_LIMIT, TEST_HEADER_TYPE, ADMIN_USER } from \"constant\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport ExportToExcelData from \"components/ExportToExcelData\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport moment from \"moment\";\nimport { debounce } from \"debounce\";\nimport { useInitialRender } from \"components/useInitialRender\";\nimport Loader from \"components/Loader/Loader\";\nimport Icon from \"components/Icon\";\nimport { stringConstant, CONFIG } from \"constant\";\nimport ChangeResultModal from \"components/Modal/ChangeResultModal\";\nimport { UN_RESULT } from \"constant\";\nimport { exportToCalRedie } from \"utils\";\nimport { downloadDataAsCSV } from \"utils\";\nimport CalRedieLogsModal from \"components/Modal/CalredieLogsModal\";\nimport { setSelectedTestForResult } from \"store/features/resultsTests/resultsTestAction\";\nimport { useDispatch } from \"react-redux\";\nimport MainTable from \"components/Table/MainTable\";\nimport { PERSONALISATION_KEY } from \"constant\";\nimport { personalisationInLC } from \"utils\";\nimport { TABLE_QUICK_TOOLS, COMPLETED_TESTS } from \"constant\";\nimport ResultCell from \"views/GraphQL/TestListCompletedTest/ResultCell\";\nimport SequenceNo from \"components/SequenceNo\";\nimport { capitalizeLetter } from \"utils\";\nimport Status from \"components/Status\";\nimport { Link } from \"react-router-dom\";\nimport RedirectLink from \"components/RedirectLink\";\nimport { getValidName } from \"utils\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport { userGivenPermission, selectLab } from \"store/features/authentication/authenticationSelectors\";\nimport { useSelector } from \"react-redux\";\nimport { useHistory } from \"react-router\";\nimport DocumentPreviewModal from \"components/Modal/DocumentPreviewModal\";\nimport { LAB_ID, BIO_LAB_ID } from \"constant\";\n\nimport { isLocalhost } from \"utils\";\nimport { showResultPdf } from \"store/features/resultPdf/reslutPdfSlice\";\nimport { setLoader } from \"store/features/general/generalSlice\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { MESSAGE_MODES } from \"constant\";\nimport { setSimpleResultModal, setTestForResult } from \"store/features/resultsTests/resultsTestSlice\";\nimport { COMPLETED_RESULT_PERSONALIZE, COMPLETED_RESULT_CUSTOM_COLUMN } from \"constants/personalization\";\nimport { customIsEmpty } from \"util/customLodash\";\n\nimport ReportDataModal from \"components/Modal/ReportDataModal\";\n\nconst TestListAdminApi = () => {\n  const [reportModalOpen, setReportModalOpen] = useState(false);\n\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [tests, setTests] = useState([]);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [labs, setLabs] = useState([]);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [triggerFilter, setTriggerFilter] = useState();\n  const [loading, setLoading] = useState(false);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [itemToDelete, setItemToDelete] = useState({});\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [pageNo, setPageNo] = useState(1);\n  const [openConfirmation, setOpenConfirmation] = useState(false);\n  const [showResultModal, setShowResultModal] = useState(false);\n  const [openUploadLogsModal, setOpenUploadLogsModal] = useState(false);\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n  const permission = useSelector(userGivenPermission);\n  const [isPreviewModalOpen, setIsPreviewModalOpen] = useState(false);\n  const [fileUrl, setFileUrl] = useState(\"\");\n  const [fileType, setFileType] = useState(\"\");\n  const [docName, setDocName] = useState(\"\");\n\n  const [personalize, setPersonalize] = useState([]);\n  const [searchTerms, setSearchTerms] = useState([]);\n  const [filterTabIndex, setFilterTabIndex] = useState(0);\n\n  const dispatch = useDispatch();\n\n  const history = useHistory();\n\n  const { filterDates } = TimeFilter;\n\n  const location = useLocation();\n  const labObject = useSelector(selectLab);\n\n  const initialRender = useInitialRender();\n  const appContext = useContext(AppContext);\n\n  // const searchTerms = CONFIG.isWhiteLabel\n  //   ? [\n  //       \"First Name\",\n  //       \"Last Name\",\n  //       \"Date of Birth\",\n  //       \"Email\",\n  //       \"Phone\",\n  //       `${stringConstant.show}`,\n  //       \"Status\",\n  //       \"Result\",\n  //       \"Test Type\",\n  //       `${stringConstant.sequenceNo}`,\n  //       \"Tester\",\n  //       \"Result Sent\",\n  //       \"Submitted to H&S\",\n  //       \"Referring Physician\",\n  //       \"Arkstone Status\",\n  //       \"Release Status\",\n  //     ]\n  //   : [\n  //       \"First Name\",\n  //       \"Last Name\",\n  //       \"Date of Birth\",\n  //       \"Email\",\n  //       \"Phone\",\n  //       \"Client\",\n  //       `site_name`,\n  //       \"Lab\",\n  //       \"Status\",\n  //       \"Result\",\n  //       \"Test Type\",\n  //       `${stringConstant.sequenceNo}`,\n  //       \"Tester\",\n  //       \"Result Sent\",\n  //       \"isVaccinated\",\n  //       \"White Glove\",\n  //       \"Pattern\",\n  //       \"Capacity\",\n  //       \"Arkstone Status\",\n  //       \"Release Status\",\n  //     ];\n\n  // const searchTerms = useMemo(() => {\n  //   return COMPLETED_RESULT_PERSONALIZE.map((item) => item.title);\n  // }, [COMPLETED_RESULT_PERSONALIZE]);\n\n  const selectedItem = CONFIG.isWhiteLabel\n    ? [\n        \"resultDate\",\n        \"firstName\",\n        \"lastName\",\n        \"dob\",\n        \"email\",\n        \"phoneNumber\",\n        \"siteID\",\n        \"result\",\n        \"test_type\",\n        `${stringConstant.accession_no}`,\n        \"emailSend\",\n      ]\n    : [\n        \"createdAt\",\n        \"firstName\",\n        \"lastName\",\n        \"dob\",\n        \"email\",\n        \"phoneNumber\",\n        \"clientID\",\n        \"siteID\",\n        \"labID\",\n        \"result\",\n        \"test_type\",\n        `${stringConstant.accession_no}`,\n        \"tester_name\",\n        \"emailSend\",\n        \"barcode\",\n        \"isVaccinated\",\n        \"employeeType\",\n        \"whiteGlove\",\n        \"patternTestAnswer\",\n      ];\n\n  const createMoreInfo = (type, id) => {\n    let infoObj = null;\n    if (type === \"site\") infoObj = appContext.sites.find((site) => site.id === id);\n    else if (type === \"client\") infoObj = appContext.clients.find((client) => client.id === id);\n    else infoObj = labs.find((lab) => lab.id === id);\n    if (!infoObj) return;\n    setMoreInfo({\n      type,\n      name: infoObj.name,\n      contact: infoObj.contact_name,\n      phone: infoObj.contact_phone || infoObj.phone_number,\n      email: infoObj.contact_email,\n    });\n    setModalShow(true);\n  };\n\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter, page, sortBy, sortDescending) => {\n      loadTestFromPG(filter, timeFilter, page, sortBy, sortDescending);\n    }, 800),\n    []\n  );\n\n  const defaultConfig = useMemo(() => {\n    return getClientSpecificString();\n  }, []);\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  // const showDocumentPreview = async (test) => {\n  //   setIsPreviewModalOpen(true);\n  //   const result = await Storage.get(`results/${env}/${test?.clientID}/${test?.barcode}.pdf`, {\n  //     bucket: \"employee-external-tests\",\n  //     download: false,\n  //     contentDisposition: \"inline\",\n  //     Bucket: \"employee-external-tests\",\n  //     contentType: \"application/pdf\",\n  //   });\n\n  //   setFileUrl(result);\n  //   setFileType(\"pdf\");\n  // };\n\n  const showResultPdfLocal = async (test) => {\n    handleSaveFilter();\n    const testDetails = await API.getTestByID(test.id, \"test\");\n    const t = testDetails;\n    const formatedData = formatTest(t);\n    if (testDetails?.arkstoneID) {\n      setDocName(formatedData.name);\n      await showDocumentPreview(test);\n      return;\n    }\n\n    setTestPdf(formatedData);\n    t.empID = testDetails?.employee?.schrID || `BRM-002-${testDetails?.employee?.mdID}` || id;\n    setTestsLab(t.lab);\n    setShowPdf(true);\n  };\n\n  const displayPdf = async (test) => {\n    dispatch(showResultPdf(test));\n    // if (test.labID === LAB_ID.alta) {\n    //   dispatch(showResultPdf(test));\n    // } else if (test.labID === LAB_ID.discovery || isLocalhost()) {\n    //   await showResultPdfLocal(test);\n    // } else {\n    //   await showResultPdfLocal(test);\n    // }\n  };\n\n  const flipSort = (by) => {\n    setSortDescending(sortBy === by ? !sortDescending : true);\n    setSortBy(by);\n  };\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      loadTestFromPG(Object.keys(filter).length === 0 ? { id: 1 } : filter, timeFilter);\n    }\n  }, [pageNo]);\n\n  useEffect(() => {\n    setLabs(appContext.labs);\n  }, [appContext.labs]);\n\n  useEffect(() => {\n    const savedFilters = appContext.testFilter;\n    if (savedFilters && savedFilters.location === \"alltests\") {\n      if (Object.keys(savedFilters.filter).length > 0) {\n        setFilter(savedFilters.filter);\n        setShowFilter(true);\n      }\n      if (Object.keys(savedFilters.timeFilter).length > 0) {\n        setTimeFilter(savedFilters.timeFilter);\n      }\n    }\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.alltests.sortBy) {\n      setSortDescending(sortingFilters.alltests.sortDescending);\n      setSortBy(sortingFilters.alltests.sortBy);\n    }\n\n    const personalizeData = personalisationInLC.get(PERSONALISATION_KEY.COMPLETED_TEST);\n\n    const searchTermData = personalizeData.map((item) => item.title);\n\n    setSearchTerms(searchTermData);\n    setPersonalize(personalizeData);\n  }, []);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"alltests\"] = {\n      filter,\n      timeFilter,\n      sortBy,\n      sortDescending,\n    };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredTests.length === 0) return;\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (location.state) {\n      if (location.state.term === \"Lab\") setLabs(location.state.models);\n\n      setShowFilter(true);\n\n      let filterTerm = location.state.term;\n      let filterTermName = location.state.name;\n\n      if (filterTerm === \"Show\") {\n        const obj = location.state.models.find((c) => c.name === filterTermName);\n        if (obj) {\n          filterTerm = \"ShowID\";\n          filterTermName = obj.id;\n        }\n      }\n\n      if (location.state.positiveTests) {\n        let resultValue = \"positive\";\n        if (filterTerm === \"Client\") {\n          const obj = location.state.models.find((c) => c.name === filterTermName);\n          if (obj && obj.resultType === \"P/F\") resultValue = \"fail\";\n        }\n        setFilter({\n          ...filter,\n          [filterTerm]: filterTermName,\n          result: \"positive\",\n        });\n      } else if (location.state.negativeTests) {\n        let resultValue = \"negative\";\n        if (filterTerm === \"Client\") {\n          const obj = location.state.models.find((c) => c.name === filterTermName);\n          if (obj && obj.resultType === \"P/F\") resultValue = \"pass\";\n        }\n        setFilter({\n          ...filter,\n          [filterTerm]: filterTermName,\n          result: resultValue,\n        });\n      } else {\n        setFilter({ ...filter, [filterTerm]: filterTermName });\n      }\n      setTriggerFilter(true);\n      setTimeout(() => setShowFilter(false), 1);\n    }\n  }, [location.state]);\n\n  useEffect(() => {\n    if (initialRender) return;\n\n    if (appContext.testObject && appContext.testObject !== 0) {\n      const eventType = appContext.testObject.opType;\n      const model = formatTest(appContext.testObject.element);\n\n      if (eventType === \"DELETE\" || !model.resultDateTime || model.isArchive) {\n        refreshTestList(tests.filter((t) => t.id !== model.id));\n        if (totalRecord > 0) setTotalRecord(totalRecord - 1);\n        return;\n      }\n\n      const newList = [...filteredTests];\n      if (eventType === \"INSERT\") {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        if (index !== -1) {\n          newList.splice(index, 1, model);\n        } else {\n          newList.unshift(model);\n        }\n      }\n\n      const testAfterFilter = filterDates(nestedFilter([...newList], filter), timeFilter);\n      if (filteredTests.length < testAfterFilter.length) {\n        setTotalRecord(totalRecord + 1);\n      }\n      refreshTestList(testAfterFilter);\n      // setTests(testAfterFilter);\n    }\n  }, [appContext.testObject]);\n\n  const updateAcknowledgeBy = async () => {\n    const positiveTests = filteredTests\n      .filter((c) => checkboxes.includes(c.id) && c.result === \"Positive\" && !c.isReview)\n      .map((m) => ({\n        id: m.id,\n        userID: appContext.user?.sub,\n        userName: appContext.user?.name,\n      }));\n    try {\n      setLoading(true);\n      await API.acknowledgedPositiveTest(positiveTests);\n      appContext.showSuccessMessage(`${positiveTests.length} Test(s) Verified Successfully`);\n      setCheckboxes([]);\n      setLoading(false);\n    } catch (err) {\n      console.log(\"err\", err);\n    }\n  };\n\n  useEffect(() => {\n    fetchFromApi({ ...filter }, { ...timeFilter }, 1, sortBy, sortDescending);\n  }, [filter, triggerFilter, timeFilter, sortBy, sortDescending]);\n\n  const formatFilters = (params, dateFilter, page, orderBy, orderByDirection) => {\n    const filterParam = params;\n    Object.assign(filterParam, { page: pageNo, status: \"Processed\" });\n\n    if (dateFilter) {\n      const { start, end } = dateFilter;\n      if (start)\n        Object.assign(filterParam, {\n          startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString(),\n        });\n      if (end)\n        Object.assign(filterParam, {\n          endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString(),\n        });\n    }\n\n    if (orderBy) {\n      Object.assign(filterParam, { orderBy, orderByDirection });\n    }\n    return filterParam;\n  };\n\n  const loadTestFromPG = async (params, dateFilter, page, orderBy, orderByDirection) => {\n    setLoading(true);\n\n    const filterParam = formatFilters(params, dateFilter, page, orderBy, orderByDirection);\n\n    const pgList = await API.getTestListFromPG(filterParam);\n    setLoading(false);\n\n    if (pgList && !customIsEmpty(pgList)) {\n      const ttlTests = tests?.concat(pgList?.rows?.map((t) => formatTest(t)));\n      if (pageNo === 1) {\n        setTotalRecord(pgList.total);\n      }\n      setTests(ttlTests);\n      refreshTestList(ttlTests);\n    }\n  };\n\n  const handleExportCalrediePatient = async () => {\n    try {\n      setLoading(true);\n\n      const resFilePathc = await API.exportToCalRedieData({\n        date: moment().format(\"YYMMDD\"),\n        ids: checkboxes,\n      });\n\n      const resut = await Storage.get(`csvfile/${resFilePathc}`, {\n        bucket: \"employee-external-tests\",\n      });\n\n      const response = await fetch(resut);\n\n      const blob = await response.blob();\n\n      if (blob.size === 0) {\n        appContext.showErrorMessage(\"No Pending Data For Submit to Calredie\");\n        setLoading(false);\n        return;\n      }\n      saveAs(blob, `${labObject.name}_${resFilePathc}`);\n\n      // if (checkboxes.length === 0) {\n      //   const resFilePathc = await API.exportToCalRedieData({\n      //     date: moment().format(\"YYMMDD\"),\n      //   });\n\n      //   const resut = await Storage.get(`csvfile/${resFilePathc}`, {\n      //     bucket: \"employee-external-tests\",\n      //   });\n\n      //   const response = await fetch(resut);\n\n      //   const blob = await response.blob();\n\n      //   if (blob.size === 0) {\n      //     appContext.showErrorMessage(\"No Pending Data For Submit to Calredie\");\n      //     setLoading(false);\n      //     return;\n      //   }\n      //   saveAs(blob, `${labObject.name}_${resFilePathc}`);\n      // } else {\n      //   let tests = filteredTests.filter((f) => f.result && checkboxes.includes(f.id));\n\n      //   const uniqueSites = [...new Set(tests.map((test) => test.siteID))];\n      //   const siteToProviderMap = {};\n\n      //   if (uniqueSites.length > 0) {\n      //     const promiseArray = uniqueSites.map(async (siteID) => {\n      //       const defaultProvider = await API.getDefaultProvider(siteID);\n      //       siteToProviderMap[siteID] = defaultProvider;\n      //     });\n      //     await Promise.allSettled(promiseArray);\n      //   }\n\n      //   tests = filteredTests.filter((f) => {\n      //     const demo = JSON.parse(f.employee_demographics || \"{}\");\n      //     const ins = (demo.insurance_name || \"\").toLowerCase();\n      //     // return f.result && checkboxes.includes(f.id) && !(ins.includes(\"medicare\") || ins.includes(\"medicaid\"));\n      //     return f.result && checkboxes.includes(f.id);\n      //   });\n      //   if (tests.length === 0) {\n      //     appContext.showErrorMessage(\"All tests results Already Submitted!\");\n      //     setLoading(false);\n      //     return;\n      //   }\n\n      //   const results = exportToCalRedie(tests, labObject, siteToProviderMap);\n      //   downloadDataAsCSV(results, `${labObject.name}_${moment().toISOString()}`);\n      // }\n      setCheckboxes([]);\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error:-\", err);\n      setLoading(false);\n    }\n  };\n\n  const handleUploadLogs = () => {\n    setOpenUploadLogsModal(true);\n  };\n\n  const afterDeletedTest = (testList) => {\n    const tmpList = filteredTests.filter((t) => testList.findIndex((f) => f.id === t.id) === -1);\n    setFilteredTests(tmpList);\n    setTotalRecord(totalRecord - testList.length);\n    setCheckboxes([]);\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n        if (key === \"Lab\") {\n          return obj.labID && appContext.getLabName(obj.labID).toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"Show\") {\n          const siteIds = appContext.sites\n            .filter((s) => s.name.toLowerCase().includes(filters[key].toLowerCase()))\n            .map((s) => s.id);\n          return siteIds.includes(obj.siteID);\n        }\n        if (key === \"ShowID\") {\n          return obj.siteID === filters[key];\n        }\n        if (key === \"Client\") {\n          return (\n            obj.clientID && appContext.getClientName(obj.clientID).toLowerCase().includes(filters[key].toLowerCase())\n          );\n        }\n        if (key === \"result\") {\n          return obj[key] && obj[\"viewedResult\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n        if (key === \"emailSend\") {\n          return obj.emailSend !== null && obj.emailSend == filters[key];\n        }\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    return models;\n  };\n\n  const refreshTestList = (list) => {\n    // if (sortBy) {\n    //   setFilteredTests(\n    //     sortTestList(\n    //       sortBy,\n    //       sortDescending,\n    //       list,\n    //       appContext.getSiteName,\n    //       appContext.getLabName,\n    //       appContext.getClientName,\n    //       appContext.parseResult\n    //     )\n    //   );\n    // } else {\n    //   setFilteredTests(list);\n    // }\n    setFilteredTests(list);\n  };\n\n  const handleDeleteConfirm = async (isConfirm) => {\n    setOpenDeleteConfirmation(false);\n    if (!isConfirm) {\n      return;\n    }\n    if (Object.keys(itemToDelete).length > 0) {\n      await API.deleteWrongTest(itemToDelete.id);\n      setItemToDelete({});\n    }\n  };\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({\n      location: \"alltests\",\n      filter,\n      timeFilter,\n      sortBy,\n      sortDescending,\n    });\n  };\n\n  const handleCheckboxChange = (e, row) => {\n    const filteredList = checkboxes.filter((c) => c !== row.id);\n    if (e.target.checked) {\n      filteredList.push(row.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? filteredTests.map((t) => t.id) : []);\n\n  const handleConfirmation = async () => {\n    setOpenConfirmation(false);\n    const updateSelectedTestResult = tests.filter((test) => checkboxes.includes(test.id));\n    const ttlTest = updateSelectedTestResult.length;\n    if (!ttlTest) {\n      return;\n    }\n    setLoading(true);\n\n    try {\n      if (!loading) setLoading(true);\n      const testList = updateSelectedTestResult.map((t) => {\n        return {\n          id: t.id,\n          sequenceNo: t.sequenceNo,\n          userName: appContext.user.name,\n        };\n      });\n      await GQAPI.unResultTests(testList);\n      setFilteredTests(filteredTests.filter((test) => !checkboxes.includes(test.id)));\n      setTotalRecord(totalRecord - ttlTest);\n      appContext.showSuccessMessage(`${ttlTest} test${ttlTest === 1 ? \"\" : \"s\"} has been ${UN_RESULT} successfully`);\n    } catch (err) {\n      console.log(\"Error\", err);\n      appContext.showErrorMessage(`Fail to ${UN_RESULT} the Test`);\n    }\n    setLoading(false);\n    setCheckboxes([]);\n  };\n\n  const clearSelection = () => {\n    setAllSelected(false);\n    setCheckboxes([]);\n    setLoading(false);\n  };\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filteredTests.length;\n    if (direction === \"next\" && page === totalPages && totalRecord > 0 && currentRecord < totalRecord) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  const handleCloseContactInfo = () => {\n    setMoreInfo({});\n    setModalShow(false);\n  };\n\n  const handleSendEmail = async () => {\n    const selectedTest = filteredTests.filter((test) => checkboxes.includes(test.id));\n    if (!selectedTest.length) {\n      return;\n    }\n    const params = selectedTest.map((t) => {\n      return {\n        id: t.id,\n        sequenceNo: t.sequenceNo,\n      };\n    });\n    await appContext.sendEmailToCrew(params, \"Email\");\n  };\n\n  const downloadFiles = async ({ type }) => {\n    try {\n      await appContext.downloadRequisition({\n        allSelected,\n        filter: { ...filter, status: \"Processed\" },\n        timeFilter,\n        checkboxes,\n        filteredTests,\n        type,\n      });\n    } catch (error) {\n      console.log(\"error\", error);\n      appContext.showErrorMessage(\"Fail to downlaod\");\n    }\n  };\n  const handleExportLabGen = async () => {\n    await appContext.sendToLab(filteredTests, checkboxes);\n    setCheckboxes([]);\n  };\n  const handleExportBilling = async () => {\n    try {\n      setLoading(true);\n      const data = await API.formatBioBillingCSV(filteredTests);\n\n      await downloadDataAsCSV(data, `billing_dept_${moment().format(\"MM_DD_YYYY\")}.csv`);\n      setLoading(false);\n    } catch (e) {\n      setLoading(false);\n      appContext.showSuccessMessage(`Fail to download the file`);\n    }\n  };\n\n  const handleShowResultModal = () => {\n    const selectedTests = tests.filter((test) => checkboxes.includes(test.id));\n\n    // if (CONFIG.clientID === BIO_LAB_ID) {\n    //   dispatch(setSimpleResultModal({ showSimpleModal: true, simpleTestList: selectedTests }));\n    //   setCheckboxes([]);\n    //   return;\n    // }\n    if (selectedTests.length !== 1) return;\n\n    if (selectedTests[0].sendToName) {\n      dispatch(setTestForResult(selectedTests[0]));\n    } else {\n      dispatch(setSelectedTestForResult(selectedTests));\n    }\n\n    setCheckboxes([]);\n  };\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n    const personalisationData = personalisationInLC.saveAs(data, PERSONALISATION_KEY.COMPLETED_TEST);\n    setOpenPersonalizationModal(false);\n    await API.saveUserPersonalisation(appContext.user.sub, personalisationData);\n  };\n\n  const customRenderTD = (item, test) => {\n    const { itemKey } = item;\n    const testId = test?.id;\n\n    if (itemKey === \"result\") {\n      return <ResultCell test={test} appContext={appContext} displayPdf={displayPdf} key={`result_${testId}`} />;\n    }\n    if (itemKey === \"firstName\") {\n      return (\n        <td className=\"table-column ellipsis\" title={capitalizeLetter(getValidName(test.firstName))}>\n          <RedirectLink pathname=\"order\" value={{ name: test.orderID, term: \"id\" }}>\n            {capitalizeLetter(getValidName(test.firstName))}\n          </RedirectLink>\n        </td>\n      );\n    }\n    if (itemKey === \"barcode\") {\n      return (\n        <SequenceNo\n          num={CONFIG.isWhiteLabel ? test.barcode : test.sequenceNo}\n          test={test}\n          showLogs={appContext.showLogs}\n        />\n      );\n    }\n\n    if (itemKey === \"site_name\") {\n      return (\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          <a\n            style={{ color: \"#42cef5\" }}\n            onClick={() => createMoreInfo(\"site\", test.siteID)}\n            onMouseOver={(e) => (e.target.style.cursor = \"pointer\")}\n            title={formattedString(test.site_name)}\n          >\n            {formattedString(test.site_name)}\n          </a>\n        </td>\n      );\n    }\n\n    if (itemKey === \"batch\") {\n      return (\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {test.batch ? (\n            <div className=\"star-icon-wrapper\">\n              <Status type=\"circle\" size=\"md\" color={\"green\"} tickIcon />\n            </div>\n          ) : (\n            <div className=\"star-icon-wrapper\">\n              <Status type=\"circle\" size=\"md\" color={\"maroon\"} crossIcon />\n            </div>\n          )}\n        </td>\n      );\n    }\n    if (itemKey === \"releaseStatus\") {\n      return (\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {test.releaseStatus === \"Pending\" ? (\n            <div className=\"star-icon-wrapper\">\n              <Status type=\"circle\" size=\"md\" color={\"maroon\"} crossIcon />\n            </div>\n          ) : (\n            <div className=\"star-icon-wrapper\">\n              <Status type=\"circle\" size=\"md\" color={\"green\"} tickIcon />\n            </div>\n          )}\n        </td>\n      );\n    }\n    if (itemKey === \"isSendToExternalClient\") {\n      let isSendToExternalClient = test.isSendToExternalClient;\n\n      return (\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <div className=\"star-icon-wrapper\">\n            <Status\n              type=\"circle\"\n              size=\"md\"\n              color={isSendToExternalClient ? \"green\" : \"maroon\"}\n              crossIcon={isSendToExternalClient === false}\n              tickIcon={isSendToExternalClient === true}\n            />\n          </div>\n        </td>\n      );\n    }\n\n    if (itemKey === \"emailSend\") {\n      return (\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {test?.emailSend ? (\n            <div className=\"star-icon-wrapper\">\n              <Status type=\"circle\" size=\"md\" color={\"green\"} tickIcon />\n            </div>\n          ) : (\n            <div className=\"star-icon-wrapper\">\n              <Status type=\"circle\" size=\"md\" color={\"maroon\"} crossIcon />\n            </div>\n          )}\n        </td>\n      );\n    }\n    if (itemKey === \"arkstoneStatus\") {\n      return (\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {test.arkstoneStatus === \"Processed\" ? (\n            <div className=\"star-icon-wrapper\">\n              <Status type=\"circle\" size=\"md\" color={\"green\"} title={test.arkstoneStatus} tickIcon />\n            </div>\n          ) : test.arkstoneStatus === \"Pending\" ? (\n            <div className=\"star-icon-wrapper\">\n              <Status type=\"circle\" size=\"md\" title={test.arkstoneStatus} color={\"maroon\"} crossIcon />\n            </div>\n          ) : (\n            <></>\n          )}\n        </td>\n      );\n    }\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n      default:\n        break;\n    }\n  };\n\n  const handleReleaseTest = async () => {\n    if (checkboxes.length === 0) return;\n\n    try {\n      dispatch(setLoader(true));\n      const selectedTests = filteredTests.filter((test) => checkboxes.includes(test.id));\n\n      const testsToReceive = selectedTests.map((t) => ({\n        id: t.id,\n        barcode: t.barcode,\n        userID: appContext?.user?.sub,\n        userName: appContext?.user?.name,\n      }));\n\n      const fileName = `${moment().format(\"DD_MM_YYYY_HH_mm_ss\")}_auto_release_${CONFIG.envType}.csv`;\n\n      await API.saveFileSendToLab(fileName, testsToReceive);\n      const message = `${testsToReceive.length} Tests has been released sucessfully`;\n\n      dispatch(setLoader(false));\n      dispatch(setMessage(message, MESSAGE_MODES.success));\n    } catch (ex) {\n      console.log(\"Ex\", ex);\n      dispatch(setLoader(false));\n      dispatch(setMessage(\"Fail to Received the Tests\", MESSAGE_MODES.error));\n    }\n    setCheckboxes([]);\n  };\n\n  const exportPersonalize = useMemo(() => {\n    const selectedItems = [...personalize.filter((m) => m.isCheck && m.itemKey !== \"details\").map((m) => m.itemKey)];\n\n    // Find the index of \"Test Date\" in personalize\n    const testDateIndex = personalize.findIndex((m) => m.title === \"Test Date\");\n    // If \"Test Date\" is checked, insert \"testDate\" at the correct index\n    if (testDateIndex !== -1 && personalize[testDateIndex].isCheck) {\n      selectedItems.splice(testDateIndex, 0, \"testDate\");\n    }\n    return selectedItems;\n  }, [personalize]);\n\n  const addCustomFilter = (items) => items.concat(COMPLETED_RESULT_CUSTOM_COLUMN);\n\n  return showPdf ? (\n    <PDFLayout setShowPdf={setShowPdf} testPdf={testPdf} testsLab={testsLab} />\n  ) : (\n    <>\n      <Container fluid>\n        <div className=\"shows-screen-parent\">\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"border-0 mb-1\">\n                <Card.Body className=\"p-0\">\n                  <div className=\"shows-filter-wrapper\">\n                    <div className=\"shows-filter-inner\">\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                      {/* Date Range */}\n                      <FilterSelect setTimeFilter={setTimeFilter} />\n                      <Icon\n                        handleClick={async () => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                          //  await API.invoicesPDF();\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n\n                      <Icon\n                        handleClick={() => setOpenPersonalizationModal(true)}\n                        title={\"Edit Column\"}\n                        label={\"Edit Column\"}\n                        iconType={\"personalizeIcon\"}\n                      />\n\n                      {isAllowToArchive(appContext.user?.phone_number) && permission?.test?.archiveTest && (\n                        <Icon\n                          handleClick={() =>\n                            appContext.openDeleteConfirmation(\n                              filteredTests.filter((f) => checkboxes.includes(f.id)),\n                              afterDeletedTest\n                            )\n                          }\n                          title={\"Archive\"}\n                          label={\"Archive\"}\n                          iconType={\"binIcon\"}\n                          disabled={checkboxes.length === 0}\n                        />\n                      )}\n                      <ExportToExcelData\n                        items={filteredTests}\n                        selectedItem={exportPersonalize}\n                        appContext={appContext}\n                        filter={{ ...filter, status: \"Processed\" }}\n                        timeFilter={timeFilter}\n                        title=\"Completed Tests\"\n                        sortBy={sortBy}\n                        setLoading={setLoading}\n                        isCompletedTests\n                      />\n\n                      {permission?.test?.editTest === true && (\n                        <Icon\n                          handleClick={handleShowResultModal}\n                          title={\"Edit Results\"}\n                          label={\"Edit Results\"}\n                          iconType={\"resultsIcon\"}\n                          disabled={checkboxes.length !== 1}\n                        />\n                      )}\n\n                      {!CONFIG.lifeCarePrimaryPharmacy && (\n                        <>\n                          <Icon\n                            handleClick={handleExportCalrediePatient}\n                            title={\"Export to Calredie\"}\n                            label=\"Export to H&S\"\n                            iconType={\"XLSIcon\"}\n                          />\n                          <Icon\n                            handleClick={handleUploadLogs}\n                            title={\"H&S Logs\"}\n                            label=\"H&S Logs\"\n                            iconType={\"importIcon\"}\n                          />\n                        </>\n                      )}\n                      {ADMIN_USER.includes(appContext.user?.phone_number) && (\n                        <>\n                          <Icon\n                            handleClick={handleExportLabGen}\n                            title={\"Send to Lab\"}\n                            label={\"Send to Lab\"}\n                            iconType={\"resultsIcon\"}\n                            disabled={checkboxes.length === 0}\n                          />\n\n                          {/* <Icon\n                            handleClick={handleExportBilling}\n                            title={\"Ex. Billing CSV\"}\n                            label={\"Ex. Billing CSV\"}\n                            iconType={\"resultsIcon\"}\n                            disabled={filteredTests.length === 0}\n                          /> */}\n                        </>\n                      )}\n\n                      {(appContext.user[\"custom:role\"] === \"Admins\" || CONFIG.isWhiteLabel) &&\n                        permission?.test?.finalizeSendResult === true && (\n                          <Icon\n                            handleClick={handleSendEmail}\n                            disabled={checkboxes.length ? false : true}\n                            title={\"Send Results\"}\n                            label={\"Send Results\"}\n                            iconType={\"messageIcon\"}\n                          />\n                        )}\n\n                      {filteredTests.length > 0 && !CONFIG.isWhiteLabel && (\n                        <>\n                          {Object.keys(filter).length > 0 && (\n                            <>\n                              <TestPDFLayout\n                                tests={filteredTests}\n                                selectedItem={selectedItem}\n                                filter={filter}\n                                timeFilter={timeFilter}\n                                title=\"Completed Tests\"\n                                appContext={appContext}\n                              />\n                            </>\n                          )}\n                        </>\n                      )}\n\n                      {appContext.user.phone_number == \"+12222222222\" && (\n                        <Icon\n                          handleClick={() => setOpenConfirmation(true)}\n                          disabled={checkboxes.length ? false : true}\n                          title={`${UN_RESULT} Test`}\n                          label={`${UN_RESULT} Test`}\n                          iconType={\"resultsIcon\"}\n                        />\n                      )}\n                      {!CONFIG.lifeCarePrimaryPharmacy && (\n                        <Icon\n                          handleClick={() => updateAcknowledgeBy()}\n                          title={\"Verified Positive\"}\n                          disabled={\n                            filteredTests.filter(\n                              (c) => checkboxes.includes(c.id) && c.result === \"Positive\" && !c.isReview\n                            ).length === 0\n                          }\n                          label={defaultConfig.isTestCreationFromEmployee ? \"Ver Abnormal\" : \"Ver Pos\"}\n                          iconType={\"acknowledgedPositiveIcon\"}\n                        />\n                      )}\n                      <Icon\n                        handleClick={() => downloadFiles({ type: \"rq\" })}\n                        title={\"Req Forms\"}\n                        label=\"Req Forms\"\n                        iconType={\"dw_Icon\"}\n                      />\n                      <Icon\n                        handleClick={() => downloadFiles({ type: \"re\" })}\n                        title={\"Results\"}\n                        label=\"Results\"\n                        iconType={\"dw_Icon\"}\n                      />\n                      {permission?.test?.finalizeSendResult === true && (\n                        <Icon\n                          handleClick={handleReleaseTest}\n                          disabled={checkboxes.length === 0}\n                          title={\"Release Result\"}\n                          label={\"Release Result\"}\n                          iconType={\"importIcon\"}\n                        />\n                      )}\n\n                      {(isLocalhost() ||\n                        appContext.user.phone_number == \"+18888888888\" ||\n                        appContext.user.phone_number == \"+18185730434\") && (\n                        <Icon\n                          handleClick={async () => {\n                            dispatch(setLoader(true));\n                            await API.resendToARKStone(checkboxes[0]);\n                            dispatch(setLoader(false));\n                            dispatch(setMessage(\"Sucessfully resend to Arkstone\", MESSAGE_MODES.success));\n                          }}\n                          disabled={checkboxes.length !== 1}\n                          title={\"Resend ARK\"}\n                          label={\"Resend ARK\"}\n                          iconType={\"importIcon\"}\n                        />\n                      )}\n                      <Icon\n                        iconType={\"reportIcon\"}\n                        handleClick={() => setReportModalOpen(true)}\n                        label={\"Report\"}\n                        title={\"Report\"}\n                      />\n                    </div>\n                  </div>\n\n                  {showFilter && (\n                    <Filter\n                      filterTerms={searchTerms}\n                      setFilter={setFilter}\n                      filter={filter}\n                      triggerFilter={triggerFilter}\n                      setTriggerFilter={setTriggerFilter}\n                      personalisationData={addCustomFilter(personalize)}\n                      isGrouped={true}\n                      filterTabIndex={filterTabIndex}\n                      setFilterTabIndex={(value) => setFilterTabIndex(value)}\n                      filterTab=\"completedResult\"\n                    />\n                  )}\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n          <Row className=\"mx-0\">\n            <Col md=\"12\">\n              <Card className=\"strpied-tabled-with-hover bg-transparent border-0\">\n                <Card.Header className=\"shows-screen-wrapper\">\n                  <Row className=\"pb-4\">\n                    <Col md-=\"6\">\n                      <Card.Title>\n                        <div className=\"\">\n                          Completed Tests:\n                          <span className=\"ps-2\"> {totalRecord}</span>\n                        </div>\n                      </Card.Title>\n                    </Col>\n                    <Col md=\"6\">\n                      <PGPagination\n                        timeFilter={timeFilter}\n                        currentPage={currentPage}\n                        handleChangePage={handleChangePage}\n                        totalPages={totalPages}\n                        totalRecord={totalRecord}\n                        currentRecord={filteredTests.length}\n                        showSelectedRecord\n                        totalSelected={checkboxes.length}\n                      />\n                    </Col>\n                  </Row>\n                </Card.Header>\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll mt-0 pt-0\">\n                  <MainTable\n                    columns={personalize}\n                    rows={testsToMap}\n                    draggable\n                    resizable\n                    cssClass=\"table-noresponsive\"\n                    trDataWrapperHeader={\"trDataWrapperHeader\"}\n                    personalisationKey={\"completedtest\"}\n                    handleSaveDragAndResize={(personalizeArr) => setPersonalize(personalizeArr)}\n                    widthToSkip={155}\n                    customColumnCellRenderer={customRenderTD}\n                    selectedRows={checkboxes}\n                    tools={[TABLE_QUICK_TOOLS.checkbox]}\n                    flipSort={flipSort}\n                    sortBy={sortBy}\n                    sortDescending={sortDescending}\n                    handleCellClick={handleCellClick}\n                    dropDownOptions={[\n                      { value: \"Logs\", title: \"Audit Trail\" },\n                      { value: \"View\", title: \"View\" },\n                    ]}\n                    handleDropDownClick={(type, row) => {\n                      if (type === \"Audit Trail\") {\n                        appContext.showLogs({ ...row });\n                      }\n                      if (type === \"View\") {\n                        handleSaveFilter();\n                        history.push({\n                          pathname: \"/admin/test/\" + row.id,\n                          state: { admin: true, type: \"allTest\", test: row },\n                        });\n                      }\n                    }}\n                  />\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      </Container>\n\n      <ContactInfo show={modalShow} moreInfo={moreInfo} handleClose={handleCloseContactInfo} />\n      {openDeleteConfirmation && (\n        <ConfirmationModal\n          show={openDeleteConfirmation}\n          title=\"Delete User\"\n          message={`Are you sure, you want to remove Test of ${itemToDelete.name}?`}\n          handleConfirm={handleDeleteConfirm}\n        />\n      )}\n\n      {openPersonalizationModal && (\n        <PersonalizationModal\n          data={personalize}\n          handleChange={handlePersonalization}\n          show={openPersonalizationModal}\n          handleClose={() => setOpenPersonalizationModal(false)}\n        />\n      )}\n\n      {showResultModal && (\n        <ChangeResultModal\n          handleClose={() => setShowResultModal(false)}\n          appContext={appContext}\n          tests={filteredTests.filter((test) => checkboxes.includes(test.id))}\n          callback={clearSelection}\n          processed={true}\n        />\n      )}\n\n      {openUploadLogsModal && (\n        <CalRedieLogsModal\n          handleClose={() => setOpenUploadLogsModal(false)}\n          user={appContext.user}\n          appContext={appContext}\n        />\n      )}\n      {openConfirmation && (\n        <ConfirmationModal\n          show={openConfirmation}\n          title={`${UN_RESULT} Tests`}\n          message={`Are you sure, you want to ${UN_RESULT} the Tests`}\n          handleConfirm={handleConfirmation}\n        />\n      )}\n      {reportModalOpen && <ReportDataModal appContext={appContext} handleClose={() => setReportModalOpen(false)} />}\n      <DocumentPreviewModal\n        isModalOpen={isPreviewModalOpen}\n        setIsModalOpen={setIsPreviewModalOpen}\n        fileUrl={fileUrl}\n        fileType={fileType}\n        title={`Test Results - ${docName ? docName : \"\"}`}\n      />\n      {loading && <Loader />}\n    </>\n  );\n};\n\nexport default TestListAdminApi;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\n\nimport Test from \"views/Test\";\nimport ClientsView from \"views/GraphQL/ClientsView\";\nimport LabsView from \"views/GraphQL/LabsView\";\nimport SitesViewOld from \"views/GraphQL/SiteViewOld\";\nimport Hipaa from \"views/Hipaa\";\nimport PendingReleaseTestListView from \"views/GraphQL/PendingReleaseTestListView\";\nimport ExternalTest from \"views/ExternalTest\";\nimport EmailStatusTestList from \"views/EmailStatusTestList\";\nimport Typography from \"views/Typography.js\";\nimport Icons from \"views/Icons.js\";\nimport Maps from \"views/Maps.js\";\nimport Notifications from \"views/Notifications.js\";\nimport Upgrade from \"views/Upgrade.js\";\nimport UsersView from \"views/GraphQL/UsersView\";\nimport User from \"views/Users\";\nimport Crews from \"views/Crews\";\nimport ClientTests from \"views/ClientTests\";\nimport UnprocessedTestsApi from \"views/GraphQL/UnprocessedTestsApi\";\n// import TestTypesSetting from \"views/TestTypeSetting/TestTypesSetting\";\nimport LabTestTypesSetting from \"views/TestTypeSetting/LabTestTypesSetting\";\nimport AdminTotalTestApi from \"views/GraphQL/AdminTotalTestApi\";\n\n\nimport ExpiredTestApi from \"views/GraphQL/ExpiredTestsApi\";\nimport DeleteTestApi from \"views/GraphQL/DeleteTestApi\";\nimport ExternalTestCrew from \"views/ExternelTestCrew\";\nimport settingIcon from \"../assets/img/settings-garage.png\";\nimport CrewProfile from \"components/CrewProfile\";\nimport PreRegistrationView from \"views/PreRegistrationView\";\nimport GenericPreRegistration from \"views/GenericPreRegistration\";\nimport EmployeeListing from \"views/EmployeeListing\";\nimport InvalidTestListView from \"views/GraphQL/InvalidTestListView\";\nimport MainCrewLogs from \"views/MainCrewLogs\";\nimport ProfilesView from \"views/GraphQL/ProfilesView\";\nimport ProfileEmployeeTest from \"views/ProfileEmployeeTest\";\nimport SitesView from \"views/GraphQL/SitesView\";\nimport TestListAdminApi from \"views/GraphQL/TestListCompletedTest/TestListAdminApi\";\n\nconst dashboardRoutes = [\n  {\n    path: \"/pendingrelease\",\n    name: \"Pending Release\",\n    icon: \"nc-icon nc-notes\",\n    component: PendingReleaseTestListView,\n    layout: \"/admin\",\n  },\n  // {\n  //   path: \"/inconclusivetests\",\n  //   name: \"Inconclusive\",\n  //   icon: \"nc-icon nc-notes\",\n  //   component: InvalidTestListView,\n  //   layout: \"/admin\",\n  // },\n  {\n    path: \"/unprocessedtests\",\n    name: \"Unprocessed Tests\",\n    icon: \"nc-icon nc-notes\",\n    component: UnprocessedTestsApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/senttest\",\n    name: \"Waiting Results\",\n    icon: \"nc-icon nc-notes\",\n    component: UnprocessedTestsApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/alltests\",\n    name: \"Completed Tests\",\n    icon: \"nc-icon nc-check-2\",\n    component: TestListAdminApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/totaltests\",\n    name: \"All Tests\",\n    icon: \"nc-icon nc-check-2\",\n    component: AdminTotalTestApi,\n    layout: \"/admin\",\n  },\n  // {\n  //   path: \"/expiredtests\",\n  //   name: \"Expired Tests\",\n  //   icon: \"nc-icon nc-check-2\",\n  //   component: ExpiredTestApi,\n  //   layout: \"/admin\",\n  // },\n  {\n    path: \"/deletedtests\",\n    name: \"Deleted Tests\",\n    icon: \"nc-icon nc-check-2\",\n    component: DeleteTestApi,\n    layout: \"/admin\",\n  },\n  /*  {\n    path: \"/emailstatus\",\n    name: \"Email Status\",\n    icon: \"nc-icon nc-check-2\",\n    component: EmailStatusTestList,\n    layout: \"/admin\",\n  }, */\n  // {\n  //   path: \"/externaltests\",\n  //   name: \"External / Vacc Admit\",\n  //   icon: \"nc-icon nc-circle-09\",\n  //   component: ExternalTest,\n  //   layout: \"/admin\",\n  // },\n  {\n    path: \"/preregistration\",\n    name: \"Pre Registration\",\n    icon: \"nc-icon nc-atom\",\n    component: PreRegistrationView,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/genericpreregistration\",\n    name: \"Generic Pre-Reg\",\n    icon: \"nc-icon nc-atom\",\n    component: GenericPreRegistration,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/test/:testId\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: Test,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/employee/:employeeId\",\n    name: \"Profile Employee Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: ProfileEmployeeTest,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/externaltest/:testId\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: ExternalTestCrew,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/crewprofile/:empId\",\n    name: \"CrewProfile\",\n    icon: \"nc-icon nc-circle-09\",\n    component: CrewProfile,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/users\",\n    name: \"System User\",\n    icon: \"nc-icon nc-badge\",\n    component: UsersView,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/profiles\",\n    name: \"Crew Profiles\",\n    icon: \"nc-icon nc-badge\",\n    component: ProfilesView,\n    layout: \"/admin\",\n  },\n\n  // {\n  //   path: \"/crews\",\n  //   name: \"Crew\",\n  //   icon: \"nc-icon nc-badge\",\n  //   component: Crews,\n  //   layout: \"/admin\",\n  // },\n  //{\n  //   path: \"/crewstest\",\n  //   name: \"Main Crew Info\",\n  //   icon: \"nc-icon nc-badge\",\n  //   component: MainCrewLogs,\n  //   layout: \"/admin\",\n  // },\n  // {\n  //   path: \"/employees\",\n  //   name: \"Employee\",\n  //   icon: \"nc-icon nc-badge\",\n  //   component: EmployeeListing,\n  //   layout: \"/admin\",\n  // },\n  {\n    path: \"/clients\",\n    name: \"Clients\",\n    icon: \"nc-icon nc-circle-09\",\n    component: ClientsView,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/clients/:clientId/tests\",\n    name: \"ClientTests\",\n    icon: \"nc-icon nc-circle-09\",\n    component: ClientTests,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/shows\",\n    name: \"Shows\",\n    icon: \"nc-icon nc-tv-2\",\n    // component: SitesViewOld,\n    component: SitesView,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/labs\",\n    name: \"Labs\",\n    icon: \"nc-icon nc-atom\",\n    src: settingIcon,\n    component: LabsView,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/testtypes\",\n    name: \"Settings\",\n    icon: \"nc-icon nc-notes\",\n    component: LabTestTypesSetting,\n    layout: \"/admin\",\n  },\n  // {\n  //   path: \"/hipaa\",\n  //   name: \"HIPAA\",\n  //   icon: \"nc-icon nc-paper-2\",\n  //   component: Hipaa,\n  //   layout: \"/admin\",\n  // }\n];\n\nexport default dashboardRoutes;\n","import React, { useState, useContext, useMemo, useRef, useCallback } from \"react\";\n\n// react-bootstrap components\nimport { Badge, Button, Card, Table, Container, Row, Col, Form } from \"react-bootstrap\";\nimport { DataStore } from \"@aws-amplify/datastore\";\nimport { Storage } from \"aws-amplify\";\nimport { Test } from \"models\";\nimport { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport API from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\n\nimport { Link } from \"react-router-dom\";\nimport { CSVLink } from \"react-csv\";\nimport { Importer, ImporterField } from \"react-csv-importer\";\nimport \"react-csv-importer/dist/index.css\";\nimport api from \"api\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { AppContext } from \"context/app-context\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport FilterSelect from \"components/FilterSelect\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport { PAGE_LIMIT, TEST_STATUS, RESULT_VALUE } from \"constant\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport moment from \"moment\";\nimport {\n  formatTest,\n  changeSort,\n  getDemoGraphics,\n  setPhoneNo,\n  formatPhoneNumber,\n  calculateTdWidth,\n  sortingFilterInLC,\n  formatUTCDate,\n  sortTestList,\n  connectedIDInLocalStorage,\n} from \"utils\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport { CSVReader, jsonToCSV } from \"react-papaparse\";\nimport { debounce } from \"debounce\";\nimport { useInitialRender } from \"components/useInitialRender\";\nimport Loader from \"../../components/Loader/Loader\";\nimport Icon from \"components/Icon\";\n\nfunction TableListApi(props) {\n  const componentRef = useRef();\n  const mainWidth = useRef();\n  const [width, setWidth] = useState(0);\n  const [openConfirmation, setOpenConfirmation] = useState(false);\n\n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  useEffect(() => handleResize(), [mainWidth]);\n\n  const tdWidth = calculateTdWidth(width - 130, 10);\n  const importResult = [];\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [tests, setTests] = useState([]);\n  const [testDownloadModel, setTestDownloadModel] = useState([]);\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [adminsPhones, setAdminsPhones] = useState([]);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [importLength, setImportLength] = useState();\n  const [loading, setLoading] = useState(false);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [allSelected, setAllSelected] = useState(false);\n  const [pageNo, setPageNo] = useState(1);\n  const { filterDates } = TimeFilter;\n  const appContext = useContext(AppContext);\n  const location = useLocation();\n  const initialRender = useInitialRender();\n\n  const isProcessingCall = location.pathname.includes(\"processing\") ? true : false;\n  const searchTerms = [\n    \"First Name\",\n    \"Last Name\",\n    \"Date of Birth\",\n    \"Email\",\n    \"Phone\",\n    \"Show\",\n    \"Tester\",\n    \"Accession No\",\n    \"isVaccinated\",\n    \"White Glove\",\n    \"Pattern\",\n    \"Capacity\",\n  ];\n  const selectedItem = [\n    \"createdAt\",\n    \"firstName\",\n    \"lastName\",\n    \"email\",\n    \"dob\",\n    \"phoneNumber\",\n    \"site_name\",\n    \"status\",\n    \"test_type\",\n    \"accession_no\",\n    \"tester_name\",\n    \"isVaccinated\",\n    \"employeeType\",\n    \"whiteGlove\",\n    \"patternTestAnswer\",\n  ];\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter) => {\n      loadTestFromPG(filter, timeFilter);\n    }, 800),\n    []\n  );\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  const formatTestAsPerLab = (items) => {\n    if (appContext.userLab && items.length > 0) {\n      const lab = appContext.userLab;\n      const [formattedTests] = API.formatTests(lab, items);\n      setTestDownloadModel(formattedTests);\n    }\n  };\n\n  const handleCheckboxChange = (e, id) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n    const filterTest = tests.filter((test) => filteredList.includes(test.id));\n    formatTestAsPerLab(filterTest.length === 0 ? tests : filterTest);\n  };\n\n  const toggleCheckboxes = (val) => {\n    setCheckboxes(val ? filteredTests.map((t) => t.id) : []);\n    formatTestAsPerLab(filteredTests.length === 0 ? tests : filteredTests);\n  };\n\n  const updateTestResult = async (result) => {\n    const updateSelectedTestResult = filteredTests.filter((test) => checkboxes.includes(test.id));\n    const ttlTest = updateSelectedTestResult.length;\n    if (!ttlTest) return;\n    setLoading(true);\n    try {\n      const params = updateSelectedTestResult.map((t) => {\n        return {\n          id: t.id,\n          result: RESULT_VALUE[result.toLowerCase()],\n          status: result === \"positive\" ? \"Pending\" : \"Processed\",\n          timerStatus: result === \"positive\" ? \"Pending\" : \"Processed\",\n          resultDateTime: moment().utc().toISOString(),\n          resultDate: moment().utc().format(\"YYYY-MM-DD\"),\n          StampBy: appContext.user.sub,\n          StampByName: appContext.user.name,\n          sequenceNo: t.sequenceNo,\n        };\n      });\n      await GQAPI.updateTestResult(params);\n      appContext.showSuccessMessage(`${ttlTest} test${ttlTest === 1 ? \"\" : \"s\"} has been resulted ${result}`);\n      const newList = tests.filter((t) => !checkboxes.includes(t.id));\n      setTests(newList);\n      refreshTestList(newList);\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n    }\n    setCheckboxes([]);\n  };\n  const handleConfirm = async (isConfirm) => {\n    setOpenConfirmation(false);\n    if (!isConfirm) {\n      return;\n    }\n    updateTestResult(\"positive\");\n  };\n  const handleOnError = (err) => {\n    appContext.showErrorMessage(err.message);\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n  };\n\n  const handleCSVOnDrop = async (csvData) => {\n    try {\n      setLoading(true);\n      const fileName = `portal/${moment().utc().format(\"YYYY_MM_DD\")}_${appContext.userLabName.replace(\n        /(:|\\s+)/g,\n        \"_\"\n      )}_${appContext.user.name.replace(/(:|\\s+)/g, \"_\")}.csv`;\n      const val = csvData.map((csv) => csv.data);\n      const csv = jsonToCSV(val);\n      await Storage.put(fileName, csv, { bucket: \"results-from-labs\" });\n\n      const updatedId = [];\n      const params = [];\n      let ttlRecord = csvData.length;\n      console.log(\"csv data\", csvData);\n      setModalShow(false);\n      for (let index = 0; index < ttlRecord; index++) {\n        const { data } = csvData[index];\n        const row = { ...data };\n        let id = row.id || row.accession_number || row.barcode;\n\n        if (id && updatedId.indexOf(id) === -1) {\n          const test = await api.findTestByBarcode(id);\n          console.log(\"Test\", test);\n          if (test && row.result) {\n            let result = row.result.toLowerCase();\n            if (\n              result === \"positive\" ||\n              result === \"negative\" ||\n              result === \"detected\" ||\n              result === \"not detected\" ||\n              result === \"notdetected\" ||\n              result === \"inconclusive\"\n            ) {\n              if (result === \"detected\") result = \"positive\";\n              else if (result === \"not detected\" || result === \"notdetected\") result = \"negative\";\n              updatedId.push(id);\n              try {\n                params.push({\n                  id: test.id,\n                  result: RESULT_VALUE[result],\n                  status: result === \"positive\" || result === \"fail\" ? \"Pending\" : \"Processed\",\n                  timerStatus: result === \"positive\" || result === \"fail\" ? \"Pending\" : \"Processed\",\n                  resultDateTime: moment().utc().toISOString(),\n                  resultDate: moment().utc().format(\"YYYY-MM-DD\"),\n                  StampBy: appContext.user.sub,\n                  StampByName: appContext.user.name,\n                  sequenceNo: test.sequenceNo,\n                });\n              } catch (err) {\n                console.log(err);\n              }\n            }\n          }\n        }\n      }\n      console.log(\"params\", params);\n      if (params.length > 0) {\n        await GQAPI.updateTestResult(params);\n      }\n\n      const ids = params.map((t) => t.id);\n      const newList = tests.filter((t) => ids.indexOf(t.id) === -1);\n      setTests(newList);\n      refreshTestList(newList);\n\n      if (ttlRecord > 0) {\n        setImportLength(updatedId.length);\n        setShowAlert(true);\n      }\n    } catch (err) {\n      console.log(\"Err\", err);\n      setLoading(false);\n    }\n    setLoading(false);\n  };\n\n  const filterTests = (searchTerm, searchInput) => {\n    let newTerm;\n    switch (searchTerm) {\n      case \"date_created\":\n        newTerm = \"createdAt\";\n        break;\n      case \"crew_id\":\n        newTerm = \"employeeID\";\n        break;\n      case \"show\":\n        newTerm = \"site_name\";\n        break;\n      default:\n        newTerm = searchTerm;\n    }\n    return setFilteredTests(tests.filter((test) => test[newTerm].includes(searchInput)));\n  };\n\n  useEffect(() => {\n    const savedFilters = appContext.testFilter;\n\n    if (\n      savedFilters &&\n      ((isProcessingCall && savedFilters.location === \"processing\") ||\n        (!isProcessingCall && savedFilters.location === \"tests\"))\n    ) {\n      if (Object.keys(savedFilters.filter).length > 0) {\n        setFilter(savedFilters.filter);\n        setShowFilter(true);\n      }\n    }\n    const sortingFilters = sortingFilterInLC.get();\n    if (isProcessingCall && sortingFilters.processing.sortBy) {\n      setSortDescending(sortingFilters.processing.sortDescending);\n      setSortBy(sortingFilters.processing.sortBy);\n    } else if (sortingFilters.tests.sortBy) {\n      setSortDescending(sortingFilters.tests.sortDescending);\n      setSortBy(sortingFilters.tests.sortBy);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (initialRender) return;\n    if (appContext.eventObject && appContext.eventObject !== 0) {\n      const eventType = appContext.eventObject.opType;\n      const model = formatTest(appContext.eventObject.element);\n      let isRelevantTest = false;\n\n      if (!isProcessingCall && model.status === TEST_STATUS.New) {\n        isRelevantTest = true;\n      } else if (isProcessingCall && (model.status === TEST_STATUS.processing || model.status === TEST_STATUS.Sent)) {\n        isRelevantTest = true;\n      }\n      const newList = [...filteredTests];\n      if (eventType === \"INSERT\" && isRelevantTest) {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        if (index !== -1) {\n          if (isRelevantTest) {\n            newList.splice(index, 1, model);\n          } else {\n            newList.splice(index, 1);\n          }\n        }\n      }\n      const testAfterFilter = filterDates(nestedFilter([...newList], filter), timeFilter);\n      if (filteredTests.length < testAfterFilter.length && eventType === \"INSERT\" && isRelevantTest) {\n        setTotalRecord(totalRecord + 1);\n      } else if (filteredTests.length > testAfterFilter.length) {\n        setTotalRecord(totalRecord - 1);\n      }\n      refreshTestList(testAfterFilter);\n    }\n  }, [appContext.eventObject]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[isProcessingCall ? \"processing\" : \"tests\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredTests.length === 0) return;\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredTests,\n      setFilteredTests,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    fetchFromApi({ ...filter }, { ...timeFilter }, 1);\n  }, [filter, timeFilter]);\n\n  const loadTestFromPG = async (params, dateFilter) => {\n    setLoading(true);\n    const filterParam = params;\n    const connectedID = connectedIDInLocalStorage.get() || \"A\";\n    Object.assign(filterParam, { page: pageNo, limit: 2000, labID: connectedID, result: \"empty\", test_type: [\"PCR\"] });\n\n    if (dateFilter) {\n      const { start, end } = dateFilter;\n      if (start)\n        Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n      if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n    }\n    const pgList = await API.getTestListFromPG(filterParam);\n    setLoading(false);\n    const ttlTests = tests.concat(pgList.rows.map((t) => formatTest(t)));\n\n    const filterData = isProcessingCall\n      ? ttlTests.filter((t) => t.status === TEST_STATUS.Processing || t.status === TEST_STATUS.Sent)\n      : ttlTests.filter((t) => t.status === TEST_STATUS.New);\n\n    if (pageNo === 1) {\n      setTotalRecord(filterData);\n    }\n    setTests(filterData);\n    refreshTestList(filterData);\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n        if (key === \"Show\") {\n          return obj.site_name && obj.site_name.toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n        if (key === \"referenceID\") {\n          return obj[key] && obj[\"referenceID\"].toString().includes(filters[key]);\n        }\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    // console.log(\"FROM NESTED FILTER\", models);\n    return models;\n  };\n\n  const refreshTestList = (list) => {\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredTests(list);\n    }\n  };\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filteredTests.length;\n    if (direction === \"next\" && page === totalPages && totalRecord > 0 && currentRecord < totalRecord) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: isProcessingCall ? \"processing\" : \"tests\", filter, timeFilter });\n  };\n  function TableRow({ item }) {\n    return (\n      <tr>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\", width: \"50px\", maxWidth: \"50px\", minWidth: \"50px\" }}>\n          <Form.Check>\n            <Form.Check.Input\n              type=\"checkbox\"\n              value={item.id}\n              checked={checkboxes.indexOf(item.id) !== -1}\n              onChange={(e) => handleCheckboxChange(e, item.id)}\n            ></Form.Check.Input>\n          </Form.Check>\n        </td>\n        <td className=\"ellipsis\">{formatUTCDate(item.createdAt)}</td>\n        <td className=\"ellipsis\" title={item.firstName}>\n          {item.firstName}\n        </td>\n        <td className=\"ellipsis\" title={item.lastName}>\n          {item.lastName}\n        </td>\n        <td className=\"ellipsis\" title={item.dob}>\n          {item.dob}\n        </td>\n        <td\n          className=\"table-column ellipsis\"\n          style={{\n            textDecoration: \"underline\",\n            color: \"#A82632\",\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => test?.email && window.open(`mailto:${item.email}`)}\n          title={item.email}\n        >\n          {item.email}\n        </td>\n        <td\n          className=\"table-column ellipsis\"\n          style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => {\n            item.phoneNumber && window.open(`tel:${item.phoneNumber}`);\n          }}\n          title={item.phoneNumber && formatPhoneNumber(item.phoneNumber)}\n        >\n          {item.phoneNumber && formatPhoneNumber(item.phoneNumber)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={item.site_name}>\n          {item.site_name}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={item.status}>\n          {item.status}\n        </td>\n\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={item.test_type}>\n          {item.test_type}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={item.barcode}>\n          {item.barcode}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={item.tester_name}>\n          {item.tester_name}\n        </td>\n        <td>\n          <Link\n            onClick={handleSaveFilter}\n            to={{\n              pathname: \"/admin/test/\" + item.id,\n              state: { labPortal: true },\n            }}\n          >\n            View\n          </Link>\n        </td>\n\n        {/* <td>\n          <DropdownButton id=\"dropdown-basic-button\" title=\"Update Result\">\n            <Dropdown.Item href=\"#/action-1\">Positive</Dropdown.Item>\n            <Dropdown.Item href=\"#/action-2\">Negative</Dropdown.Item>\n          </DropdownButton>\n        </td> */}\n      </tr>\n    );\n  }\n\n  const [showAlert, setShowAlert] = useState(false);\n  const hideAlert = () => {\n    setShowAlert(false);\n    if (importResult > 0) setTimeout(() => appContext.resetNewTests(), 1500);\n  };\n\n  const handleCSVClick = async () => {\n    if (testDownloadModel.length === 0) return;\n    if (isProcessingCall) return;\n\n    try {\n      setLoading(true);\n      const testList = filteredTests.filter(\n        (test) => (test.status === \"Sent\" || test.status === \"New\") && checkboxes.includes(test.id)\n      );\n      const params = testList.map((t) => {\n        return {\n          id: t.id,\n          status: \"Processing\",\n          sequenceNo: t.sequenceNo,\n        };\n      });\n      await GQAPI.updateStatusByLab(params);\n      setCheckboxes([]);\n      const newList = filteredTests.filter((test) => !checkboxes.includes(test.id));\n      setTests(newList);\n      refreshTestList(newList);\n    } catch (error) {\n      appContext.showErrorMessage(\"Fail to download the tests\");\n      console.log(\"[LAB_UPDATE_STATUS] Fail to update the status\", error);\n    }\n    setLoading(false);\n  };\n\n  return (\n    <>\n      {!loading ? (\n        <Container fluid>\n          {importLength > 0 ? (\n            <SweetAlert\n              show={showAlert}\n              success\n              title=\"Success\"\n              onConfirm={() => {\n                hideAlert();\n              }}\n            >\n              Success! Uploaded {importLength} Test Result\n              {importLength > 1 && \"s\"}\n            </SweetAlert>\n          ) : (\n            <SweetAlert\n              show={showAlert}\n              error\n              title=\"Error\"\n              onConfirm={() => {\n                hideAlert();\n              }}\n            >\n              Fail to upload test result\n            </SweetAlert>\n          )}\n          {openConfirmation && (\n            <ConfirmationModal\n              show={openConfirmation}\n              title=\"Result Positive\"\n              message=\"Are you sure, to result positive ?\"\n              handleConfirm={handleConfirm}\n            />\n          )}\n          <div className=\"topHeaderButtons\">\n            <Col></Col>\n            <Col></Col>\n          </div>\n\n          <Row>\n            <Col md=\"12\">\n              {modalShow && (\n                <CSVReader\n                  onDrop={handleCSVOnDrop}\n                  onError={handleOnError}\n                  addRemoveButton\n                  config={{\n                    header: true,\n                    skipEmptyLines: true,\n                  }}\n                  onRemoveFile={handleOnRemoveFile}\n                >\n                  <span>Drop CSV file here or click to upload.</span>\n                </CSVReader>\n              )}\n            </Col>\n          </Row>\n          <Row>\n            <Col md=\"12\">\n              <Card className=\"strpied-tabled-with-hover\">\n                <Card.Header>\n                  <Card.Title\n                    as=\"h4\"\n                    style={{\n                      marginBottom: 10,\n                      fontWeight: \"bold\",\n                      color: \"#565656\",\n                    }}\n                  >\n                    {isProcessingCall ? \"Tests Processing\" : \"New Tests\"} ({filteredTests.length})\n                  </Card.Title>\n\n                  {!isProcessingCall && (\n                    <p className=\"card-category\" style={{ marginBottom: 15 }}>\n                      Download CSV file, Add a \"result\" column, then upload file to send results\n                    </p>\n                  )}\n                  <div className=\"buttonHeader\">\n                    {/* <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                      Filter\n                    </Button> */}\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                        {/* Date Range */}\n                        <FilterSelect setTimeFilter={setTimeFilter} />\n                    {/* <Button\n                      className=\"headerButton\"\n                      onClick={() => {\n                        if (filteredTests.length > 0) {\n                          setAllSelected(!allSelected);\n                          toggleCheckboxes(!allSelected);\n                        }\n                      }}\n                    >\n                      {!allSelected ? \"Select All\" : \"Deselect All\"}\n                    </Button> */}\n                  \n                        <Icon\n                        handleClick={async () => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n                    {isProcessingCall && appContext.userLab && (\n                      <Button className=\"headerButton labDownloadTest\" disabled={checkboxes.length === 0}>\n                        <CSVLink\n                          className=\"headerButton downloadTest\"\n                          onClick={handleCSVClick}\n                          filename={\"newBatch.csv\"}\n                          data={testDownloadModel}\n                        >\n                          Results File\n                        </CSVLink>\n                      </Button>\n                    )}\n                    {!isProcessingCall ? (\n                      <>\n                        <Button className=\"headerButton labDownloadTest\" disabled={checkboxes.length === 0}>\n                          <CSVLink\n                            className=\"headerButton downloadTest\"\n                            onClick={handleCSVClick}\n                            filename={\"newBatch.csv\"}\n                            data={testDownloadModel}\n                          >\n                            Download New Tests\n                          </CSVLink>\n                        </Button>\n                      </>\n                    ) : (\n                      <>\n                        <Button\n                          className=\"headerButton\"\n                          onClick={() => {\n                            setModalShow(!modalShow);\n                            // props.history.push('/admin/processedtable')\n                          }}\n                        >\n                          Upload Results\n                        </Button>\n                        {/* <Button\n                          className=\"headerButton\"\n                          disabled={checkboxes.length === 0}\n                          onClick={() => setOpenConfirmation(true)}\n                        >\n                          Set Positive\n                        </Button> */}\n                        {/* <Button\n                          className=\"headerButton\"\n                          disabled={checkboxes.length === 0}\n                          onClick={() => updateTestResult(\"negative\")}\n                        >\n                          Set Negative\n                        </Button> */}\n                        {/* <Button\n                          className=\"headerButton\"\n                          disabled={checkboxes.length === 0}\n                          onClick={() => updateTestResult(\"inconclusive\")}\n                        >\n                          Set Inconclusive\n                        </Button> */}\n                         <Icon\n                            disabled={checkboxes.length === 0}\n                            handleClick={() => setOpenConfirmation(true)}\n                            title={\"Set Positive\"}\n                            label={\"Positive\"}\n                            iconType={\"acknowledgedPositiveIcon\"}\n                          />\n                          <Icon\n                            disabled={checkboxes.length === 0}\n                            handleClick={() => updateTestResult(\"negative\")}\n                            title={\"Set Negative\"}\n                            label={\"Negative\"}\n                            iconType={\"minusIcon\"}\n                          />\n                          <Icon\n                            disabled={checkboxes.length === 0}\n                            handleClick={() => updateTestResult(\"Inconclusive\")}\n                            title={\"Set Inconclusive\"}\n                            label={\"Inconclusive\"}\n                            iconType={\"checkEligibilityIcon\"}\n                          />\n\n                      </>\n                    )}\n\n                    {filteredTests.length > 0 && (\n                      <>\n                        {Object.keys(filter).length > 0 && (\n                          <>\n                            <ExportToExcel\n                              items={filteredTests}\n                              appContext={appContext}\n                              selectedItem={selectedItem}\n                              filter={filter}\n                              timeFilter={timeFilter}\n                              title={isProcessingCall ? \"Tests Processing\" : \"New Tests\"}\n                              sortBy={sortBy}\n                            />\n                            <TestPDFLayout\n                              tests={filteredTests}\n                              filter={filter}\n                              timeFilter={timeFilter}\n                              selectedItem={selectedItem}\n                              title={isProcessingCall ? \"Tests Processing\" : \"New Tests\"}\n                              appContext={appContext}\n                              sortBy={sortBy}\n                            />\n                          </>\n                        )}\n                      </>\n                    )}\n                  </div>\n\n                  {showFilter && (\n                    <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} isUsersTable={false} />\n                  )}\n\n                  <MFPagination\n                    currentPage={currentPage}\n                    handleChangePage={handleChangePage}\n                    totalPages={totalPages}\n                    showSelectedRecord\n                    totalSelected={checkboxes.length}\n                  />\n                </Card.Header>\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                  <div className=\"table-responsive pendingReleaseTable\">\n                    <Table className=\"table-hover table-striped\">\n                      <thead ref={componentRef}>\n                        <tr>\n                          <th></th>\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"createdAt\"\n                            title=\"Date Collected\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"firstName\"\n                            title=\"First Name\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"lastName\"\n                            title=\"Last Name\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"dob\"\n                            title=\"DoB\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"email\"\n                            title=\"Email\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"phoneNumber\"\n                            title=\"Phone\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"site_name\"\n                            title=\"Show\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"status\"\n                            title=\"Status\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"test_type\"\n                            title=\"Test Type\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            showFilter={false}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"barcode\"\n                            title=\"Accession No\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"tester_name\"\n                            title=\"Tester \"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          {\n                            <th\n                              className=\"border-0 text-grey\"\n                              style={{ fontWeight: \"bold\", width: \"80px\", maxWidth: \"80px\" }}\n                            >\n                              Actions\n                            </th>\n                          }\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {testsToMap &&\n                          testsToMap.map((test) => {\n                            return <TableRow key={test.id} item={test} />;\n                          })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </Container>\n      ) : (\n        <Loader />\n      )}\n    </>\n  );\n}\n\nexport default TableListApi;\n","import React, { useState, useMemo, useRef, useCallback } from \"react\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport { PAGE_LIMIT, MESSAGE_TYPE, RESULT_COLOR, RESULT_VALUE } from \"constant\";\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n  DropdownButton,\n  Dropdown,\n  Modal,\n  Form,\n} from \"react-bootstrap\";\nimport { DataStore } from \"@aws-amplify/datastore\";\nimport { Test } from \"models\";\nimport { useEffect, useContext } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { CSVLink } from \"react-csv\";\nimport { Importer, ImporterField } from \"react-csv-importer\";\nimport \"react-csv-importer/dist/index.css\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport FilterSelect from \"components/FilterSelect\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport { AppContext } from \"context/app-context\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport {\n  changeSort,\n  getCrewsName,\n  formatTest,\n  setPhoneNo,\n  formatPhoneNumber,\n  calculateTdWidth,\n  sortingFilterInLC,\n  formatUTCDate,\n  sortTestList,\n  connectedIDInLocalStorage,\n} from \"utils\";\nimport ExportToExcelData from \"components/ExportToExcelData\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport ChangeResultModal from \"components/Modal/ChangeResultModal\";\nimport { debounce } from \"debounce\";\nimport moment from \"moment\";\nimport Loader from \"components/Loader/Loader\";\nimport Icon from \"components/Icon\";\n\nfunction ProcessedTestListApi() {\n  const componentRef = useRef();\n  const mainWidth = useRef();\n  const [width, setWidth] = useState(0);\n\n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  useEffect(() => handleResize(), [mainWidth]);\n\n  const tdWidth = calculateTdWidth(width - 130, 12);\n\n  const appContext = useContext(AppContext);\n  const importResult = [];\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [tests, setTests] = useState([]);\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({ status: \"Processed\", labID: connectedIDInLocalStorage.get() || \"A\" });\n  const [loading, setLoading] = useState(false);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [showResultModal, setShowResultModal] = useState(false);\n  const [pageNo, setPageNo] = useState(1);\n\n  const searchTerms = [\n    \"First Name\",\n    \"Last Name\",\n    \"Date of Birth\",\n    \"Email\",\n    \"Phone\",\n    \"Show\",\n    \"Result\",\n    \"Test Type\",\n    \"Accession No\",\n    \"Tester\",\n    \"isVaccinated\",\n    \"White Glove\",\n    \"Pattern\",\n    \"Capacity\",\n  ];\n\n  const selectedItem = [\n    \"createdAt\",\n    \"updatedAt\",\n    \"firstName\",\n    \"lastName\",\n    \"dob\",\n    \"email\",\n    \"phoneNumber\",\n    \"site_name\",\n    \"status\",\n    \"result\",\n    \"test_type\",\n    \"referenceID\",\n    \"tester_name\",\n    \"isVaccinated\",\n    \"capacity\",\n    \"whiteGlove\",\n    \"patternTestAnswer\",\n  ];\n\n  const { filterDates } = TimeFilter;\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  const filterTests = (searchTerm, searchInput) => {\n    let newTerm;\n    switch (searchTerm) {\n      case \"date_created\":\n        newTerm = \"createdAt\";\n        break;\n      case \"date_updated\":\n        newTerm = \"updatedAt\";\n        break;\n      case \"crew_id\":\n        newTerm = \"employeeID\";\n        break;\n      case \"show\":\n        newTerm = \"site_name\";\n        break;\n      default:\n        newTerm = searchTerm;\n    }\n    return setFilteredTests(tests.filter((test) => test[newTerm].includes(searchInput)));\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n\n        if (key === \"Show\") {\n          return obj.site_name && obj.site_name.toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"result\") {\n          return obj[key] && obj[\"viewedResult\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n        if (key === \"referenceID\") {\n          return obj[key] && obj[\"referenceID\"].toString().includes(filters[key]);\n        }\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    // console.log(\"FROM NESTED FILTER\", models);\n    return models;\n  };\n\n  useEffect(() => {\n    if (appContext.testFilter && appContext.testFilter.location === \"processedtests\") {\n      setFilter(appContext.testFilter.filter);\n      setShowFilter(true);\n    }\n    loadPrevSorting();\n    setLoading(true);\n  }, []);\n\n  useEffect(() => {\n    if (appContext.eventObject && appContext.eventObject !== 0) {\n      const eventType = appContext.eventObject.opType;\n      const model = formatTest(appContext.eventObject.element);\n\n      if (model.status !== \"Processed\" && model.test_type !== \"PCR\") return;\n      const newList = [...filteredTests];\n\n      if (eventType === \"INSERT\") {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        if (index !== -1) {\n          newList.splice(index, 1, model);\n        } else {\n          newList.unshift(model);\n        }\n      }\n      const testAfterFilter = filterDates(nestedFilter([...newList], filter), timeFilter);\n      if (filteredTests.length < testAfterFilter.length) {\n        setTotalRecord(totalRecord + 1);\n      }\n      refreshTestList(testAfterFilter);\n    }\n  }, [appContext.eventObject]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"processedtests\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredTests.length === 0) return;\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    fetchFromApi({ ...filter }, { ...timeFilter }, 1, sortBy, sortDescending);\n  }, [filter, timeFilter, sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      loadTestFromPG(Object.keys(filter).length === 0 ? { id: 1 } : filter, timeFilter, pageNo, sortBy, sortDescending);\n    }\n  }, [pageNo]);\n\n  const loadPrevSorting = () => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.processedtests.sortBy) {\n      setSortDescending(sortingFilters.processedtests.sortDescending);\n      setSortBy(sortingFilters.processedtests.sortBy);\n    }\n  };\n\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter, page, sortBy, sortDescending) => {\n      loadTestFromPG(filter, timeFilter, page, sortBy, sortDescending);\n    }, 800),\n    []\n  );\n\n  const loadTestFromPG = async (params, dateFilter, page, orderBy, orderByDirection) => {\n    setLoading(true);\n    try {\n      const filterParam = params;\n      const connectedID = connectedIDInLocalStorage.get() || \"A\";\n      Object.assign(filterParam, { page: page, status: \"Processed\", labID: connectedID });\n\n      if (dateFilter) {\n        const { start, end } = dateFilter;\n        if (start)\n          Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n        if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n      }\n      if (orderBy) {\n        Object.assign(filterParam, { orderBy, orderByDirection });\n      }\n      const pgList = await GQAPI.getTestListFromPG(filterParam);\n      setLoading(false);\n      const ttlTests = tests.concat(pgList.rows.map((t) => formatTest(t)));\n      if (pageNo === 1) {\n        setTotalRecord(pgList.total);\n      }\n      setTests(ttlTests);\n      refreshTestList(ttlTests);\n    } catch (err) {\n      setLoading(false);\n    }\n  };\n\n  const refreshTestList = (list) => {\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredTests(list);\n    }\n  };\n\n  const displayPdf = async (test) => {\n    handleSaveFilter();\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: \"processedtests\", filter, timeFilter });\n  };\n\n  const handleCheckboxChange = (e, id) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? filteredTests.map((t) => t.id) : []);\n\n  const handleSendEmail = async () => {\n    const selectedTest = filteredTests.filter((test) => checkboxes.includes(test.id));\n    if (!selectedTest.length) {\n      return;\n    }\n    const params = selectedTest.map((t) => {\n      return {\n        id: t.id,\n        sequenceNo: t.sequenceNo,\n      };\n    });\n    const ttlEmails = params.length;\n    appContext.showSuccessMessage(`Email has been successfully sent to ${ttlEmails} Patient ${ttlEmails > 1 ? \"s\" : \"\"}`);\n    setCheckboxes([]);\n    await GQAPI.sendEmailToPendingRelease(params);\n  };\n\n  const updateTestResult = async (result) => {\n    const updateSelectedTestResult = filteredTests.filter((test) => checkboxes.indexOf(test.id) !== -1);\n    console.log(\"Checkbox\", updateSelectedTestResult);\n    const ttlTest = updateSelectedTestResult.length;\n    if (!ttlTest) {\n      return;\n    }\n    setLoading(true);\n\n    try {\n      if (!loading) setLoading(true);\n\n      const params = updateSelectedTestResult.map((t) => {\n        return {\n          id: t.id,\n          result: RESULT_VALUE[result.toLowerCase()],\n          status: result === \"positive\" ? \"Pending\" : \"Processed\",\n          timerStatus: result === \"positive\" ? \"Pending\" : \"Processed\",\n          resultDateTime: moment().utc().toISOString(),\n          resultDate: moment().utc().format(\"YYYY-MM-DD\"),\n          StampBy: appContext.user.sub,\n          StampByName: appContext.user.name,\n          sequenceNo: t.sequenceNo,\n        };\n      });\n      await GQAPI.updateTestResult(params);\n      appContext.showSuccessMessage(`${ttlTest} test${ttlTest === 1 ? \"\" : \"s\"} has been resulted ${result}`);\n\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Err\", err);\n    }\n    setCheckboxes([]);\n  };\n\n  function TableRow({ test }) {\n    return (\n      <tr>\n        <td className=\"ellipsis\" style={{ textAlign: \"left\", width: \"50px\", maxWidth: \"50px\", mainWidth: \"50px\" }}>\n          <Form.Check>\n            <Form.Check.Input\n              type=\"checkbox\"\n              value={test.id}\n              checked={checkboxes.indexOf(test.id) !== -1}\n              onChange={(e) => handleCheckboxChange(e, test.id)}\n            ></Form.Check.Input>\n          </Form.Check>\n        </td>\n        <td className=\"ellipsis\">{formatUTCDate(test.createdAt)}</td>\n        <td className=\"ellipsis\">{formatUTCDate(test.updatedAt)}</td>\n        <td className=\"ellipsis\" title={test.firstName}>\n          {test.firstName}\n        </td>\n        <td className=\"ellipsis\" title={test.lastName}>\n          {test.lastName}\n        </td>\n        <td className=\"ellipsis\" title={test.dob}>\n          {test.dob}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{\n            textDecoration: \"underline\",\n            color: \"#A82632\",\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => test?.email && window.open(`mailto:${test.email}`)}\n          title={test.email}\n        >\n          {test.email}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => {\n            test.phoneNumber && window.open(`tel:${test.phoneNumber}`);\n          }}\n          title={test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        >\n          {test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.site_name}>\n          {test.site_name}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.status}>\n          {test.status}\n        </td>\n\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={appContext.parseResult(test)}>\n          <span\n            onMouseOver={(e) => {\n              e.target.style.cursor = \"pointer\";\n              e.target.style.textDecoration = \"none\";\n            }}\n            onClick={() => displayPdf(test)}\n            style={{\n              color: RESULT_COLOR[test.result?.toLowerCase()],\n              textDecoration: \"underline\",\n            }}\n          >\n            {appContext.parseResult(test)}\n          </span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.test_type}>\n          {test.test_type}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.barcode}>\n          {test.barcode}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.tester_name}>\n          {test.tester_name}\n        </td>\n        <td>\n          <Link\n            onClick={handleSaveFilter}\n            to={{\n              pathname: \"/admin/test/\" + test.id,\n              state: { labPortal: true },\n            }}\n          >\n            View\n          </Link>\n        </td>\n      </tr>\n    );\n  }\n\n  const handleChangePage = (page) => setCurrentPage(page);\n\n  return showPdf ? (\n    <PDFLayout setShowPdf={setShowPdf} testPdf={testPdf} testsLab={testsLab} />\n  ) : (\n    <>\n      <Container fluid>\n        <Row>\n          <Col md=\"12\">\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Processed Tests ({totalRecord})\n                </Card.Title>\n\n                <p className=\"card-category mb-3\">History of Processed Tests</p>\n                <div className=\"buttonHeader\">\n                  {/* <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                    Filter\n                  </Button> */}\n                    <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                     {/* Date Range */}\n                     <FilterSelect setTimeFilter={setTimeFilter} />\n                    <Icon\n                        handleClick={async () => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n                  {/* <Button\n                    className=\"headerButton\"\n                    onClick={() => setShowResultModal(true)}\n                    disabled={checkboxes.length === 0}\n                  >\n                    Change Result\n                  </Button> */}\n                    <Icon\n                            handleClick={() => setShowResultModal(true)}\n                            title={\"Change Result\"}\n                            label={\"Change Result\"}\n                            iconType={\"resultsIcon\"}\n                            disabled={checkboxes.length === 0}\n                          />\n                  <Button className=\"headerButton\" onClick={handleSendEmail} disabled={checkboxes.length === 0}>\n                    Send Email\n                  </Button>\n                  {filteredTests.length > 0 && (\n                    <>\n                      {console.log(\"mmmmmfilter\", filter)}\n                      {Object.keys(filter).length > 2 && (\n                        <>\n                          <ExportToExcelData\n                            items={filteredTests}\n                            appContext={appContext}\n                            selectedItem={selectedItem}\n                            filter={{ ...filter, status: \"Processed\", labID: connectedIDInLocalStorage.get() || \"A\" }}\n                            timeFilter={timeFilter}\n                            title=\"Processed Tests\"\n                            sortBy={sortBy}\n                            setLoading={setLoading}\n                          />\n                          <TestPDFLayout\n                            tests={filteredTests}\n                            filter={filter}\n                            selectedItem={selectedItem}\n                            timeFilter={timeFilter}\n                            title=\"Processed Tests\"\n                            appContext={appContext}\n                            sortBy={sortBy}\n                          />\n                        </>\n                      )}\n                    </>\n                  )}\n                </div>\n\n                {showFilter && (\n                  <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} isUsersTable={false} />\n                )}\n\n                <MFPagination currentPage={currentPage} handleChangePage={handleChangePage} totalPages={totalPages} />\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable\">\n                  <Table className=\"table-hover table-striped\">\n                    <thead ref={componentRef}>\n                      <tr>\n                        <th></th>\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"createdAt\"\n                          title=\"Date Collected\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"updatedAt\"\n                          title=\"Date Processed\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"firstName\"\n                          title=\"First Name\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"lastName\"\n                          title=\"Last Name\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"dob\"\n                          title=\"DoB\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"email\"\n                          title=\"Email\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"phoneNumber\"\n                          title=\"Phone\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"siteID\"\n                          title=\"Show\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"status\"\n                          title=\"Status\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"result\"\n                          title=\"Result\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"test_type\"\n                          title=\"Test Type\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"barcode\"\n                          title=\"Accession No\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"tester_name\"\n                          title=\"Tester\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <th\n                          className=\"border-0 left text-grey\"\n                          style={{ fontWeight: \"bold\", width: \"80px\", maxWidth: \"80px\" }}\n                        >\n                          Actions\n                        </th>\n                      </tr>\n                    </thead>\n                    <tbody>\n                      {testsToMap &&\n                        testsToMap.map((test) => {\n                          return <TableRow key={test.id} test={test} />;\n                        })}\n                    </tbody>\n                  </Table>\n                </div>\n                {!loading && tests.length === 0 && (\n                  <div style={{ textAlign: \"center\" }}>\n                    <h4>There are no tests Completed to View</h4>\n                  </div>\n                )}\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n        {showResultModal && (\n          <ChangeResultModal handleSave={updateTestResult} handleClose={() => setShowResultModal(false)} />\n        )}\n        {loading && <Loader />}\n      </Container>\n    </>\n  );\n}\n\nexport default ProcessedTestListApi;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\nimport Test from \"views/Test\";\nimport TableListApi from \"views/GraphQL/TableListApi\";\nimport ProcessedTestListApi from \"views/GraphQL/ProcessedTestListApi\";\nimport Typography from \"views/Typography.js\";\nimport Icons from \"views/Icons.js\";\nimport Maps from \"views/Maps.js\";\nimport Notifications from \"views/Notifications.js\";\nimport Upgrade from \"views/Upgrade.js\";\nimport Settings from \"views/Settings.js\";\n\nconst dashboardRoutes = [\n  {\n    path: \"/tests\",\n    name: \"New Tests\",\n    icon: \"nc-icon nc-notes\",\n    component: TableListApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/processing\",\n    name: \"Tests Processing\",\n    icon: \"nc-icon nc-notes\",\n    component: TableListApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/processedtests\",\n    name: \"Processed Tests\",\n    icon: \"nc-icon nc-check-2\",\n    component: ProcessedTestListApi,\n    layout: \"/admin\",\n  },\n  \n  {\n    path: \"/test/:testId\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: Test,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  \n];\n\nexport default dashboardRoutes;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../../api\";\nimport { CLIENT, CLIETNT_FETCH, USER_CLIETNT_FETCH } from \"./clientsConstant\";\n\n// Async thunk to fetch all clients\nexport const fetchAllClients = createAsyncThunk(CLIETNT_FETCH, async () => {\n  const response = await api.getCompanies();\n  return response;\n});\n\n//Async thunk to Fetch user client\nexport const fetchUserClients = createAsyncThunk(USER_CLIETNT_FETCH, async (param, { getState }) => {\n  const client = await api.getUserCompany();\n  return client;\n});\n\n// Async thunk to create a client\nexport const createClientAsync = createAsyncThunk(\"client/createClient\", async (client) => {\n  const response = await api.newClient(client);\n  return response;\n});\n\n// Async thunk to update a client\nexport const updateClientAsync = createAsyncThunk(\"client/updateClient\", async ({ clientId, updatedclient }) => {\n  const response = await api.updateClient(clientId, updatedclient);\n  return response;\n});\n\n// Async thunk to delete a client\nexport const deleteClientAsync = createAsyncThunk(\"client/deleteClient\", async (clientId) => {\n  const response = await api.deleteClient(clientId);\n  return response;\n});\n\nconst clientSlice = createSlice({\n  name: CLIENT,\n  initialState: {\n    clients: [],\n    userCompany: null,\n  },\n  reducers: {},\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchAllClients.fulfilled, (state, action) => {\n        state.clients = action.payload;\n      })\n      .addCase(createClientAsync.fulfilled, (state, action) => {\n        state.clients.push(action.payload);\n      })\n      .addCase(updateClientAsync.fulfilled, (state, action) => {\n        const updatedclient = action.payload;\n        const existingclientIndex = state.clients.findIndex((client) => client.id === updatedclient.id);\n        if (existingclientIndex !== -1) {\n          state.clients[existingclientIndex] = updatedclient;\n        }\n      })\n      .addCase(deleteClientAsync.fulfilled, (state, action) => {\n        const deletedclientId = action.payload;\n        state.clients = state.clients.filter((client) => client.id !== deletedclientId);\n      })\n      .addCase(fetchUserClients.fulfilled, (state, action) => {\n        state.clients = [action.payload];\n        state.userCompany = action.payload;\n      });\n  },\n});\n\nexport default clientSlice.reducer;\n","export const CLIENT = \"client\";\n\nexport const CLIETNT_FETCH = \"client/fetchAllClients\";\n\nexport const USER_CLIETNT_FETCH = \"client/fetchUserLocation\";\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../../api\";\nimport { ELIGIBILITY_FILE, ELIGIBILITY_FILE_FETCH } from \"./eligibilityFileConstant\";\n\n// Async thunk to fetch all eligibilityFiles\nexport const fetchAllEligibilityFiles = createAsyncThunk(ELIGIBILITY_FILE_FETCH, async () => {\n  const response = await api.getEligibilityFiles();\n  return response;\n});\n\n// Async thunk to create a eligibilityFile\nexport const careateEligibilityFileAsync = createAsyncThunk(\n  \"eligibilityFile/careateEligibilityFile\",\n  async (eligibilityFile) => {\n    const response = await api.careateEligibilityFile(eligibilityFile);\n    return response;\n  }\n);\n\n// Async thunk to update a eligibilityFile\nexport const updateEligibilityFileAsync = createAsyncThunk(\n  \"eligibilityFile/updateEligibilityFile\",\n  async ({ eligibilityFileId, updateEligibilityFile }) => {\n    const response = await api.updateEligibilityFile(eligibilityFileId, updateEligibilityFile);\n    return response;\n  }\n);\n\n// Async thunk to delete a eligibilityFile\nexport const deleteEligibilityFileAsync = createAsyncThunk(\n  \"eligibilityFile/deleteEligibilityFile\",\n  async (eligibilityFileId) => {\n    const response = await api.deleteEligibilityFile(eligibilityFileId);\n    return response;\n  }\n);\n\nconst eligibilityFileSlice = createSlice({\n  name: ELIGIBILITY_FILE,\n  initialState: {\n    eligibilityFiles: [],\n  },\n  reducers: {},\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchAllEligibilityFiles.fulfilled, (state, action) => {\n        state.eligibilityFiles = action.payload;\n      })\n      .addCase(careateEligibilityFileAsync.fulfilled, (state, action) => {\n        state.eligibilityFiles.push(action.payload);\n      })\n      .addCase(updateEligibilityFileAsync.fulfilled, (state, action) => {\n        const updateEligibilityFile = action.payload;\n        const existingeligibilityFileIndex = state.eligibilityFiles.findIndex(\n          (eligibilityFile) => eligibilityFile.id === updateEligibilityFile.id\n        );\n        if (existingeligibilityFileIndex !== -1) {\n          state.eligibilityFiles[existingeligibilityFileIndex] = updateEligibilityFile;\n        }\n      })\n      .addCase(deleteEligibilityFileAsync.fulfilled, (state, action) => {\n        const deletedeligibilityFileId = action.payload;\n        state.eligibilityFiles = state.eligibilityFiles.filter(\n          (eligibilityFile) => eligibilityFile.id !== deletedeligibilityFileId\n        );\n      });\n  },\n});\n\nexport default eligibilityFileSlice.reducer;\n","export const ELIGIBILITY_FILE = \"eligibilityFile\";\n\nexport const ELIGIBILITY_FILE_FETCH = \"eligibilityFile/fetchAllEligibilityFiles\";\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../../api\";\nimport { SUBAGENT, SUBAGENT_FETCH, USER_SUBAGENT_FETCH } from \"./subAgentsContants\";\n// Async thunk to fetch all subAgents\nexport const fetchAllSubAgents = createAsyncThunk(SUBAGENT_FETCH, async () => {\n  const response = await api.getSubAgents();\n  return response;\n});\n\n// Async thunk to create a subAgent\nexport const createSubAgentAsync = createAsyncThunk(\"subAgent/createSubAgent\", async (subAgent) => {\n  const response = await api.newSubAgent(subAgent);\n  return response;\n});\n\n//Async thunk to Fetch user subAgent\nexport const fetchUserSubAgent = createAsyncThunk(USER_SUBAGENT_FETCH, async () => {\n  const subAgent = await api.getUserSubAgent();\n  return subAgent;\n});\n\n// Async thunk to update a subAgent\nexport const updateSubAgentAsync = createAsyncThunk(\n  \"subAgent/updateSubAgent\",\n  async ({ subAgentId, updatedsubAgent }) => {\n    const response = await api.updateSubAgent(subAgentId, updatedsubAgent);\n    return response;\n  }\n);\n\n// Async thunk to delete a subAgent\nexport const deleteSubAgentAsync = createAsyncThunk(\"subAgent/deleteSubAgent\", async (subAgentId) => {\n  const response = await api.deleteSubAgent(subAgentId);\n  return response;\n});\n\nconst subAgentSlice = createSlice({\n  name: SUBAGENT,\n  initialState: {\n    subAgents: [],\n    userSubAgent: null,\n  },\n  reducers: {},\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchAllSubAgents.fulfilled, (state, action) => {\n        state.subAgents = action.payload;\n      })\n      .addCase(createSubAgentAsync.fulfilled, (state, action) => {\n        state.subAgents.push(action.payload);\n      })\n      .addCase(updateSubAgentAsync.fulfilled, (state, action) => {\n        const updatedsubAgent = action.payload;\n        const existingsubAgentIndex = state.subAgents.findIndex((subAgent) => subAgent.id === updatedsubAgent.id);\n        if (existingsubAgentIndex !== -1) {\n          state.subAgents[existingsubAgentIndex] = updatedsubAgent;\n        }\n      })\n      .addCase(deleteSubAgentAsync.fulfilled, (state, action) => {\n        const deletedsubAgentId = action.payload;\n        state.subAgents = state.subAgents.filter((subAgent) => subAgent.id !== deletedsubAgentId);\n      })\n      .addCase(fetchUserSubAgent.fulfilled, (state, action) => {\n        state.subAgents = [action.payload];\n        state.userSubAgent = action.payload;\n      });\n  },\n});\n\nexport default subAgentSlice.reducer;\n","export const SUBAGENT = \"subAgent\";\n\nexport const SUBAGENT_FETCH = \"subAgent/fetchAllSubAgents\";\n\nexport const USER_SUBAGENT_FETCH = \"subAgent/fetchUserSubAgents\";\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../../api\";\nimport { ADMIN_USERS, CONFIG } from \"../../../constant\";\nimport { USER, USER_FETCH } from \"./userConstants\";\n// Async thunk to fetch all users\nexport const fetchAllUsers = createAsyncThunk(USER_FETCH, async ({ id, user }) => {\n  let response = [];\n  if (CONFIG.isLabType) {\n    response = await api.getBRMUsers();\n  } else {\n    response = await api.getUserFromLocalDB(id, user);\n  }\n  return response;\n});\n\n// Async thunk to create a user\nexport const createUserAsync = createAsyncThunk(\"user/createUser\", async (user) => {\n  const response = await createUser(user);\n  return response;\n});\n\n// Async thunk to update a user\nexport const updateUserAsync = createAsyncThunk(\"user/updateUser\", async ({ userId, updatedUser }) => {\n  const response = await updateUser(userId, updatedUser);\n  return response;\n});\n\n// Async thunk to delete a user\nexport const deleteUserAsync = createAsyncThunk(\"user/deleteUser\", async (userId) => {\n  const response = await deleteUser(userId);\n  return response;\n});\n\nconst userSlice = createSlice({\n  name: USER,\n  initialState: {\n    users: [],\n    filteredUsers: [],\n  },\n  reducers: {\n    setFilteredUsers: (state, action) => {\n      state.filteredUsers = action.payload;\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchAllUsers.fulfilled, (state, action) => {\n        const data = action.payload.filter((f) => !ADMIN_USERS.includes(f.phone_number));\n        state.users = data;\n        state.filteredUsers = data;\n      })\n      .addCase(createUserAsync.fulfilled, (state, action) => {\n        state.users.push(action.payload);\n      })\n      .addCase(updateUserAsync.fulfilled, (state, action) => {\n        const updatedUser = action.payload;\n        const existingUserIndex = state.users.findIndex((user) => user.id === updatedUser.id);\n        if (existingUserIndex !== -1) {\n          state.users[existingUserIndex] = updatedUser;\n        }\n      })\n      .addCase(deleteUserAsync.fulfilled, (state, action) => {\n        const deletedUserId = action.payload;\n        state.users = state.users.filter((user) => user.id !== deletedUserId);\n      })\n  },\n});\n\nexport default userSlice.reducer;\n","export const USER = \"user\";\n\nexport const USER_FETCH = \"user/fetchAllUsers\";\n\n","import { createUserAsync, updateUserAsync, deleteUserAsync, fetchAllUsers } from \"./userSlice\";\n\nexport const createUser = (user) => (dispatch) => {\n  dispatch(createUserAsync(user));\n};\n\nexport const updateUser = (userId, updatedUser) => (dispatch) => {\n  dispatch(updateUserAsync({ userId, updatedUser }));\n};\nexport const fetchUsers = (id, user) => (dispatch) => {\n  dispatch(fetchAllUsers({ id, user }));\n};\n\nexport const deleteUser = (userId) => (dispatch) => {\n  dispatch(deleteUserAsync(userId));\n};\n","export const AUTH = \"auth\";\n\nexport const AUTH_COMPANIES = \"auth/companies\";\n\nexport const AUTH_SIGN_IN = \"auth/signin\";\n\nexport const AUTH_CURRENT_USER = \"auth/currentuser\";\n\nexport const AUTH_COMPANY_USER = \"auth/companyuser\";\n\nexport const AUTH_LISTENER = \"auth/listener\";\n\nexport const AUTH_ERROR_EMAIL = \"auth/ErroEmail\";\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport adminRoutes from \"routes/adminRoutes\";\nimport labRoutes from \"routes/labRoutes\";\n// import patientRoutes from \"routes/patientRoutes\";\n// import siteRoutes from \"routes/siteRoutes\";\n// import subAgentRoutes from \"routes/subAgentRoutes\";\nimport api from \"../../../api\";\nimport { fetchCompanySetting } from \"../companySetting/companySettingSlice\";\nimport { fetchAllClients, fetchUserClients } from \"../clients/clientsSlice\";\nimport { fetchAllEligibilityFiles } from \"../eligibilityFile/eligibilityFileSlice\";\nimport { fetchAllEmployees, fetchEmployeeRecord } from \"../employees/employeesSlice\";\nimport { fetchAllLocations, fetchUserLocation } from \"../locations/locationsSlice\";\nimport { fetchAllProviders } from \"../providers/providersSlice\";\nimport { fetchAllSubAgents, fetchUserSubAgent } from \"../subAgents/subAgentsSlice\";\nimport { fetchUsers } from \"../users/userAction\";\nimport {\n  AUTH,\n  AUTH_COMPANIES,\n  AUTH_CURRENT_USER,\n  AUTH_LISTENER,\n  AUTH_SIGN_IN,\n  AUTH_ERROR_EMAIL,\n} from \"./authenticationConstant\";\n\nimport { Auth } from \"aws-amplify\";\nimport { ADMIN_USERS, CONFIG, DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS } from \"../../../constant\";\nimport { mergeUserPermissions, userCompanyID } from \"../../../utils\";\n\n//   Custom Routes Functionality external function\n\nconst customRoutes = (routes, response, user) => {\n  if (!response) return [];\n  if (ADMIN_USERS.includes(response.phone_number)) {\n    return routes;\n  }\n\n  if (CONFIG.isLabType) {\n    let BRMRoutes = routes;\n    if (user?.isClient()) {\n      BRMRoutes = BRMRoutes.filter((f) => f.path !== \"/testtypes\");\n    }\n    return BRMRoutes;\n  }\n\n  return routes.filter((f) => f.path !== \"/billing\");\n};\n\n// Send Error email to Dev Service\n\nexport const sendEmailToDevAsync = createAsyncThunk(AUTH_ERROR_EMAIL, async (param, { getState }) => {\n  const userCompany = getState().clients.clients;\n  const loginUser = getState().auth.user;\n  const message = `${param} \\n\\n \n  User: ${loginUser.name} \\n \n  phone: ${loginUser.phone_number}`;\n  const res = await api.sendEmail([\n    { email: \"pybertest@gmail.com\", subject: `Error on ${userCompany[0].name}`, msg: message },\n  ]);\n});\n\n// Async thunk to fetch all Companies\nexport const fetchAllCompanies = createAsyncThunk(AUTH_COMPANIES, async () => {\n  const response = await api.fetchAllCompanies();\n  return response?.data || [];\n});\n\n// Async thunk to Sign in\nexport const sigInUserAsync = createAsyncThunk(AUTH_SIGN_IN, async ({ username, password }) => {\n  const user = await Auth.signIn(username, password);\n  const response = await api.getEmployeeRoles(username);\n  return { response, user };\n});\n\n// Async thunk to get Current User\nexport const getCurrentUserAsync = createAsyncThunk(AUTH_CURRENT_USER, async () => {\n  const user = await api.getCurrentUser(); // Your API call logic here\n  let response = null;\n\n  if (user) {\n    response = await api.getEmployeeRoles(\n      user?.preferred_username?.includes(\"+\") ? user?.preferred_username : user.phone_number\n    );\n  } else {\n    return Promise.reject(\"User is not defined\");\n  }\n\n  return { response, user: user };\n});\n\n// Async thunk to get Current User Listener\n\nexport const getListenerDataAsync = createAsyncThunk(AUTH_LISTENER, async (user, { dispatch, getState }) => {\n  const response = getState().auth.data?.response;\n  if (user?.isAdmin()) {\n    dispatch(\n      authenticationSlice.actions.routes(customRoutes(CONFIG.isLabType ? labRoutes : adminRoutes, response, user))\n    );\n    await dispatch(fetchCompanySetting());\n    await dispatch(fetchAllClients());\n    await dispatch(fetchAllProviders());\n    await dispatch(fetchAllSubAgents());\n    await dispatch(fetchAllLocations());\n    await dispatch(fetchAllEligibilityFiles());\n    await dispatch(fetchAllEmployees());\n    dispatch(fetchUsers(null, user));\n  }\n  if (user?.isClient()) {\n    dispatch(\n      authenticationSlice.actions.routes(customRoutes(CONFIG.isLabType ? labRoutes : adminRoutes, response, user))\n    );\n    await dispatch(fetchCompanySetting());\n    await dispatch(fetchUserClients());\n    await dispatch(fetchAllProviders());\n    await dispatch(fetchAllSubAgents());\n    await dispatch(fetchAllLocations(true));\n    await dispatch(fetchAllEligibilityFiles());\n    await dispatch(fetchAllEmployees());\n    dispatch(fetchUsers(null, user));\n  }\n  if (user?.isSite()) {\n    await dispatch(fetchCompanySetting());\n    await dispatch(fetchUserLocation());\n    await dispatch(fetchAllEmployees());\n    await dispatch(fetchAllProviders());\n    await dispatch(fetchAllClients());\n    await dispatch(fetchAllSubAgents());\n    await dispatch(fetchAllEligibilityFiles());\n    dispatch(authenticationSlice.actions.routes(siteRoutes));\n  }\n  if (user?.isSubAgent()) {\n    await dispatch(fetchCompanySetting());\n    await dispatch(fetchUserSubAgent());\n    await dispatch(fetchAllEmployees());\n    await dispatch(fetchAllProviders());\n    await dispatch(fetchAllClients());\n    await dispatch(fetchAllLocations());\n    await dispatch(fetchAllEligibilityFiles());\n    dispatch(authenticationSlice.actions.routes(subAgentRoutes));\n  }\n  if (user?.isUser()) {\n    await dispatch(fetchEmployeeRecord());\n    await dispatch(fetchUserLocation());\n    await dispatch(fetchUserSubAgent());\n    dispatch(authenticationSlice.actions.routes(patientRoutes));\n  }\n});\n\nconst authenticationSlice = createSlice({\n  name: AUTH,\n  initialState: {\n    companies: [],\n    userRoutes: [],\n    userSessionEnd: false,\n    permission: {},\n    data: null,\n    user: null,\n    lab: null,\n    countryCode: null,\n    clientData: null,\n  },\n  reducers: {\n    routes: (state, action) => {\n      state.userRoutes = action.payload;\n    },\n    logOut: (state, action) => {\n      state.data = null;\n      state.user = null;\n      state.permission = {};\n      state.userRoutes = [];\n      state.companies = [];\n    },\n    setPermission: (state, action) => {\n      const permission = action.payload ? mergeUserPermissions(JSON.parse(action.payload)) : null;\n      state.permission = permission || DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS;\n    },\n    setGlobalUser: (state, action) => {\n      state.user = action.payload;\n    },\n    setGlobalLab: (state, action) => {\n      state.lab = action.payload;\n    },\n    setCountryCode: (state, action) => {\n      state.countryCode = action.payload;\n    },\n    setClientData: (state, action) => {\n      state.clientData = action.payload;\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchAllCompanies.fulfilled, (state, action) => {\n        state.companies = action.payload;\n      })\n      .addCase(sigInUserAsync.pending, (state) => {\n        state.userSessionEnd = false;\n      })\n      .addCase(sigInUserAsync.fulfilled, (state, action) => {\n        state.data = action.payload;\n        state.userSessionEnd = false;\n      })\n      .addCase(getCurrentUserAsync.pending, (state) => {\n        state.userSessionEnd = false;\n      })\n      .addCase(getCurrentUserAsync.fulfilled, (state, action) => {\n        state.user = action.payload.user;\n        state.data = action.payload;\n        const response = action.payload.response;\n        if (CONFIG.isLabType && response.clientID && !ADMIN_USERS.includes(response.phone_number)) {\n          userCompanyID.save(response.clientID);\n        }\n        state.userSessionEnd = false;\n      })\n      .addCase(getCurrentUserAsync.rejected, (state, action) => {\n        state.userSessionEnd = true;\n      });\n  },\n});\n\nexport const { routes, logOut, setPermission, setGlobalUser, setGlobalLab, setCountryCode, setClientData } =\n  authenticationSlice.actions;\n\nexport default authenticationSlice.reducer;\n","import { createRef, useRef, useState } from \"react\";\nimport { Auth } from \"aws-amplify\";\nimport { callPublicAPI } from \"views/GraphQL/gqApi\";\n\nimport viewIcon from \"../../assets/img/eye-open-icon.png\";\nimport hideIcon from \"../../assets/img/eye-not-open-icon.png\";\n\nconst ForgotpassUi = ({\n  setLoading,\n  setShowForgotUi,\n  phoneNumber,\n  setPassword,\n  setPhoneError,\n  handleSubmit,\n  handleResendCode,\n}) => {\n  const [digits, setDigits] = useState(\"\");\n  const [showPassword, setShowPassword] = useState(false);\n  const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n\n  const [passwordData, setPasswordData] = useState({\n    password: \"\",\n    resetPassword: \"\",\n  });\n  const { password, resetPassword } = passwordData;\n\n  const handleChange = (event) => {\n    const value = event.target.value;\n    setDigits(value);\n  };\n\n  const handelOtpVerification = async () => {\n    const code = digits;\n    setLoading(true);\n\n    if (password !== resetPassword) {\n      setLoading(false);\n\n      setPhoneError({ message: \"Password not match\", error: true });\n      return;\n    }\n\n    try {\n      // await Auth.forgotPasswordSubmit(phoneNumber, code, password);\n\n      const path = \"/user/verifyCode\";\n\n      const payload = {\n        phone: phoneNumber,\n        code,\n        password,\n      };\n\n      const { verified } = await callPublicAPI({ path, payload });\n\n      if (verified) {\n        setPhoneError({ message: \"Your password updated.\", success: true, title: \"Success\" });\n\n        setLoading(false);\n        setShowForgotUi(false);\n      }\n\n      // if (send) {\n      //   setShowForgotUi(true);\n      // }\n\n      // setPassword(password);\n      // setLoading(false);\n\n      // setShowForgotUi(false);\n    } catch (error) {\n      console.log(\"error\", { error });\n      const { response } = error;\n      if (response?.data?.error) {\n        setPhoneError({ message: response?.data?.error || \"Invalid Code.\", error: true });\n      }\n      setLoading(false);\n    }\n  };\n  const togglePasswordVisibility = () => {\n    setShowPassword(!showPassword);\n  };\n\n  const toggleConfirmPasswordVisibility = () => {\n    setShowConfirmPassword(!showConfirmPassword);\n  };\n\n  return (\n    <div className=\"login-right-side max-w-100\">\n      <h3 className=\"w-100 text-center mt-2 mb-4\">Enter New Password</h3>\n      <span className=\"tag-line d-block text-center\">\n        To change your password, please fill in the field below. <br />\n        Your password must contain at least 8 charactors, it must also include at least <br />\n        one upper case letter, one lower case letter, one number and one special charater\n      </span>\n      <div className=\"login-inner-right-side mt-4\">\n        <div className=\"mb-3\">\n          <label className=\"login-input-label mb-2\">\n            OTP <span className=\"text-danger\">*</span>\n          </label>\n          <input\n            className=\"w-100\"\n            type=\"text\"\n            placeholder=\"123456\"\n            maxLength=\"6\"\n            value={digits}\n            onChange={handleChange}\n          />\n        </div>\n        <div className=\"d-flex flex-column mb-3\">\n          <label className=\"login-input-label mb-2\">\n            New Password <span className=\"text-danger\">*</span>\n          </label>\n          <div className=\"position-relative\">\n            <input\n              placeholder=\"Enter New Password\"\n              minLength={8}\n              value={password}\n              type={showPassword ? \"text\" : \"password\"}\n              className=\"w-100\"\n              onChange={(e) => setPasswordData({ ...passwordData, password: e.target.value })}\n            />\n            <span\n              onClick={togglePasswordVisibility}\n              style={{\n                position: \"absolute\",\n                right: \"10px\",\n                top: \"50%\",\n                transform: \"translateY(-50%)\",\n                cursor: \"pointer\",\n              }}\n            >\n              {showPassword ? (\n                <img\n                  className=\"header-btn-img object-fit-contain\"\n                  width={20}\n                  height={20}\n                  src={viewIcon}\n                  alt={`viewIcon`}\n                />\n              ) : (\n                <img\n                  className=\"header-btn-img object-fit-contain\"\n                  width={20}\n                  height={20}\n                  src={hideIcon}\n                  alt={`hideIcon`}\n                />\n              )}\n            </span>\n          </div>\n        </div>\n\n        <div className=\"d-flex flex-column\">\n          <label className=\"login-input-label mb-2\">\n            Confirm New Password <span className=\"text-danger\">*</span>\n          </label>\n          <div className=\"position-relative\">\n            <input\n              placeholder=\"Re Enter New Password\"\n              minLength={8}\n              className=\"w-100\"\n              value={resetPassword}\n              type={showConfirmPassword ? \"text\" : \"password\"}\n              onChange={(e) => setPasswordData({ ...passwordData, resetPassword: e.target.value })}\n            />\n            <span\n              onClick={toggleConfirmPasswordVisibility}\n              style={{\n                position: \"absolute\",\n                right: \"10px\",\n                top: \"50%\",\n                transform: \"translateY(-50%)\",\n                cursor: \"pointer\",\n              }}\n            >\n              {showConfirmPassword ? (\n                <img\n                  className=\"header-btn-img object-fit-contain\"\n                  width={20}\n                  height={20}\n                  src={viewIcon}\n                  alt={`viewIcon`}\n                />\n              ) : (\n                <img\n                  className=\"header-btn-img object-fit-contain\"\n                  width={20}\n                  height={20}\n                  src={hideIcon}\n                  alt={`hideIcon`}\n                />\n              )}\n            </span>\n          </div>\n        </div>\n        <div className=\"mt-4 d-flex justify-content-center\">\n          <button\n            type=\"submit\"\n            disabled={digits.length !== 6 || resetPassword === \"\" || password === \"\"}\n            className=\"text-uppercase btn signin-btn\"\n            onClick={handelOtpVerification}\n          >\n            Change Password\n          </button>\n        </div>\n        <div\n          style={{ display: \"flex\", justifyContent: \"flex-end\", width: \"100%\", marginTop: \"5px\" }}\n          onClick={handleResendCode}\n        >\n          <p style={{ cursor: \"pointer\", fontSize: \"14px\" }}>Resend</p>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default ForgotpassUi;\n","import { createRef, useEffect, useRef, useState } from \"react\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\n\nconst SendOTPUi = ({ handleSendCode, setPhone, phone }) => {\n  const [disableOTPbtn, setDisableOTPBtn] = useState(true);\n\n  useEffect(() => {\n    if (phone && phone.length > 6) {\n      setDisableOTPBtn(false);\n    } else {\n      setDisableOTPBtn(true);\n    }\n  }, [phone]);\n\n  return (\n    <div className=\"login-right-side max-w-100\">\n      <h3 className=\"w-100 text-center mt-2\">\n        Forgot Your Password?\n      </h3>\n      <span className=\"tag-line mt-4 text-center d-block\">Enter the phone number associated with your account and we will send a code to your email address to reset your password.</span>\n      <div className=\"login-inner-right-side mt-4\">\n        <label className=\"login-input-label mb-2\">Phone Number</label>\n        <div className=\"form-group phoneInput\">\n          <PhoneNoInput handleChange={(e) => setPhone(e)} value={phone} />\n        </div>\n        <div className=\"mt-4\">\n        <button\n          type=\"submit\"\n          disabled={disableOTPbtn}\n          onKeyDown={() => handleSendCode()}\n          className=\"text-uppercase btn signin-btn\"\n          onClick={() => handleSendCode()}\n        >\n          Send OTP\n        </button>\n      </div>\n      </div>\n\n      \n    </div>\n  );\n};\n\nexport default SendOTPUi;\n","import API from \"api\";\nimport { Auth } from \"aws-amplify\";\nimport { default as api, default as localApi } from \"api\";\n\nimport { CONFIG, HEALTH_AND_SAFTEY, defaultPersonalization } from \"constant\";\nimport { useEffect, useState } from \"react\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { useHistory } from \"react-router-dom\";\nimport {\n  connectedIDInLocalStorage,\n  medFlowInLocalStorage,\n  medFlowPortalTitle,\n  personalisationInLC,\n  roleInLocalStorage,\n  sortingFilterInLC,\n  clientIDInLocalStorage,\n  showsInSS,\n} from \"utils\";\nimport loginLogo from \"../../assets/img/login_logo.png\";\nimport LoginUi from \"./LoginUi\";\nimport MultiRole from \"./MultiRole\";\nimport TwoFa from \"./TwoFa\";\nimport useLocalStorageState from \"util/useLocalStorageState\";\nimport Loader from \"components/Loader/Loader\";\nimport { setPermission, setGlobalUser } from \"store/features/authentication/authenticationSlice\";\nimport { useDispatch } from \"react-redux\";\nimport ForgotpassUi from \"./ForgotpassUi\";\nimport { callPublicAPI } from \"views/GraphQL/gqApi\";\nimport SendOTPUi from \"./SendOTPUi\";\nimport { logoImage } from \"constant\";\nimport { LABS_LIST_AS_WHITELABEL } from \"constant\";\n\nconst Login = () => {\n  const [phone, setPhone] = useState(\"+1\");\n  const [password, setPassword] = useState(\"\");\n  const [phoneError, setPhoneError] = useState(\"\");\n  const [userId, setUserId] = useState(\"\");\n  const [disableBtn, setDisableBtn] = useState(false);\n  const [multiRole, setMultiRole] = useState(false);\n  const [loading, setLoading] = useState(false);\n  const [isOTPUiOpen, setIsOTPUiOpen] = useState(false);\n  const [twoFa, setTwoFa] = useLocalStorageState(\"twoFa\", false);\n  const [showForgotUi, setShowForgotUi] = useLocalStorageState(\"showForgotUi\", false);\n\n  const [rolesData, setRolesData] = useState([]);\n  const [userRoles, setUserRoles] = useState([]);\n  const [userData, setUserData] = useLocalStorageState(\"userData\", null);\n  const dispatch = useDispatch();\n  let history = useHistory();\n\n  useEffect(() => {\n    const getUSer = async () => {\n      const user = await API.getCurrentUser();\n      if (user) redirectToAdmin();\n    };\n    getUSer();\n  }, []);\n\n  const handleMultiRole = () => {\n    setMultiRole(true);\n  };\n\n  const handleRoleSelection = async (obj, uid) => {\n    if (obj.hasOwnProperty(\"permission\")) {\n      localStorage.setItem(\"roleID\", obj.id);\n      dispatch(setPermission(obj.permission));\n    }\n\n    let role = obj.role;\n    let type = \"A\";\n    if (role === \"Labs\" || role === \"Lab\") {\n      type = \"L\";\n    } else if (role === \"LabTechs\") {\n      type = \"LT\";\n    } else if (role === \"Employers\" || role === \"Employer\" || role === HEALTH_AND_SAFTEY || role.includes(\"Provider\")) {\n      type = \"E\";\n    } else if (role === \"Clients\" || role === \"Client\") {\n      type = \"C\";\n    }\n\n    // get connected Id\n    medFlowInLocalStorage.save(type);\n    medFlowPortalTitle.save(obj.title);\n    connectedIDInLocalStorage.save(obj.relatedId);\n    sortingFilterInLC.save(sortingFilterInLC.get());\n    roleInLocalStorage.save(role);\n\n    if (CONFIG.isWhiteLabel) {\n      CONFIG.whiteLabelID = obj.labID;\n      CONFIG.clientID = obj.clientID;\n      CONFIG.siteID = obj.siteID;\n      CONFIG.basename = obj.title;\n    }\n\n    clientIDInLocalStorage.save(CONFIG.isWhiteLabel ? CONFIG.clientID : clientRole[0].relatedId);\n\n    if (type) {\n      let data = null;\n      try {\n        data = await API.getUserPersonalisation(userId || uid);\n      } catch (e) {\n        console.log(e);\n      }\n      if (data && data.hasOwnProperty(\"personalisation\")) {\n        personalisationInLC.save(\n          \"\",\n          typeof data.personalisation === \"string\" ? JSON.parse(data.personalisation) : data.personalisation\n        );\n      } else {\n        personalisationInLC.save(\"\", defaultPersonalization());\n      }\n    }\n    setLoading(false);\n    setTwoFa(false);\n    redirectToAdmin();\n  };\n\n  const GET_USER_ROLES = {\n    Employers: \"Employer\",\n    Admins: \"Admin\",\n    Labs: \"Lab\",\n    Clients: \"Client\",\n  };\n\n  const handleSubmit = async () => {\n    setMultiRole(false);\n    setTwoFa(false);\n    if (!phone) {\n      setPhoneError({ message: \"please enter the phone\", error: true });\n      return;\n    }\n    if (!password) {\n      setPhoneError({ message: \"please enter the password\", error: true });\n      return;\n    }\n\n    try {\n      setDisableBtn(true);\n      setLoading(true);\n\n      const user = await Auth.signIn(phone, password);\n      const response = await API.getEmployeeRoles(user.username);\n      dispatch(setPermission(response[0]?.userPermission || null));\n      dispatch(setGlobalUser(response[0] || null));\n      if (user && user.attributes[\"custom:is2FaEnabled\"] === \"y\") {\n        setUserData(user);\n        setTwoFa(true);\n      } else {\n        goToPortal(user);\n      }\n    } catch (error) {\n      setDisableBtn(false);\n      setLoading(false);\n\n      setUserId(\"\");\n      setUserRoles([]);\n      setRolesData([]);\n      setPhoneError({ message: error.message, error: true });\n    } finally {\n      setDisableBtn(false);\n      // setLoading(false);\n    }\n  };\n\n  useEffect(() => {\n    if (twoFa) {\n      setLoading(false);\n    }\n  }, [twoFa]);\n\n  const handleLogOut = async () => {\n\n    try {\n      await Auth.signOut();\n      medFlowInLocalStorage.clear();\n     \n    } catch (error) {\n      console.log(\"Error signing out: \", error);\n    }\n  };\n\n  const goToPortal = async (user) => {\n    setLoading(false);\n    if (!user) {\n      return;\n    }\n    \n    // if (CONFIG.envType === \"live\") {\n    //   const whiteLabelName = process.env.REACT_APP_WHITE_LABEL_NAME;\n    //   const labsList = LABS_LIST_AS_WHITELABEL[whiteLabelName] || [];\n\n    //   const isUserLabExistInEnv = new Set(labsList).has(user.attributes[\"custom:labID\"]);\n\n    //   if (!isUserLabExistInEnv) {\n    //     setPhoneError({ message: \"User not exist.\", error: true });\n    //     handleLogOut();\n    //     return;\n    //   }\n    // }\n\n    const roles = user.signInUserSession.accessToken.payload[\"cognito:groups\"] || [];\n\n    let defaultRole = GET_USER_ROLES[roles[0]];\n\n    let getUserRoles = await API.getEmployeeRoles(user?.username);\n\n    if (getUserRoles[0]?.personalisation) {\n      let personalisationData;\n\n      try {\n        const rolesPersonalization = getUserRoles[0].personalisation;\n        personalisationData = JSON.parse(rolesPersonalization);\n      } catch (e) {\n        personalisationData = getUserRoles[0].personalisation;\n      }\n      personalisationInLC.save(\"\", personalisationData);\n    }\n\n    let availableRoles = getUserRoles.length > 0 ? JSON.parse(getUserRoles[0]?.roles) : [{ role: defaultRole }];\n\n    let LabAdmin = getUserRoles.length > 0 ? getUserRoles[0].labAdmin : null;\n\n    if (CONFIG.url && CONFIG.isWhiteLabel) {\n      availableRoles = availableRoles.filter(\n        (role) =>\n          role.role === \"Lab\" ||\n          role.role === \"Labs\" ||\n          role.role?.includes(\"LabTech\") ||\n          role.role === HEALTH_AND_SAFTEY ||\n          role.role === \"Employers\" ||\n          role.role.includes(\"Provider\")\n      );\n      if (availableRoles.length === 0) {\n        console.log(\"User is not authorized\");\n\n        setDisableBtn(false);\n        setPhoneError({ message: \"Not Authorized!!!\", error: true });\n        await Auth.signOut();\n        return;\n      }\n    } else {\n      availableRoles = availableRoles\n        .filter((role) => !role.isWhiteLabelLab)\n        .filter((value, index, self) => index === self.findIndex((t) => t.relatedId === value.relatedId));\n    }\n\n    getUserRoles = availableRoles;\n    let connectedID = user.attributes[\"custom:connectedID\"];\n\n    const { clientID, labID, siteID } = getUserRoles[0];\n\n    if (getUserRoles.length > 0) {\n      let userRole = getUserRoles;\n      setUserRoles(userRole);\n\n      if (LabAdmin) {\n        const AdminRole = userRole.filter((f) => f.role === \"Admin\");\n        const clientRole = userRole.filter((f) => f.role === \"Client\");\n        handleRoleSelection({ ...AdminRole[0], relatedId: LabAdmin }, user?.username);\n        clientIDInLocalStorage.save(CONFIG.isWhiteLabel ? CONFIG.clientID : clientRole[0].relatedId);\n        return;\n      }\n\n      if (userRole?.length > 1) {\n        setUserId(user?.username);\n        let rolesGet = userRole.filter((role) =>\n          [\"Lab\", \"LabTech\", \"Admin\", \"Client\", \"Provider\", HEALTH_AND_SAFTEY].includes(role.role)\n        );\n        let roleArrFormat = [];\n        if (rolesGet.length === 1) {\n          handleRoleSelection(rolesGet[0], user?.username);\n          return;\n        }\n\n        if (rolesGet) {\n          roleArrFormat = rolesGet.map((element) => {\n            if (element.role === HEALTH_AND_SAFTEY || element.role === \"Employers\") {\n              return { ...element, role: \"Employers\" };\n            }\n            return { ...element, role: `${element.role}s` };\n          });\n        }\n        setRolesData(roleArrFormat);\n        handleMultiRole();\n        return;\n      } else if (userRole?.length === 1 && clientID) {\n        connectedID = userRole[0]?.relatedId;\n        if (CONFIG.isWhiteLabel) {\n          let allowSites = user.provider ? user.provider.map((p) => p.value) : [];\n\n          if (siteID && !allowSites.includes(siteID)) {\n            allowSites.push(siteID);\n          }\n\n          CONFIG.whiteLabelID = labID;\n          CONFIG.clientID = clientID;\n          CONFIG.siteID = siteID;\n          CONFIG.basename = userRole[0]?.title;\n          CONFIG.allowSites = allowSites;\n        }\n        setRolesData([]);\n      } else {\n        setRolesData([]);\n      }\n    }\n\n    let type = \"A\";\n\n    if (getUserRoles?.some((s) => s.role === \"Lab\")) {\n      type = \"L\";\n    }\n    if (getUserRoles?.some((s) => s.role === \"LabTech\")) {\n      type = \"LT\";\n    } else if (\n      getUserRoles.some(\n        (s) => s.role === \"Employer\" || s.role === HEALTH_AND_SAFTEY || s.role === \"Employers\" || s.role === \"Provider\"\n      )\n    ) {\n      type = \"E\";\n    } else if (getUserRoles.some((s) => s.role === \"Client\")) {\n      type = \"C\";\n    }\n    medFlowPortalTitle.save(getUserRoles[0]?.title || \"\");\n    medFlowInLocalStorage.save(type);\n    connectedIDInLocalStorage.save(connectedID);\n    sortingFilterInLC.save(sortingFilterInLC.get());\n    clientIDInLocalStorage.save(CONFIG.isWhiteLabel ? CONFIG.clientID : clientRole[0].relatedId);\n\n    // if (type) {\n    //   let data = null;\n    //   try {\n    //     data = await API.getUserPersonalisation(user.username);\n    //   } catch (e) {\n    //     console.log(e);\n    //   }\n    //   if (data && data.length > 0) {\n    //     console.log(\"dataOfLogin\", data);\n    //     personalisationInLC.save(\n    //       \"\",\n    //       typeof data[0].personalisation === \"string\" ? JSON.parse(data[0].personalisation) : data[0].personalisation\n    //     );\n    //   } else {\n    //     personalisationInLC.save(\"\", defaultPersonalization());\n    //   }\n    // }\n    setTwoFa(false);\n    redirectToAdmin();\n  };\n\n  const handleKeyDownEvent = (event) => {\n    if (event.key === \"Enter\") {\n      handleSubmit();\n    }\n  };\n\n  const redirectToAdmin = () => {\n    if (!twoFa) {\n      if (history) {\n        // setLoading(false);\n        history.push(\"/admin\");\n      } else window.location.reload();\n    }\n  };\n\n  const handleForgotPassword = async (resend = false) => {\n    if (phone && phone.length > 6) {\n      try {\n        // await Auth.forgotPassword(phone);\n        setLoading(true);\n\n        const path = \"/user/sendCode\";\n        const response = await callPublicAPI({ path, payload: { phone } });\n        if (response && response.send) {\n          setIsOTPUiOpen(false);\n          setShowForgotUi(true);\n          if (resend) {\n            setPhoneError({ message: \"OTP Sent to your email.\", success: true, title: \"OTP Sent.\" });\n          }\n        } else {\n          setPhoneError({ message: \"Record Not Found\", error: true });\n        }\n      } catch (error) {\n        setPhoneError({ message: error?.message, error: true });\n      } finally {\n        setLoading(false);\n      }\n    }\n  };\n\n  const handleSendOTPUi = async () => {\n    setIsOTPUiOpen(true);\n  };\n\n  const isLoggedIn = medFlowInLocalStorage.get();\n  if (isLoggedIn) redirectToAdmin();\n\n  return (\n    <div className=\"loginWrapper\">\n      <div className=\"login-left-side\">\n        <div className=\"text-center\">{<img src={logoImage} alt=\"logo\" className=\"logo-width\" />}</div>\n        {phoneError && (\n          <SweetAlert\n            show={phoneError ? true : false}\n            error={phoneError.error || false}\n            success={phoneError.success || false}\n            title={phoneError?.title || \"Error\"}\n            onConfirm={() => setPhoneError(\"\")}\n            timeout={4000}\n          >\n            {phoneError?.message || \"\"}\n          </SweetAlert>\n        )}\n        {loading && <Loader />}\n      </div>\n      {multiRole ? (\n        <MultiRole roles={rolesData} handleRoleSelection={handleRoleSelection} />\n      ) : twoFa ? (\n        <TwoFa\n          goToPortal={() => goToPortal(userData)}\n          setLoading={(value) => setLoading(value)}\n          setTwoFa={(value) => setTwoFa(value)}\n        />\n      ) : isOTPUiOpen ? (\n        <SendOTPUi handleSendCode={handleForgotPassword} setPhone={setPhone} phone={phone} />\n      ) : showForgotUi ? (\n        <ForgotpassUi\n          setShowForgotUi={(value) => setShowForgotUi(value)}\n          phoneNumber={phone}\n          setLoading={(value) => setLoading(value)}\n          setPhoneError={(value) => setPhoneError(value)}\n          setPassword={(value) => setPassword(value)}\n          handleSubmit={handleSubmit}\n          handleResendCode={() => handleForgotPassword(true)}\n        />\n      ) : (\n        <LoginUi\n          phone={phone}\n          setPhone={setPhone}\n          password={password}\n          setPassword={setPassword}\n          handleKeyDownEvent={handleKeyDownEvent}\n          disableBtn={disableBtn}\n          handleSubmit={handleSubmit}\n          handleSendOTPUi={handleSendOTPUi}\n          loading={loading}\n        />\n      )}\n    </div>\n  );\n};\n\nexport default Login;\n","export default __webpack_public_path__ + \"static/media/sidebar-3.9992d0ce.jpg\";","import React from \"react\";\nimport Modal from \"react-bootstrap/Modal\";\nimport Button from \"react-bootstrap/Button\";\n\nconst IdleModal = ({ showIdleModal, handleLogOut, handleCloseModal }) => {\n  return (\n    <>\n      <Modal show={showIdleModal} onHide={handleCloseModal} backdrop=\"static\">\n        <Modal.Header closeButton={handleCloseModal}>\n          <Modal.Title className=\"my-0\">You Have Been Idle!</Modal.Title>\n        </Modal.Header>\n        <Modal.Body>You will be signed out. Do you want to stay?</Modal.Body>\n        <Modal.Footer>\n          <Button variant=\"danger\" onClick={handleLogOut}>\n            Logout\n          </Button>\n          <Button variant=\"primary\" onClick={handleCloseModal}>\n            Stay\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default IdleModal;\n","import React from \"react\";\nimport { currencyformatter } from \"constant\";\n\nconst PlanItem = (props) => {\n  const { item, title, newUser, benefitLabel, handleCollapse, compareStrings } = props;\n\n  if (!item) return <></>;\n\n  return (\n    <>\n      <div\n        className={`boxborder testAdmin createClientsWrapper ${handleCollapse && \"cursor-pointer\"}`}\n        onClick={() => handleCollapse && handleCollapse()}\n      >\n        <label className=\"modalLineHeaders fw-bold\">{title} </label>\n\n        <div className=\"crew-profile-column-equal form-group-eligibity-wrapper\">\n          <div className=\"form-group-eligibity-wrapper w-100\">\n            <label className=\"modalLineHeaders fw-bold\">Plan Start Date: </label>\n            <span>{item?.planStartDate || newUser.planStartDate || \"-\"}</span>\n          </div>\n          <div className=\"form-group-eligibity-wrapper w-100\">\n            <label className=\"modalLineHeaders fw-bold\">Plan End Date: </label>\n            <span>{item?.planEndDate || newUser.planEndDate || \"-\"}</span>\n          </div>\n        </div>\n\n        <div className=\"form-group-eligibity-wrapper crew-profile-column-equal eligibility-columns-full\">\n          <div className=\"form-group-eligibity-wrapper w-100\">\n            <label className=\"modalLineHeaders fw-bold\">Insurance Plan: </label>\n            <div className=\"flex-1\">\n              {item.insurance_plan && <span>{item.insurance_plan || \"-\"}</span>}\n              <div className=\"form-group-eligibity-wrapper w-100\">{item.insurance_type_description || \"\"}</div>\n            </div>\n          </div>\n          <div className=\"form-group-eligibity-wrapper w-100\">\n            <label className=\"modalLineHeaders fw-bold w-50\">Plan Number: </label>\n            <div className=\"flex-1\">\n              <span>{item.plan_number || \"-\"}</span>\n            </div>\n          </div>\n        </div>\n        {benefitLabel && (\n          <>\n            {\" \"}\n            <div className=\"crew-profile-column-equal form-group-eligibity-wrapper\">\n              <div className=\"form-group-eligibity-wrapper w-100\">\n                <label className=\"modalLineHeaders fw-bold\">Deductible Amount: </label>\n                <span className={compareStrings(\"deductible\", \"deductibleInYear\") ? \"error-text\" : \"\"}>\n                  {currencyformatter.format(item?.deductible?.deductibleInYear?.benefit_amount || 0)}\n                </span>\n                {compareStrings(\"deductible\", \"deductibleInYear\") || \"\"}\n              </div>\n              <div className=\"form-group-eligibity-wrapper w-100\">\n                <label className=\"modalLineHeaders fw-bold\">Deductible Remaining: </label>\n                <span>{currencyformatter.format(item?.deductible?.deductibleRemaning?.benefit_amount || 0)}</span>\n              </div>\n            </div>\n            <div className=\"crew-profile-column-equal form-group-eligibity-wrapper\">\n              <div className=\"form-group-eligibity-wrapper w-100\">\n                <label className=\"modalLineHeaders fw-bold\">CoInsurance%: </label>\n                <span>{item?.deductible?.coInsurance?.benefit_percent || \"-\"}</span>\n              </div>\n              <div className=\"form-group-eligibity-wrapper w-100\">\n                <label className=\"modalLineHeaders fw-bold\">Co Payment: </label>\n                <span className={compareStrings(\"copay\", \"coPayment\") ? \"error-text\" : \"\"}>\n                  {currencyformatter.format(item.deductible?.coPayment?.benefit_amount || 0)}\n                </span>\n                {compareStrings(\"copay\", \"coPayment\")}\n              </div>\n            </div>\n          </>\n        )}\n        <div className=\"crew-profile-column-equal form-group-eligibity-wrapper\">\n          <div className=\"form-group-eligibity-wrapper w-100\">\n            <label className=\"modalLineHeaders fw-bold\">Hospice: </label>\n            <span>\n              {newUser?.benefit?.find((f) => f.benefit_description.toLowerCase() === \"hospice\") ? \"YES\" : \"NO\"}\n            </span>\n          </div>\n        </div>\n        <div className=\"form-group-eligibity-wrapper crew-profile-column-reverse w-100\">\n          <label className=\"modalLineHeaders fw-bold w-25\">Notes: </label>\n          <span>{item?.benefit_notes || item?.insurance_type_description || \"-\"}</span>\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default PlanItem;\n","import React from \"react\";\nimport { Button } from \"react-bootstrap\";\n\nconst PayerInformation = (props) => {\n  const { data, label, handleAddToProfile, loading, employee } = props;\n\n  const formatAdditionalPayer = () => {\n    if (!data) return;\n    const additionalPayerName = data;\n    const addressParts = [];\n    if (additionalPayerName.address) addressParts.push(additionalPayerName.address);\n    if (additionalPayerName.city || additionalPayerName.state || additionalPayerName.zip) {\n      const locationParts = [];\n      if (additionalPayerName.city) locationParts.push(additionalPayerName.city);\n      if (additionalPayerName.state) locationParts.push(additionalPayerName.state);\n      if (additionalPayerName.zip) locationParts.push(additionalPayerName.zip);\n      addressParts.push(locationParts.join(\", \"));\n    }\n\n    return addressParts.join(\"\\n\");\n  };\n\n  return (\n    <>\n      <div className=\"form-group-eligibity-wrapper w-50\">\n        <div className=\"form-group-eligibity-wrapper\">\n          <div className=\"d-grid w-100\">\n            <span className=\"fw-bold\">{label}</span>\n            <span className=\"error-text\">{data?.title}</span>\n            {/* <span>{formatAdditionalPayer()}</span>\n            {data?.phoneNumber && <span>{`Phone: ${formatPhoneNumber(`+1${data?.phoneNumber}`)}`}</span>} */}\n            {data?.planStartDate && <span>{`${data?.planStartDate}- ${data?.planEndDate}`}</span>}\n            {data?.additionalPayerId && (\n              <div className=\"d-flex  w-100\">\n                {employee && (\n                  <Button\n                    style={{ marginBottom: 10 }}\n                    variant=\"secondary\"\n                    className=\"modalButtons headerButton btn-fill noPrint\"\n                    disabled={loading}\n                    onClick={() => {\n                      handleAddToProfile(true, data);\n                    }}\n                  >\n                    Add to Profile\n                  </Button>\n                )}\n\n                <Button\n                  style={{ marginBottom: 10 }}\n                  variant=\"primary\"\n                  className=\"modalButtons headerButton btn-fill noPrint\"\n                  disabled={loading}\n                  onClick={() => {\n                    handleAddToProfile(false, data);\n                  }}\n                >\n                  Check Insurance\n                </Button>\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default PayerInformation;\n","import React, { useState } from \"react\";\nimport { Table, Card } from \"react-bootstrap\";\nimport { convertYYYYMMDDToDate } from \"utils\";\nimport { formatCurrency } from \"utils\";\n\nconst EligibitlityDetailsCollapsableTable = (props) => {\n  const { columns, rows, globalSearch } = props;\n\n  const CollapsableRow = ({ user }) => {\n    const additionalPayorInfo = JSON.stringify(user).includes(\"Additional Payer\");\n    return (\n      <>\n        <Card className=\"p-3 testAdmin createClientsWrapper\">\n          <div>\n            <label className=\"fw-bold\">Insurance Type: </label>\n            <div className=\"form-group-eligibity-wrapper crew-profile-row4\">\n              {user?.insurance_type_code && (\n                <div className=\"form-group-eligibity-wrapper w-100\">\n                  <label className=\"modalLineHeaders fw-bold\">Code: </label>\n                  <span>{user.insurance_type_code}</span>\n                </div>\n              )}\n              {user?.insurance_type_description && (\n                <div className=\"form-group-eligibity-wrapper w-100\">\n                  <label className=\"modalLineHeaders fw-bold\">Description: </label>\n                  <span>{user.insurance_type_description}</span>\n                </div>\n              )}\n              {user.benefit && (\n                <div className=\"form-group-eligibity-wrapper w-100\">\n                  <label className=\"modalLineHeaders fw-bold\">Coords of Beneifts: </label>\n                  <span>{convertYYYYMMDDToDate(user.benefit)}</span>\n                </div>\n              )}\n            </div>\n            <hr />\n          </div>\n          {(user.plan_date || user.plan_number || user.mco_number) && (\n            <div>\n              <label className=\"fw-bold\">Plan: </label>\n              <div className=\"form-group-eligibity-wrapper crew-profile-row4\">\n                {user?.plan_date && (\n                  <div className=\"form-group-eligibity-wrapper w-100\">\n                    <label className=\"modalLineHeaders fw-bold\">Date: </label>\n                    <span>{convertYYYYMMDDToDate(user.plan_date)}</span>\n                  </div>\n                )}\n                {user.plan_number && (\n                  <div className=\"form-group-eligibity-wrapper w-100\">\n                    <label className=\"modalLineHeaders fw-bold\">Number: </label>\n                    <span>{user.plan_number}</span>\n                  </div>\n                )}\n                {user.mco_number && (\n                  <div className=\"form-group-eligibity-wrapper w-100\">\n                    <label className=\"modalLineHeaders fw-bold\">Netwrok Id: </label>\n                    <span>{user.mco_number}</span>\n                  </div>\n                )}\n              </div>\n\n              <hr />\n            </div>\n          )}\n          {user?.entity_name?.join(\",\") && (\n            <div>\n              <label className=\"modalLineHeaders fw-bold\">Additional Payer: </label>\n              <div className=\"form-group-eligibity-wrapper crew-profile-row4\">\n                {user.entity_name?.length > 0 && (\n                  <div className=\"form-group-eligibity-wrapper w-100\">\n                    <label className=\"modalLineHeaders fw-bold\">Payer: </label>\n                    <span>{user.entity_name[0]}</span>\n                  </div>\n                )}\n                {user.entity_addr_1?.length > 0 && (\n                  <div className=\"form-group-eligibity-wrapper w-100\">\n                    <label className=\"modalLineHeaders fw-bold\">Address: </label>\n                    <span>{user.entity_addr_1 && user.entity_addr_1[0]}</span>\n                  </div>\n                )}\n                {(user.entity_city || user.entity_state) && (\n                  <div className=\"form-group-eligibity-wrapper w-100\">\n                    <label className=\"modalLineHeaders fw-bold\">City: </label>\n                    <span>\n                      {user.entity_city && user.entity_city[0]}, {user.entity_state && user.entity_state[0]}\n                    </span>\n                  </div>\n                )}\n              </div>\n              <div className=\"form-group-eligibity-wrapper crew-profile-row4\">\n                {user.entity_zip?.length > 0 && (\n                  <div className=\"form-group-eligibity-wrapper w-100\">\n                    <label className=\"modalLineHeaders fw-bold\">Zip: </label>\n                    <span>{user.entity_zip[0]}</span>\n                  </div>\n                )}\n                {user.entity_phone?.length > 0 && (\n                  <div className=\"form-group-eligibity-wrapper w-100\">\n                    <label className=\"modalLineHeaders fw-bold\">Phone: </label>\n                    <span>{user.entity_phone[0]}</span>\n                  </div>\n                )}\n                {user.entity_website?.length > 0 && (\n                  <div className=\"form-group-eligibity-wrapper w-100\">\n                    <label className=\"modalLineHeaders fw-bold\">Website: </label>\n                    <span className=\"custom-ellipsis d-block\" title={user.entity_website[0]}>\n                      {user.entity_website[0]}\n                    </span>\n                  </div>\n                )}\n              </div>\n              <hr />\n            </div>\n          )}\n\n          {user?.benefit_notes && (\n            <div className=\"form-group-eligibity-wrapper crew-profile-column-reverse6\">\n              <label className=\"fw-bold d-block w-30\">Notes: </label>\n              <span>{user?.benefit_notes}</span>\n            </div>\n          )}\n        </Card>\n      </>\n    );\n  };\n\n  const TableRow = ({ user, index }) => {\n    if (!JSON.stringify(user).toLowerCase().includes(globalSearch.toLowerCase())) return <></>;\n    const [open, setOpen] = useState(false);\n    return (\n      <>\n        <tr key={index} className=\"cursor-pointer\" onClick={() => setOpen(!open)}>\n          <td style={{ width: \"5%\" }}>{index + 1}</td>\n          {/* <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {user.benefit_code}\n          </td> */}\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {user.benefit_description}\n          </td>\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {user.benefit_coverage_description}\n          </td>\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {user.plan_date ? convertYYYYMMDDToDate(user.plan_date) : \"-\"}\n          </td>\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {`${formatCurrency(user.benefit_amount || 0)}`}\n          </td>\n        </tr>\n        {open && (\n          <tr className=\"additionalInfo-row\">\n            <td colSpan={6}>\n              <CollapsableRow user={user} />\n            </td>\n          </tr>\n        )}\n      </>\n    );\n  };\n  return (\n    <div className=\"table-responsive table-wrapper\">\n      <Table className=\"table\">\n        <thead>\n          <tr>\n            <th style={{ width: \"5%\" }}>#</th>\n\n            {columns.length > 0 &&\n              columns.map((m) => (\n                <th className=\"ellipsis centered\" style={{ textAlign: m.textAlign }}>\n                  {m.title}\n                </th>\n              ))}\n          </tr>\n        </thead>\n        <tbody>\n          {rows.length > 0 && rows.map((user, index) => <TableRow user={user} index={index} key={index} />)}\n        </tbody>\n      </Table>\n    </div>\n  );\n};\n\nexport default EligibitlityDetailsCollapsableTable;\n","import { BCC_VALUE, MEDICARE_ID } from \"constant\";\nimport moment from \"moment\";\n\nexport const getElgibilityLineItem = (newUser, cond, value) => {\n  \n  let partB = newUser.benefit?.find((f) => cond(f, value));\n\n  if (partB) {\n    const [planStartDate, planEndDate] =\n      (value && value === BCC_VALUE.OUT_OF_POCKET ? partB.benefit?.split(\"-\") : partB.plan_date?.split(\"-\")) || [];\n    return {\n      ...partB,\n      ...(planStartDate && { planStartDate: moment(planStartDate).format(\"MMM DD, YYYY\") }),\n      ...(((planStartDate && !planEndDate) || planEndDate === \"99991231\") && { planEndDate: \"-\" }),\n      ...(planEndDate && planEndDate !== \"99991231\" && { planEndDate: moment(planEndDate).format(\"MMM DD, YYYY\") }),\n    };\n  }\n  return null;\n};\n\nexport const getDeductible = (newUser, benefitValue, inNetwork) => {\n  const OTHER_BASE_CONDITION = (f) =>\n    MEDICARE_ID.includes(newUser.payerId)\n      ? f.benefit_code === \"30\" && f.insurance_type_code === \"MB\"\n      : f.benefit_code === \"30\" && f.inplan_network === inNetwork;\n\n  // Check if Deductible is there\n  const DEDUCTIBLE_CONDITION = (f, value) => OTHER_BASE_CONDITION(f) && f.benefit_coverage_code === value;\n\n  // Check current year deductible\n  const DEDUCTIBLE_IN_YEAR = (f, value) =>\n    DEDUCTIBLE_CONDITION(f, value) && f.benefit_period_description?.toLowerCase() === \"calendar year\";\n  // Check current year remaining deductible\n  const DEDUCTIBLE_REMAINING = (f, value) =>\n    DEDUCTIBLE_CONDITION(f, value) && f.benefit_period_description?.toLowerCase() === \"remaining\";\n\n  // Check co-insurnae percentage\n  const CO_INSURANCE_CONDITION = (f) => OTHER_BASE_CONDITION(f) && f.benefit_coverage_code === \"A\";\n\n  const CO_PAYMENT_CONDITION = (f) =>\n    f.benefit_code === \"98\" && f.inplan_network === inNetwork && f.benefit_coverage_code === \"B\";\n  const CO_PAYMENT_SPECIALIST_CONDITION = (f) =>\n    f.benefit_code === \"96\" && f.inplan_network === inNetwork && f.benefit_coverage_code === \"B\";\n\n  let deductibleInYear = getElgibilityLineItem(newUser, DEDUCTIBLE_IN_YEAR, benefitValue);\n  let deductibleRemaning = getElgibilityLineItem(newUser, DEDUCTIBLE_REMAINING, benefitValue);\n  let coInsurance = getElgibilityLineItem(newUser, CO_INSURANCE_CONDITION);\n  let coPayment = getElgibilityLineItem(newUser, CO_PAYMENT_CONDITION);\n  let coPaymentSpecialist = getElgibilityLineItem(newUser, CO_PAYMENT_SPECIALIST_CONDITION);\n  return { deductibleInYear, deductibleRemaning, coInsurance, coPayment, coPaymentSpecialist };\n};\n\nexport const planDates = (key) => {\n  if (!key || typeof key !== \"string\" || key === \"\") return {};\n  const [planStartDate, planEndDate] = key.split(\"-\") || [];\n  return {\n    ...(planStartDate && { planStartDate: moment(planStartDate).format(\"MMM DD, YYYY\") }),\n    ...(((planStartDate && !planEndDate) || planEndDate === \"99991231\") && { planEndDate: \"to-Date\" }),\n    ...(planEndDate && planEndDate !== \"99991231\" && { planEndDate: moment(planEndDate).format(\"MMM DD, YYYY\") }),\n  };\n};\n","import React, { useState } from \"react\";\nimport { Table, Card } from \"react-bootstrap\";\n import { BCC_VALUE } from \"../../../constant\";\nimport { formatCurrency } from \"utils\";\n// import { getDeductible } from \"./common\";\nconst HealthBenefitTabularForm = (props) => {\n  const { newUser } = props;\n\n  const collapaseRow = [\n    {\n      label: \"In Network Out Of Pocket (Stop Loss)\",\n      benefitValue: BCC_VALUE.OUT_OF_POCKET,\n      inNetwork: \"Y\",\n    },\n    {\n      label: \"Out of Network Benefit Plan\",\n      benefitValue: BCC_VALUE.DEDUCTIBLE,\n      inNetwork: \"N\",\n    },\n    {\n      label: \"Out of Network Out Of Pocket (Stop Loss)\",\n      benefitValue: BCC_VALUE.OUT_OF_POCKET,\n      inNetwork: \"N\",\n    },\n  ];\n\n  const columns = [\n    {\n      itemKey: \"type\",\n      title: \"Type\",\n      textAlign: \"left\",\n    },\n    {\n      itemKey: \"planStartDate\",\n      title: \"Start Date\",\n      textAlign: \"center\",\n    },\n    {\n      itemKey: \"planStartDate\",\n      title: \"End Date\",\n      textAlign: \"center\",\n    },\n    {\n      itemKey: \"deductibleInYear\",\n      title: \"Deductible Amount\",\n      textAlign: \"center\",\n    },\n    {\n      itemKey: \"deductibleRemaning\",\n      title: \"Deductible Remaining\",\n      textAlign: \"center\",\n    },\n    {\n      itemKey: \"coInsurance\",\n      title: \"CoInsurance%\",\n      textAlign: \"center\",\n    },\n    {\n      itemKey: \"coPayment\",\n      title: \"Co Payment\",\n      textAlign: \"center\",\n    },\n  ];\n\n  const TableRow = ({ user, index }) => {\n    const benefitObj = getDeductible(newUser, user.benefitValue, user.inNetwork) || {};\n    return (\n      <>\n        <tr key={index}>\n          <td className=\"ellipsis w-30\" style={{ textAlign: \"left\" }} title={user.label}>\n            {user.label}\n          </td>\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {benefitObj.deductibleInYear?.planStartDate || \"-\"}\n          </td>\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {benefitObj.deductibleInYear?.planEndDate || \"-\"}\n          </td>\n\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {`${formatCurrency(benefitObj.deductibleInYear?.benefit_amount || 0)}`}\n          </td>\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {`${formatCurrency(benefitObj.deductibleRemaning?.benefit_amount || 0)}`}\n          </td>\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {benefitObj.coInsurance?.benefit_percent || \"-\"}\n          </td>\n          <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n            {`${formatCurrency(benefitObj.coPayment?.benefit_amount || 0)}`}\n          </td>\n        </tr>\n      </>\n    );\n  };\n\n  return (\n    <div className=\"boxborder mt-2\">\n      <div className=\"table-responsive table-wrapper print-table\">\n        <Table className=\"table healthBenefitTabular\">\n          <thead>\n            <tr>\n              {columns.length > 0 &&\n                columns.map((m) => (\n                  <th className=\"ellipsis centered\" style={{ textAlign: m.textAlign }}>\n                    {m.title}\n                  </th>\n                ))}\n            </tr>\n          </thead>\n          <tbody>\n            {collapaseRow.length > 0 &&\n              collapaseRow.map((user, index) => <TableRow user={user} index={index} key={index} />)}\n          </tbody>\n        </Table>\n      </div>\n    </div>\n  );\n};\n\nexport default HealthBenefitTabularForm;\n","import ViewCheckBox from \"components/CheckBox/ViewCheckBox\";\nimport { Button, Card, Col, Modal, Row, Table } from \"react-bootstrap\";\n// import ViewCheckBox from \"./CheckBox/ViewCheckBox\";\n\nconst ProviderSearchRecord = (props) => {\n  const { data, handleSelect, handleClose, setSelectSearchData, selectSearchdata, cssClass } = props;\n  const TableRow = ({ item, index }) => {\n    // const { basic } = item;\n    return (\n      <tr className=\"cursor-pointer active\" onClick={() => setSelectSearchData(item)}>\n        <td className=\"popOver-centered\">{item.firstName}</td>\n        <td className=\"popOver-centered\">{item.middleName}</td>\n        <td className=\"popOver-centered\">{item.lastName}</td>\n        <td className=\"popOver-centered\">{item.dob}</td>\n        {/* <td className=\"popOver-centered\">{item.taxonomies[0].code}</td> */}\n        <td>{(selectSearchdata && selectSearchdata?.number) === item?.number && <ViewCheckBox />}</td>\n      </tr>\n    );\n  };\n\n  return (\n    <Modal\n      className={[\"searchList\", cssClass]}\n      show\n      animation={true}\n      size=\"xl\"\n      onHide={() => {\n        handleClose();\n      }}\n      style={{ paddingLeft: \"0\" }}\n      centered\n      scrollable\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Search Eligibility List\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body>\n        <div style={{ flex: 1 }}>\n          <Row>\n            <Col md=\"12\">\n              <Card className=\"strpied-tabled-with-hover m-0\">\n                <Card.Body>\n                  <div className=\"form-group-wrapper m-0 d-block\">\n                    <div className=\"table-responsive overFlow-y-hidden\">\n                      <Table className=\"table\">\n                        <thead>\n                          <tr>\n                            <th className=\"popOver-centered border-0\">First Name</th>\n                            <th className=\"popOver-centered border-0\">Middle Name</th>\n                            <th className=\"popOver-centered border-0\">Last Name</th>\n                            <th className=\"popOver-centered border-0\">DOB</th>\n                            <th></th>\n                          </tr>\n                        </thead>\n                        <tbody>\n                          {data.map((item, i) => (\n                            <TableRow key={i} index={i} item={item} />\n                          ))}\n                        </tbody>\n                      </Table>\n                    </div>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"primary\" className=\"modalButtons headerButton btn-fill\" onClick={handleClose}>\n          Close\n        </Button>\n        <Button\n          variant=\"secondary\"\n          className=\"modalButtons headerButton btn-fill\"\n          onClick={() => {\n            if (selectSearchdata) handleSelect(selectSearchdata);\n          }}\n        >\n          Ok\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ProviderSearchRecord;\n","import api from \"api\";\nimport InputField from \"components/InputField/InputField\";\nimport { currencyformatter, CONFIG, INSURANCE_PROVIDER, BCC_VALUE, CONFIRMATION_TYPE } from \"constant\";\nimport moment from \"moment\";\nimport { useEffect, useState, useRef } from \"react\";\nimport { Button, Card, Modal, Table } from \"react-bootstrap\";\nimport PlanItem from \"./PlanItem\";\nimport { convertYYYYMMDDToDate, hideElementsByClassName } from \"utils\";\nimport html2canvas from \"html2canvas\";\n// import { jsPDF } from \"jspdf\";\n// import HealthBenefitPlan from \"./HealthBenefitPlan\";\nimport PayerInformation from \"./PayerInformation\";\nimport EligibitlityDetailsCollapsableTable from \"./EligibitlityDetailsCollapsableTable\";\nimport { getDeductible, getElgibilityLineItem, planDates } from \"./Common.js\";\nimport HealthBenefitTabularForm from \"./HealthBenefitTabularForm\";\nimport EligibilitySearchRecord from \"./EligibilitySearchRecord\";\nimport { Storage } from \"aws-amplify\";\n// import ConfirmationModal from \"../ConfirmationModal\";\nimport { saveAs } from \"file-saver\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { isSimilarPayer } from \"utils\";\n\nconst options = {\n  componentRestrictions: { country: \"us\" },\n  fields: [\"address_components\", \"name\", \"formatted_address\"],\n  strictBounds: false,\n  types: [],\n};\nconst EligibilityDetailsModal = (props) => {\n  const { handleClose, data, selectedEligibility, cssClass } = props;\n\n  const [newUser, setNewUser] = useState(data);\n  const [selectedUser, setSelectedUser] = useState(null);\n  const [error, setError] = useState(\"\");\n  const [globalSearch, setGlobalSearch] = useState(\"\");\n  const [jumpToSection, setJumpToSection] = useState(null);\n  //   const employeesList = useSelector(employeesListSelector);\n  //   const loginUser = useSelector(selectLoginUser);\n  const [loading, setLoading] = useState(false);\n  const [recordData, setRecordData] = useState([]);\n  const [selectSearchData, setSelectSearchData] = useState(null);\n  const [collapsable, setCollapsable] = useState(false);\n  const [openTable, setOpentTable] = useState(false);\n  const [openConfirmation, setOpenConfirmation] = useState({ isShow: false });\n\n  //   const dispatch = useDispatch();\n  const componentRef = useRef();\n\n  const personalization = [\n    // {\n    //   itemKey: \"benefit_code\",\n    //   title: \"Benefit Code\",\n    //   textAlign: \"center\",\n    // },\n    {\n      itemKey: \"benefit_description\",\n      title: \"Benefit Description\",\n      textAlign: \"center\",\n    },\n    {\n      itemKey: \"benefit_coverage_description\",\n      title: \"Benefit Coverage Description\",\n      textAlign: \"center\",\n    },\n    {\n      itemKey: \"plan_date\",\n      title: \"Plan Date\",\n      textAlign: \"center\",\n    },\n    {\n      itemKey: \"benefit_amount\",\n      title: \"Benefit Amount\",\n      textAlign: \"center\",\n    },\n  ];\n  // check Health Benefit is active\n  const ELIG_BASE_CONDITION = (f) => f.benefit_code === \"30\" && f.benefit_coverage_code === \"1\";\n\n  // in case of medicare check that benefit is comes from Medicare part b\n  // when not medicare check that it comes from individual value\n  const MEDICARE_ELIG_CONDITION = (f) =>\n    newUser.payerId === \"01192\" ? ELIG_BASE_CONDITION(f) && f.insurance_type_code === \"MB\" : ELIG_BASE_CONDITION(f);\n\n  // Function find the Additional payer and IPA or could be any other requirement\n  const findBenefitCode = (benefits, itemToSearch) => {\n    if (!benefits) return null;\n\n    let filteredData = benefits.filter((f) => f.benefit_code === \"30\" && f.entity_description?.includes(itemToSearch));\n\n    if (filteredData.length === 0) {\n      filteredData = benefits.filter((f) => f.entity_description?.includes(itemToSearch));\n    }\n\n    if (filteredData.length === 0) return null;\n\n    // Sort based on \"primary_care_provider\" key.\n    filteredData.sort((a, b) => {\n      const aValue = a.primary_care_provider ? a.primary_care_provider.split(\"-\")[1] : \"00000000\"; // the end date\n      const bValue = b.primary_care_provider ? b.primary_care_provider.split(\"-\")[1] : \"00000000\"; // the end date\n      return bValue.localeCompare(aValue);\n    });\n\n    const {\n      benefit_code,\n      entity_description,\n      entity_name,\n      entity_addr_1,\n      entity_city,\n      entity_state,\n      entity_zip,\n      entity_phone,\n      primary_care_provider,\n      coordination_of_benefits,\n    } = filteredData[0];\n\n    const index = entity_description?.indexOf(itemToSearch);\n    if (index !== -1) {\n      let additionalPayerId;\n      const payerName = entity_name[index];\n      const additionalPayerElgibility = INSURANCE_PROVIDER.find((provider) => isSimilarPayer(provider, payerName));\n      if (additionalPayerElgibility?.value) {\n        additionalPayerId = additionalPayerElgibility.value;\n      }\n\n      const dates = planDates(primary_care_provider || coordination_of_benefits);\n\n      return {\n        ...filteredData[0],\n        ...dates,\n        additionalPayerId,\n        title: entity_name[index],\n        address: entity_addr_1?.[index],\n        city: entity_city?.[index],\n        state: entity_state?.[index],\n        zip: entity_zip?.[index],\n        phoneNumber: entity_phone?.[index],\n      };\n    }\n    return null;\n  };\n\n  useEffect(() => {\n    parseEligibiltyData(newUser);\n  }, [data]);\n\n  useEffect(() => {\n    setGlobalSearch(jumpToSection?.label || \"\");\n  }, [jumpToSection]);\n\n  //   useEffect(() => {\n  //     if (data)\n  //       setSelectedUser(\n  //         employeesList.find(\n  //           (emp) =>\n  //             (checkValidity(emp.firstName) === checkValidity(data.ins_name_f) &&\n  //               checkValidity(emp.lastName) === checkValidity(data.ins_name_l) &&\n  //               emp.dob === convertYYYYMMDDToDate(data.ins_dob, \"YYYY-MM-DD\")) ||\n  //             emp.id === data.employeeID ||\n  //             emp.id === data.employee?.id\n  //         )\n  //       );\n  //   }, [employeesList, data]);\n\n  const parseEligibiltyData = (objParams) => {\n    if (!objParams) return;\n\n    try {\n      const eligData = { ...objParams };\n      // Extract error messages and set them if they exist\n      if (eligData.error?.length) {\n        const errorMessage = eligData.error.map(({ error_mesg }) => error_mesg).join(\",\");\n        setError(errorMessage);\n      } else if (eligData?.error?.error_mesg) {\n        setError(eligData?.error?.error_mesg);\n      }\n\n      // Process benefits\n      const sortedBenefits = [];\n      let additionalPayerName;\n      let ipa;\n\n      // get part b, deductiable and co insurance object from health benefit\n      let partB = getElgibilityLineItem(eligData, MEDICARE_ELIG_CONDITION);\n\n      // get All Benefits\n      let healthBenefitPlans = eligData.benefit?.filter(\n        (f) => f.benefit_code === \"30\" && f.benefit_coverage_code === \"1\"\n      );\n\n      const { benefit } = eligData;\n      eligData.benefit?.forEach((benefit) => {\n        const { benefit_code } = benefit;\n\n        if (benefit_code === \"30\") {\n          sortedBenefits.unshift(benefit);\n        } else {\n          sortedBenefits.push(benefit);\n        }\n      });\n\n      // set additional payers if any\n      let res = findBenefitCode(benefit, \"Primary Payer\");\n      if (res) additionalPayerName = res;\n\n      // set IPA\n      let ipaRes = findBenefitCode(benefit, \"Independent Physicians Association (IPA)\");\n      if (ipaRes) ipa = ipaRes;\n\n      const dates = planDates(partB?.plan_date || eligData.plan_begin_date || eligData.plan_date || []);\n\n      // Create the newUser object\n\n      const deductibleObj = getDeductible(eligData, BCC_VALUE.DEDUCTIBLE, \"Y\");\n\n      if (partB) Object.assign(partB, { deductible: deductibleObj });\n\n      const payerName = INSURANCE_PROVIDER.find((f) => f.value === eligData.payerId)?.label;\n\n      const newUser = {\n        ...eligData,\n        healthBenefitPlans,\n        additionalPayerName,\n        benefit: sortedBenefits,\n        ipa,\n        partB,\n        payerName,\n        ...dates,\n      };\n\n      setNewUser(newUser);\n    } catch (ex) {\n      console.log(\"parseEligibiltyData\", ex);\n    }\n  };\n\n  const searchData = () => {};\n\n  const handleUpdatePatient = async () => {\n    // const { payerId } = selectedEligibility;\n    const { ins_name_f, ins_name_l, ins_dob, ins_number, employee } = data;\n\n    if (employee) {\n      return populate(employee);\n    }\n\n    const filteredArray =\n      employeesList?.filter(\n        (item) =>\n          (checkValidity(item.firstName) === checkValidity(ins_name_f) &&\n            checkValidity(item.lastName) === checkValidity(ins_name_l) &&\n            item.dob === convertYYYYMMDDToDate(ins_dob, \"YYYY-MM-DD\")) ||\n          item.id === selectedUser.id\n      ) || [];\n    if (filteredArray.length === 0) {\n      // dispatch(setMessage(\"No Patient Found\", MESSAGE_MODES.info));\n      return;\n    }\n\n    if (filteredArray.length === 1) {\n      return populate(filteredArray[0]);\n    }\n\n    setRecordData(filteredArray);\n\n    // if (validateFieldsAreSimilar()) return;\n\n    // try {\n    //   const updatedEmp = {\n    //     ...selectedUser,\n    //     firstName: ins_name_f,\n    //     lastName: ins_name_l,\n    //     dob: convertYYYYMMDDToDate(ins_dob, \"YYYY-MM-DD\"),\n    //     medicalNo: ins_number,\n    //     medicareNo: payerId === \"01192\" ? ins_number : emp.medicareNo,\n    //   };\n    //   await api.updateEmployeePersonals(updatedEmp);\n    //   dispatch(setMessage(\"Updated successfully.\", MESSAGE_MODES.success));\n    // } catch (error) {\n    //   console.log(error);\n    //   dispatch(setMessage(error.message, MESSAGE_MODES.error));\n    // }\n  };\n\n  const validateFieldsAreSimilar = (selectedUser) => {\n    if (!selectedUser) return true;\n    const { insuranceDetails } = selectedUser;\n    const insData = [...parseInsDetails(insuranceDetails, selectedUser)];\n    const findIns = insData.find((f) => f.insuranceCompany === data.payerId);\n    if (!findIns) return false;\n    if (data.ins_sex && selectedUser.sex.toLowerCase() !== data.ins_sex.toLowerCase()) return false;\n    if (data.ins_name_f && selectedUser.firstName.toLowerCase() !== data.ins_name_f.toLowerCase()) return false;\n    if (data.ins_name_l && selectedUser.lastName.toLowerCase() !== data.ins_name_l.toLowerCase()) return false;\n    if (data.ins_dob && moment(selectedUser.dob).format(\"YYYYMMDD\") !== convertYYYYMMDDToDate(data.ins_dob, \"YYYYMMDD\"))\n      return false;\n    if (data.ins_number && findIns?.medicalNo?.toLowerCase() !== data.ins_number.toLowerCase()) return false;\n    return true;\n  };\n\n  const isActive = () => {\n    if (newUser.payerId === \"01192\") {\n      return !!newUser?.benefit?.some(MEDICARE_ELIG_CONDITION);\n    }\n    return !!newUser?.benefit?.some(ELIG_BASE_CONDITION);\n  };\n\n  const handleAddToProfile = async (isAddInProfile, benefitData) => {\n    setLoading(true);\n    let dataResponse = null;\n    let payload = null;\n    // check the additional payer eligibility without medical no\n\n    // check the additional payer eligibility with medical no\n    let { exception, status, data, error, obj } = await isEligibileWithAdditionalPayer(benefitData, newUser.medicalNo);\n    dataResponse = data;\n    payload = obj;\n    if (exception) {\n      setLoading(false);\n      return;\n    }\n\n    if (error) {\n      // dispatch(setMessage(error, MESSAGE_MODES.error));\n      return;\n    }\n\n    setLoading(false);\n    // dispatch(setMessage(`Eligibility Passed`, MESSAGE_MODES.success));\n    parseEligibiltyData({ ...dataResponse, payerId: payload.payerId });\n\n    if (data && isAddInProfile) {\n      const { ins_number } = dataResponse;\n      const { payerId } = newUser;\n      if (selectedUser) {\n        const { insuranceDetails } = selectedUser;\n        const insData = [...parseInsDetails(insuranceDetails, selectedUser)];\n\n        const index = insData.findIndex((f) => f.insuranceCompany === benefitData.additionalPayerId);\n        let ins = {\n          id: \"prefix_\" + Math.random().toString(36).slice(2, 9),\n          insuranceCompany: benefitData.additionalPayerId,\n          insuranceCompanyCode: benefitData.title,\n          medicalNo: ins_number,\n          isActive: true,\n          ...(payerId === \"01192\" && { medicareNo: ins_number }),\n        };\n        if (index !== -1) {\n          const findIns = insData[index];\n          insData.splice(index, 1, {\n            ...findIns,\n            ...ins,\n          });\n        } else {\n          insData.push(ins);\n        }\n\n        const objToUpdate = {\n          id: selectedUser.id,\n          insuranceDetails: insData,\n          ...(index === 0 && {\n            medicalNo: ins_number,\n            insuranceCompany: benefitData.additionalPayerId,\n            insuranceCompanyCode: benefitData.title,\n          }),\n        };\n        await api.updateEmployeeInsurance(objToUpdate, loginUser);\n      }\n    }\n    if (data && !isAddInProfile && !!newUser.employee) {\n      const { ins_number } = data;\n      // dispatch(setMessage(`Eligibility Passed, Please note the Insurance Number ${ins_number}`, MESSAGE_MODES.success));\n    }\n  };\n\n  const isEligibileWithAdditionalPayer = async (benefitData, medicalNo) => {\n    let insNo = [medicalNo];\n    let defaultPayerId = [benefitData.additionalPayerId];\n    let defaultPayerName = [benefitData.title];\n    if (medicalNo) insNo = [getInsuranceNumberWithPrefix(benefitData.additionalPayerId, medicalNo)];\n    if (insNo && insNo != \"\" && !insNo.includes(medicalNo)) {\n      insNo.unshift(medicalNo);\n      defaultPayerId.unshift(benefitData.additionalPayerId);\n      defaultPayerName.unshift(benefitData.title);\n    }\n    try {\n      const obj = {\n        clientID: userCompanyID.get(),\n        locationID: CONFIG.generalFacility,\n        subAgentID: CONFIG.generalSubAgent,\n        firstName: getValidDep(newUser.ins_name_f),\n        lastName: getValidDep(newUser.ins_name_l),\n        middleName: getValidDep(newUser.ins_name_m),\n        fdos: moment().format(\"YYYYMMDD\"),\n        userID: loginUser.sub,\n        ...(insNo && insNo != \"\" && { medicalNo: insNo }),\n        userName: loginUser.name,\n        subAgentName: newUser.subAgentName,\n        locationName: newUser.clientName,\n        clientName: newUser.clientName,\n        insuranceCompany: benefitData.additionalPayerId,\n        dob: newUser.ins_dob,\n        insuranceProvider: benefitData.title,\n        street: newUser.ins_addr_1,\n        city: newUser.ins_city,\n        state: newUser.ins_state,\n        zip: newUser.ins_zip,\n        countryCode: \"+1\",\n        empID: selectedUser?.id || \"\",\n        country: \"US\",\n        payerids: defaultPayerId,\n        payerNames: defaultPayerName,\n      };\n\n      const res = await api.checkBRMEligibility(obj, loginUser);\n\n      const { data, error } = res;\n\n      if (error) {\n        return { exception: false, status: false, error: error.error_mesg, obj };\n      }\n\n      if (data) {\n        const isEligible = !!data?.benefit?.some(ELIG_BASE_CONDITION);\n        if (isEligible) {\n          return { exception: false, status: true, data: data, obj };\n        }\n      }\n    } catch (e) {\n      console.log(\"E\", e);\n      // dispatch(setMessage(\"Fail to Process the request\", MESSAGE_MODES.error));\n    }\n    return { exception: true };\n  };\n\n  const onHandleConfirmation = (isConfirm, type) => {\n    setOpenConfirmation({ isShow: false });\n    if (!isConfirm) return;\n\n    switch (type) {\n      case CONFIRMATION_TYPE.UPDATE_PATIENT:\n        updateDemoGraphics();\n        break;\n      case CONFIRMATION_TYPE.CREATE_PATIENT:\n        createNewEmployee();\n        break;\n    }\n  };\n  const handlePrints = async () => {\n    const element = componentRef.current;\n    hideElementsByClassName(\"noPrint\");\n    try {\n      const canvas = await html2canvas(element);\n      const pdf = new jsPDF(\"p\", \"mm\", \"a4\"); // 'p' for portrait, 'mm' for units, 'a4' for page size\n\n      // Define header text\n      const headerText = \"Eligibility Details\";\n      // Add header with custom font style and size\n      pdf.setFont(\"helvetica\", \"bold\");\n      pdf.setFontSize(12);\n      // Add header\n      pdf.text(headerText, 10, 7); //// Customize the header text and position\n\n      const imgWidth = pdf.internal.pageSize.getWidth(); // Get page width\n      const imgHeight = (canvas.height * imgWidth) / canvas.width; // Maintain aspect ratio\n      pdf.addImage(canvas.toDataURL(\"image/jpeg\"), \"JPEG\", 0, 10, imgWidth, imgHeight); // Adjust the image position (e.g., 10 units down)\n\n      // Define footer text\n      const footerText = \"Page \";\n\n      // Add footer\n      pdf.setFontSize(10);\n      pdf.text(\n        `${footerText}${pdf.internal.getCurrentPageInfo().pageNumber}`,\n        pdf.internal.pageSize.getWidth() / 2,\n        pdf.internal.pageSize.getHeight() - 10,\n        {\n          align: \"center\",\n        }\n      ); // Adjust the footer text and position\n      componentRef.current = element;\n      handlePrint();\n\n      // pdf.save(`Eligibility-Details.pdf`);\n      // showElementsByClassName(\"noPrint\");\n    } catch (err) {\n      console.log(\"Error-\", err);\n    }\n  };\n\n  const handleDownload = async (print) => {\n    const element = componentRef.current;\n    hideElementsByClassName(\"noPrint\");\n    try {\n      const canvas = await html2canvas(element);\n      const pdf = new jsPDF(\"p\", \"mm\", \"a4\"); // 'p' for portrait, 'mm' for units, 'a4' for page size\n\n      // Define header text\n      const headerText = \"Eligibility Details\";\n      // Add header with custom font style and size\n      pdf.setFont(\"helvetica\", \"bold\");\n      pdf.setFontSize(12);\n      const leftMargin = 10; // Adjust the left margin as needed\n      const rightMargin = 10;\n      // Add header\n      pdf.text(headerText, leftMargin, 7); //// Customize the header text and position\n\n      const imgWidth = pdf.internal.pageSize.getWidth() - rightMargin - leftMargin; // Get page width\n      const imgHeight = (canvas.height * imgWidth) / canvas.width; // Maintain aspect ratio\n      pdf.addImage(canvas.toDataURL(\"image/jpeg\"), \"JPEG\", leftMargin, 10, imgWidth, imgHeight); // Adjust the image position (e.g., 10 units down)\n\n      // Define footer text\n      const footerText = \"Page \";\n\n      // Add footer\n      pdf.setFontSize(10);\n      pdf.text(\n        `${footerText}${pdf.internal.getCurrentPageInfo().pageNumber}`,\n        pdf.internal.pageSize.getWidth() / 2,\n        pdf.internal.pageSize.getHeight() - 10,\n        {\n          align: \"center\",\n        }\n      ); // Adjust the footer text and position'\n\n      // Open a new window or tab with the PDF content for printing\n      if (print) {\n        const pdfDataUri = pdf.output(\"datauristring\");\n        const newWindow = window.open(\"\", \"_blank\");\n        newWindow.document.write('<iframe width=\"100%\" height=\"100%\" src=\"' + pdfDataUri + '\"></iframe>');\n        newWindow.document.close();\n      } else {\n        pdf.save(`Eligibility-Details.pdf`);\n      }\n\n      // Trigger the print dialog\n      // setTimeout(() => {\n      //   newWindow.print();\n      // }, 500);\n\n      showElementsByClassName(\"noPrint\");\n    } catch (err) {\n      console.log(\"Error-\", err);\n    }\n  };\n\n  const handleSingleFieldUpdate = async (key, value) => {\n    try {\n      // dispatch(setLoader(true));\n      const res = await api.updateEmpSingleField(key, value, selectedUser);\n      setSelectedUser(res);\n      // dispatch(setLoader(false));\n    } catch (err) {\n      console.log(\"Error ;-\", err);\n      // dispatch(setLoader(false));\n    }\n  };\n\n  const compareStrings = (empKey, key) => {\n    if (!isActive()) return null;\n    if (empKey === \"medicalNo\" || empKey === \"copay\" || empKey === \"deductible\") {\n      if (selectedUser) {\n        const { insuranceDetails } = selectedUser;\n        const insData = [...parseInsDetails(insuranceDetails, selectedUser)];\n\n        const index = insData.findIndex((f) => f.insuranceCompany === newUser[\"payerId\"]);\n        const findIns = insData[index];\n\n        const { partB } = newUser;\n        if (findIns && (empKey === \"copay\" || empKey === \"deductible\")) {\n          const value = partB.deductible[key]?.benefit_amount || 0;\n\n          if (value != 0 && findIns[empKey] !== value) {\n            return (\n              <span\n                className=\"linkedText text-lowercase textUnderLine\"\n                onClick={() => {\n                  let insDetails = [...insData];\n\n                  if (index !== -1) {\n                    insDetails.splice(index, 1, {\n                      ...findIns,\n                      [empKey]: value || 0,\n                    });\n                  }\n                  handleSingleFieldUpdate(\"insuranceDetails\", insDetails);\n                }}\n              >\n                update\n              </span>\n            );\n          }\n          return null;\n        }\n        if (\n          findIns &&\n          (empKey !== \"copay\" || empKey !== \"deductible\") &&\n          findIns[empKey]?.toString().toLowerCase() !== newUser[key]?.toLowerCase()\n        ) {\n          return (\n            <span\n              className=\"linkedText text-lowercase textUnderLine\"\n              onClick={() => {\n                let insDetails = [...insData];\n\n                if (index !== -1) {\n                  insDetails.splice(index, 1, {\n                    ...findIns,\n                    [empKey]: newUser[key],\n                    isActive: true,\n                    ...(empKey === \"medicalNo\" && newUser[\"payerId\"] === \"01192\" && { medicareNo: newUser[key] }),\n                  });\n                }\n                handleSingleFieldUpdate(\"insuranceDetails\", insDetails);\n              }}\n            >\n              update\n            </span>\n          );\n        }\n      }\n      return null;\n    }\n\n    if (empKey === \"dob\") {\n      if (\n        selectedUser &&\n        newUser[key] &&\n        selectedUser?.[empKey] !== convertYYYYMMDDToDate(newUser[key], \"YYYY-MM-DD\")\n      ) {\n        return (\n          <span\n            className=\"linkedText text-lowercase textUnderLine\"\n            onClick={() => handleSingleFieldUpdate(empKey, convertYYYYMMDDToDate(newUser[key], \"YYYY-MM-DD\"))}\n          >\n            update\n          </span>\n        );\n      }\n      return null;\n    }\n    if (selectedUser && selectedUser[empKey]?.toLowerCase() !== newUser[key]?.toLowerCase()) {\n      return (\n        <span\n          className=\"linkedText text-lowercase textUnderLine\"\n          onClick={() => handleSingleFieldUpdate(empKey, getValidDep(newUser[key]))}\n        >\n          update\n        </span>\n      );\n    }\n    return null;\n  };\n\n  const updateDemoGraphics = async () => {\n    const { ins_name_f, ins_name_l, ins_dob, ins_number, payerId, ins_sex, payerName, partB } = newUser;\n    try {\n      const ins = {\n        insuranceCompany: payerId,\n        medicalNo: ins_number,\n        medicareNo: data.payerId === \"01192\" ? ins_number : selectedUser.medicareNo || \"\",\n        insuranceCompanyCode: payerName,\n        isActive: true,\n      };\n\n      const { insuranceDetails } = selectedUser;\n      const insData = [...parseInsDetails(insuranceDetails, selectedUser)];\n\n      const index = insData.findIndex((f) => f.insuranceCompany === payerId);\n      if (index !== -1) {\n        const findIns = insData[index];\n        insData.splice(index, 1, {\n          ...findIns,\n          ...ins,\n        });\n      } else {\n        insData.push({ ...ins, id: \"prefix_\" + Math.random().toString(36).slice(2, 9) });\n      }\n\n      const updatedEmp = {\n        ...selectedUser,\n        firstName: getValidDep(ins_name_f),\n        lastName: getValidDep(ins_name_l),\n        dob: convertYYYYMMDDToDate(ins_dob, \"YYYY-MM-DD\"),\n        gender: ins_sex,\n        insuranceDetails: insData,\n        ...(index === 0 && ins),\n      };\n      const res = await api.updateEmployeePersonals(updatedEmp);\n      setSelectedUser(res);\n      // dispatch(setMessage(\"Updated successfully.\", MESSAGE_MODES.success));\n    } catch (error) {\n      console.log(error);\n      // dispatch(setMessage(error.message, MESSAGE_MODES.error));\n    }\n  };\n\n  const createNewEmployee = async () => {\n    const { ins_name_f, ins_name_l, ins_dob, ins_number, payerId, payerName, ins_sex, id } = newUser;\n    try {\n      const ins = {\n        id: \"prefix_\" + Math.random().toString(36).slice(2, 9),\n        insuranceCompany: payerId,\n        medicalNo: convertToUpper(ins_number),\n        medicareNo: convertToUpper(data.payerId === \"01192\" ? ins_number : \"\"),\n        insuranceCompanyCode: payerName,\n        insuranceGroupId: \"\",\n        isMedicare: \"N\",\n        isActive: true,\n      };\n      const newEmp = {\n        firstName: getValidDep(ins_name_f),\n        lastName: getValidDep(ins_name_l),\n        dob: convertYYYYMMDDToDate(ins_dob, \"YYYY-MM-DD\"),\n        insuranceDetails: [ins],\n        gender: ins_sex,\n        eEligibility: true,\n        eligibilityID: id,\n        ...ins,\n      };\n      // dispatch(createEmployeeAsync(newEmp));\n    } catch (error) {\n      console.log(error);\n      // dispatch(setMessage(error.message, MESSAGE_MODES.error));\n    }\n  };\n\n  const populate = async (emp) => {\n    const resMessage = validateFieldsAreSimilar(emp);\n    if (resMessage) {\n      // dispatch(setMessage(\"Patient Info is Up-to-date\", MESSAGE_MODES.info));\n      return;\n    }\n    setSelectedUser(emp);\n    setOpenConfirmation({\n      isShow: true,\n      actionType: CONFIRMATION_TYPE.UPDATE_PATIENT,\n      title: `Update Demograpihics (${emp.schrID})`,\n      message: `Demographics info is'nt matched, Would you like to update patient?`,\n    });\n  };\n\n  \n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        size={\"2x1\"}\n        onHide={() => {\n          handleClose();\n        }}\n        backdrop=\"static\"\n        style={{ paddingLeft: \"0\" }}\n        centered\n        scrollable\n        className={cssClass ?? \"\"}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {/* {t(\"eligibilityDetails\")} */}\n            {\"Eligibility Details\"}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n            color: \"var(--text-black)\",\n          }}\n          className=\"text-uppercase\"\n        >\n          <div className=\"testAdmin createClientsWrapper printableArea\" id=\"printableArea\" ref={componentRef}>\n            <div className=\"my-2 boxborder\">\n              <div className=\"crew-profile-column-equal align-items-center\">\n                <label className=\"modalLineHeaders fw-bold mt-0\">Demographics:</label>\n                <div className=\"form-group-eligibity-wrapper w-100\">\n                  <label className=\"modalLineHeaders fw-bold\">Status:</label>\n                  <span className={`fw-bold ${isActive() ? \"colorGreen\" : \"colorRed\"} `}>\n                    {isActive() ? \"Active - Eligible\" : \"InActive - Not Eligible\"}\n                  </span>\n                </div>\n              </div>\n              <div className=\"crew-profile-column-equal  form-group-eligibity-wrapper\">\n                <div className=\"form-group-eligibity-wrapper w-100\">\n                  <label className=\"modalLineHeaders fw-bold\">First Name: </label>\n                  <span className={compareStrings(\"firstName\", \"ins_name_f\") ? \"error-text\" : \"\"}>\n                    {newUser.ins_name_f || newUser.first_name}\n                  </span>\n                  {compareStrings(\"firstName\", \"ins_name_f\") || <></>}\n                </div>\n                <div className=\"form-group-eligibity-wrapper w-100\">\n                  <label className=\"modalLineHeaders fw-bold\">Last Name: </label>\n                  <span className={compareStrings(\"lastName\", \"ins_name_l\") ? \"error-text\" : \"\"}>\n                    {newUser.ins_name_l || newUser.last_name}\n                  </span>\n                  {compareStrings(\"lastName\", \"ins_name_l\") || <></>}\n                </div>\n              </div>\n              <div className=\"crew-profile-column-equal  form-group-eligibity-wrapper\">\n                <div className=\"form-group-eligibity-wrapper w-100\">\n                  <label className={`modalLineHeaders fw-bold`}>DOB:</label>\n                  <span className={compareStrings(\"dob\", \"ins_dob\") ? \"error-text\" : \"\"}>\n                    {newUser.ins_dob ? convertYYYYMMDDToDate(newUser.ins_dob || newUser.dob) : \"-\"}\n                  </span>\n                  {compareStrings(\"dob\", \"ins_dob\") || <></>}\n                </div>\n                <div className=\"form-group-eligibity-wrapper w-100\">\n                  <label className=\"modalLineHeaders fw-bold\">Gender: </label>\n                  <span className={compareStrings(\"sex\", \"ins_sex\") ? \"error-text\" : \"\"}>{newUser.sex}</span>\n                  {compareStrings(\"sex\", \"ins_sex\") || <></>}\n                </div>\n              </div>\n              <div className=\"crew-profile-column-equal form-group-eligibity-wrapper\">\n                <div className=\"form-group-eligibity-wrapper w-100\">\n                  <label className=\"modalLineHeaders fw-bold\">Insurance No: </label>\n                  <span className={compareStrings(\"medicalNo\", \"ins_number\") ? \"error-text\" : \"\"}>\n                    {newUser.insurance_number || newUser.medicalNo}\n                  </span>\n                  {compareStrings(\"medicalNo\", \"ins_number\") || <></>}\n                </div>\n                <div className=\"form-group-eligibity-wrapper w-100\">\n                  <label className=\"modalLineHeaders fw-bold\">Insurance Name: </label>\n                  <span>{newUser.insurance_name}</span>\n                </div>\n              </div>\n              {/* {isActive() &&\n                !validateFieldsAreSimilar(selectedUser) &&\n                (newUser.id || newUser.employeeID || newUser.employee) && (\n                  <Button\n                    style={{ marginBottom: 10 }}\n                    variant=\"secondary\"\n                    className=\"modalButtons headerButton btn-fill noPrint\"\n                    onClick={handleUpdatePatient}\n                  >\n                    Update Patient\n                  </Button>\n                )}\n              {isActive() && !selectedUser && (newUser.id || newUser.employeeID || newUser.employee) && (\n                <Button\n                  style={{ marginBottom: 10 }}\n                  variant=\"secondary\"\n                  className=\"modalButtons headerButton btn-fill noPrint\"\n                  onClick={() => {\n                    setOpenConfirmation({\n                      isShow: true,\n                      title: \"Create Patient\",\n                      message: \"Would you like to create new Patient with this Patient Info?\",\n                      actionType: CONFIRMATION_TYPE.CREATE_PATIENT,\n                    });\n                  }}\n                >\n                  Create Patient\n                </Button>\n              )} */}\n            </div>\n            <PlanItem\n              item={newUser?.partB}\n              handleCollapse={() => setCollapsable(!collapsable)}\n              benefitLabel={newUser.payerId !== \"01192\" ? \"In Network Benefit Information\" : \"Benefit Information\"}\n              title={newUser.payerId !== \"01192\" ? \"Individual - Benefit Details:\" : \"Part B - Beneficiary Details:\"}\n              newUser={newUser}\n              compareStrings={compareStrings}\n            ></PlanItem>\n\n            {newUser.payerId !== \"01192\" &&\n              collapsable &&\n              newUser.healthBenefitPlans\n                ?.filter((f, i) => i !== 0)\n                ?.map((plan) => (\n                  <PlanItem item={plan} title=\"Individual - Benefit Details:\" newUser={newUser}></PlanItem>\n                ))}\n\n            {newUser.payerId !== \"01192\" && collapsable && (\n              <>\n                <HealthBenefitTabularForm newUser={newUser} />\n              </>\n            )}\n\n            <div className=\"my-2 boxborder\">\n              <div className=\"d-flex justify-content-between crew-profile-column-equal align-items-start\">\n                <PayerInformation\n                  data={newUser.additionalPayerName}\n                  handleAddToProfile={handleAddToProfile}\n                  label=\"Additional Payer:\"\n                  loading={loading}\n                  employee={selectedUser}\n                />\n                <PayerInformation\n                  data={newUser.ipa}\n                  handleAddToProfile={handleAddToProfile}\n                  label=\"Independent Physicians Association:\"\n                  loading={loading}\n                  employee={selectedUser}\n                />\n              </div>\n            </div>\n          </div>\n\n          {error && (\n            <div style={{ color: \"red\" }}>\n              <h6>{error}</h6>\n            </div>\n          )}\n          <div className=\"d-flex align-items-center justify-content-around my-3 \">\n            <div className=\"form-group-eligibity-wrapper w-75\">\n              <InputField\n                type=\"dropDown\"\n                options={\n                  newUser.benefit &&\n                  newUser.benefit.map((benefit) => {\n                    return { value: benefit.benefit_code, label: benefit.benefit_description };\n                  })\n                }\n                placeholder=\"Search...\"\n                value={jumpToSection}\n                handleChange={(e) => setJumpToSection(e)}\n                groupWrapper=\"w-100\"\n                onInputChange={(text) => {\n                  text && setJumpToSection(null);\n                }}\n                isClearable\n              />\n            </div>\n            <div\n              className=\"form-group-eligibity-wrapper  cursor-pointer fw-bold fs-5\"\n              onClick={() => setOpentTable(!openTable)}\n            >\n              {openTable ? <i className=\"fas fa-chevron-down\" /> : <i className=\"fas fa-chevron-up\" />}\n            </div>\n          </div>\n\n          {openTable && (\n            <div className=\"form-group-wrapper d-block\">\n              <EligibitlityDetailsCollapsableTable\n                columns={personalization}\n                rows={newUser.benefit || []}\n                globalSearch={globalSearch}\n              />\n            </div>\n          )}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          {/* <div>\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"secondary\"\n              className=\"modalButtons mx-2 headerButton btn-fill\"\n              onClick={() => handleDownload()}\n            >\n              Download\n            </Button>\n\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"secondary\"\n              className=\"modalButtons headerButton btn-fill\"\n              // onClick={() => window.print()}\n              onClick={() => handleDownload(true)}\n            >\n              Print\n            </Button>\n          </div> */}\n        </Modal.Footer>\n      </Modal>\n      {recordData.length > 0 && (\n        <EligibilitySearchRecord\n          data={recordData}\n          handleSelect={populate}\n          handleClose={() => {\n            setRecordData([]), setSelectSearchData(null);\n          }}\n          setSelectSearchData={setSelectSearchData}\n          selectSearchdata={selectSearchData}\n          cssClass={\"seperateModal\"}\n        />\n      )}\n      {/* {openConfirmation.isShow && (\n        <ConfirmationModal\n          show={openConfirmation.isShow}\n          actionType={openConfirmation.actionType}\n          title={openConfirmation.title}\n          message={openConfirmation.message}\n          handleConfirm={onHandleConfirmation}\n          cssClass={\"seperateModal\"}\n          closeBtn\n        />\n      )} */}\n    </>\n  );\n};\n\nexport default EligibilityDetailsModal;\n","import React, { useState } from \"react\";\nimport Loader from \"components/Loader/Loader\";\nimport { NOTIFICATION_STATUS } from \"constant\";\nimport { Button, Modal, Card, Table, Row, Col } from \"react-bootstrap\";\nimport Status from \"components/Status/Status\";\nimport StatsView from \"components/PreRegister/StatsView\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\n\nconst ImportFileStatusModal = ({ data, handleClose, handleCancelRequests }) => {\n  // const [loading, setLoading] = useState(false);\n\n  let files = data.filesStatus || [];\n  const TableRow = ({ err, index }) => {\n    let ttl = data?.Items?.filter((item) => item.fileID === err.id);\n    return (\n      <tr>\n        <td style={{ textAlign: \"center\" }}>{index + 1}</td>\n        <td>{err?.fileName.split(\"$\")[1]}</td>\n        {/* <td>{err?.status}</td> */}\n        <td className=\"ellipsis text-center\">\n          <div className=\"star-icon-wrapper cursor-pointer\" style={{ textAlign: \"center\" }}>\n            <Status\n              type=\"circle\"\n              size=\"md\"\n              color={err.status === \"pending\" ? \"gray\" : err.status.includes(\"Parsed\") ? \"green\" : \"orange\"}\n              crossIcon\n            />\n          </div>\n        </td>\n        <td style={{ textAlign: \"center\", fontWeight: \"bold\" }}>{ttl?.length ?? 0}</td>\n        <td style={{ textAlign: \"center\", fontWeight: \"bold\" }}>\n          {ttl?.filter((item) => item.status !== NOTIFICATION_STATUS.pending).length ?? 0}\n        </td>\n        <td style={{ textAlign: \"center\", fontWeight: \"bold\" }}>\n          {ttl?.filter((item) => item.status == NOTIFICATION_STATUS.pending).length ?? 0}\n        </td>\n      </tr>\n    );\n  };\n  return (\n    <>\n      <Modal show animation={true} onHide={() => handleClose()} size={\"lg\"} scrollable style={{ marginBottom: 0 }}>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            File Upload Summary\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body className=\"marginTop0\" style={{ paddingTop: \"0px\" }}>\n          <>\n            <div className=\"statsOrderDetails\">\n              <StatsView label=\"Files\" value={files.length ?? 0} cssClass={\"fs-5\"} />\n              <StatsView\n                label=\"Completed\"\n                value={files.filter((f) => f.status.includes(\"Parsed\")).length ?? 0}\n                cssClass={\"fs-5\"}\n              />\n              <StatsView\n                label=\"Remaining\"\n                value={files.filter((f) => !f.status.includes(\"Parsed\")).length ?? 0}\n                cssClass={\"fs-5\"}\n              />\n            </div>\n            <div style={{ flex: 1 }}>\n              <Row>\n                <Col md=\"12\">\n                  <Card className=\"strpied-tabled-with-hover\">\n                    <Card.Body>\n                      {files.length > 0 && (\n                        <div className=\"d-block\">\n                          <div className=\"table-responsive\" style={{ overflow: \"hidden\" }}>\n                            <span>Details</span>\n                            <Table className=\"table-hover table-striped\">\n                              <thead>\n                                <tr>\n                                  <th>Sr#</th>\n                                  <th>FileName</th>\n                                  <th style={{ textAlign: \"center\" }}>Status</th>\n                                  <th style={{ textAlign: \"center\" }}>Total Records</th>\n                                  <th style={{ textAlign: \"center\" }}>Completed</th>\n                                  <th style={{ textAlign: \"center\" }}>Remaining</th>\n                                </tr>\n                              </thead>\n                              <tbody>\n                                {files.length > 0 &&\n                                  files.map((err, index) => <TableRow err={err} key={index} index={index} />)}\n                              </tbody>\n                            </Table>\n                          </div>\n                        </div>\n                      )}\n                    </Card.Body>\n                  </Card>\n                </Col>\n              </Row>\n            </div>\n          </>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button className=\"modalButtons headerButton btn-fill\" variant=\"primary\" onClick={() => handleClose()}>\n            Close\n          </Button>\n          <Button\n            className=\"modalButtons headerButton btn-fill\"\n            variant=\"secondary\"\n            // onClick={() => handleCancelAll(data.id)}\n            onClick={() => handleCancelRequests(data)}\n          >\n            Cancel\n          </Button>\n        </Modal.Footer>\n        {/* {loading && <Loader />} */}\n      </Modal>\n    </>\n  );\n};\n\nexport default ImportFileStatusModal;\n","import api from \"api\";\nimport { useSelector } from \"react-redux\";\nimport Loader from \"components/Loader/Loader\";\nimport StatsView from \"components/PreRegister/StatsView\";\nimport Status from \"components/Status/Status\";\nimport { ORDER_STATUS } from \"constant\";\nimport { NOTIFICATION_STATUS, PAGE_LIMIT } from \"constant\";\nimport moment from \"moment\";\nimport React, { useEffect, useState, useContext, useMemo } from \"react\";\nimport { Button, Modal, Card, Table, Row, Col } from \"react-bootstrap\";\nimport { parseTestDates } from \"utils\";\nimport { formatDateMDY } from \"utils\";\nimport { capitalizeLetter } from \"utils\";\nimport Select from \"react-select\";\nimport MainTable from \"components/Table/MainTable\";\nimport { ORDER_IMPORT_MODAL_PERSONALIZE } from \"constants/personalization\";\nimport { selectClient } from \"store/features/authentication/authenticationSelectors\";\n\nconst PatientImportErrorModal = ({ data, files, handleClose, onCompleteLoad, title, appContext }) => {\n  const [successData, setSuccessData] = useState([]);\n  const [filteredList, setFilteredList] = useState([]);\n  const [filter, setFilter] = useState({});\n  const [loading, setLoading] = useState(false);\n  const [dropdown, setDropdown] = useState({});\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n\n  const userClientData = useSelector(selectClient);\n  \n  const parseDOB = (dob) => {\n    const parsedDate = moment(dob.padStart(6, \"0\"), \"MMDDYY\");\n    if (parsedDate.year() > new Date().getFullYear()) {\n      parsedDate.subtract(100, \"years\");\n    }\n    return parsedDate.format(\"YYYY-MM-DD\");\n  };\n\n  const listData = useMemo(() => {\n    return data.map((record) => {\n      const { data: m } = record;\n\n      return {\n        ...m,\n        dob: m.dob ? parseDOB(m.dob) : \"\",\n        ...(m.test_date && { test_date: parseTestDates(m.test_date) }),\n        sex: m.gender,\n        insurance_name: m.p_insurance,\n        insurance_number: m.p_insurance_id,\n        insuranceCompanyCode: m.p_code,\n        clientID: record.clientID,\n        siteID: record.siteID,\n        street2: m.room_number,\n        floorNo: m.floorID,\n        status: record.status,\n        requestID: record.id,\n        ...(m.s_code && {\n          insuranceDetails: {\n            insuranceCompany: m.s_code,\n            insuranceCompanyCode: m.s_insurance,\n            medicalNo: m.s_insurance_id,\n          },\n        }),\n      };\n    });\n  }, [data]);\n\n  useEffect(() => {\n    if (dropdown.value) {\n      setFilteredList(listData.filter((f) => f.fileID === dropdown.value));\n    }\n  }, [dropdown]);\n\n  useEffect(() => {\n    if (sortBy) {\n      setFilteredList(\n        sortDescending\n          ? [...listData].sort((a, b) => {\n              const testerB = b[sortBy] ?? \"\";\n              const testerA = a[sortBy] ?? \"\";\n              return testerB < testerA ? 1 : testerA < testerB ? -1 : 0;\n            })\n          : [...listData].sort((a, b) => {\n              const testerB = b[sortBy] ?? \"\";\n              const testerA = a[sortBy] ?? \"\";\n              return testerB > testerA ? 1 : testerA > testerB ? -1 : 0;\n            })\n      );\n    } else {\n      setFilteredList(listData);\n    }\n  }, [listData, sortBy, sortDescending]);\n\n  const handleEditUser = (index, user) => {\n    if (user.patientCreated === NOTIFICATION_STATUS.pending) return;\n    const obj = {\n      ...user,\n      first: user.first_name,\n      last: user.last_name,\n      isNew: user.empID ? false : true,\n      index: index,\n      mdID: user.empID,\n    };\n    appContext.showPatient(obj);\n  };\n\n  const handleEditOrder = (index, user) => {\n    if (user.patientCreated !== NOTIFICATION_STATUS.pass) return appContext.showErrorMessage(\"Patient Not Created\");\n    if (user.orderCreated === NOTIFICATION_STATUS.pass) return appContext.showErrorMessage(\"Order Created Already\");\n    const demo = {\n      firstName: user.first_name,\n      lastName: user.last_name,\n      sex: user.sex,\n      dob: user.dob,\n      insurance_name: user.insurance_name,\n      insurance_number: user.insurance_number,\n      insuranceCompanyCode: user.insuranceCompanyCode,\n    };\n    const obj = {\n      ...user,\n      isNew: true,\n      index: index,\n      employeeID: user.empID,\n      employee_demographics: demo,\n      test_type: \"PCR\",\n    };\n    appContext.showOrderModal(obj);\n  };\n\n  const checkEligibilityDetails = (user) => {\n    const demo = {\n      ins_name_f: user.first_name,\n      ins_name_l: user.last_name,\n      sex: user.sex,\n      ins_dob: user.dob,\n      insurance_name: user.insurance_name,\n      insurance_number: user.insurance_number,\n      insuranceCompanyCode: user.insuranceCompanyCode,\n    };\n\n    appContext.showEligibilityDetails({ ...demo, ...user.eligibilityStatus });\n  };\n\n  const handleStatsClick = (type) => {\n    let arr = [];\n    if (type === STATS_CLICK_TYPE.ORDERS) {\n      arr = listData;\n    }\n    if (type === STATS_CLICK_TYPE.COMPLETED) {\n      arr = listData.filter((f) => f.status !== NOTIFICATION_STATUS.pending);\n    }\n    if (type === STATS_CLICK_TYPE.REMAINING) {\n      arr = listData.filter((f) => f.status === NOTIFICATION_STATUS.pending);\n    }\n    if (type === STATS_CLICK_TYPE.REJECTED) {\n      arr = listData.filter((f) =>\n        [f.status, f.patientCreated, f.eligibility, f.orderCreated].includes(NOTIFICATION_STATUS.fail)\n      );\n    }\n    if (type === STATS_CLICK_TYPE.PATIENT) {\n      arr = listData.filter((f) => !f.profileMatched && f.patientCreated === NOTIFICATION_STATUS.pass);\n    }\n    if (type === STATS_CLICK_TYPE.FAILPATIENT) {\n      arr = listData.filter((f) => f.patientCreated === NOTIFICATION_STATUS.fail);\n    }\n    if (type === STATS_CLICK_TYPE.FAILORDER) {\n      arr = listData.filter((f) => f.orderCreated === NOTIFICATION_STATUS.fail);\n    }\n    if (type === STATS_CLICK_TYPE.FAILELIGIBILITY) {\n      arr = listData.filter((f) => f.eligibility === NOTIFICATION_STATUS.fail);\n    }\n    setFilteredList(arr);\n  };\n\n  const STATS_CLICK_TYPE = {\n    ORDERS: \"orders\",\n    ATTENDEES: \"attendess\",\n    COMPLETED: \"completed\",\n    REMAINING: \"remaning\",\n    PATIENT: \"patient\",\n    REJECTED: \"rejected\",\n    FAILORDER: \"failorder\",\n    FAILPATIENT: \"failpatient\",\n    FAILELIGIBILITY: \"faileligibility\",\n  };\n\n  const handleComplete = async () => {\n    onCompleteLoad(data[0].requestID);\n  };\n\n  const selectOptions = files?.filesStatus?.map((option) => ({\n    label: option.fileName?.split(\"$\")[1],\n    value: option.id,\n  }));\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(!sortDescending);\n  };\n  const tdFormatTitle = (item, row) => {\n    if (item === \"orderCreated\") {\n      return row.orderMessage?.[0]?.message;\n    }\n    if (item === \"patientCreated\") {\n      return row.patientMessage?.[0]?.message;\n    }\n    if (item === \"eligibility\") {\n      return row.eligibilityMessage;\n    }\n    if (item === \"test_date\") return row[item]?.join(\", \");\n\n    return row[item];\n  };\n\n  const handleClick = (item, row, index) => {\n    if (item === \"patientCreated\") {\n      handleEditUser(index, row);\n    }\n    if (item === \"orderCreated\") {\n      handleEditOrder(index, row);\n    }\n    if (item === \"eligibility\") {\n      checkEligibilityDetails(row);\n    }\n  };\n  const tdFormat = (item, row, index) => {\n    if (item === \"patientCreated\") {\n      return (\n        <div className=\"star-icon-wrapper cursor-pointer\" onClick={() => handleClick(item, row, index)}>\n          <Status type=\"circle\" size=\"md\" color={ORDER_STATUS[row[item]]} crossIcon={row[item]} />\n        </div>\n      );\n    }\n    if (item === \"orderCreated\") {\n      return (\n        <div className=\"star-icon-wrapper cursor-pointer\" onClick={() => handleClick(item, row, index)}>\n          <Status type=\"circle\" size=\"md\" color={ORDER_STATUS[row[item]]} crossIcon={row[item]} />\n        </div>\n      );\n    }\n    if (item === \"eligibility\") {\n      return (\n        <div className=\"star-icon-wrapper cursor-pointer\" onClick={() => handleClick(item, row, index)}>\n          <Status type=\"circle\" size=\"md\" color={ORDER_STATUS[row[item]]} crossIcon={row[item]} />\n        </div>\n      );\n    }\n    if (item === \"test_date\") return row[item]?.join(\", \");\n\n    return row[item];\n  };\n  const customRenderTD = (item, row, index) => {\n    return (\n      <td\n        key={item.id}\n        className=\"ellipsis\"\n        style={{\n          textAlign: item.textAlign,\n          textOverflow: item.textOverflow,\n        }}\n        title={tdFormatTitle(item.itemKey, row, index)}\n      >\n        {tdFormat(item.itemKey, row, index)}\n      </td>\n    );\n  };\n  const handleCellClick = (key, row, event) => {};\n\n  const checkFileStatus = () => {\n    return listData.length === listData.filter((f) => f.status && f.status !== NOTIFICATION_STATUS.pending).length;\n  };\n\n  const isEmployeeCall = () => data[0]?.uploadCallType === \"employee\";\n\n  return (\n    <>\n      <Modal show animation={true} onHide={() => handleClose()} size={\"xl\"} scrollable>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {isEmployeeCall() ? \"Patient Upload Management\" : \"Order Creation Summary\"}\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body className=\"marginTop0\">\n          <>\n            <div className=\"statsOrderDetails\">\n              {!isEmployeeCall() && (\n                <>\n                  <StatsView\n                    label=\"Orders\"\n                    value={listData.length ?? 0}\n                    type={STATS_CLICK_TYPE.ORDERS}\n                    handleClick={handleStatsClick}\n                    numberStyle={{ fontSize: \"20px\" }}\n                  />\n                  <StatsView\n                    label=\"Completed\"\n                    value={listData.filter((f) => f.status !== NOTIFICATION_STATUS.pending).length ?? 0}\n                    type={STATS_CLICK_TYPE.COMPLETED}\n                    handleClick={handleStatsClick}\n                    numberStyle={{ fontSize: \"20px\" }}\n                  />\n                  <StatsView\n                    label=\"Failed Orders\"\n                    value={listData.filter((f) => f.orderCreated === NOTIFICATION_STATUS.fail).length ?? 0}\n                    type={STATS_CLICK_TYPE.FAILORDER}\n                    handleClick={handleStatsClick}\n                    numberStyle={{ fontSize: \"20px\" }}\n                  />\n\n                  <StatsView\n                    label=\"Remaining\"\n                    value={listData.filter((f) => f.status === NOTIFICATION_STATUS.pending).length ?? 0}\n                    type={STATS_CLICK_TYPE.REMAINING}\n                    handleClick={handleStatsClick}\n                    numberStyle={{ fontSize: \"20px\" }}\n                  />\n                </>\n              )}\n              {/* <StatsView\n                label=\"Rejected/Errors\"\n                value={\n                  listData.filter((f) =>\n                    [f.status, f.patientCreated, f.eligibility, f.orderCreated].includes(NOTIFICATION_STATUS.fail)\n                  ).length ?? 0\n                }\n                type={STATS_CLICK_TYPE.REJECTED}\n                handleClick={handleStatsClick}\n                numberStyle={{ fontSize: \"20px\" }}\n              /> */}\n              <StatsView\n                label=\"New Patients\"\n                value={\n                  listData.filter((f) => !f.profileMatched && f.patientCreated === NOTIFICATION_STATUS.pass).length ?? 0\n                }\n                type={STATS_CLICK_TYPE.PATIENT}\n                handleClick={handleStatsClick}\n                numberStyle={{ fontSize: \"20px\" }}\n              />\n              <StatsView\n                label=\"Patient Failed\"\n                value={listData.filter((f) => f.patientCreated === NOTIFICATION_STATUS.fail).length ?? 0}\n                type={STATS_CLICK_TYPE.FAILPATIENT}\n                handleClick={handleStatsClick}\n                numberStyle={{ fontSize: \"20px\" }}\n              />\n              {userClientData?.setting?.eligibility && (\n                <StatsView\n                  label=\"Eligiblity Failed\"\n                  value={listData.filter((f) => f.eligibility === NOTIFICATION_STATUS.fail).length ?? 0}\n                  type={STATS_CLICK_TYPE.FAILELIGIBILITY}\n                  handleClick={handleStatsClick}\n                  numberStyle={{ fontSize: \"20px\" }}\n                />\n              )}\n            </div>\n            <div style={{ flex: 1 }}>\n              <Row>\n                <Col md=\"12\">\n                  <Card>\n                    <Card.Body\n                      className=\"table-full-width  px-2 desktop-noScroll mt-0\"\n                      style={{ backgroundColor: \"#f8f8f8\" }}\n                    >\n                      {listData.length > 0 && (\n                        <div className=\"d-block\">\n                          <Row>\n                            <Col md={6}>\n                              <span className=\"fw-bold\">Details: {filteredList.length}</span>\n                            </Col>\n                            <Col md={6}>\n                              <Select\n                                className=\"w-100 custom-select-style\"\n                                options={selectOptions}\n                                blurInputOnSelect={true}\n                                defaultValue={null}\n                                menuPlacement=\"bottom\"\n                                placeholder={`Select file`}\n                                value={dropdown ? dropdown : null}\n                                onChange={(e) => setDropdown(e)}\n                              />\n                            </Col>\n                          </Row>\n                          <div className=\"table-responsive\">\n                            <MainTable\n                              columns={\n                                (isEmployeeCall()\n                                  ? ORDER_IMPORT_MODAL_PERSONALIZE.filter((e) => e.isEmployee)\n                                  : ORDER_IMPORT_MODAL_PERSONALIZE\n                                ).filter((col) => userClientData?.setting?.eligibility || col.itemKey !== \"eligibility\")\n                              }\n                              rows={filteredList}\n                              flipSort={flipSort}\n                              sortBy={sortBy}\n                              sortDescending={sortDescending}\n                              customColumnCellRenderer={customRenderTD}\n                              handleCellClick={handleCellClick}\n                            />\n                          </div>\n                        </div>\n                      )}\n                    </Card.Body>\n                  </Card>\n                </Col>\n              </Row>\n            </div>\n          </>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button className=\"modalButtons headerButton btn-fill\" variant=\"primary\" onClick={() => handleClose()}>\n            Close\n          </Button>\n          {checkFileStatus() && (\n            <Button className=\"modalButtons headerButton btn-fill\" variant=\"secondary\" onClick={() => handleComplete()}>\n              Complete\n            </Button>\n          )}\n        </Modal.Footer>\n        {loading && <Loader />}\n      </Modal>\n    </>\n  );\n};\n\nexport default PatientImportErrorModal;\n","export default __webpack_public_path__ + \"static/media/plusAdd.0dd7629e.svg\";","export default __webpack_public_path__ + \"static/media/file-icon.1175b5c4.svg\";","import React, { useRef, useState } from \"react\";\n\n// Import your custom file icon SVG\nimport customFileIcon from \"assets/img/file-icon.svg\";\nimport { formatFileSize } from \"../../utils\";\n\nconst FileInput = (props) => {\n  const { setFile, setFileType, setSelectedFileName, selectedFileName, setFileSize, acceptableFiles } = props;\n  \n  const fileInputRef = useRef();\n\n  const handleDragOver = (e) => {\n    e.preventDefault();\n  };\n\n  const handleDrop = (e) => {\n    e.preventDefault();\n\n    if (e.dataTransfer.files.length > 0) {\n      const file = e.dataTransfer.files[0];\n      const fileType = file.type;\n\n      if (setFile) setFile(file);\n      if (setFileType) setFileType(fileType);\n      if (setSelectedFileName) setSelectedFileName(file.name);\n      if (setFileSize) setFileSize(formatFileSize(file.size));\n    }\n  };\n\n  const openFileDialog = () => {\n    if (fileInputRef.current) {\n      fileInputRef.current.click();\n    }\n  };\n\n  const onChangeFile = async (event) => {\n    if (event.currentTarget.files && event.currentTarget.files.length > 0) {\n      const file = event.currentTarget.files[0];\n      const fileType = file.type;\n\n      if (setFile) setFile(file);\n      if (setFileType) setFileType(fileType);\n      if (setSelectedFileName) setSelectedFileName(file.name); // Store the selected file name\n      if (setFileSize) setFileSize(formatFileSize(file.size));\n    }\n  };\n\n  return (\n    <div className=\"d-flex flex-column align-items-center\" onDragOver={handleDragOver} onDrop={handleDrop}>\n      <div className=\"d-flex flex-column align-items-center file-upload-area\" onClick={openFileDialog}>\n        {selectedFileName ? (\n          <div className=\"mt-2\">\n            <img src={customFileIcon} alt=\"File Icon\" className=\"file-icon\" />\n            {selectedFileName}\n          </div>\n        ) : (\n          <p className=\"mt-2 mb-0\">Drag & Drop or Click to Select a File</p>\n        )}\n      </div>\n\n      <input\n        ref={fileInputRef}\n        type=\"file\"\n        accept={acceptableFiles ? acceptableFiles : \".pdf, .jpg, .jpeg, .png, .gif, .doc, .docx\"}\n        onChange={onChangeFile}\n        style={{ display: \"none\" }}\n      />\n    </div>\n  );\n};\n\nexport default FileInput;\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport Select from \"react-select\";\nimport { getValidName, toTitleCase } from \"../../utils\";\nimport { debounce } from \"debounce\";\nimport api from \"api\";\n\nconst EditableDropdown = (props) => {\n  const { title, data, selectedOptionValue, selectedOptionLabel, onOptionChange, addNewItem } = props;\n  const getLabelOrValue = () => {\n    if (!data) return \"\";\n\n    let item = [];\n    if (selectedOptionValue) {\n      item = data.filter((f) => f.value === selectedOptionValue)?.[0]?.label;\n    }\n\n    if (selectedOptionLabel) {\n      item = data.filter((f) => f.label === selectedOptionValue)?.[0]?.value;\n    }\n\n    if (item) {\n      return item;\n    }\n    return \"\";\n  };\n\n  const [options, setOptions] = useState([]);\n  const [selectedValue, setSelectedValue] = useState(\n    selectedOptionValue\n      ? { value: selectedOptionValue, label: getLabelOrValue() }\n      : selectedOptionLabel\n      ? { value: getLabelOrValue(), label: selectedOptionLabel }\n      : null\n  );\n\n  useEffect(() => {\n    setOptions(data);\n  }, [data]);\n\n  const handleTypeDelay = useCallback(\n    debounce((data) => {\n      handleChangeInputText(data);\n    }, 500),\n    []\n  );\n\n  const handleChangeInputText = async (title) => {\n    setOptions(options.filter((f) => f.label.includes(title)));\n  };\n\n  let changeValue = true;\n  const handleOnChange = (e) => {\n    changeValue = false;\n    setSelectedValue(e);\n    if (onOptionChange) {\n      onOptionChange(e);\n    }\n  };\n\n  const handleChangeSelectInput = (e, r) => {\n    const newValue = getValidName(r.prevInputValue);\n    if (r.action === \"input-change\") {\n      changeValue = true;\n    }\n    if (r.action === \"input-blur\" && newValue && changeValue) {\n      setSelectedValue({ value: newValue, label: newValue });\n      if (onOptionChange) {\n        onOptionChange({ value: newValue, label: newValue });\n      }\n    }\n  };\n\n  return (\n    <Select\n      options={options}\n      blurInputOnSelect={true}\n      menuPlacement=\"auto\"\n      placeholder={title}\n      className=\"w-100\"\n      onInputChange={handleChangeSelectInput}\n      value={selectedValue}\n      onChange={handleOnChange}\n    />\n  );\n};\n\nexport default EditableDropdown;\n","import { Button, Card, Col, Modal, Row, Table } from \"react-bootstrap\";\nimport { useState, useEffect } from \"react\";\nimport { draggablePersonalizationLocalStorage, getValidName } from \"../../utils\";\nimport api from \"../../api\";\n\nimport FileInput from \"components/Input/FileInput\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport EditableDropdown from \"components/DropdownMenu/EditableDropdown\";\nimport { DOCUMENT_TYPES_OPT } from \"constant\";\nimport Loader from \"components/Loader/Loader\";\n\nconst DocumentForm = (props) => {\n  const { handleClose, emp, cssClass, document, setDocuments, appContext } = props;\n  const [newDocument, setNewDocument] = useState(document);\n  const [loading, setLoading] = useState(false);\n  const [file, setFile] = useState(\"\");\n  const [fileType, setFileType] = useState(\"\");\n  const [fileSize, setFileSize] = useState(\"\");\n  const [selectedFileName, setSelectedFileName] = useState(\"\");\n  const [error, setError] = useState(\"\");\n  const [documentTypes, setDocumentTypes] = useState(DOCUMENT_TYPES_OPT);\n\n  useEffect(() => {\n    if (!document.isNew) {\n      setNewDocument(document);\n      setFileType(document.fileType);\n      setFileSize(document.fileSize);\n      const parts = document.fileName?.split(\"$\");\n      const slicedString = parts[parts.length - 1];\n      setSelectedFileName(slicedString);\n    }\n  }, [document]);\n\n  const handleCancel = () => {\n    setNewDocument({ isNew: true });\n    setFile(\"\");\n    setFileType(\"\");\n    setSelectedFileName(\"\");\n    setFileSize(\"\");\n  };\n\n  const validateDocumentForm = (doc) => {\n    if (!doc.docType) {\n      setError(\"Document Type is Required\");\n      return;\n    }\n    if (!doc.file && newDocument.isNew) {\n      setError(\"File is Required.\");\n      return;\n    }\n\n    return true;\n  };\n\n  const createDocumentAsync = async (param) => {\n    try {\n      setLoading(true);\n      let fileName = null;\n      if (param.file) {\n        fileName = await api.saveDocumentFile(param.employeeID, param.selectedFileName, param.file);\n      }\n\n      const logObject = {\n        employeeID: param.employeeID,\n        userID: appContext.user?.sub,\n        slug: \"Document Created\",\n        file: fileName,\n        newValue: \"Done\",\n        userName: appContext.user?.name,\n      };\n\n      const paramsObj = {\n        ...param,\n        fileName,\n        updatedBy: appContext.user?.sub,\n        updatedByName: appContext.user?.name,\n      };\n   \n\n      const response = await api.newDocumentCreateAPI([paramsObj]);\n\n      setLoading(false);\n      if (response.rows && response.rows.length > 0) {\n        setDocuments((prev) => [...prev, response.rows[0]]);\n        await api.addLogs(logObject);\n        appContext.showSuccessMessage(\"Document Uploaded Successfully\");\n      } else {\n        appContext.showErrorMessage(\"Document Not Created\");\n      }\n\n      return null;\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Error createDocumentAsync:-\", err);\n    }\n  };\n\n  const updateDocumentAsync = async (param) => {\n    try {\n      setLoading(true);\n      let fileName = param.fileName;\n\n      const logObject = {\n        employeeID: param.employeeID,\n        userID: appContext.user?.sub,\n        slug: \"Document Updated\",\n        file: fileName,\n        newValue: \"Done\",\n        userName: appContext.user?.name,\n      };\n\n      if (param.file) {\n        fileName = await api.saveDocumentFile(param.employeeID, param.selectedFileName, param.file);\n      }\n\n      const response = await api.updateDocumentAPI({\n        ...param,\n        fileName,\n        updatedBy: appContext.user?.sub,\n        updatedByName: appContext.user?.name,\n      }); // Your API call logic here\n      setLoading(false);\n      if (response && response.data) {\n        const doc = response.data;\n        setDocuments((prev) => {\n          const prevlist = [...prev];\n          const index = prevlist.findIndex((f) => f.id === doc.id);\n          if (index !== -1) {\n            prevlist.splice(index, 1, doc);\n            return prevlist;\n          }\n        });\n        await api.addLogs(logObject);\n        appContext.showSuccessMessage(\"Document updated Successfully\");\n        return;\n      }\n      appContext.showErrorMessage(\"Document Not Updated\");\n      return null;\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  const handleUploadDocument = async () => {\n    const doc = { ...newDocument, file, fileType, selectedFileName, fileSize };\n    console.log(\"🚀 ~ handleUploadDocument ~ doc:\", doc);\n    if (validateDocumentForm(doc)) {\n      if (doc.isNew) {\n        console.log(\"I am hre in first if\");\n        await createDocumentAsync({ ...doc, employeeID: emp.id });\n      } else {\n        console.log(\"I am here in else\");\n        await updateDocumentAsync({ ...doc, employeeID: emp.id });\n      }\n\n      handleClose();\n    }\n    console.log(\"Save File\");\n  };\n\n  return (\n    <Modal\n      show\n      backdrop=\"static\"\n      animation={true}\n      className={cssClass ?? \"\"}\n      onHide={() => handleClose()}\n      centered\n      size={\"md\"}\n      keyboard={false}\n    >\n      {loading && <Loader />}\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Document Details\n        </Modal.Title>{\" \"}\n      </Modal.Header>\n\n      <Modal.Body className=\"table-full-width desktop-noScroll\">\n        <div className=\"row\">\n          <div className=\"col-sm-12 testAdmin createClientsWrapper\">\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">\n                {\" \"}\n                {`Document Type`} {<span className=\"fw-bold fs-6 maroon\">*</span>}\n              </label>\n              <EditableDropdown\n                data={documentTypes}\n                title=\"Select Document Type\"\n                selectedOptionLabel={newDocument.docType}\n                onOptionChange={(val) => setNewDocument({ ...newDocument, docType: val.label })}\n                addNewItem={(item) => setDocumentTypes([...documentTypes, item])}\n              />\n              {/* <input\n                value={newDocument.docType || \"\"}\n                className=\"modalInput w-100\"\n                placeholder=\"Enter Document Type\"\n                onChange={(e) =>\n                  setNewDocument({\n                    ...newDocument,\n                    docType: getValidName(e.target.value),\n                  })\n                }\n              /> */}\n            </div>\n          </div>\n          <div className=\"col-sm-12 testAdmin createClientsWrapper\">\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Document Label: </label>\n              <input\n                value={newDocument.docLabel || \"\"}\n                className=\"modalInput w-100\"\n                placeholder=\"Enter Document Label\"\n                onChange={(e) =>\n                  setNewDocument({\n                    ...newDocument,\n                    docLabel: getValidName(e.target.value),\n                  })\n                }\n              />\n            </div>\n          </div>\n          <div className=\"col-sm-12 testAdmin createClientsWrapper\">\n            <div className=\"form-group-wrapper\">\n              <h4 className=\"profile-title\">Additional Notes</h4>\n              <div className=\"mb-3\">\n                <textarea\n                  className=\"form-control\"\n                  style={{ minHeight: \"60px\" }} // Set the minimum height\n                  value={newDocument?.notes || \"\"}\n                  onChange={(e) =>\n                    setNewDocument({\n                      ...newDocument,\n                      notes: e.target.value,\n                    })\n                  }\n                ></textarea>\n              </div>\n            </div>\n          </div>\n\n          <div className=\"col-sm-12 testAdmin createClientsWrapper\">\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Document File: </label>\n              <FileInput\n                setFileType={setFileType}\n                setFile={setFile}\n                setSelectedFileName={setSelectedFileName}\n                selectedFileName={selectedFileName}\n                setFileSize={setFileSize}\n              />\n            </div>\n          </div>\n        </div>\n      </Modal.Body>\n      <div className=\"px-4 my-2\" style={{ height: \"2vh\" }}>\n        {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n      </div>\n      <Modal.Footer className=\"my-2 d-flex justify-content-between\">\n        <Button variant=\"primary\" className=\"modalButtons headerButton btn-fill\" onClick={() => handleClose()}>\n          Cancel\n        </Button>\n        <Button variant=\"secondary\" className=\"modalButtons headerButton btn-fill\" onClick={handleUploadDocument}>\n          {newDocument.isNew ? \"Upload\" : \"Update\"}\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default DocumentForm;\n","import React, { useState, forwardRef, useImperativeHandle } from \"react\";\nimport { Storage } from \"aws-amplify\";\nimport { saveAs } from \"file-saver\";\nimport api from \"api\";\nimport MainTable from \"components/Table/MainTable\";\nimport { PATIENT_DOCUMENT_COLUMNS } from \"constants/personalization\";\nimport { TABLE_QUICK_TOOLS, BUCKET_EXTERNAL_IMAGES } from \"constant\";\nimport { getContentType } from \"utils\";\nimport DocumentPreviewModal from \"components/Modal/DocumentPreviewModal\";\nimport JSZip from \"jszip\";\n\nconst DocumentList = forwardRef((props, ref) => {\n  const { list, handleEdit, setDocuments, appContext, setLoading } = props;\n\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [fileUrl, setFileUrl] = useState(\"\");\n  const [fileType, setFileType] = useState(\"\");\n  const [checkboxes, setCheckboxes] = useState([]);\n\n  const handleCheckboxChange = (e, doc) => {\n    const filteredList = checkboxes.filter((c) => c !== doc.id);\n\n    if (e.target.checked) {\n      filteredList.push(doc.id);\n    }\n\n    setCheckboxes(filteredList);\n  };\n\n  const handleDownloadDoc = async (doc) => {\n    try {\n      let name = doc.fileName;\n      if (!doc.fileName) return;\n      setLoading(true);\n      const result = await Storage.get(doc.fileName, {\n        bucket: BUCKET_EXTERNAL_IMAGES,\n      });\n      const response = await fetch(result);\n      const blob = await response.blob();\n\n      setLoading(false);\n      saveAs(blob, `${name}`);\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Error\", err);\n    }\n  };\n\n  const handleMultiDownload = async () => {\n    const filteredList = list.filter((item) => checkboxes.some((checkboxId) => checkboxId === item.id));\n\n    if (!filteredList || filteredList.length === 0) return;\n    setLoading(true);\n    const zip = new JSZip();\n\n    for (const doc of filteredList) {\n      if (!doc.fileName) continue;\n      try {\n        const result = await Storage.get(doc.fileName, {\n          bucket: BUCKET_EXTERNAL_IMAGES,\n        });\n        const response = await fetch(result);\n        const blob = await response.blob();\n        zip.file(doc.fileName, blob);\n      } catch (err) {\n        console.log(`Error downloading file ${doc.fileName}:`, err);\n      }\n    }\n\n    const zipBlob = await zip.generateAsync({ type: \"blob\" });\n\n    saveAs(zipBlob, \"downloaded_files.zip\");\n\n    setCheckboxes([]);\n\n    setLoading(false);\n  };\n\n  useImperativeHandle(ref, () => ({\n    handleMultiDownload,\n  }));\n\n  const handleDocDeleted = async (param) => {\n    try {\n      setLoading(true);\n      const response = await api.deleteDocumentAPI(param);\n      setLoading(false);\n      if (response && response.status) {\n        appContext.showSuccessMessage(\"Document Archived Successfully\");\n        setDocuments((prev) => prev.filter((f) => f.id !== param.id));\n        return;\n      }\n      appContext.showErrorMessage(response?.error || \"Document Archived Failed\");\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Error:\", err);\n    }\n  };\n\n  const handleViewDoc = async (doc) => {\n    try {\n      if (!doc.fileName) return;\n\n      // Determine the content type based on the file extension\n      const fileExtension = doc.fileName.split(\".\").pop().toLowerCase();\n\n      const contentType = getContentType(fileExtension);\n\n      // Fetch the file from S3 with inline content disposition\n      const result = await Storage.get(doc.fileName, {\n        bucket: BUCKET_EXTERNAL_IMAGES,\n        download: false,\n        contentDisposition: \"inline\",\n        contentType: contentType,\n      });\n\n      // Update state to show in modal\n      setFileUrl(result);\n      setFileType(fileExtension === \"pdf\" ? \"pdf\" : \"image\");\n      setIsModalOpen(true);\n    } catch (err) {\n      console.log(\"Error\", err);\n    }\n  };\n\n  const handleDropDownOptions = (type, item) => {\n    switch (type) {\n      case \"Archive\":\n        handleDocDeleted(item);\n        break;\n      case \"Download\":\n        handleDownloadDoc(item);\n        break;\n      case \"View\":\n        handleViewDoc(item);\n        break;\n      default:\n        break;\n    }\n  };\n\n  return (\n    <div\n      className={`documents-update-patient-table  ${\n        list.length === 1 || list.length === 2 ? \"documents-done-table\" : \"\"\n      }`}\n    >\n\n      <MainTable\n        columns={PATIENT_DOCUMENT_COLUMNS}\n        rows={list}\n        tools={[TABLE_QUICK_TOOLS.checkbox, TABLE_QUICK_TOOLS.edit]}\n        selectedRows={checkboxes}\n        dropDownOptions={[\n          { value: \"Download\", title: \"Download\" },\n          { value: \"Archive\", title: \"Archive\" },\n          { value: \"View\", title: \"View\" },\n        ]}\n        handleDropDownClick={handleDropDownOptions}\n        handleCellClick={(key, row) => {\n          if (key === TABLE_QUICK_TOOLS.edit) {\n            handleEdit(row);\n          }\n          if (key === TABLE_QUICK_TOOLS.checkbox) {\n            handleCheckboxChange(event, row);\n          }\n        }}\n        isDocList\n        strippedTable\n      />\n      <DocumentPreviewModal\n        isModalOpen={isModalOpen}\n        setIsModalOpen={setIsModalOpen}\n        fileUrl={fileUrl}\n        fileType={fileType}\n      />\n    </div>\n  );\n});\n\nexport default DocumentList;\n","import React, { useState, useMemo, useContext, useEffect } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { MEDICATRE_IDS } from \"constant\";\nimport { convertToUpper } from \"utils\";\nimport { CUSTOM_INS, CUSTOM_INS_ADV_PLAN, IGNORE_INS } from \"constant\";\nimport { isValidIDNumber } from \"utils\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport InputField from \"components/InputField/InputField\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport api from \"api\";\nimport { AppContext } from \"context/app-context\";\nimport Loader from \"components/Loader/Loader\";\nimport moment from \"moment\";\nimport { getStartAndEndDateFromEligibility } from \"utils\";\nimport CurrencyInput from \"components/CurrencyInput\";\nimport { toTitleCase } from \"utils\";\nimport { useSelector } from \"react-redux\";\nimport { payerSelector } from \"store/features/insurances/insuranceSelectors\";\n\nconst InsuranceDetailsModal = (props) => {\n  const { handleClose, handleUpdateIns, title, type, insuranceDetails, insuranceList, user, userClientData } = props;\n  const [insuranceData, setInsuranceData] = useState(insuranceDetails);\n  const [showError, setShowError] = useState(\"\");\n\n  const [isEligibiltyChecked, setIsEligibiltyChecked] = useState(false);\n\n  useEffect(() => {\n    if (insuranceDetails.isNew === false) {\n      setIsEligibiltyChecked(true);\n    }\n  }, [insuranceDetails]);\n\n  const [loading, setLoading] = useState(false);\n\n  const appContext = useContext(AppContext);\n\n  const loginUser = appContext.user;\n\n  const payerList = useSelector(payerSelector);\n\n  const sortedPayerList = useMemo(() => {\n    const payerlistData = Array.isArray(payerList) ? [...payerList] : [];\n    return payerlistData?.sort((a, b) => {\n      const nameA = a.Name.toUpperCase(); // Ignore case by converting to uppercase\n      const nameB = b.Name.toUpperCase(); // Ignore case by converting to uppercase\n\n      if (nameA < nameB) {\n        return -1; // nameA comes before nameB\n      }\n      if (nameA > nameB) {\n        return 1; // nameA comes after nameB\n      }\n      return 0; // names are equal\n    });\n  }, [payerList]);\n\n  const alreadyExistIns = (ins) => {\n    return (\n      insuranceList?.some((f) => {\n        const isSameCompanyAndMedicalNo = f.insuranceCompany === ins.insuranceCompany && f.medicalNo === ins.medicalNo;\n        const isDifferentId = f.id !== insuranceData.id;\n        return insuranceData.isNew ? isSameCompanyAndMedicalNo : isSameCompanyAndMedicalNo && isDifferentId;\n      }) || false\n    );\n  };\n\n  const handleInsValidation = (insuranceData) => {\n    if (!insuranceData.insuranceCompany) {\n      setShowError(\"Primary Payer Information is Required\");\n      return;\n    }\n\n    if (!IGNORE_INS.includes(insuranceData.insuranceCompany)) {\n      if (!insuranceData.medicalNo || !insuranceData.medicalNo.trim()) {\n        setShowError(\"Member ID is required\");\n        return;\n      }\n\n      if (!isValidIDNumber(insuranceData.medicalNo)) {\n        setShowError(\"Member ID is invalid\");\n        return;\n      }\n\n      if (insuranceData.isMedicare === \"Y\" && !insuranceData.medicareNo) {\n        setShowError(\"Member ID should not be Empty\");\n        return;\n      }\n      if (insuranceData.isMedicare === \"Y\" && !isValidIDNumber(insuranceData.medicareNo)) {\n        setShowError(\"Member ID is invalid\");\n        return;\n      }\n      if (alreadyExistIns(insuranceData)) {\n        setShowError(\"Payer is already in Added!\");\n        return;\n      }\n    }\n    return true;\n  };\n\n  // const handleSave = () => {\n  //   if (!handleInsValidation(insuranceData)) return;\n  //   const insData = { ...insuranceData };\n\n  //   if (insuranceData.isNew) {\n  //     Object.assign(insData, { id: \"prefix_\" + Math.random().toString(36).slice(2, 9) });\n  //     handleUpdateIns(insData);\n  //   } else {\n  //     handleUpdateIns(insData);\n  //   }\n  //   handleClose();\n  // };\n\n  const copyInsuranceObject = (eligibiltyResponse) => {\n    const insurance = {\n      copay: 0,\n      deductible: 0,\n      isActive: true,\n      medicalNo: \"\",\n      medicareNo: \"\",\n    };\n    return IGNORE_INS.includes(insuranceData.insuranceCompany)\n      ? { ...insuranceData, ...insurance }\n      : {\n          ...insuranceData,\n          ...eligibiltyResponse,\n        };\n  };\n\n  const formatEligibilityResponseData = (eligbRes) => {\n    const { data, apiData, message, planDates } = eligbRes;\n\n    const { startDate, endDate } = getStartAndEndDateFromEligibility(\n      planDates || data?.plan_begin_date || data?.planDates\n    );\n\n    return {\n      copay: data?.copay || 0,\n      deductible: data?.deductible || 0,\n      coinsurnace: data?.coinsurnace || 0,\n      out_coinsurnace: data?.out_coinsurnace || 0,\n      out_copay: data?.out_copay || 0,\n      out_copay_specialist: data?.out_copay_specialist || 0,\n      copay_specialist: data?.copay_specialist || 0,\n      effectiveStartDate: startDate || \"\",\n      effectiveEndDate: endDate || \"\",\n      apiData: apiData || \"\",\n      additionalPayer: data?.additionalPayer || null,\n      ipa: data?.ipa || null,\n      message,\n    };\n  };\n\n  const handleSave = async () => {\n    let eligibiltyResponse = {};\n\n    if (!handleInsValidation(insuranceData)) return;\n\n    // if (!CUSTOM_INS.includes(insuranceData.insuranceCompany) && !user.isNew) {\n    if (!IGNORE_INS.includes(insuranceData.insuranceCompany) && userClientData?.setting?.eligibility) {\n      const modifiedEmp = {\n        ...user,\n        insuranceCompany: insuranceData.insuranceCompany,\n        insurance_number: insuranceData.medicalNo,\n        medicalNo: insuranceData.medicalNo,\n        eEligibility: insuranceData?.eEligibility || false,\n        insurance_name: insuranceData?.insuranceCompanyCode,\n        insuranceCompanyCode: insuranceData?.insuranceCompany,\n        mdID: user.id,\n      };\n\n      // return;\n      if (!modifiedEmp.eEligibility && (!insuranceData.copay || !insuranceData?.deductible) && !isEligibiltyChecked) {\n        setShowError(`You can add deductible and copay manualy.`);\n        setIsEligibiltyChecked(true);\n        return;\n      }\n      if (!isEligibiltyChecked) {\n        try {\n          setLoading(true);\n\n          const eligbRes = await api.checkEligibility(modifiedEmp, loginUser);\n\n          const { data, error = null, message, status } = eligbRes;\n          setLoading(false);\n          setIsEligibiltyChecked(true);\n          if (error) {\n            setShowError(`${error.error_mesg}. You can add deductible and copay manualy.`);\n            return;\n          } else if (status && status === \"Ineligibile\") {\n            setShowError(message);\n            return;\n          }\n\n          if (data) {\n            eligibiltyResponse = formatEligibilityResponseData(eligbRes);\n\n            setInsuranceData({\n              ...insuranceData,\n              ...eligibiltyResponse,\n            });\n          }\n        } catch (error) {\n          console.log(\"error\", { error });\n          setLoading(false);\n        }\n      }\n    }\n\n    const insuranceCopy = copyInsuranceObject(eligibiltyResponse);\n\n    const insData = { ...insuranceCopy };\n\n    handleUpdateIns(insData);\n\n    handleClose();\n  };\n\n  const handelAdvantatePlan = (e) => {\n    const isChecked = e.target.checked;\n    const label = isChecked ? \"Y\" : \"N\";\n    setInsuranceData({\n      ...insuranceData,\n      isMedicare: label,\n    });\n  };\n\n  return (\n    <>\n      <Modal\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        className=\"seperateModal\"\n        show={true}\n        style={{ paddingLeft: \"0\" }}\n        centered\n        backdrop=\"static\"\n        keyboard={false}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {title}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          {loading && <Loader />}\n\n          <div className=\"testAdmin createClientsWrapper d-block\">\n            <InputField\n              type=\"dropDown\"\n              groupWrapper=\"form-group-wrapper me-2 mt-4\"\n              inputStyle=\"w-100\"\n              labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n              label=\"Select Payer\"\n              options={sortedPayerList}\n              value={payerList.find((item) => item.value === insuranceData.insuranceCompany) || null}\n              index=\"insuranceCompany\"\n              placeholder=\"Select Payer\"\n              handleChange={(e) => {\n                setInsuranceData({\n                  ...insuranceData,\n                  insuranceCompany: e.value,\n                  insuranceCompanyCode: e.label,\n                  insuranceType: e.payer_type,\n                  insuranceGroupId: \"\",\n                  isMedicare: \"N\",\n                  eEligibility: e?.eEligibility || false,\n                });\n                setIsEligibiltyChecked(false);\n              }}\n              required\n            />\n\n            {!IGNORE_INS.includes(insuranceData.insuranceCompany) &&\n              insuranceData.insuranceCompany &&\n              MEDICATRE_IDS.indexOf(insuranceData.insuranceCompany) === -1 && (\n                <>\n                  <InputField\n                    type=\"text\"\n                    groupWrapper=\"form-group-wrapper me-2\"\n                    inputStyle=\"modalInput\"\n                    labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                    label=\"Member ID\"\n                    value={insuranceData.medicalNo}\n                    index=\"medicalNo\"\n                    maxLength={50}\n                    placeholder=\"Enter Member ID\"\n                    handleChange={(e) => {\n                      setInsuranceData({\n                        ...insuranceData,\n                        medicalNo: convertToUpper(e.target.value),\n                      });\n                      setIsEligibiltyChecked(false);\n                    }}\n                  />\n\n                  <InputField\n                    type=\"text\"\n                    groupWrapper=\"form-group-wrapper me-2\"\n                    inputStyle=\"modalInput\"\n                    labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                    label=\"Group ID\"\n                    value={insuranceData.insuranceGroupId}\n                    index=\"insuranceGroupId\"\n                    maxLength={50}\n                    placeholder=\"Enter Group ID\"\n                    handleChange={(e) =>\n                      setInsuranceData({\n                        ...insuranceData,\n                        insuranceGroupId: convertToUpper(e.target.value),\n                      })\n                    }\n                  />\n\n                  {/* <Form.Group className=\"form-group-wrapper\">\n                  <label className=\"modalLieHeaders emp-gender-mb text-capitalize\">\n                    Is the Insurance Information Entered an Advantage Plan?\n                  </label>\n                  <div className=\"d-flex justify-content-between w-100 flex-wrap\">\n                    <RadioButton\n                      name=\"secondaryMedicare\"\n                      id=\"syes\"\n                      label=\"Yes\"\n                      checked={insuranceData.isMedicare === \"Y\" ? true : false}\n                      handleRadioButtonChange={(e) =>\n                        setInsuranceData({\n                          ...insuranceData,\n                          isMedicare: e.target.checked ? \"Y\" : \"\",\n                        })\n                      }\n                    />\n                    <RadioButton\n                      name=\"secondaryMedicare\"\n                      id=\"sno\"\n                      checked={insuranceData?.isMedicare === \"N\" ? true : false}\n                      label=\"No\"\n                      handleRadioButtonChange={(e) =>\n                        setInsuranceData({\n                          ...insuranceData,\n                          isMedicare: e.target.checked ? \"N\" : \"\",\n                          medicareNo: e.target.checked ? \"\" : insuranceData.medicareNo,\n                        })\n                      }\n                    />\n                  </div>\n                </Form.Group> */}\n                </>\n              )}\n\n            {!IGNORE_INS.includes(insuranceData.insuranceCompany) && insuranceData.isMedicare === \"Y\" && (\n              <InputField\n                type=\"text\"\n                groupWrapper=\"form-group-wrapper me-2\"\n                inputStyle=\"modalInput\"\n                labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                label=\"Medicare Number\"\n                value={insuranceData.medicareNo}\n                index=\"medicareNo\"\n                maxLength={50}\n                placeholder=\"Enter Medicare Number\"\n                handleChange={(e) =>\n                  setInsuranceData({\n                    ...insuranceData,\n                    medicareNo: convertToUpper(e.target.value),\n                  })\n                }\n              />\n            )}\n\n            {!IGNORE_INS.includes(insuranceData.insuranceCompany) &&\n              insuranceData.insuranceCompany &&\n              MEDICATRE_IDS.indexOf(insuranceData.insuranceCompany) !== -1 && (\n                <InputField\n                  type=\"text\"\n                  groupWrapper=\"form-group-wrapper me-2\"\n                  inputStyle=\"modalInput\"\n                  labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                  label=\"Medicare Number\"\n                  value={insuranceData.medicareNo}\n                  index=\"medicareNo\"\n                  maxLength={50}\n                  placeholder=\"Enter Medicare Number\"\n                  handleChange={(e) =>\n                    setInsuranceData({\n                      ...insuranceData,\n                      medicalNo: convertToUpper(e.target.value),\n                      medicareNo: convertToUpper(e.target.value),\n                    })\n                  }\n                />\n              )}\n\n            {!IGNORE_INS.includes(insuranceData.insuranceCompany) && insuranceData.insuranceCompany && (\n              <>\n                <div className=\"d-flex justify-content-between w-100\" style={{ gap: \"10px\" }}>\n                  <div className=\"w-50\">\n                    <CurrencyInput\n                      value={insuranceData.copay}\n                      placeholder=\"Enter Copay\"\n                      onChange={(e) => {\n                        setInsuranceData({ ...insuranceData, copay: e });\n                      }}\n                      label=\"Copay\"\n                    />\n                  </div>\n                  <div className=\"w-50\">\n                    <CurrencyInput\n                      value={insuranceData.deductible}\n                      placeholder=\"Enter Deductible\"\n                      onChange={(e) => {\n                        setInsuranceData({ ...insuranceData, deductible: e });\n                      }}\n                      label=\"Deductible\"\n                    />\n                  </div>\n                </div>\n                <div className=\"d-flex justify-content-between w-100\" style={{ gap: \"10px\" }}>\n                  <div className=\"w-50\">\n                    <InputField\n                      type=\"datePicker\"\n                      inputStyle=\"w-100 orderTestDob\"\n                      labelStyle=\"modalLineHeaders mt-0 text-capitalize\"\n                      label=\"Effective From\"\n                      value={\n                        insuranceData?.effectiveStartDate &&\n                        new Date(insuranceData.effectiveStartDate) != \"Invalid Date\"\n                          ? moment(insuranceData.effectiveStartDate, \"YYYY-MM-DD\").toDate()\n                          : null\n                      }\n                      index=\"dob\"\n                      placeholder=\"Effective From\"\n                      handleChange={(e) =>\n                        setInsuranceData({\n                          ...insuranceData,\n                          effectiveStartDate:\n                            moment(e).format(\"YYYY-MM-DD\") != \"Invalid date\" ? moment(e).format(\"YYYY-MM-DD\") : \"\",\n                        })\n                      }\n                      isFutureDateAllowed\n                    />\n                  </div>\n                  <div className=\"w-50\">\n                    <InputField\n                      type=\"datePicker\"\n                      inputStyle=\"w-100 orderTestDob\"\n                      labelStyle=\"modalLineHeaders mt-0 text-capitalize\"\n                      label=\"Effective To\"\n                      value={\n                        insuranceData?.effectiveEndDate && new Date(insuranceData.effectiveEndDate) != \"Invalid Date\"\n                          ? moment(insuranceData.effectiveEndDate, \"YYYY-MM-DD\").toDate()\n                          : null\n                      }\n                      index=\"dob\"\n                      placeholder=\"Effective To\"\n                      handleChange={(e) =>\n                        setInsuranceData({\n                          ...insuranceData,\n                          effectiveEndDate:\n                            moment(e).format(\"YYYY-MM-DD\") != \"Invalid date\" ? moment(e).format(\"YYYY-MM-DD\") : \"\",\n                        })\n                      }\n                      isFutureDateAllowed\n                    />\n                  </div>\n                </div>\n              </>\n            )}\n            <div className=\"profile-detail-payer-info\">\n              {!IGNORE_INS.includes(insuranceData?.insuranceCompany) && (\n                <>\n                  <div className=\"d-flex align-items-center mb-2\">\n                    <label className=\"label-text\">Additional Payer:</label>\n                    <span>{toTitleCase(insuranceData?.additionalPayer?.payerName) || \"-\"}</span>\n                  </div>\n\n                  <div className=\"d-flex align-items-center profile-detail mb-2\">\n                    <label className=\"label-text\">IPA:</label>\n                    <span>{toTitleCase(insuranceData?.ipa?.payerName) || \"-\"}</span>\n                  </div>\n                </>\n              )}\n\n              {insuranceData.insuranceCompany !== \"\" &&\n                !CUSTOM_INS_ADV_PLAN.includes(insuranceData.insuranceCompany) && (\n                  <div className=\"d-flex align-items-center  profile-detail mb-2\">\n                    <label className=\"label-text\">Advantage Plan: </label>\n\n                    <SwitchToggle\n                      checked={insuranceData.isMedicare === \"Y\" ? true : false}\n                      handleChange={handelAdvantatePlan}\n                      color={\"blue\"}\n                    />\n                  </div>\n                )}\n\n              <div className=\"d-flex align-items-center profile-detail mb-2 \">\n                <label className=\"label-text\">Primary: </label>\n                <SwitchToggle\n                  checked={insuranceData.isPrimary}\n                  handleChange={(e) =>\n                    !insuranceDetails.isPrimary &&\n                    setInsuranceData({\n                      ...insuranceData,\n                      isPrimary: e.target.checked,\n                    })\n                  }\n                  color={\"blue\"}\n                />\n              </div>\n            </div>\n          </div>\n        </Modal.Body>\n        <div className=\"px-4 my-2\" style={{ height: \"2vh\" }}>\n          {showError && <ErrorMessage error={showError} handleChange={() => setShowError(\"\")} />}\n        </div>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => {\n              handleSave();\n            }}\n          >\n            {insuranceDetails.isNew ? \"Add\" : \"Update\"}\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default InsuranceDetailsModal;\n","import { COLUMNS, CUSTOM_INS } from \"constant\";\nimport React, { useState, useEffect, useContext } from \"react\";\nimport { Card, Col, Row } from \"react-bootstrap\";\nimport SwitchToggle from \"../SwitchToggle/SwitchToggle\";\nimport EditIcon from \"assets/img/edit-icon.png\";\nimport TrashIcon from \"assets/img/trash-icon.png\";\nimport { formatCurrency, formatPercentage, toTitleCase, formatDOB, eligibilityMessage } from \"utils\";\nimport Status from \"components/Status\";\nimport { AppContext } from \"context/app-context\";\n\nconst InsuranceViewCard = (props) => {\n  const { insurance, handleUpdateIns, index, handleEdit, cssClass, handleRemove, user } = props;\n  const [insObj, setInsObj] = useState(insurance);\n\n  const appContext = useContext(AppContext);\n\n  useEffect(() => {\n    setInsObj(insurance);\n  }, [insurance]);\n\n  const handleShowEligibility = () => {\n    appContext.showEligibilityDetails({\n      ...user,\n      ...insObj,\n      ins_name_f: user.employee_demographics.first,\n      ins_name_l: user.employee_demographics.last,\n      ins_dob: user.employee_demographics.dob,\n    });\n  };\n\n  const isNotCustomInsurance = () => !CUSTOM_INS.includes(insObj?.insuranceCompany);\n\n  const showEligibilityStatus = () => {\n    const BG_COLOR_CLASS = {\n      Eligibile: \"text-bg-success\",\n      \"Not Eligibile\": \"text-bg-danger\",\n    };\n\n    if (CUSTOM_INS.includes(insObj?.insuranceCompany)) {\n      return <></>;\n    }\n\n    let insMessage = insObj?.message;\n    let titleMessage = insObj?.message;\n    const isPrimaryInsurance = insObj?.insuranceCompany === user.insuranceCompanyCode;\n\n    if (insMessage) {\n      titleMessage = eligibilityMessage(insObj, user);\n    } else if (isPrimaryInsurance) {\n      titleMessage = eligibilityMessage(user?.eligibilityStatus, user);\n    }\n\n    insMessage = titleMessage === \"Eligibile\" ? \"Eligibile\" : \"Not Eligibile\";\n    return (\n      <div onClick={handleShowEligibility}>\n        <span class={`badge ${BG_COLOR_CLASS[insMessage]} cursor-pointer`} title={titleMessage}>\n          {insMessage}\n        </span>\n      </div>\n    );\n  };\n\n  return (\n    <Card className={cssClass || \"\"}>\n      <Card.Body>\n        <Row className=\"align-items-center\">\n          <Col md={5} className=\"px-2\">\n            <div className=\"d-flex align-items-center gap-4\">\n              <span className=\"fw-bold fs-12 text-ellipsis d-block\">{toTitleCase(insObj.insuranceCompanyCode)}</span>\n              {/* <span>{`${COLUMNS[index] || \"\"}`}</span> */}\n            </div>\n          </Col>\n\n          <Col md={7} className=\"px-2\">\n            <div className=\"d-flex align-items-center justify-content-end gap-2\">\n              {showEligibilityStatus()}\n              <SwitchToggle\n                checked={insObj.isActive}\n                handleToogleChange={(e) => handleUpdateIns({ ...insObj, isActive: e.target.checked })}\n                color={\"blue\"}\n              />\n              <img\n                src={EditIcon}\n                width=\"18\"\n                alt=\"edit icon\"\n                onMouseLeave={(e) => (e.target.style.color = \"black\")}\n                onMouseOver={(e) => {\n                  e.target.style.cursor = \"pointer\";\n                }}\n                aria-hidden=\"true\"\n                onClick={(e) => handleEdit(insObj)}\n              />\n              <img\n                src={TrashIcon}\n                width=\"18\"\n                alt=\"Trash icon\"\n                onMouseLeave={(e) => (e.target.style.color = \"black\")}\n                onMouseOver={(e) => {\n                  e.target.style.cursor = \"pointer\";\n                }}\n                aria-hidden=\"true\"\n                onClick={(e) => handleRemove(insObj)}\n              />\n            </div>\n          </Col>\n          {/* <Col md={2} className=\"text-right\">\n            <SwitchToggle\n              checked={insObj.isActive}\n              handleToogleChange={(e) => handleUpdateIns({ ...insObj, isActive: e.target.checked })}\n              color={\"blue\"}\n            />\n          </Col>\n          <Col md={2} className=\"text-right\">\n            <img\n              src={EditIcon}\n              width=\"18\"\n              alt=\"edit icon\"\n              onMouseLeave={(e) => (e.target.style.color = \"black\")}\n              onMouseOver={(e) => {\n                e.target.style.cursor = \"pointer\";\n              }}\n              aria-hidden=\"true\"\n              onClick={(e) => handleEdit(insObj)}\n            />\n          </Col>\n          <Col md={2} className=\"text-right\">\n            <img\n              src={TrashIcon}\n              width=\"18\"\n              alt=\"Trash icon\"\n              onMouseLeave={(e) => (e.target.style.color = \"black\")}\n              onMouseOver={(e) => {\n                e.target.style.cursor = \"pointer\";\n              }}\n              aria-hidden=\"true\"\n              onClick={(e) => handleRemove(insObj)}\n            />\n          </Col> */}\n        </Row>\n        <div className=\"justify-content-between d-flex align-items-center\" style={{ marginInline: \"-4px\" }}>\n          <span className=\"fs-12\">\n            {isNotCustomInsurance() && <span className=\"font-bold\">Member ID: </span>} {`${insObj?.medicalNo || \"\"}`}\n          </span>\n        </div>\n\n        {/* <Row className=\"justify-content-between d-flex\" style={{ lineHeight: \"1.2\" }}>\n          {insObj?.effectiveStartDate && (\n            <Col className=\"d-flex gap-2 justify-content-between gap-2\">\n              <div className=\"d-flex flex-column\">\n                <span className=\"fw-bold fs-12\">Effective From:</span>\n                <span className=\"fs-12\">{formatDOB(insObj.effectiveStartDate)}</span>\n              </div>\n              <div className=\"d-flex flex-column\">\n                <span className=\"fs-12 fw-bold\">Effective To:</span>\n                <span className=\"fs-12\">{formatDOB(insObj.effectiveEndDate)}</span>\n              </div>\n            </Col>\n          )}\n        </Row> */}\n        {isNotCustomInsurance() && (\n          <Row className=\"d-flex justify-content-between payerInformation-effective\">\n            <Col className=\"px-2 effective-from-width\">\n              <div className=\"d-flex flex-column\">\n                <span className=\"fw-bold fs-12\">Effective From:</span>\n                <span className=\"fs-12\">{formatDOB(insObj.effectiveStartDate)}</span>\n              </div>\n            </Col>\n            <Col className=\"pe-2 ps-0 effective-to-width\">\n              <div className=\"d-flex flex-column\">\n                <span className=\"fs-12 fw-bold\">Effective To:</span>\n                <span className=\"fs-12\">{formatDOB(insObj.effectiveEndDate)}</span>\n              </div>\n            </Col>\n            <Col className=\"d-flex flex-column pe-2 ps-0 copay-width\">\n              <span className=\"fw-bold fs-12\">Copay: </span>\n              <span className=\" fs-12\">{formatCurrency(insObj.copay)}</span>\n            </Col>\n\n            <Col className=\"d-flex flex-column pe-2 ps-0 deductable-width\">\n              <span className=\"fw-bold fs-12\">Deductible: </span>\n              <span className=\" fs-12\">{formatCurrency(insObj.deductible)} </span>\n            </Col>\n            <Col className=\"pe-2 ps-0 d-flex flex-column coinsurance-width\">\n              <span className=\"fw-bold fs-12\">Coinsurance: </span>\n              <span className=\" fs-12\">{formatPercentage(insObj.coinsurance)}</span>\n            </Col>\n          </Row>\n        )}\n      </Card.Body>\n    </Card>\n  );\n};\n\nexport default InsuranceViewCard;\n","import { useEffect, useState, useMemo, useRef } from \"react\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\n\nimport Default_Profile from \"assets/img/default_profile.png\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport countriesOption from \"countries\";\n// react-bootstrap components\nimport API from \"api\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport EditIcon from \"assets/img/edit-icon.png\";\nimport downloadIcon from \"assets/img/download-black.png\";\n\nimport AddIcon from \"assets/img/plusAdd.svg\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport RadioButton from \"components/RadioButton/RadioButton\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport { countryListAllIsoData, TEST_TYPE_VALUE } from \"constant\";\nimport { Button, Col, Modal, Row } from \"react-bootstrap\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { parseJSONObject, mergeArraysById } from \"utils\";\nimport ReactPDF from \"@react-pdf/renderer\";\nimport api from \"api\";\nimport { Storage, label } from \"aws-amplify\";\nimport DocumentForm from \"components/Document/DocumentForm\";\nimport DocumentList from \"components/Document/DocumentList\";\nimport ImageView from \"components/Image/ImageView\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport InputField from \"components/InputField/InputField\";\nimport Loader from \"components/Loader/Loader\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport InsuranceDetailsModal from \"components/Patient/InsuranceDetailsModal\";\nimport InsuranceViewCard from \"components/Patient/InsuranceViewCard\";\nimport PDF from \"components/PDF\";\nimport ProviderModal from \"components/Modal/ProviderModal\";\nimport {\n  CONFIG,\n  CUSTOM_INS,\n  EMP_INS_OBJECT,\n  NEW_PROVIDER_OBJECT,\n  INSURANCE_EMPTY_OBJECT,\n  EMPLOYEE,\n  ALTA_NEW_ID,\n  validationRules,\n} from \"constant\";\nimport graphQLApi from \"graphQLApi\";\nimport moment from \"moment\";\nimport \"react-activity/dist/Bounce.css\";\nimport \"react-tabs/style/react-tabs.css\";\nimport {\n  convertToLower,\n  formatDateOfBirthDOB,\n  formatPhoneNumber,\n  formatTest,\n  getDemoGraphics,\n  getPhoneNo,\n  getValidDep,\n  getValidSpaces,\n  isValidEmail,\n  isValidIDNumber,\n  isValidName,\n  isValidPhoneWithCode,\n  isValidUrl,\n  parseInsDetails,\n  setPhoneNo,\n  userCompanyID,\n  formatCurrency,\n} from \"utils\";\nimport ProfileRelationModal from \"views/Patient/ProfileRelationModalOnModal\";\nimport { BILLING_TYPES_OPT } from \"constant\";\nimport { generatePassword } from \"utils\";\nimport { emailMsgToCreatedMember } from \"utils\";\nimport { connectedIDInLocalStorage } from \"utils\";\nimport { setOpenInsuranceModal, setSelectedInsurance } from \"../../store/features/insurances/insuranceSlice\";\nimport { fetchAllProviders } from \"store/features/providers/providersSlice\";\nimport { providerOptionList } from \"../../store/features/providers/providersSelectors\";\nimport RelationView from \"views/Patient/RelationView\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport MainTable from \"components/Table/MainTable\";\nimport { TABLE_QUICK_TOOLS, IGNORE_INS, MESSAGE_MODES } from \"constant\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { getUUID } from \"utils\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { setProxyRelations } from \"store/features/employees/employeesSlice\";\nimport { proxyRelationsSelector } from \"store/features/employees/employeesSelectors\";\nimport { selectClient } from \"store/features/authentication/authenticationSelectors\";\nimport { locationsSelectors } from \"store/features/locations/locationsSelectors\";\nimport Icon from \"components/Icon\";\nimport { validatePatientRecordFromClient } from \"utils\";\nimport {\n  Option,\n  customStyles,\n  ReactSelectCustomContainer,\n} from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\nimport Select, { components } from \"react-select\";\nimport { callAmplifyAPI } from \"views/GraphQL/gqApi\";\n\nconst PatientProfileModal = (props) => {\n  const { patient, handleClose, appContext } = props;\n  const documentListRef = useRef();\n\n  const location = useLocation();\n  const history = useHistory();\n  const { state } = location;\n  const [test, setTest] = useState();\n  const [site, setSite] = useState();\n  const [lab, setLab] = useState();\n  const [siteContactPhone, setSiteContactPhone] = useState();\n  const [demographics, setDemographics] = useState();\n  const [showAlert, setShowAlert] = useState(false);\n  const [modalShow, setModalShow] = useState(false);\n  const [releaseTo, setReleaseTo] = useState([]);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [signature, setSignature] = useState();\n  const [loading, setLoading] = useState(false);\n  const [hippaConsent, setHippaConsent] = useState(false);\n  const [showImages, setShowImages] = useState(null);\n  const [showSubmitAlert, setShowSubmitAlert] = useState(false);\n  const [editButton, setEditButton] = useState(false);\n  const [editInfo, setEditInfo] = useState();\n  const [Employee, setEmployee] = useState();\n  const [error, setError] = useState(\"\");\n  const [openQuarantined, setOpenQuaratined] = useState(false);\n  const [allowToEditQuarantine, setAllowToEditQuarantine] = useState(false);\n  const [openDataChangeConfirmation, setOpenDataChangeConfirmation] = useState(false);\n  const [patternConsent, setPatternConsent] = useState(false);\n  const [phoneError, setPhoneError] = useState(\"\");\n  const [testViews, setTestViews] = useState([]);\n  const [employeeLogs, setEmployeeLogs] = useState([]);\n  const [loadingTestView, setLoadingTestView] = useState(false);\n  const [vaccinationImage, setVaccinationImage] = useState(\"\");\n  const [externalTestImage, setExternalTestImage] = useState(\"\");\n  const [changeData, setchangeData] = useState({});\n  const [changeDataCheck, setchangeDataCheck] = useState(true);\n  const [profileImage, setProfileImage] = useState(Default_Profile);\n  const [showProfileModal, setProfileModal] = useState(false);\n  const [openDocumentModal, setOpenDocumentModal] = useState(null);\n  const [selectedDocument, setSelectedDocument] = useState({ isNew: true });\n  const [documents, setDocuments] = useState([]);\n  const [insuranceModal, setInsuranceModal] = useState(null);\n  const [newProviderInfo, setNewUserProvider] = useState(null);\n  const [relations, setRelations] = useState([]);\n\n  const getProviderOption = useSelector(providerOptionList);\n  const userClientData = useSelector(selectClient);\n  const CLIENT_OPTIONS = useSelector(locationsSelectors).map((f) => ({ label: f.name, value: f.id }));\n\n  const getConfigClients = () => {\n    if (!CONFIG.siteID) return [];\n    let clientIdsToFilter = [...(CONFIG.allowSites || [])];\n    clientIdsToFilter.push(CONFIG.siteID);\n    return clientIdsToFilter;\n  };\n\n  const clientOptions = useMemo(() => {\n    let clientIdsToFilter = getConfigClients();\n    const filteredRecord = CONFIG.siteID\n      ? CLIENT_OPTIONS.filter((s) => clientIdsToFilter.includes(s.value))\n      : CLIENT_OPTIONS;\n\n    return filteredRecord;\n  }, [CLIENT_OPTIONS, CONFIG.siteID]);\n\n  const providers = useMemo(() => {\n    let clientIdsToFilter = getConfigClients();\n    const filteredProviders = CONFIG.siteID\n      ? getProviderOption.filter((s) => clientIdsToFilter.includes(s.associatedClient))\n      : getProviderOption;\n\n    return (filteredProviders ? [...filteredProviders] : []).sort((a, b) => a.name.localeCompare(b.name));\n  }, [getProviderOption, CONFIG.siteID]);\n\n  const permission = useSelector(userGivenPermission);\n  const proxyRelations = useSelector(proxyRelationsSelector);\n\n  const dispatch = useDispatch();\n\n  const hideAlert = () => {\n    props.history.push(\"/admin/pendingrelease\");\n    setShowAlert(false);\n  };\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setEmployee({ ...Employee, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setEmployee({ ...Employee, ...addressObj });\n    }\n  };\n\n  const loadDocument = async (id) => {\n    try {\n      const res = await api.fetchDocumentAPI({ employeeID: id });\n      setDocuments(res);\n    } catch (err) {\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  const getPatient = async (id) => {\n    if (!id) return;\n    try {\n      const empObject = await API.getTestByID(id, \"employeeDetails\");\n\n      if (empObject) {\n        if (!empObject.siteID) {\n          Object.assign(empObject, { siteID: null, site_name: null, provider: null });\n        }\n\n        empObject.employee_demographics = empObject;\n        setEditInfo(empObject);\n        setDemographics({ ...getDemoGraphics(empObject), isNew: false });\n        setEmployee({\n          ...getDemoGraphics(empObject),\n          isNew: false,\n          previousSiteID: getDemoGraphics(empObject)?.siteID || \"\",\n          ...(Employee?.requestID && { requestID: Employee?.requestID }),\n        });\n        setTestViews([]);\n        const conntedTo = parseJSONObject(empObject.connectedTo || []);\n\n        const formattedRelationalData = mergeArraysById(conntedTo, empObject?.proxyProfiles);\n        dispatch(setProxyRelations(formattedRelationalData));\n        loadDocument(empObject.id);\n      }\n    } catch (err) {\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  useEffect(() => {\n    if (patient && patient.isNew) {\n      setDemographics({ ...patient, insuranceDetails: parseInsDetails(patient.insuranceDetails, patient) });\n      const data1 = { ...patient, id: uuidv4(), insuranceDetails: parseInsDetails(patient.insuranceDetails, patient) };\n      dispatch(setProxyRelations([]));\n      setEmployee(data1);\n    }\n    if (patient && patient.mdID) {\n      getPatient(patient.mdID);\n    }\n    getProviders();\n  }, [patient]);\n\n  const triggerNewData = (data) => {\n    if (data.id !== patient.mdID) return;\n    if (!editButton) {\n      setchangeData(data);\n      setOpenDataChangeConfirmation(true);\n    } else {\n      setEditInfo(data);\n      setDemographics(getDemoGraphics(data));\n      setEmployee(getDemoGraphics(data));\n      setTest(data);\n    }\n  };\n\n  // SETTING UP LISTNER\n  useEffect(() => {\n    if (changeDataCheck && appContext?.testObject && appContext.testObject?.opType === \"UPDATE\") {\n      triggerNewData(appContext.testObject.element);\n    }\n  }, [appContext?.testObject]);\n\n  // SETTING UP LISTNER\n  useEffect(() => {\n    if (changeDataCheck && appContext?.eventObject && appContext.eventObject?.opType === \"UPDATE\") {\n      triggerNewData(appContext.eventObject.element);\n    }\n  }, [appContext?.eventObject]);\n\n  const handleCheckEligibility = async (emp) => {\n    if (!emp) return;\n\n    if (IGNORE_INS.includes(emp.insuranceCompanyCode)) {\n      dispatch(setMessage(\"Payer does not support realtime eligibility.\", MESSAGE_MODES.info));\n      return;\n    }\n\n    setLoading(true);\n\n    try {\n      const eligbRes = await api.checkEligibility({ ...emp, mdID: emp.id });\n      const { data, error = null, message, status } = eligbRes;\n\n      if (error) {\n        dispatch(setMessage(error?.error_mesg || message, MESSAGE_MODES.info));\n      } else if (status === \"Ineligible\") {\n        dispatch(setMessage(message, MESSAGE_MODES.info));\n      } else if (data) {\n        dispatch(setMessage(\"Patient is Eligible\", MESSAGE_MODES.info));\n\n        if (emp.requestID) {\n          await api.updateUploadRequest(emp.requestID, { record: { ...emp }, eligibiltyStatus: res });\n        }\n      }\n    } catch (err) {\n      console.log(\"Error: -\", err);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const getProviders = async (test) => {\n    dispatch(fetchAllProviders());\n  };\n\n  const handleDataChangeConfirm = async (isConfirm) => {\n    if (isConfirm) {\n      setOpenDataChangeConfirmation(false);\n      setEditInfo(changeData);\n      setDemographics(getDemoGraphics(changeData));\n      setEmployee(getDemoGraphics(changeData));\n      setTest(changeData);\n    } else {\n      setOpenDataChangeConfirmation(false);\n    }\n  };\n\n  useEffect(() => {\n    if (appContext.user) setAllowToEditQuarantine(appContext.user.isSite() || appContext.user.isClient());\n  }, [appContext.user]);\n\n  const isSiteUser = appContext?.user?.isSite();\n\n  const hasKeyOfSMS = (model) => {\n    if (model.hasOwnProperty(\"sendSMS\")) {\n      let sendSMS = model?.sendSMS || model.sendSMS == \"1\" ? true : false;\n      return sendSMS;\n    }\n    return true;\n  };\n\n  const hasKeyOfEmail = (model) => {\n    if (model.hasOwnProperty(\"sendEmail\")) {\n      let sendEmail = model?.sendEmail || model.sendEmail == \"1\" ? true : false;\n      return sendEmail;\n    }\n    return true;\n  };\n\n  // const getFileFromStorage = async (file, setImage) => {\n  //   if (file) {\n  //     try {\n  //       const path = await Storage.get(file);\n  //       setImage(path);\n  //       console.log(\"path\", path);\n  //       return true;\n  //     } catch {\n  //       console.log(\"Image loading fail\");\n  //     }\n  //   } else {\n  //     return false;\n  //   }\n  // };\n\n  // useEffect(async () => {\n\n  // }, []);\n\n  const updateContactPreferences = (employee) => {\n    const { phone_number, email } = employee;\n\n    return {\n      ...employee,\n      sendSMS: phone_number ? \"1\" : \"0\",\n      sendEmail: email ? \"1\" : \"0\",\n    };\n  };\n\n  const handlePhoneNo = (e) => {\n    let updatedEmployee = { ...Employee, phone_number: e };\n\n    updatedEmployee = updateContactPreferences(updatedEmployee);\n    setEmployee(updatedEmployee);\n  };\n\n  const handleViewTest = async (id) => {\n    setLoadingTestView(true);\n    const tests = await API.getAdminTestList(id);\n    setTestViews(tests.filter((t) => !t._deleted));\n    setLoadingTestView(false);\n  };\n\n  // handle employee logs\n  const handleEmployeeLogs = async (id) => {\n    let employeeLogs = await API.getProfileUpdateLogs(id);\n    employeeLogs = employeeLogs.sort((a, b) => (b.createdAt > a.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : 0));\n    setEmployeeLogs(employeeLogs);\n  };\n\n  //   useEffect(() => {\n  //     if (editInfo && editInfo.employee_demographics) {\n  //       const emp = getDemoGraphics(editInfo);\n  //       const list = countryListAllIsoData.find((f) => f.name === emp.country) || { code: \"US\" };\n  //       setEmployee(emp);\n  //       setDemographics({ ...emp, isoCode: list.code });\n  //     }\n  //   }, [editInfo]);\n\n  useEffect(() => {\n    const getSite = async (id) => {\n      const model = await API.findSiteByID(id);\n      model.length > 0 && setSite(model[0]);\n    };\n\n    const getSignature = async (test) => {\n      const imgObject = [];\n\n      try {\n        const siteID = test.baseSiteID || test.siteID;\n        const fileName = `${siteID}&&${test.id}&&sig.png`;\n        const sigt = await Storage.get(fileName);\n        setSignature(sigt);\n        imgObject.push({ title: \"HIPPA Consent\", isHIPPA: true, imgSrc: sigt });\n\n        const sig = await Storage.get(`${test.id}&&${siteID}&&ins-f.jpeg`);\n        const isValidInsF = await isValidUrl(sig);\n        if (sig) imgObject.push({ title: \"Insurance Card Front\", isHIPPA: false, imgSrc: sig, isExist: isValidInsF });\n        const sig1 = await Storage.get(`${test.id}&&${siteID}&&ins-b.jpeg`);\n        const isValidInsB = await isValidUrl(sig1);\n        if (sig1) imgObject.push({ title: \"Insurance Card Back\", isHIPPA: false, imgSrc: sig1, isExist: isValidInsB });\n      } catch (error) {\n        console.log(\"Image Error\", error);\n      }\n\n      if (imgObject.length > 0) {\n        setShowImages(imgObject);\n      }\n      setHippaConsent(true);\n    };\n\n    // if (test) {\n    //   setSite(getSite(test.siteID));\n    //   appContext.getLab(test).then((resp) => setLab(resp));\n    //   getSignature(test);\n    // }\n\n    setLoading(false);\n  }, [test]);\n\n  useEffect(() => {\n    site && setSiteContactPhone(site.contact_phone);\n  }, [site]);\n\n  function calculate_age(dob) {\n    const val = formatDateOfBirthDOB(dob);\n    const years = moment().diff(val, \"years\", false);\n    return years;\n  }\n\n  const captalizeFirst = (string) => {\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  };\n\n  const formatIDNo = () => {\n    if (calculate_age(demographics?.dob) < 18) {\n      const id = demographics?.id_number;\n      if (id && id.length > 5) {\n        return `${id.substring(0, 3)}-${id.substring(3, 5)}-${id.substring(5)}`;\n      }\n      if (id && id.length > 3) {\n        return `${id.substring(0, 3)}-${id.substring(3)}`;\n      }\n      return demographics?.id_number;\n    }\n    return demographics?.id_number;\n  };\n\n  const showSubmitButton = () => {\n    if (!test) return true;\n    const st = test.status.toLowerCase();\n    if (st === \"new\") return true;\n    if (st === \"pending\" && !test.result) return true;\n    return false;\n  };\n  const ImageUpload = async (fileName, image) => {\n    if (image instanceof Object) {\n      await Storage.put(fileName, image);\n      return fileName;\n    } else {\n      return \"\";\n    }\n  };\n\n  const validationOfPatientRecord = (Employee, fromReset = false) => {\n    let validationRules;\n    if (userClientData?.requiredKeys?.employee) {\n      validationRules = userClientData?.requiredKeys?.employee;\n    }\n    const errorMsg = validatePatientRecordFromClient(Employee, { ...validationRules, siteID: true }, fromReset);\n    if (errorMsg) {\n      setError(errorMsg);\n      return false;\n    }\n    return true;\n  };\n\n  const requiredKeysObj = useMemo(() => {\n    return userClientData?.requiredKeys?.employee || validationRules;\n  }, [userClientData, validationRules]);\n\n  const getSiteOption = (emp) => {\n    if (!clientOptions || !Array.isArray(clientOptions)) return { site: null, siteList: null };\n\n    if (CONFIG.siteID) {\n      const site = clientOptions[0];\n      const siteList = emp.provider ? emp.provider : site ? [{ value: site.value, label: site.label }] : null;\n      return { site, siteList };\n    }\n\n    if (emp.provider && Array.isArray(emp.provider)) {\n      const site = clientOptions.find((s) => s.value === emp.provider[0].value);\n      const siteList = emp.provider;\n      return { site, siteList };\n    }\n\n    if (emp.siteID) {\n      const site = clientOptions.find((s) => s.value === emp.siteID);\n      const siteList = emp.provider ? emp.provider : site ? [{ value: emp.siteID, label: emp.site_name }] : null;\n      return { site, siteList };\n    }\n\n    return { site: null, siteList: null };\n  };\n\n  const handleSave = async (Employee) => {\n    let phone_number = \"\";\n    let countryCode = \"\";\n    if (!Employee) return;\n\n    if (Employee.insuranceDetails?.length > 0) {\n      const ins = Employee.insuranceDetails[0];\n      Object.assign(Employee, {\n        ...Employee,\n        insurance_name: ins.insuranceCompanyCode,\n        medicalNo: ins.medicareNo,\n        insurance_number: ins.medicalNo,\n        insuranceCompanyCode: ins.insuranceCompany,\n      });\n    } else {\n      Object.assign(Employee, {\n        ...Employee,\n        insurance_name: \"\",\n        medicalNo: \"\",\n        insurance_number: \"\",\n        insuranceCompanyCode: \"\",\n      });\n    }\n\n    if (!validationOfPatientRecord(Employee)) {\n      return;\n    }\n\n    // FOR PHONE CHECK COUTRY CODE FOR INTERNATIONAL RECORD VERIFICATION\n    const phone = formatPhoneNumberIntl(Employee.phone_number);\n    const phoneArr = phone.split(\" \");\n    // check Country code exist\n\n    if (phoneArr[0].includes(\"+\")) {\n      let [cc, pNo] = getPhoneNo(Employee.phone_number, phoneArr[0]);\n      phone_number = pNo;\n      countryCode = cc;\n    } else {\n      phone_number = Employee.phone_number;\n      countryCode = Employee.countryCode ? Employee.countryCode : \"+1\";\n    }\n\n    if (phoneError || !isValidPhoneWithCode(`${countryCode}${phone_number}`)) {\n      setError(\"Invalid Phone Number\");\n      return;\n    }\n    if (Employee.dob === \"Invalid date\") {\n      setError(\"Invalid Date of Birth\");\n      return;\n    }\n\n    // if (!Employee.id_number) {\n    //   setError(`${calculate_age(Employee.dob) < 18 ? \"SSN\" : \"ID Number\"} is required`);\n    //   return;\n    // }\n    // if (!isValidIdNum(Employee.id_number)) {\n    //   setError(`Invalid ${calculate_age(Employee.dob) < 18 ? \"SSN\" : \"ID Number\"} must contains at least 5 characters`);\n    //   return;\n    // }\n\n    setLoading(true);\n    setchangeDataCheck(false);\n\n    // if Patient is New Create Patient with proxyContact APi else Update\n    const conncetedProvider = providers?.find((f) => f.id === Employee?.referringProvider);\n\n    const { site, siteList } = getSiteOption(Employee); // appContext.sites?.find((f) => f.id === conncetedProvider?.associatedClient);\n\n    const emp = {\n      ...Employee,\n      dob: moment(Employee.dob).format(\"MMDDYYYY\"),\n      countryCode: countryCode,\n      firstName: Employee.first,\n      lastName: Employee.last,\n      updatedBy: appContext.user.sub,\n      updatedByName: appContext.user.name,\n      phone_number: phone_number,\n      ...(siteList && {\n        provider: siteList,\n      }),\n      ...(site && {\n        siteID: site?.id || site?.value,\n        site_name: site?.name || site?.label,\n      }),\n    };\n\n    try {\n      let result = await api.proxyContantFromPatient({\n        employee_demographics: emp,\n        phoneNumber: phone_number,\n        countryCode: countryCode,\n        updatedBy: appContext.user.sub,\n        updatedByName: appContext.user.name,\n        clientID: CONFIG.clientID,\n        siteID: CONFIG.siteID || Employee.siteID,\n        employeeID: patient.mdID,\n        customID: emp.isNew ? emp.id : null,\n        externalID: Employee?.externalID,\n      });\n\n      if (!result || result?.message) {\n        setError(result?.message || \"Fail to save the Employee Record\");\n        setLoading(false);\n        return;\n      }\n\n      const { record } = result;\n\n      if (Employee.isCheckedUser && result) {\n        await createPatientLogin({ ...emp, id: record.id }, record);\n      }\n\n      if (!Employee?.isNew && !patient.siteID) {\n        callAmplifyAPI(\"/orders/update/client\", {\n          employeeID: Employee.id,\n          site_name: Employee.site_name,\n          siteID: Employee.siteID,\n        });\n      }\n\n      if (Employee.requestID && Employee?.isNew) {\n        await api.updateUploadRequest(Employee.requestID, result);\n      }\n\n      if (Employee.orderDate && Employee?.isNew) {\n        const client = appContext.clients?.find((f) => f.id === Employee?.clientID);\n        const lab = appContext.labs?.find((f) => f.id === CONFIG.whiteLabelID);\n        const demo = {\n          city: Employee.city,\n          dob: Employee.dob,\n          email: Employee.email,\n          firstName: Employee.first,\n          idNumber: Employee.idNumber ? Employee.idNumber : \"\",\n          insurance_name: Employee.insurance_name || \"\",\n          insurance_number: Employee.insurance_number || \"\",\n          insuranceGroupId: Employee.insuranceGroupId || \"\",\n          insuranceCompanyCode: Employee.insuranceCompanyCode || \"\",\n          isVaccinated: Employee.isVaccinated || false,\n          lastName: Employee.last || \"\",\n          phoneNumber: Employee.phone_number || \"\",\n          countryCode: Employee?.countryCode || \"\",\n          country: Employee?.country || \"\",\n          sex: Employee.sex || \"\",\n          state: Employee.state || \"\",\n          street: Employee.street || \"\",\n          street2: Employee.street2 || \"\",\n          zip: Employee.zip || \"\",\n          mdID: record?.id,\n        };\n        const order = {\n          employee_demographics: { ...demo },\n          createdBy: appContext.user.sub,\n          createdByName: appContext.user.name,\n          clientID: client?.id,\n          siteID: site?.id,\n          clientName: client?.name,\n          site_name: site?.contact_name,\n          employeeID: record?.id,\n          labID: lab?.id,\n          floorNo: Employee.floorNo,\n          labName: lab?.name,\n          orderDate: Employee?.orderDate,\n          test_type: \"PCR\",\n          status: \"Pending\",\n          chartID: Employee?.externalID,\n        };\n        await GQAPI.createOrderAPI(order);\n      }\n\n      if (!record && Employee?.isNew) {\n        appContext.showErrorMessage(\"Patient Record Already Exist\");\n        setLoading(false);\n        return;\n      }\n      if (Employee?.isNew) {\n        appContext.showSuccessBottomMessage(\"Patient Created Successfully\");\n      } else {\n        appContext.showSuccessBottomMessage(\"Patient Updated Successfully\");\n      }\n      setLoading(false);\n    } catch (err) {\n      console.log(\"create Patient\", err);\n      setLoading(false);\n    }\n\n    handleClose(Employee);\n    return;\n  };\n\n  const createPatientLogin = async (Employee, result) => {\n    setLoading(true);\n    if (!Employee.email) {\n      appContext.showErrorMessage(\"Email required for create patient portal access.\");\n      return;\n    }\n\n    try {\n      if (!validationOfPatientRecord(Employee, true)) {\n        return;\n      }\n      const phone = `${Employee.countryCode}${Employee.phone_number}`;\n      const createdPatientUser = await api.createPatientUser({\n        groupname: \"Employees\",\n        username: phone,\n        phone_number: phone,\n        email: Employee.email,\n        first: Employee.first,\n        last: Employee.last,\n        labID: connectedIDInLocalStorage.get(),\n        employeeID: result?.id || Employee.id,\n      });\n\n      if (createdPatientUser?.userName) {\n        setEmployee({\n          ...Employee,\n          subID: createdPatientUser.userName,\n        });\n      }\n\n      appContext.showSuccessBottomMessage(createdPatientUser.message);\n    } catch (err) {\n      appContext.showErrorMessage(err.response.data.message);\n    } finally {\n      setLoading(false);\n    }\n  };\n  const sendEmailToMember = async (newUser) => {\n    try {\n      const message = emailMsgToCreatedMember(newUser.first, newUser.phone_number, newUser.password);\n\n      await api.sendEmailToCrew([{ email: newUser.email, subject: \"SafeCamp Team\", msg: message }]);\n    } catch (error) {\n      console.log(\"ERROR createUser: \", error);\n    }\n  };\n\n  const emailTest = (t) => {\n    setLoading(true);\n    const test = formatTest(t);\n    appContext.getLab(test).then(async (resp) => {\n      ReactPDF.pdf(<PDF test={test} testsLab={resp} parseTestResultForPDF={appContext.parseTestResultForPDF} />)\n        .toBlob()\n        .then(async (data) => {\n          try {\n            const fileName = `${test.id}-result.pdf`;\n            await Storage.put(fileName, data);\n            await API.sendEmailToCrew([{ email: test.email, fileName: `public/${fileName}` }]);\n            await API.updateEmailStatus(test.id);\n            // send sms as well if email is sending first time\n            if (!test.emailSend && test.phone_number) {\n              let smsMessage = `Hello, your test results are in for your test with ${test.site_name}, please log into Med Flow to review.`;\n              const siteObj = appContext.sites.find((s) => s.id === test.siteID);\n              if (siteObj && siteObj.messageResulted && result === \"negative\") {\n                smsMessage = siteObj.messageResulted;\n              } else if (siteObj && siteObj.messagePositive && result === \"positive\") {\n                smsMessage = siteObj.messagePositive;\n              }\n              await API.sendSMSNotification(setPhoneNo(test.phone_number), smsMessage);\n            }\n            setLoading(false);\n            appContext.showSuccessMessage(\"Email has been sent successfully\");\n          } catch (error) {\n            console.log(\"Error\");\n            setLoading(false);\n          }\n        });\n    });\n  };\n\n  const handleSaveQuarantine = async (obj) => {\n    try {\n      await API.updateQuarantineData(test.id, obj.startDate, obj.endDate);\n      getPatient(test.id);\n      window.location.reload();\n      appContext.showSuccessMessage(\"Quarantine dates changed successfully\");\n    } catch (err) {\n      appContext.showErrorMessage(err.message);\n    }\n  };\n\n  const downloadBlob = (blob, filename) => {\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement(\"a\");\n    a.href = url;\n    a.download = filename || \"download\";\n    const clickHandler = () => {\n      setTimeout(() => {\n        URL.revokeObjectURL(url);\n        a.removeEventListener(\"click\", clickHandler);\n      }, 150);\n    };\n    a.addEventListener(\"click\", clickHandler, false);\n    a.click();\n    return a;\n  };\n  const patternConsentFile = async () => {\n    if (!test) return \"\";\n    const siteID = test.baseSiteID || test.siteID;\n    const fileName = `${siteID}-${test.id}-pattern.pdf`;\n    const result = await Storage.get(fileName, { download: true });\n    downloadBlob(result.Body, `${test.barcode}-pattern.pdf`);\n  };\n\n  const dataOfBirthParse = (dob) => {\n    if (dob && dob !== \"Invalid date\") {\n      return formatDateOfBirthDOB(dob);\n    }\n    return moment().format(\"MM/DD/YYYY\");\n  };\n\n  const showResultPDF = async (test) => {\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const handleRadioButtonChange = (e) => {\n    if (e.target.name === \"isVaccinated\") {\n      if (e.target.value === \"yes\") {\n        setEmployee({ ...Employee, isVaccinated: e.target.checked && true });\n      } else {\n        setEmployee({ ...Employee, isVaccinated: e.target.checked && false });\n      }\n    } else {\n      if (e.target.value === \"yes\") {\n        setEmployee({ ...Employee, isBooster: e.target.checked && true });\n      } else {\n        setEmployee({ ...Employee, isBooster: e.target.checked && false });\n      }\n    }\n  };\n\n  const handleToogleChange = (e) => {\n    const { name, checked } = e.target;\n    const value =\n      name === \"isCheckedUser\" ? checked : name === \"status\" ? (checked ? \"active\" : \"inactive\") : checked ? \"1\" : \"0\";\n    setEmployee({ ...Employee, [name]: value });\n  };\n\n  const makeRelationModal = (e) => {\n    e.preventDefault();\n    e.stopPropagation();\n    setProfileModal(!showProfileModal);\n  };\n\n  const handlePatientResetPassword = async () => {\n    setLoading(true);\n    try {\n      const result = await api.updatePatientPassword(Employee.subID);\n\n      appContext.showSuccessBottomMessage(`Password reset successfully.`);\n    } catch (error) {\n      console.log(\"Error\", error);\n      appContext.showErrorMessage(`Password reset failed.`);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const handleOpenNewPayerModal = () => {\n    setInsuranceModal({\n      ...EMP_INS_OBJECT,\n      id: getUUID(),\n      isPrimary: !Employee.insuranceDetails || Employee.insuranceDetails.length === 0,\n    });\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case TABLE_QUICK_TOOLS.edit:\n        setInsuranceModal({ ...row, isNew: false });\n        break;\n      case TABLE_QUICK_TOOLS.delete:\n        const stateInsDetails = Employee.insuranceDetails.filter((f) => f.id !== row.id);\n        setEmployee({ ...Employee, insuranceDetails: stateInsDetails });\n        break;\n\n      default:\n        break;\n    }\n  };\n\n  const handleDeleteRelation = async (item) => {\n    try {\n      setLoading(true);\n      const modifiedRelation = proxyRelations.filter((f) => f.mdID !== item.mdID);\n      await API.manageEmployeeRelation({\n        id: Employee?.id,\n        connectedID: item.mdID,\n        type: \"r\",\n      });\n\n      dispatch(setProxyRelations(modifiedRelation));\n      setLoading(false);\n      appContext.showSuccessBottomMessage(`Proxy Profile Deleted successfully.`);\n    } catch (err) {\n      setLoading(false);\n      const error = err.response.data;\n      const msg = error?.errors && Array.isArray(error?.errors) ? Object.values(error?.errors[0])[0] : error.message;\n      appContext.showErrorMessage(msg);\n    }\n  };\n\n  const getProviderValue = (providers, Employee) => {\n    if (Employee?.referringProvider) {\n      return providers.find((item) => item.value === Employee.referringProvider) || null;\n    }\n    if (providers?.length === 1 && Employee?.isNew) {\n      const prov = providers[0];\n      setEmployee({\n        ...Employee,\n        referringProvider: prov?.value || \"\",\n        referringPyhsician: prov?.label || \"\",\n        ...(prov?.associatedClient && { siteID: prov.associatedClient }),\n      });\n      return providers[0];\n    }\n\n    return null;\n  };\n\n  const handelMultiDocumentDownload = () => {\n    if (documentListRef.current) {\n      documentListRef.current.handleMultiDownload();\n    }\n  };\n\n  return (\n    <Modal\n      backdrop=\"static\"\n      show\n      animation={true}\n      onHide={handleClose}\n      size=\"2x2\"\n      style={{ paddingLeft: \"0\" }}\n      centered\n      keyboard={false}\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {/* {(Employee?.isNew === false && permission[EMPLOYEE].editPatientRecord) || permission[EMPLOYEE].write\n            ? \"Update Patient\"\n            : \"Create Patient\"} */}\n\n          {Employee?.isNew === false ? \"Update Patient\" : \"Create Patient\"}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body\n        style={{\n          paddingTop: 0,\n        }}\n      >\n        <div className=\"parent-wrapper\">\n          <SweetAlert show={showAlert} success title=\"Success\" onConfirm={hideAlert}>\n            Test Released\n          </SweetAlert>\n          <SweetAlert\n            show={showSubmitAlert}\n            success\n            title=\"Success\"\n            onConfirm={() => {\n              window.history.back();\n              setShowSubmitAlert(false);\n            }}\n          >\n            Test Submitted Successfully.\n          </SweetAlert>\n          <div className=\"crew-member-profile\">\n            <div className=\"crew-member-profile-inner\">\n              <div className=\"d-md-flex  justify-content-between\">\n                <Col md=\"3\" className=\"wrapper-profile\">\n                  <div className=\"card-body px-3\">\n                    <div className=\"profile-image position-relative text-center\">\n                      <div className=\"crew-image-wrapper\">\n                        <figure className=\"profile-image-wrapper\">\n                          {!editButton ? (\n                            <ImageInput\n                              type=\"profile\"\n                              setSelectedImage={setProfileImage}\n                              selectedImage={profileImage}\n                              cameraIcon\n                            />\n                          ) : (\n                            <div className=\"\">\n                              <img src={profileImage} alt=\"profile-image\" />\n                            </div>\n                          )}\n                        </figure>\n                      </div>\n                      <p className=\"text-center mt-3 text-black mb-0\">{`${Employee?.first || \"\"} ${\n                        Employee?.last || \"\"\n                      }`}</p>\n                    </div>\n                    <hr className=\"horizontal-line\" />\n                    <div className=\"settings-profile\">\n                      <h4 className=\"profile-title my-1\">Communication Preference</h4>\n\n                      {/* <div className=\"d-flex align-items-center justify-content-between profile-detail mb-1\">\n                        <span>SMS</span>\n                        <SwitchToggle\n                          id=\"sendSMS\"\n                          name=\"sendSMS\"\n                          handleToogleChange={handleToogleChange}\n                          checked={Employee?.sendSMS == \"1\" ? true : false}\n                          disabled={editButton}\n                        />\n                      </div> */}\n                      <div className=\"d-flex align-items-center justify-content-between profile-detail mb-1\">\n                        <span>Email</span>\n                        <SwitchToggle\n                          id=\"sendEmail\"\n                          name=\"sendEmail\"\n                          handleToogleChange={handleToogleChange}\n                          checked={Employee?.sendEmail == \"1\" ? true : false}\n                          disabled={editButton}\n                        />\n                      </div>\n\n                      {/* <div className=\"d-flex justify-content-between w-100 flex-wrap\">\n                        <span>Billing Preferences</span>\n                        <RadioButton\n                          name=\"billingpreferences\"\n                          id={`billing_email`}\n                          label=\"Email\"\n                          checked={Employee?.setting?.billType === \"email\" ? true : false}\n                          handleRadioButtonChange={(e) =>\n                            setEmployee({\n                              ...Employee,\n                              setting: { ...(Employee.setting || {}), billType: e.target.checked ? \"email\" : \"\" },\n                            })\n                          }\n                          disabled={editButton}\n                        />\n                        <RadioButton\n                          name=\"billingpreferences\"\n                          id={`billing_mail`}\n                          checked={Employee?.setting?.billType === \"mail\" ? true : false}\n                          label=\"Mail\"\n                          handleRadioButtonChange={(e) =>\n                            setEmployee({\n                              ...Employee,\n                              setting: { ...(Employee.setting || {}), billType: e.target.checked ? \"mail\" : \"\" },\n                            })\n                          }\n                          disabled={editButton}\n                        />\n                      </div> */}\n                      <h4 className=\"profile-title my-1\">Facility Indicator</h4>\n                      <div\n                        className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n                      >\n                        <span>Hospice</span>\n                        <SwitchToggle\n                          checked={Employee?.isHospice}\n                          handleChange={(e) =>\n                            setEmployee({\n                              ...Employee,\n                              isHospice: e.target.checked,\n                            })\n                          }\n                        />\n                      </div>\n                      <div\n                        className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n                      >\n                        <span>Skilled Nursing Facility</span>\n                        <SwitchToggle\n                          checked={Employee?.snf}\n                          handleChange={(e) =>\n                            setEmployee({\n                              ...Employee,\n                              snf: e.target.checked,\n                            })\n                          }\n                        />\n                      </div>\n                      <div\n                        className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n                      >\n                        <span>Other Institution</span>\n                        <SwitchToggle\n                          checked={Employee?.isInsHousing}\n                          handleChange={(e) =>\n                            setEmployee({\n                              ...Employee,\n                              isInsHousing: e.target.checked,\n                            })\n                          }\n                        />\n                      </div>\n\n                      {Employee?.isHospice && (\n                        <div\n                          className=\"d-flex align-items-center justify-content-between profile-\n                          detail\"\n                        >\n                          <span>Hospice Modifier</span>\n                          <div className=\"d-flex justify-content-between w-40 gap-2\">\n                            <RadioButton\n                              name=\"GW\"\n                              id={`GW`}\n                              label=\"GW\"\n                              checked={Employee?.codes?.hospiceModifer === \"GW\" ? true : false}\n                              handleRadioButtonChange={(e) =>\n                                setEmployee({\n                                  ...Employee,\n                                  codes: { hospiceModifer: e.target.checked ? \"GW\" : \"\" },\n                                })\n                              }\n                              disabled={editButton}\n                            />\n                            <RadioButton\n                              name=\"GV\"\n                              id={`GV`}\n                              label=\"GV\"\n                              checked={Employee?.codes?.hospiceModifer === \"GV\" ? true : false}\n                              handleRadioButtonChange={(e) =>\n                                setEmployee({\n                                  ...Employee,\n                                  codes: { hospiceModifer: e.target.checked ? \"GV\" : \"\" },\n                                })\n                              }\n                              disabled={editButton}\n                            />\n                          </div>\n                        </div>\n                      )}\n                      <h4 className=\"profile-title my-1\">Other Settings</h4>\n\n                      <div\n                        className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n                      >\n                        <span>Auto Release</span>\n                        <SwitchToggle\n                          id=\"autoRelease\"\n                          name=\"autoRelease\"\n                          handleToogleChange={handleToogleChange}\n                          checked={Employee?.autoRelease == \"1\" ? true : false}\n                          disabled={editButton}\n                        />\n                      </div>\n                      <div\n                        className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n                      >\n                        <span>Active</span>\n                        <SwitchToggle\n                          id=\"status\"\n                          name=\"status\"\n                          handleToogleChange={handleToogleChange}\n                          checked={Employee?.status === \"active\" ? true : false}\n                          disabled={editButton}\n                        />\n                      </div>\n                      {Employee &&\n                        (Employee?.isNew ? (\n                          <div\n                            className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-1\"\n                          >\n                            <span>Portal Access?</span>\n                            <SwitchToggle\n                              id=\"isCheckedUser\"\n                              name=\"isCheckedUser\"\n                              handleToogleChange={handleToogleChange}\n                              checked={Employee?.isCheckedUser}\n                              disabled={editButton}\n                            />\n                          </div>\n                        ) : !Employee?.subID ? (\n                          permission[EMPLOYEE]?.write && (\n                            <div className=\"d-flex align-items-center justify-content-between\">\n                              <span>Portal Access</span>\n                              <span\n                                className=\"modalButtons cursor-pointer text-decoration-underline text-primary\"\n                                variant=\"secondary\"\n                                onClick={() => createPatientLogin(Employee)}\n                              >\n                                Create User\n                              </span>\n                            </div>\n                          )\n                        ) : (\n                          permission[EMPLOYEE]?.write && (\n                            <div className=\"d-flex align-items-center justify-content-between\">\n                              <span>Portal Access</span>\n                              <span\n                                className=\"modalButtons cursor-pointer text-decoration-underline text-primary\"\n                                variant=\"secondary\"\n                                onClick={handlePatientResetPassword}\n                              >\n                                Reset Password\n                              </span>\n                            </div>\n                          )\n                        ))}\n\n                      {/* {Employee &&\n                        (Employee?.isNew ? (\n                          <div\n                            className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-3\"\n                          >\n                            <span>Portal Access?</span>\n                            <SwitchToggle\n                              id=\"isCheckedUser\"\n                              name=\"isCheckedUser\"\n                              handleToogleChange={handleToogleChange}\n                              checked={Employee?.isCheckedUser}\n                              disabled={editButton}\n                            />\n                          </div>\n                        ) : !Employee?.subID ? (\n                          permission[EMPLOYEE]?.write && (\n                            <Button\n                              className=\"modalButtons\"\n                              variant=\"secondary\"\n                              onClick={() => createPatientLogin(Employee)}\n                            >\n                              Create Patient User\n                            </Button>\n                          )\n                        ) : (\n                          permission[EMPLOYEE]?.write && (\n                            <Button className=\"modalButtons\" variant=\"secondary\" onClick={handlePatientResetPassword}>\n                              Reset Password\n                            </Button>\n                          )\n                        ))} */}\n                    </div>\n                    <div className=\"wrapper-profile settings-profile textarea border-0 mt-2 p-0\">\n                      <h4 className=\"profile-title my-1 px-2\">Notes</h4>\n                      <div className=\"mb-1\">\n                        <textarea\n                          readOnly={editButton}\n                          className=\"form-control\"\n                          onChange={(e) => setEmployee({ ...Employee, note: e.target.value })}\n                          value={Employee?.note || \"\"}\n                          defaultValue={demographics?.note}\n                          placeholder={`${!editButton ? \"Enter Notes\" : \"\"}`}\n                          type=\"text\"\n                        ></textarea>\n                      </div>\n                    </div>\n                  </div>\n                </Col>\n                <Col md=\"9\" className=\"border-left-1\">\n                  <div className=\"personal-info-wrapper px-3\">\n                    <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n                      <h4 className=\"text-decoration-underline mt-0 section-title\">Personal Info</h4>\n                      <div style={{ display: \"flex\" }}>\n                        <h4 className=\"mt-0 section-title mr-2\">Outstanding Balance:</h4>\n                        <h4 className=\"text-decoration-underline mt-0 currency-view\">\n                          {formatCurrency(Employee?.setting?.outstanding_balance)}\n                        </h4>\n                      </div>\n                    </div>\n                    <div className=\"testAdmin createClientsWrapper\">\n                      <div className=\"crew-profile-info\">\n                        <InputField\n                          type=\"text\"\n                          inputStyle=\"modalInput\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"First Name\"\n                          value={Employee?.first || \"\"}\n                          index=\"first\"\n                          maxLength={100}\n                          placeholder=\"Enter First Name\"\n                          disabled={editButton}\n                          handleChange={(e) =>\n                            setEmployee({\n                              ...Employee,\n                              first: getValidDep(e.target.value),\n                            })\n                          }\n                          required={requiredKeysObj[\"first\"] || false}\n                        />\n                        <InputField\n                          type=\"text\"\n                          inputStyle=\"modalInput\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Middle Name\"\n                          value={Employee?.middleName || \"\"}\n                          index=\"middle\"\n                          maxLength={100}\n                          placeholder=\"Enter Middle Name\"\n                          disabled={editButton}\n                          handleChange={(e) =>\n                            setEmployee({\n                              ...Employee,\n                              middleName: getValidDep(e.target.value),\n                            })\n                          }\n                        />\n                        <InputField\n                          type=\"text\"\n                          inputStyle=\"modalInput\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Last Name\"\n                          value={Employee?.last || \"\"}\n                          index=\"last\"\n                          maxLength={100}\n                          placeholder=\"Enter Last Name\"\n                          disabled={editButton}\n                          handleChange={(e) =>\n                            setEmployee({\n                              ...Employee,\n                              last: getValidDep(e.target.value),\n                            })\n                          }\n                          required={requiredKeysObj[\"last\"] || false}\n                        />\n\n                        <InputField\n                          type=\"email\"\n                          inputStyle=\"modalInput\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Email\"\n                          value={Employee?.email || \"\"}\n                          index=\"email\"\n                          maxLength={25}\n                          placeholder=\"Enter Email\"\n                          disabled={editButton}\n                          required={requiredKeysObj[\"email\"] || false}\n                          handleChange={(e) => {\n                            let updatedEmployee = { ...Employee, email: convertToLower(e.target.value) };\n                            updatedEmployee = updateContactPreferences(updatedEmployee);\n                            setEmployee(updatedEmployee);\n                          }}\n                        />\n                      </div>\n                      <div className=\"crew-profile-row4 align-items-center\">\n                        <InputField\n                          type=\"phone\"\n                          inputStyle={`employee-phone-input ${Employee?.isNew && \"pd-right-30\"}`}\n                          labelStyle=\"modalLineHeaders mt-0 text-capitalize\"\n                          label=\"Phone Number\"\n                          value={formatPhoneNumber(Employee?.phone_number, Employee?.countryCode || \"+1\")}\n                          index=\"phone_number\"\n                          maxLength={65}\n                          placeholder=\"Enter Phone Number\"\n                          disabled={editButton}\n                          handleChange={handlePhoneNo}\n                          required={requiredKeysObj[\"phone_number\"] || false}\n                        />\n                        <InputField\n                          type=\"datePicker\"\n                          inputStyle=\"w-100 orderTestDob\"\n                          labelStyle=\"modalLineHeaders mt-0 text-capitalize\"\n                          label=\"Date of Birth\"\n                          value={\n                            Employee?.dob && new Date(Employee.dob) != \"Invalid Date\"\n                              ? moment(Employee.dob, \"YYYY-MM-DD\").toDate()\n                              : null\n                          }\n                          index=\"dob\"\n                          placeholder=\"Date of Birth\"\n                          disabled={editButton}\n                          handleChange={(e) =>\n                            setEmployee({\n                              ...Employee,\n                              dob:\n                                moment(e).format(\"YYYY-MM-DD\") != \"Invalid date\" ? moment(e).format(\"YYYY-MM-DD\") : \"\",\n                            })\n                          }\n                          required={requiredKeysObj[\"dob\"] || false}\n                        />\n\n                        <div style={{ position: \"relative\", top: \"-15px\" }}>\n                          <label className=\"my-0 modalLineHeaders\">\n                            Gender <span className=\"fw-bold fs-6 maroon\">{requiredKeysObj[\"sex\"] && \"*\"}</span>\n                          </label>\n                          <div className={`d-flex justify-content-between w-100 flex-wrap`}>\n                            <RadioButton\n                              name=\"sex\"\n                              id={`male${Math.random()}`}\n                              label=\"Male\"\n                              checked={Employee?.sex === \"M\" ? true : false}\n                              handleRadioButtonChange={(e) =>\n                                setEmployee({\n                                  ...Employee,\n                                  sex: e.target.checked ? \"M\" : \"\",\n                                })\n                              }\n                              disabled={editButton}\n                            />\n                            <RadioButton\n                              name=\"sex\"\n                              id={`female${Math.random()}`}\n                              checked={Employee?.sex === \"F\" ? true : false}\n                              label=\"Female\"\n                              handleRadioButtonChange={(e) =>\n                                setEmployee({\n                                  ...Employee,\n                                  sex: e.target.checked ? \"F\" : \"\",\n                                })\n                              }\n                              disabled={editButton}\n                            />\n                            <RadioButton\n                              id={`other${Math.random()}`}\n                              checked={Employee?.sex === \"X\" ? true : false}\n                              name=\"sex\"\n                              label=\"Not Specified\"\n                              handleRadioButtonChange={(e) =>\n                                setEmployee({\n                                  ...Employee,\n                                  sex: e.target.checked ? \"X\" : \"\",\n                                })\n                              }\n                              disabled={editButton}\n                            />\n                            <RadioButton\n                              id={`other${Math.random()}`}\n                              checked={Employee?.sex === \"N\" ? true : false}\n                              name=\"sex\"\n                              label=\"Non Binary\"\n                              handleRadioButtonChange={(e) =>\n                                setEmployee({\n                                  ...Employee,\n                                  sex: e.target.checked ? \"N\" : \"\",\n                                })\n                              }\n                              disabled={editButton}\n                            />\n                          </div>\n                        </div>\n                        {/* <div className=\"form-group-wrapper my-0 flex-2\">\n                          <label className=\"my-0 modalLineHeaders\">\n                            Gender <span className=\"fw-bold fs-6 maroon\">*</span>\n                          </label>\n                          <div className=\"d-flex justify-content-between w-100 flex-wrap\">\n                            \n                          </div>\n                        </div> */}\n                      </div>\n                      <div className=\"crew-profile-row4\">\n                        <InputField\n                          type=\"address\"\n                          groupWrapper=\"form-group-wrapper w-100\"\n                          inputStyle=\"modalInput\"\n                          labelStyle=\"modalLineHeaders text-capitalize\"\n                          label=\"Address\"\n                          value={Employee?.street || \"\"}\n                          index=\"street\"\n                          maxLength={255}\n                          required={requiredKeysObj[\"address\"]}\n                          placeholder=\"Enter Address\"\n                          disabled={editButton}\n                          handleChange={(val, flag) => handleUpdateAddress(val, flag)}\n                        />\n                        <InputField\n                          type=\"text\"\n                          groupWrapper=\"form-group-wrapper w-100\"\n                          inputStyle=\"modalInput\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Apt/Unit#\"\n                          value={Employee?.street2 || \"\"}\n                          index=\"street2\"\n                          maxLength={255}\n                          placeholder=\"Enter Apt/Unit\"\n                          disabled={editButton}\n                          handleChange={(e) => setEmployee({ ...Employee, street2: e.target.value })}\n                        />\n                        <InputField\n                          type=\"text\"\n                          groupWrapper=\"form-group-wrapper w-100\"\n                          inputStyle=\"modalInput\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"City\"\n                          value={Employee?.city || \"\"}\n                          required={requiredKeysObj[\"address\"]}\n                          index=\"city\"\n                          maxLength={65}\n                          placeholder=\"Enter City\"\n                          disabled={editButton}\n                          handleChange={(e) => setEmployee({ ...Employee, city: e.target.value })}\n                        />\n                      </div>\n                      <div className=\"crew-profile-row-exact4\">\n                        <InputField\n                          type=\"text\"\n                          groupWrapper=\"form-group-wrapper w-100\"\n                          inputStyle=\"modalInput\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"State\"\n                          value={Employee?.state || \"\"}\n                          required={requiredKeysObj[\"address\"]}\n                          index=\"state\"\n                          maxLength={2}\n                          placeholder=\"Enter State\"\n                          disabled={editButton}\n                          handleChange={(e) => {\n                            let val = e.target.value;\n                            if (val) val = val.toUpperCase();\n                            setEmployee({\n                              ...Employee,\n                              state: getValidSpaces(val),\n                            });\n                          }}\n                        />\n                        <InputField\n                          type=\"text\"\n                          groupWrapper=\"form-group-wrapper w-100\"\n                          inputStyle=\"modalInput\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Zip Code\"\n                          value={Employee?.zip || \"\"}\n                          required={requiredKeysObj[\"address\"]}\n                          index=\"zip\"\n                          maxLength={10}\n                          placeholder=\"Enter Zip Code\"\n                          disabled={editButton}\n                          handleChange={(e) => {\n                            let val = e.target.value;\n                            if (val) val = val.toUpperCase();\n                            setEmployee({\n                              ...Employee,\n                              zip: Employee.isoCode === \"US\" ? val : getValidSpaces(val),\n                            });\n                          }}\n                        />\n                        <InputField\n                          type=\"dropDown\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Country\"\n                          options={countriesOption}\n                          value={\n                            Employee?.country\n                              ? {\n                                  label: Employee.country,\n                                  value: Employee.country,\n                                }\n                              : null\n                          }\n                          index=\"country\"\n                          maxLength={20}\n                          placeholder=\"Select Country\"\n                          handleChange={(e) => {\n                            const country = countryListAllIsoData.find((f) => f.name === e.value) || { code: \"US\" };\n                            setEmployee({\n                              ...Employee,\n                              country: e.value,\n                              isoCode: country.code,\n                            });\n                          }}\n                        />\n                        {(!CONFIG?.siteID || !(CONFIG.allowSites && CONFIG.allowSites.length < 2)) && (\n                          <InputField\n                            customStyle={customStyles}\n                            type=\"dropDown\"\n                            inputStyle=\"referring-provider-select w-100\"\n                            labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                            label=\"Client\"\n                            options={clientOptions}\n                            required={true}\n                            value={Employee?.provider || null}\n                            index=\"patientsite\"\n                            placeholder=\"Select Client\"\n                            disabled={editButton}\n                            isClearable={true}\n                            isMulti\n                            hideSelectedOptions={false}\n                            componentOptions={{ Option, ValueContainer: ReactSelectCustomContainer }}\n                            handleChange={(e) => {\n                              setEmployee({\n                                ...Employee,\n                                provider: e,\n                                ...(Array.isArray(e) &&\n                                  e.length > 0 && {\n                                    siteID: e[0].value,\n                                    site_name: e[0].label,\n                                  }),\n                              });\n                            }}\n                          />\n                        )}\n                        <InputField\n                          type=\"text\"\n                          groupWrapper=\"form-group-wrapper w-100\"\n                          inputStyle=\"modalInput\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Chart ID\"\n                          value={Employee?.externalID || \"\"}\n                          index=\"externalID\"\n                          placeholder=\"Enter Chart ID\"\n                          disabled={editButton}\n                          handleChange={(e) => {\n                            setEmployee({\n                              ...Employee,\n                              externalID: e.target.value,\n                            });\n                          }}\n                        />\n                        {/* <InputField\n                          type=\"dropDown\"\n                          inputStyle=\"referring-provider-select w-100\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Referring Physician\"\n                          options={providers}\n                          required={requiredKeysObj[\"referringPyhsician\"] || false}\n                          value={getProviderValue(providers, Employee)}\n                          index=\"referringProvider\"\n                          placeholder=\"Select Referring Physician\"\n                          disabled={editButton}\n                          isClearable={true}\n                          handleChange={(e) => {\n                            setEmployee({\n                              ...Employee,\n                              referringProvider: e?.value || \"\",\n                              referringPyhsician: e?.label || \"\",\n                              ...(e?.associatedClient && { siteID: e?.associatedClient }),\n                            });\n                          }}\n                        /> */}\n                        {/* \n                      <Form.Group className=\"form-group-wrapper\" readOnly={editButton} plaintext>\n                        {calculate_age(demographics?.dob) > 18 ? (\n                          <label className=\"modalLineHeaders mt-0 text-capitalize\">ID Number</label>\n                        ) : (\n                          <label>SSN</label>\n                        )}\n                        <Form.Control\n                          readOnly={editButton}\n                          className={`${!editButton ? \"modalInput\" : \"\"}`}\n                          value={Employee?.id_number}\n                          onChange={(e) => setEmployee({ ...Employee, id_number: e.target.value })}\n                          defaultValue={formatIDNo()}\n                          placeholder=\"ID Number\"\n                          type=\"text\"\n                        />\n                      </Form.Group> */}\n                      </div>\n                      <div className=\"crew-profile-row4\">\n                        {/* <InputField\n                          type=\"dropDown\"\n                          inputStyle=\"w-100\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Rendering Provider\"\n                          options={providers}\n                          value={\n                            Employee?.renderingProvider\n                              ? providers.find((item) => item.value === Employee.renderingProvider)\n                              : null\n                          }\n                          index=\"renderingProvider\"\n                          isClearable={true}\n                          placeholder=\"Select Rendering Provider\"\n                          disabled={editButton}\n                          handleChange={(e) => {\n                            setEmployee({\n                              ...Employee,\n                              renderingProvider: e?.value || \"\",\n                            });\n                          }}\n                        /> */}\n                        {/* <InputField\n                          type=\"dropDown\"\n                          inputStyle=\"referring-provider-select w-100\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Referring Physician\"\n                          options={providers}\n                          value={\n                            Employee?.referringProvider\n                              ? providers.find((item) => item.value === Employee.referringProvider)\n                              : null\n                          }\n                          index=\"referringProvider\"\n                          placeholder=\"Select Referring Physician\"\n                          disabled={editButton}\n                          isClearable={true}\n                          handleChange={(e) => {\n                            setEmployee({\n                              ...Employee,\n                              referringProvider: e?.value || \"\",\n                            });\n                          }}\n                        /> */}\n                        {/* <InputField\n                          type=\"dropDown\"\n                          inputStyle=\"w-100\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Primary Care Physician\"\n                          options={providers}\n                          value={\n                            Employee?.primaryCarePhysician\n                              ? providers.find((item) => item.label === Employee.primaryCarePhysician)\n                              : null\n                          }\n                          index=\"primaryCarePhysician\"\n                          placeholder=\"Select Primary Care Physician\"\n                          disabled={editButton}\n                          isClearable={true}\n                          handleChange={(e) => {\n                            setEmployee({\n                              ...Employee,\n                              primaryCarePhysician: e?.label || \"\",\n                            });\n                          }}\n                        /> */}\n                        {/* <InputField\n                          type=\"dropDown\"\n                          inputStyle=\"w-100\"\n                          labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                          label=\"Ordering Provider\"\n                          options={providers}\n                          value={\n                            Employee?.orderingProvider\n                              ? providers.find((item) => item.value === Employee.orderingProvider)\n                              : null\n                          }\n                          index=\"orderingProvider\"\n                          placeholder=\"Select Ordering Provider\"\n                          disabled={editButton}\n                          isClearable={true}\n                          handleChange={(e) => {\n                            setEmployee({\n                              ...Employee,\n                              orderingProvider: e?.value || \"\",\n                            });\n                          }}\n                        /> */}\n                      </div>\n                      <div className=\"crew-profile-row4 mb-3\"></div>\n                    </div>\n                  </div>\n                  <div className=\"p-3 pt-0\">\n                    <Row className=\"additional-info w-100 mx-0\">\n                      <Col md=\"6\" className=\"border-right-1 additional-info-radios\">\n                        <div className=\"justify-content-between d-flex  w-100 mb-0 m-0 secondary-insurance-head\">\n                          <h4 className=\"text-decoration-underline mt-0 section-title\">\n                            Payer Information{\" \"}\n                            <span className=\"fw-bold fs-6 maroon\">\n                              {requiredKeysObj[\"insuranceCompanyCode\"] && \"*\"}\n                            </span>\n                          </h4>\n                          <div className=\"plus-icon mt-1\">\n                            <i\n                              className=\"fas fa-plus-circle fa-lg cursor-pointer w-auto\"\n                              // onClick={() => setInsuranceModal(EMP_INS_OBJECT)}\n                              onClick={handleOpenNewPayerModal}\n                            />\n                          </div>\n                        </div>\n\n                        <div className=\"w-100 py-2\">\n                          {Employee?.insuranceDetails && Employee.insuranceDetails.length > 0\n                            ? Employee.insuranceDetails.map((ins, i) => (\n                                <InsuranceViewCard\n                                  insurance={{ ...ins }}\n                                  index={i + 1}\n                                  key={i}\n                                  handleEdit={(obj) => {\n                                    setInsuranceModal({ ...obj, isNew: false });\n                                  }}\n                                  user={Employee}\n                                  handleUpdateIns={(obj) => {\n                                    const findIndex = Employee.insuranceDetails.findIndex((f) => f.id === obj.id);\n                                    if (findIndex !== -1) {\n                                      const stateUser = { ...Employee };\n                                      const stateInsDetails = [...stateUser.insuranceDetails];\n                                      stateInsDetails[findIndex] = obj;\n                                      setEmployee({ ...stateUser, insuranceDetails: stateInsDetails });\n                                    }\n                                  }}\n                                  handleRemove={(obj) => {\n                                    const stateInsDetails = Employee.insuranceDetails.filter((f) => f.id !== obj.id);\n                                    setEmployee({ ...Employee, insuranceDetails: stateInsDetails });\n                                  }}\n                                  userClientData={userClientData}\n                                  cssClass={\"insCard-background-blue \"}\n                                />\n                              ))\n                            : null}\n                        </div>\n                        {/* <InputField\n                        type=\"dropDown\"\n                        inputStyle=\"w-100\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Insurance Carrier\"\n                        options={INSURANCE_PROVIDER}\n                        value={\n                          Employee?.insurance_name\n                            ? INSURANCE_PROVIDER.find((f) => f.label === Employee?.insurance_name)\n                            : null\n                        }\n                        disabled={editButton}\n                        index=\"insurance_name\"\n                        placeholder=\"Select Insurance\"\n                        handleChange={(e) => {\n                          setEmployee({ ...Employee, insurance_name: e.label });\n                        }}\n                      />\n\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">Insurance ID</label>\n                        <Form.Control\n                          className={`height-32 ${!editButton ? \"modalInput\" : \"\"}`}\n                          readOnly={editButton}\n                          onChange={(e) => setEmployee({ ...Employee, insurance_number: e.target.value })}\n                          value={Employee?.insurance_number}\n                          defaultValue={demographics?.insurance_number}\n                          placeholder={`${!editButton ? \"Enter Insurance Id\" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group> */}\n                        <div className=\"w-100\">\n                          {showImages && (\n                            <div className=\"d-block\">\n                              <div className=\"cards-heading\">\n                                <span>Insurance</span> Card Images\n                              </div>\n                              <div className=\"test-details-wrapper rounded-2\">\n                                <div className=\"imageWrapper\">\n                                  {showImages.filter((i) => i.isHIPPA === false && i.isExist).length > 0 ? (\n                                    showImages\n                                      .filter((i) => i.isHIPPA === false && i.isExist)\n                                      .map((showImg, index) => {\n                                        return (\n                                          <ImageView\n                                            key={index}\n                                            cssClass=\"border-0 p-3\"\n                                            imgSrc={showImg.imgSrc}\n                                            onClick={() => handleImageClick(showImg.imgSrc)}\n                                          />\n                                        );\n                                      })\n                                  ) : (\n                                    <div className=\"d-flex align-items-center justify-content-between w-100\">\n                                      <ImageView key={0} cssClass=\"border-0 p-3\" imgSrc={\"\"} />\n                                    </div>\n                                  )}\n                                </div>\n                              </div>\n                            </div>\n                          )}\n                        </div>\n                      </Col>\n                      {/* <Col md=\"4\" className=\"testAdmin createClientsWrapper border-right-1 align-items-start\">\n                        <div className=\"justify-content-between d-flex align-items-center mb-0 m-0 secondary-insurance-head\">\n                          <h4 className=\"text-decoration-underline mt-0 section-title\">Additional Insurance Details</h4>\n                        </div>\n                      </Col> */}\n\n                      <Col md=\"6\" className=\"additional-info-radios border-right-1\">\n                        <div className=\"justify-content-between d-flex align-items-center mb-0 m-0 secondary-insurance-head\">\n                          <h4 className=\"text-decoration-underline mt-0 section-title mb-0\">Documents</h4>\n                          <div className=\"plus-icon mx-2\">\n                            {/* <i\n                              className={`fas fa-file-download cursor-pointer w-auto`}\n                              style={{ marginRight: \"10px\", fontSize: \"20px\" }}\n                              onClick={handelMultiDocumentDownload}\n                            /> */}\n\n                            <img\n                              src={downloadIcon}\n                              alt=\"download icon\"\n                              className=\" mb-1 \"\n                              width=\"22\"\n                              onMouseOver={(e) => {\n                                e.target.style.cursor = \"pointer\";\n                              }}\n                              style={{ marginRight: \"10px\", color: \"red\" }}\n                              aria-hidden=\"true\"\n                              onClick={() => handelMultiDocumentDownload(true)}\n                            />\n\n                            <i\n                              className={`fas fa-plus-circle fa-lg cursor-pointer w-auto ${\n                                editButton && \"disable-cursor\"\n                              }`}\n                              onClick={() =>\n                                !editButton && (setSelectedDocument({ isNew: true }), setOpenDocumentModal(Employee))\n                              }\n                            />\n                          </div>\n                        </div>\n\n                        <DocumentList\n                          list={documents}\n                          disabled={editButton}\n                          ref={documentListRef}\n                          setDocuments={setDocuments}\n                          dropDownOptions={[{ title: \"Download\" }, { title: \"Edit\" }, { title: \"Delete\" }]}\n                          appContext={appContext}\n                          setLoading={setLoading}\n                          handleEdit={(item) =>\n                            !editButton &&\n                            (setSelectedDocument({ ...item, isNew: false }), setOpenDocumentModal(Employee))\n                          }\n                        />\n                      </Col>\n                    </Row>\n                    {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n                  </div>\n                  <Row className=\"px-3\">\n                    <Col>\n                      <div className=\"proxy-box-shadow\">\n                        <div className=\"d-flex flex-row align-items-center\" style={{ justifyContent: \"space-between\" }}>\n                          <div className=\"d-flex\">\n                            <h4 className=\"text-decoration-underline mt-0 section-title me-2\">Proxy Profiles</h4>\n                            {proxyRelations.length > 0 && (\n                              <h4 className=\"mt-0 section-title me-2\">({proxyRelations.length})</h4>\n                            )}\n                          </div>\n                          {Employee?.isNew === false && (\n                            <img\n                              src={AddIcon}\n                              alt=\"edit icon\"\n                              className=\"ml-2 mb-2\"\n                              width=\"30\"\n                              onMouseOver={(e) => {\n                                e.target.style.cursor = \"pointer\";\n                              }}\n                              aria-hidden=\"true\"\n                              disabled={editButton}\n                              onClick={() => setProfileModal(true)}\n                            />\n                          )}\n                        </div>\n                        <RelationView relations={proxyRelations} handleDeleteRelation={handleDeleteRelation} />\n                      </div>\n                    </Col>\n                  </Row>\n                </Col>\n              </div>\n            </div>\n          </div>\n        </div>\n        <Modal\n          show={modalShow}\n          // style={{ transform: \"translate(0, -30%)\" }}\n          animation={true}\n          onHide={() => setModalShow(false)}\n          centered\n          size={\"md\"}\n        >\n          <Modal.Header closeButton>\n            <Modal.Title id=\"contained-modal-title-vcenter\">Release Test Results</Modal.Title>\n          </Modal.Header>\n\n          <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n            <p>Select all that apply: </p>\n            <div className=\"checkboxRow\">\n              <label className=\"checkboxLabel\">\n                <input\n                  disabled={!siteContactPhone}\n                  value=\"site\"\n                  onChange={(e) => {\n                    if (e.target.checked) {\n                      setReleaseTo({\n                        ...releaseTo,\n                        [e.target.value]: siteContactPhone,\n                      });\n                    } else {\n                      const newReleaseTo = releaseTo;\n                      delete newReleaseTo[e.target.value];\n                      setReleaseTo(newReleaseTo);\n                    }\n                  }}\n                  className=\"releaseCheckbox\"\n                  type=\"checkbox\"\n                />\n                Health and Safety Officer\n              </label>\n              <label>\n                <input\n                  value=\"crew\"\n                  onChange={(e) => {\n                    if (e.target.checked) {\n                      setReleaseTo({\n                        ...releaseTo,\n                        [e.target.value]: setPhoneNo(test?.phone_number),\n                      });\n                    } else {\n                      const newReleaseTo = releaseTo;\n                      delete newReleaseTo[e.target.value];\n                      setReleaseTo(newReleaseTo);\n                    }\n                  }}\n                  className=\"releaseCheckbox\"\n                  type=\"checkbox\"\n                />\n                Crew Member\n              </label>\n            </div>\n          </Modal.Body>\n\n          <Modal.Footer>\n            <Button className=\"modalButtons\" variant=\"secondary\" onClick={() => setModalShow(false)}>\n              Cancel\n            </Button>\n            <Button\n              className=\"modalButtons\"\n              variant=\"primary\"\n              onClick={async () => {\n                if (releaseTo.length === 0) return;\n                setLoading(true);\n                const params = [];\n                params.push({\n                  id: test.id,\n                  status: \"Processed\",\n                  timerStatus: \"Processed\",\n                  sequenceNo: test.sequenceNo,\n                  invalidResultStatus: 1,\n                });\n                const ids = [{ id: test.id, sequenceNo: test.sequenceNo }];\n                await GQAPI.releaseTest(params);\n                if (releaseTo.crew) {\n                  await GQAPI.sendEmailToPendingRelease(params);\n                }\n\n                const logs = {\n                  ids: ids,\n                  userID: appContext.user?.sub,\n                  userName: appContext.user?.name,\n                  slug: test.result.toLowerCase() !== \"positive\" ? \"Inconclusive Release\" : \"Pending Release\",\n                };\n\n                await GQAPI.addTestLogs(logs);\n\n                releaseTo.site &&\n                  (await API.sendSMSNotification(\n                    releaseTo.site,\n                    `Hello, there was a positive (${TEST_TYPE_VALUE[test.test_type]}) test result for ${\n                      site.name\n                    }. please login to your Health & Safety Portal to review.`\n                  ));\n\n                await appContext.resetPendingTests([test.id]);\n                props.history.push(\"/admin/pendingrelease\");\n                appContext.showSuccessMessage(`Success! You have released test`);\n                setLoading(false);\n              }}\n            >\n              Release Results\n            </Button>\n          </Modal.Footer>\n        </Modal>\n\n        {openDataChangeConfirmation && (\n          <ConfirmationModal\n            show={openDataChangeConfirmation}\n            title=\"Test Update Alert\"\n            message={`New Changes occures, are you want to update your edit info!`}\n            handleConfirm={handleDataChangeConfirm}\n          />\n        )}\n\n        {insuranceModal && (\n          <InsuranceDetailsModal\n            type=\"\"\n            title={insuranceModal.isNew ? \"Add Payer Information\" : \"Update Payer information\"}\n            insuranceDetails={{ ...insuranceModal }}\n            insuranceList={Employee.insuranceDetails}\n            user={Employee}\n            handleUpdateIns={(obj) => {\n              setInsuranceModal(null);\n              let newInsurances = [];\n\n              if (!Employee?.insuranceDetails || Employee.insuranceDetails.length === 0) {\n                newInsurances = [obj];\n              } else if (obj.isPrimary) {\n                newInsurances = Employee.insuranceDetails\n                  .filter((item) => item.id !== obj.id)\n                  .map((item) => ({ ...item, isPrimary: false }));\n                newInsurances = [obj, ...newInsurances];\n              } else {\n                const index = Employee.insuranceDetails.findIndex((item) => item.id === obj.id);\n                if (index !== -1) {\n                  newInsurances = [...Employee.insuranceDetails];\n                  newInsurances[index] = obj;\n                } else {\n                  newInsurances = [...Employee.insuranceDetails, obj];\n                }\n              }\n\n              setEmployee({\n                ...Employee,\n                insuranceDetails: newInsurances,\n              });\n            }}\n            handleClose={(key) => {\n              setInsuranceModal(null);\n            }}\n          />\n        )}\n\n        {openDocumentModal && (\n          <DocumentForm\n            emp={openDocumentModal}\n            document={selectedDocument}\n            handleClose={() => {\n              setOpenDocumentModal(null);\n            }}\n            setLoading={setLoading}\n            appContext={appContext}\n            setDocuments={setDocuments}\n            cssClass=\"seperateModal\"\n          />\n        )}\n\n        {newProviderInfo && (\n          <ProviderModal\n            cssClass=\"seperateModal\"\n            show={true}\n            user={newProviderInfo}\n            handleClose={(obj) => {\n              setNewUserProvider(null);\n              if (obj && obj.id) {\n                // setProviders((prev) => [...prev, { ...obj, label: obj.name, value: obj.id }]);\n              }\n            }}\n            providers={providers}\n            appContext={appContext}\n          />\n        )}\n\n        {showProfileModal && (\n          <ProfileRelationModal\n            employeesId={Employee?.id}\n            patient={Employee}\n            handleChangeRelations={setRelations}\n            handleClose={() => {\n              setProfileModal(!showProfileModal);\n            }}\n          />\n        )}\n\n        {loading && <Loader />}\n      </Modal.Body>\n      <Modal.Footer>\n        {!editButton && (\n          <Button\n            className=\"profileButton btn-fill createButtons\"\n            style={{\n              marginRight: 10,\n              marginTop: 10,\n            }}\n            variant=\"primary\"\n            onClick={handleClose}\n          >\n            Close\n          </Button>\n        )}\n        <div className=\"text-right d-flex\">\n          {Employee?.isNew === false && userClientData?.setting?.eligibility && (\n            <>\n              <Button\n                className=\"profileButton btn-fill createButtons\"\n                style={{\n                  marginRight: 10,\n                  marginTop: 10,\n                  whiteSpace: \"nowrap\",\n                }}\n                variant=\"secondary\"\n                onClick={() => handleCheckEligibility(Employee)}\n              >\n                Check Eligibility\n              </Button>\n            </>\n          )}\n\n          {/* <Button\n            variant=\"secondary\"\n            className=\"modalButtons w-100  headerButton btn-fill\"\n            style={{\n              marginRight: 10,\n              marginTop: 10,\n            }}\n            disabled={editButton}\n            onClick={() => {\n              dispatch(setOpenInsuranceModal(true));\n              dispatch(setSelectedInsurance({ ...INSURANCE_EMPTY_OBJECT, clientID: userCompanyID.get() }));\n            }}\n          >\n            Add Payer\n          </Button>\n          {!editButton && !isSiteUser && (\n            <Button\n              variant=\"secondary\"\n              className=\"profileButton btn-fill createButtons\"\n              style={{\n                marginRight: 10,\n                marginTop: 10,\n              }}\n              disabled={editButton}\n              onClick={() => {\n                const obj = NEW_PROVIDER_OBJECT;\n                setNewUserProvider({ ...obj, isNew: true });\n              }}\n            >\n              Add Provider\n            </Button>\n          )} */}\n          {editButton && (\n            <Button\n              className=\"profileButton btn-fill createButtons\"\n              style={{\n                marginRight: 10,\n                marginTop: 10,\n              }}\n              variant=\"primary\"\n              onClick={() => setEditButton(false)}\n            >\n              Edit Info\n            </Button>\n          )}\n          {!editButton && (permission[EMPLOYEE]?.editPatientRecord || permission[EMPLOYEE]?.write) && (\n            <Button\n              className=\"profileButton btn-fill createButtons\"\n              style={{\n                marginRight: 10,\n                marginTop: 10,\n              }}\n              variant=\"secondary\"\n              onClick={() => handleSave({ ...Employee })}\n            >\n              {Employee?.isNew ? \"Create\" : \"Update\"}\n            </Button>\n          )}\n        </div>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default PatientProfileModal;\n","import React from \"react\";\nimport { ProgressBar } from \"react-bootstrap\";\n\nconst CustomProgressBar = ({ item, total }) => {\n  const progress = Math.round((item / total) * 100);\n\n  const label = `${item} of ${total}`;\n\n  return (\n    <div>\n      <ProgressBar now={progress} variant=\"secondary\" animated />\n      <div style={{ textAlign: \"center\" }}>{label}</div>\n    </div>\n  );\n};\n\nexport default CustomProgressBar;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\nimport React, { useState, useMemo } from \"react\";\nimport { useLocation, useHistory, Link } from \"react-router-dom\";\nimport { Navbar, Container, Nav, Dropdown, Button } from \"react-bootstrap\";\nimport { Auth } from \"aws-amplify\";\nimport { DataStore } from \"@aws-amplify/datastore\";\nimport { medFlowInLocalStorage, medFlowPortalTitle } from \"utils\";\nimport timesIcon from \"assets/img/times-circle.svg\";\nimport { showsInSS } from \"utils\";\nimport { NOTIFICATION_STATUS } from \"constant\";\nimport Progress from \"components/ProgressBar/ProgressBar\";\nimport Status from \"components/Status/Status\";\nimport api from \"api\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport { UPLOAD_CSV_FILE } from \"constant\";\n\nfunction Header(props) {\n  const {\n    userLabName,\n    emailSending,\n    userSiteName,\n    labID,\n    siteID,\n    userType,\n    isProcessing,\n    notificationList,\n    setNotificationList,\n    handleSelect,\n    orderFiles,\n    setLoading,\n    handleCancelRequests,\n    downloadIndicator,\n    user,\n  } = props;\n\n  const location = useLocation();\n  let history = useHistory();\n  const mobileSidebarToggle = (e) => {\n    e.preventDefault();\n    document.documentElement.classList.toggle(\"nav-open\");\n    var node = document.createElement(\"div\");\n    node.id = \"bodyClick\";\n    node.onclick = function () {\n      this.parentElement.removeChild(this);\n      document.documentElement.classList.toggle(\"nav-open\");\n    };\n    document.body.appendChild(node);\n  };\n\n  const roleSwitch = (role) => {\n    const value = userType || medFlowInLocalStorage.get() || \"\";\n    let title = medFlowPortalTitle.get() || \"\";\n\n    if (title === \"undefined\") {\n      title = \"\";\n    }\n    switch (value) {\n      case \"A\":\n        return \"Admin\";\n      case \"LT\":\n      case \"L\":\n        if (userLabName) return `${userLabName}`;\n        if (title) return title;\n        return \"Lab\";\n      case \"E\":\n        if (userLabName) return `${userLabName}`;\n        if (userSiteName) return `${userSiteName}`;\n        if (title) return title;\n        return \"Health & Safety\";\n      case \"C\":\n        return \"Clients\";\n      default:\n        return \"Lab\";\n    }\n  };\n\n  const getBrandText = (routes) => {\n    console.log(\"getBrandText \", props);\n    for (let i = 0; i < routes.length; i++) {\n      if (location.pathname.indexOf(routes[i].layout + routes[i].path) !== -1) {\n        return routes[i].name;\n      }\n    }\n    return \"\";\n  };\n\n  const progressStatus = useMemo(() => {\n    if (!notificationList || notificationList.length === 0) return;\n    const notify = notificationList[0];\n    const { Items, filesStatus, status, title , uploadCallType} = notify;\n\n    const titleLabel = uploadCallType === UPLOAD_CSV_FILE.employee ? \"Patient import in progress..\" : \"Order creation in progress..\" ;\n\n    if ((!Items || Items.length === 0) && filesStatus && filesStatus.length > 0) {\n      const totalRecords = filesStatus.length;\n      let processCount = filesStatus.filter((f) => f.status && f.status.includes(\"Parsed\")).length;\n\n      return { totalRecords, processCount, request: \"file\", status, titleLabel, uploadCallType };\n    }\n    if (Items && Items.length > 0) {\n      const totalRecords = Items.length;\n      const processCount = Items.filter((f) => f.status && f.status !== NOTIFICATION_STATUS.pending).length;\n      return { totalRecords, processCount, request: \"record\", titleLabel, uploadCallType };\n    }\n  }, [notificationList]);\n  const getHrefRouteName = (currentLocation) => {\n    if (currentLocation.includes(\"/site/\") && userType === \"E\") {\n      history.push(\"/site/tests/\" + siteID);\n    } else if (currentLocation.includes(\"/lab/\") && userType === \"L\") {\n      history.push(\"/lab/tests/\" + labID);\n    } else if (currentLocation.includes(\"/admin\")) {\n      history.push(\"/admin\");\n    }\n  };\n\n  return (\n    <Navbar bg=\"light\" expand=\"lg\">\n      <Container fluid>\n        <div style={{ display: \"flex\", width: \"100%\", justifyContent: \"space-between\", alignItems: \"center\" }}>\n          <div className=\"d-flex justify-content-center align-items-center ml-0 ml-sm-2 ml-md-2 ml-lg-0 ml-xl-0\">\n            <Button\n              variant=\"dark\"\n              className=\"d-lg-none btn-fill d-flex justify-content-center align-items-center rounded-circle p-2 mx-0\"\n              onClick={mobileSidebarToggle}\n            >\n              <i className=\"fas fa-ellipsis-v\"></i>\n            </Button>\n            <Navbar.Brand\n              href=\"\"\n              onClick={(e) => {\n                e.preventDefault();\n                getHrefRouteName(window.location.pathname);\n              }}\n              className=\"mr-2\"\n              style={{ fontSize: \"20px\", fontWeight: \"bold\" }}\n            >\n              <span>{roleSwitch(props.role)} Portal</span>\n            </Navbar.Brand>\n            <Navbar.Brand\n              href=\"\"\n              onClick={async (e) => {\n                e.preventDefault();\n                await DataStore.clear();\n                await Auth.signOut();\n                medFlowInLocalStorage.clear();\n                history.push(\"/login\");\n              }}\n              className=\"ml-4\"\n              style={{ marginLeft: \"20px\" }}\n            >\n              {/* {getBrandText(props.routes)} */}\n              <span\n                className=\"no-icon\"\n                style={{ textDecoration: \"underline\", cursor: \"pointer\" }}\n                onMouseOver={(e) => (e.target.style.textDecoration = \"none\")}\n                onMouseLeave={(e) => (e.target.style.textDecoration = \"underline\")}\n              >\n                Log out\n              </span>\n            </Navbar.Brand>\n            {/* <Navbar.Brand\n            href=\"#home\"\n            onClick={(e) => e.preventDefault()}\n            className=\"mr-2\"\n            style={{ fontSize: '30px'}}\n          >{getBrandText(props.routes) === \"Completed Tests\" && `(${props.completedTests.length})`}</Navbar.Brand>\n          <Navbar.Brand\n            href=\"#home\"\n            onClick={(e) => e.preventDefault()}\n            className=\"mr-2\"\n            style={{ fontSize: '30px'}}\n          >{getBrandText(props.routes) === \"Pending Release\" && `(${props.pendingTests.length})`}</Navbar.Brand> */}\n          </div>\n          <div>\n            <Navbar.Brand className=\"mr-2\" style={{ fontSize: \"16px\", marginRight: \"20px\" }}>\n              <span>Logged In:</span>\n              <span style={{ fontWeight: \"bold\", marginLeft: \"5px\" }}>{user?.name || \"\"}</span>\n            </Navbar.Brand>\n          </div>\n        </div>\n\n        <Navbar.Toggle aria-controls=\"basic-navbar-nav\" className=\"mr-2\">\n          <span className=\"navbar-toggler-bar burger-lines\"></span>\n          <span className=\"navbar-toggler-bar burger-lines\"></span>\n          <span className=\"navbar-toggler-bar burger-lines\"></span>\n        </Navbar.Toggle>\n        <Navbar.Collapse id=\"basic-navbar-nav\" className=\"justify-content-end\">\n          <Nav className=\"nav mr-auto\" navbar>\n            {progressStatus && (\n              <div\n                className=\"text-right modalButtons inProgressMsg mx-3 \"\n                onClick={() => handleSelect(notificationList[0])}\n              >\n                <div\n                  className=\"star-icon-wrapper cursor-pointer notifyCancel\"\n                  onClick={(e) => handleCancelRequests(notificationList[0], e)}\n                >\n                  <img src={timesIcon} alt=\"\" />\n                </div>\n                {progressStatus.request === \"file\" && (\n                  <div className=\"cursor-pointer\" onClick={(e) => handleSelect(notificationList[0], e)}>\n                    {progressStatus.status === \"Fail\" ? (\n                      <div className=\"text-center\">No Orders Processed</div>\n                    ) : (\n                      <div className=\"text-center\">{`File Parsing is in-progress...`}</div>\n                    )}\n                  </div>\n                )}\n                {progressStatus.request === \"record\" && (\n                  <>\n                    {progressStatus.processCount === progressStatus.totalRecords ? (\n                      <div className=\"d-flex justify-content-between align-items-center\">\n                        <div className=\"cursor-pointer\">Completed</div>\n                        {progressStatus.uploadCallType !==  UPLOAD_CSV_FILE.employee && (\n                          <div className=\"cursor-pointer\" onClick={(e) => handleSelect(notificationList[0], e)}>\n                            Files Status\n                          </div>\n                        )}\n                      </div>\n                    ) : (\n                      <div className=\"text-center\">{progressStatus.titleLabel}</div>\n                    )}\n                  </>\n                )}\n\n                {progressStatus && progressStatus.status !== \"Fail\" && (\n                  <Progress item={progressStatus.processCount} total={progressStatus.totalRecords} />\n                )}\n              </div>\n            )}\n            {downloadIndicator.isShow && (\n              <div className=\"text-right modalButtons inProgressMsg mx-3\">\n                <div className=\"cursor-pointer\">\n                  <div className=\"text-center\">{`File Downloading...`}</div>\n                </div>\n                <Progress item={downloadIndicator?.processCount} total={downloadIndicator?.totalRecords} />\n              </div>\n            )}\n\n            {orderFiles?.uploadStatus?.length > 0 && (\n              <div className=\"text-center modalButtons inProgressMsg mx-3 \">\n                <div\n                  className=\"star-icon-wrapper cursor-pointer notifyCancel\"\n                  //  onClick={() => onCancelRequest()}\n                  onClick={() => handleCancelRequests()}\n                >\n                  <img src={timesIcon} alt=\"\" />\n                </div>\n                <div>{`Uploading Files...`}</div>\n                <Progress\n                  item={orderFiles.uploadStatus.filter((f) => f.status === \"done\").length}\n                  total={orderFiles.uploadStatus.length}\n                />\n              </div>\n            )}\n\n            {/* <Nav.Item>\n              <Nav.Link\n                data-toggle=\"dropdown\"\n                href=\"#pablo\"\n                onClick={(e) => e.preventDefault()}\n                className=\"m-0\"\n              >\n                <i className=\"nc-icon nc-palette\"></i>\n                <span className=\"d-lg-none ml-1\">Dashboard</span>\n              </Nav.Link>\n            </Nav.Item> */}\n            {/* <Dropdown as={Nav.Item}>\n              <Dropdown.Toggle\n                as={Nav.Link}\n                data-toggle=\"dropdown\"\n                id=\"dropdown-67443507\"\n                variant=\"default\"\n                className=\"m-0\"\n              >\n                <i className=\"nc-icon nc-planet\"></i>\n                <span className=\"notification\">5</span>\n                <span className=\"d-lg-none ml-1\">Notification</span>\n              </Dropdown.Toggle>\n              <Dropdown.Menu>\n                <Dropdown.Item\n                  href=\"#pablo\"\n                  onClick={(e) => e.preventDefault()}\n                >\n                  Notification 1\n                </Dropdown.Item>\n                <Dropdown.Item\n                  href=\"#pablo\"\n                  onClick={(e) => e.preventDefault()}\n                >\n                  Notification 2\n                </Dropdown.Item>\n                <Dropdown.Item\n                  href=\"#pablo\"\n                  onClick={(e) => e.preventDefault()}\n                >\n                  Notification 3\n                </Dropdown.Item>\n                <Dropdown.Item\n                  href=\"#pablo\"\n                  onClick={(e) => e.preventDefault()}\n                >\n                  Notification 4\n                </Dropdown.Item>\n                <Dropdown.Item\n                  href=\"#pablo\"\n                  onClick={(e) => e.preventDefault()}\n                >\n                  Another notification\n                </Dropdown.Item>\n              </Dropdown.Menu>\n            </Dropdown> */}\n            {/* <Nav.Item>\n              <Nav.Link\n                className=\"m-0\"\n                href=\"#pablo\"\n                onClick={(e) => e.preventDefault()}\n              >\n                <i className=\"nc-icon nc-zoom-split\"></i>\n                <span className=\"d-lg-block\"> Search</span>\n              </Nav.Link>\n            </Nav.Item> */}\n          </Nav>\n          <Nav className=\"ml-auto\" navbar>\n            {/* <Nav.Item>\n              <Nav.Link\n                className=\"m-0\"\n                href=\"#pablo\"\n                onClick={(e) => e.preventDefault()}\n              >\n                <span className=\"no-icon\">Account</span>\n              </Nav.Link>\n            </Nav.Item> */}\n            {/* <Dropdown as={Nav.Item}>\n              <Dropdown.Toggle\n                aria-expanded={false}\n                aria-haspopup={true}\n                as={Nav.Link}\n                data-toggle=\"dropdown\"\n                id=\"navbarDropdownMenuLink\"\n                variant=\"default\"\n                className=\"m-0\"\n              >\n                <span className=\"no-icon\">Dropdown</span>\n              </Dropdown.Toggle>\n              <Dropdown.Menu aria-labelledby=\"navbarDropdownMenuLink\">\n                <Dropdown.Item\n                  href=\"#pablo\"\n                  onClick={(e) => e.preventDefault()}\n                >\n                  Action\n                </Dropdown.Item>\n                <Dropdown.Item\n                  href=\"#pablo\"\n                  onClick={(e) => e.preventDefault()}\n                >\n                  Another action\n                </Dropdown.Item>\n                <Dropdown.Item\n                  href=\"#pablo\"\n                  onClick={(e) => e.preventDefault()}\n                >\n                  Something\n                </Dropdown.Item>\n                <Dropdown.Item\n                  href=\"#pablo\"\n                  onClick={(e) => e.preventDefault()}\n                >\n                  Something else here\n                </Dropdown.Item>\n                <div className=\"divider\"></div>\n                <Dropdown.Item\n                  href=\"#pablo\"\n                  onClick={(e) => e.preventDefault()}\n                >\n                  Separated link\n                </Dropdown.Item>\n              </Dropdown.Menu>\n            </Dropdown> */}\n          </Nav>\n        </Navbar.Collapse>\n      </Container>\n    </Navbar>\n  );\n}\n\nexport default Header;\n","import api from \"api\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport RadioButton from \"components/RadioButton/RadioButton\";\nimport Loader from \"components/Loader/Loader\";\nimport { NOTES_MAX_CHARACTER_LENGTH } from \"constant\";\nimport moment from \"moment\";\nimport { useState } from \"react\";\nimport { Button, Card, Modal } from \"react-bootstrap\";\nimport PreviousNotes from \"./PreviousNotes\";\n\nconst TestNoteModal = (props) => {\n  const { data, handleClose, user } = props;\n\n  const [notes, setNotes] = useState(data.note || data.notes || data?.employee_demographics?.comment);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n\n  const onHandleSave = async () => {\n    setLoading(true);\n    const obj = {\n      id: data.id,\n      note: notes,\n      updatedBy: user.sub,\n      updatedByName: user.name,\n    };\n\n    try {\n      setLoading(true);\n\n      if (data.objectType === \"test\") {\n        const { employee_demographics } = data;\n        const demos =\n          typeof employee_demographics === \"string\" ? JSON.parse(employee_demographics) : employee_demographics;\n        demos.comment = notes;\n        const objToUpdate = { employee_demographics: JSON.stringify(demos) };\n        await api.updateTest(obj.id, objToUpdate);\n      }\n      if (data.handleUpdateNoteReocrd) {\n        data.handleUpdateNoteReocrd(obj);\n      }\n      setLoading(false);\n      handleClose();\n    } catch (err) {\n      console.log(\"Error:-\", err);\n      setLoading(false);\n    }\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        backdrop=\"static\"\n        className=\"second-modal\"\n        onHide={handleClose}\n        animation={true}\n        size={\"lg\"}\n        scrollable\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\">Notes {data && `for ${data.title}`}</Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <div className=\"row textAreaMessageInput\">\n            <div className=\"col-12 mb-3\">\n              <textarea\n                placeholder={\"Note!\"}\n                className=\"MessageInput\"\n                value={notes}\n                onChange={(e) => setNotes(e.target.value)}\n                maxLength={NOTES_MAX_CHARACTER_LENGTH}\n              />\n            </div>\n          </div>\n          <PreviousNotes id={data.id} user={user} />\n          <div style={{ minHeight: \"3vh\" }}>\n            {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n          </div>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <div className=\"d-flex\">\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"secondary\"\n              className=\"modalButtons headerButton btn-fill\"\n              onClick={onHandleSave}\n            >\n              Save\n            </Button>\n          </div>\n          {loading && <Loader />}\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default TestNoteModal;\n","export const generalSelector = (state) => state.general;\nexport const loadingSelector = (state) => state.general.loader;\nexport const messageSelector = (state) => state.general.message;\nexport const confirmationModalSelector = (state) => state.general.confirmationModal;\nexport const testToPrintView = (state) => state.general.testPrint;\nexport const selectedDeviceSelector = (state) => state.general.selectedDevice;\nexport const archivedListSelector = (state) => state.general.archivedData;\nexport const questionTableModal = (state) => state.general.questionTableModal;\nexport const showQuestionaireTableSelector = (state) => state.general.showQuestionaireTable\nexport const answerAdditionalQuestionSelector = (state) => state.general.answerAdditionalQuestion;\n\n\n","import React, { memo, useRef } from \"react\";\n\nconst MainTableInputBox = memo(({ value, placeholder, type, disabled = false , handleBlur}) => {\n  const inputRef = useRef(null);\n\n//   const handleBlur = (event) => {\n//     onUpdateResultMark(event.target.value, row.uniqueId);\n//   };\n\n  return (\n    <td>\n      <input\n        className=\"w-100 modalInput\"\n        ref={inputRef}\n        defaultValue={value || \"\"}\n        onBlur={handleBlur}\n        onFocus={() => inputRef.current && inputRef.current.select()}\n        disabled={disabled}\n        type={type || \"text\"}\n        placeholder={placeholder || \"\"}\n      />\n    </td>\n  );\n});\n\nexport default MainTableInputBox;\n","export default __webpack_public_path__ + \"static/media/info-icon.c0d3b891.svg\";","import React, { useState, useMemo } from \"react\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { ReactSelectCustomContainer } from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\nimport FileInput from \"components/Input/FileInput\";\nimport \"../../../src/tableStyling.css\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { getContentType } from \"utils\";\nimport DocumentPreviewModal from \"components/Modal/DocumentPreviewModal\";\nimport Loader from \"components/Loader/Loader\";\nimport { Storage } from \"aws-amplify\";\nimport api from \"api\";\nimport { userCompanyID } from \"utils\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport { useSelector } from \"react-redux\";\nimport { CONFIG } from \"constant\";\nimport { BUCKET_EXTERNAL_IMAGES } from \"constant\";\nimport { generalSettings } from \"store/features/testDictionary/testDictionarySelectors\";\n\n\nconst TestConfirmationModal = (props) => {\n  const {\n    title,\n    handleConfirm,\n    options,\n    handleOptions,\n    selectedRow,\n    handleRejectReason,\n    handleClose,\n    employeeID,\n    defaultConfig,\n    orderId,\n  } = props;\n  const [file, setFile] = useState(\"\");\n  const [selectedFileName, setSelectedFileName] = useState(\"\");\n  const [error, setError] = useState(\"\");\n  const [previewFileData, setPreviewFileData] = useState();\n  const [loading, setLoading] = useState(false);\n  const loginUser = useSelector(selectLoginUser);\n\n\n  const generalSettingsData = useSelector(generalSettings);\n\n  const CANCEL_REASON_OPTIONS = useMemo(() => {\n    return generalSettingsData.filter((item) => item.settingType === \"cancelled\");\n  }, [generalSettingsData]);\n\n  const handleViewDoc = async () => {\n    try {\n      if (!selectedRow?.fileName) return;\n      setLoading(true);\n      // Determine the content type based on the file extension\n      const fileExtension = selectedRow?.fileName.split(\".\").pop().toLowerCase();\n\n      const contentType = getContentType(fileExtension);\n\n      // Fetch the file from S3 with inline content disposition\n      const result = await Storage.get(selectedRow.fileName, {\n        bucket: BUCKET_EXTERNAL_IMAGES,\n\n        download: false,\n        contentDisposition: \"inline\",\n        contentType: contentType,\n      });\n\n      setPreviewFileData({ fileType: fileExtension === \"pdf\" ? \"pdf\" : \"image\", fileUrl: result });\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Error\", err);\n    }\n  };\n\n  const handleUploadFile = async () => {\n    if (isDisableControls()) {\n      handleClose();\n      return;\n    }\n\n    let fileName = \"\";\n    let fileType = null;\n    if (file) {\n      setLoading(true);\n\n      try {\n        fileName = await api.saveDocumentFile(employeeID, selectedFileName, file);\n\n        //   const docObj = {\n        //     isNew: true,\n        //     docType: \"Rejected Sample Image\",\n        //     docLabel: \"\",\n        //     notes: selectedRow.rejectedReason,\n        //     file: {},\n        //     fileType: file.type,\n        //     selectedFileName: file.name,\n        //     fileSize: file.size,\n        //     employeeID: employeeID,\n        //     fileName: fileName,\n        //     updatedBy: loginUser.id,\n        //     updatedByName: `${loginUser.firstName}  ${loginUser.lastName}`,\n        //   };\n\n        // const response = await api.newDocumentCreateAPI([docObj]);\n\n        setLoading(false);\n        fileType = file.type;\n      } catch (error) {\n        console.error(\"Error uploading file:\", error);\n        setLoading(false);\n        return;\n      }\n    }\n\n    if (!selectedRow.rejectedReason || selectedRow.rejectedReason === \"\") {\n      handleRejectReason({\n        preDefineReason: null,\n      });\n    }\n\n    handleConfirm({ isConfirm: true, fileName, fileType});\n  };\n\n  const isDisableControls = () => !!selectedRow.scanByLabUserID\n\n  const renderUi = () => {\n    if (selectedRow?.testStatus === \"sendOut\") {\n      return (\n        <div className=\"col-sm-12 testAdmin createClientsWrapper\">\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Select Reference Lab: </label>\n            <Select\n              options={options}\n              blurInputOnSelect={true}\n              isDisabled={isDisableControls()}\n              menuPlacement=\"auto\"\n              className=\"w-100 siteSelector\"\n              placeholder=\"Select Reference Lab\"\n              value={{\n                label: selectedRow?.sendToName,\n                value: selectedRow?.sendToID,\n              }}\n              onChange={(e) => handleOptions(e)}\n              components={{ ValueContainer: ReactSelectCustomContainer }}\n            />\n          </div>\n        </div>\n      );\n    }\n    return (\n      <div>\n        <div className=\"form-group-wrapper\">\n          <label className=\"modalLineHeaders\">Rejected Reason: </label>\n          <Select\n            options={CANCEL_REASON_OPTIONS}\n            blurInputOnSelect={true}\n            menuPlacement=\"auto\"\n            className=\"w-100 siteSelector site-select-test\"\n            placeholder=\"Select\"\n            value={\n              selectedRow?.preDefineReason\n                ? CANCEL_REASON_OPTIONS.find((c) => selectedRow?.preDefineReason?.includes(c.value))\n                : null\n            }\n            onChange={(e) => {\n              handleRejectReason({\n                preDefineReason: `${e.label}: ${e.title}`,\n                sendToName: \"\",\n                sendToID: \"\",\n              });\n            }}\n            isDisabled={isDisableControls()}\n            components={{ ValueContainer: ReactSelectCustomContainer }}\n          />\n        </div>\n        <div className=\"col-sm-12 testAdmin createClientsWrapper\">\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Rejected Note: </label>\n            <div className=\"mb-1\">\n              <textarea\n                className=\"form-control\"\n                value={selectedRow?.rejectedReason}\n                style={{ minHeight: \"60px\" }} // Set the minimum height\n                disabled={ isDisableControls()}\n                onChange={(e) => {\n                  handleRejectReason({\n                    rejectedReason: e.target.value,\n                    sendToName: \"\",\n                    sendToID: \"\",\n                  });\n                }}\n              ></textarea>\n            </div>\n          </div>\n        </div>\n        {selectedRow?.fileName ? (\n          <Button onClick={handleViewDoc}>Preview Image</Button>\n        ) : selectedRow?.collectedDate ? (\n          \"\"\n        ) : (\n          <div className=\"col-sm-12 testAdmin createClientsWrapper\">\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Supported Image: </label>\n              <FileInput\n                setFile={setFile}\n                setSelectedFileName={setSelectedFileName}\n                selectedFileName={selectedFileName}\n              />\n            </div>\n          </div>\n        )}\n      </div>\n    );\n  };\n\n  return (\n    <Modal\n      backdrop=\"static\"\n      show\n      animation={true}\n      onHide={() => {\n        handleConfirm({ isConfirm: false, fileName: \"\" });\n      }}\n      centered\n      size={\"md\"}\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {title}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body className=\" desktop-noScroll\">\n        {\" \"}\n        {loading && <Loader />}\n        {renderUi()}\n      </Modal.Body>\n      <div className=\"px-4\" style={{ height: \"3vh\" }}>\n        {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n      </div>\n      <Modal.Footer className=\"d-flex justify-content-end\">\n        <Button\n          className=\"modalButtons \"\n          variant=\"primary\"\n          onClick={() => {\n            handleUploadFile();\n          }}\n        >\n          {isDisableControls() ? \"Close\" : \"Confirm\"}\n        </Button>\n      </Modal.Footer>\n      <DocumentPreviewModal\n        isModalOpen={previewFileData?.fileType}\n        setIsModalOpen={() => {\n          setPreviewFileData();\n        }}\n        cssClass=\"preview-modal\"\n        fileUrl={previewFileData?.fileUrl}\n        fileType={previewFileData?.fileType}\n      />\n    </Modal>\n  );\n};\n\nexport default TestConfirmationModal;\n","import React, { useEffect, useState, useContext, useMemo } from \"react\";\nimport { Button, Modal, Card, Row, Col } from \"react-bootstrap\";\nimport MainTable from \"components/Table/MainTable\";\n\nimport API from \"api\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { AppContext } from \"context/app-context\";\nimport { SYSTEM_TIME_ZONE, formattedString } from \"utils\";\nimport Icon from \"components/Icon\";\nimport Status from \"components/Status/Status\";\nimport chart_Icon from \"../../../src/assets/img/chart-simple-solid.png\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport Loader from \"components/Loader/Loader\";\nimport api from \"api\";\nimport moment from \"moment\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport \"../../../src/tableStyling.css\";\nimport { selectedDeviceSelector } from \"store/features/general/generalSelectors\";\nimport Select from \"react-select\";\nimport {\n  getTestSource,\n  formatDateMDY,\n  getTestDates,\n  getUUID,\n  formatOrders,\n  getClientSpecificString,\n  hasRejectedReasonChanged,\n  isLocalhost,\n  filterSourcesBySwabType,\n} from \"utils\";\nimport { ReactSelectCustomContainer } from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\nimport Filter from \"components/Filter\";\nimport { showResultPdf } from \"store/features/resultPdf/reslutPdfSlice\";\n\nimport {\n  TEST_DONE_MODAL_COLUMN_DETAILS,\n  TEST_COLUMNS_FOR_PROVIDER,\n  TEST_HISTORY_MODAL_COLUMN,\n} from \"constants/personalization\";\n\nimport MainTableInputBox from \"components/MainTableInputBox/MainTableInputBox\";\n\nimport { showResultReqForm } from \"store/features/resultPdf/reslutPdfSlice\";\n\nimport { fetchAllLocations } from \"store/features/locations/locationsSlice\";\nimport { refLabsSelectors } from \"store/features/locations/locationsSelectors\";\nimport infoIcon from \"assets/img/info-icon.svg\";\nimport TestConfirmationModal from \"./TestConfirmationModal\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport { fetchGeneralSettings } from \"store/features/testDictionary/testDictionarySlice\";\n\nimport {\n  REQ_TEMPLATES,\n  TESTS_DONE_STATUS,\n  CONFIG,\n  LAB_ID,\n  GET_CUST_COLOR,\n  PERSONALISATION_KEY,\n  MESSAGE_MODES,\n  TABLE_QUICK_TOOLS,\n} from \"constant\";\n\nconst TestDoneModal = (props) => {\n  const { patient, order, showResult, handleClose, uiType } = props;\n\n  const appContext = useContext(AppContext);\n\n  const [tests, setTests] = useState([]);\n  const [loading, setLoading] = useState(false);\n\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [allSelected, setAllSelected] = useState(false);\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [personalize, setPersonalize] = useState([]);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const selectedDevice = useSelector(selectedDeviceSelector);\n\n  const labLocations = useSelector(refLabsSelectors);\n  const [sendOutOptions, setSendOutOptions] = useState([]);\n  const [selectedRow, setSelectedRow] = useState();\n  const permission = useSelector(userGivenPermission);\n\n  const [confirmationTests, setConfirmationTests] = useState();\n\n  // const sendOutOptions = [{ label: \"Magic Owl\", value: \"850180f3-9cb3-4752-be73-9bc7af1fbb14\" }];\n  const dispatch = useDispatch();\n\n  const getLabClients = async () => {\n    try {\n      await dispatch(fetchAllLocations({ siteType: \"lab\" }));\n    } catch (err) {\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  useEffect(() => {\n    const labelArray = [];\n    labLocations?.map((item) => {\n      labelArray.push({ label: item.name, value: item.id });\n    });\n    setSendOutOptions(labelArray);\n  }, [labLocations]);\n\n  useEffect(() => {\n    loadTestData();\n    getLabClients();\n    orderStatusAcknowledged();\n    if (appContext?.user?.isSite()) {\n      setPersonalize(TEST_COLUMNS_FOR_PROVIDER);\n    } else if (uiType && uiType === \"testHistory\") {\n      setPersonalize(TEST_HISTORY_MODAL_COLUMN);\n    } else {\n      setPersonalize(TEST_DONE_MODAL_COLUMN_DETAILS);\n    }\n    dispatch(fetchGeneralSettings());\n  }, []);\n\n  const getStatus = (testData) => {\n    if (testData.testStatus) return testData.testStatus;\n    if (testData?.sendToID || (testData?.setting?.referenceLab && !testData?.collectedDate)) return \"sendOut\";\n    return \"Pending\";\n  };\n\n  // Get Printer\n\n  const loadTestData = async () => {\n    const isProviderLogin = appContext?.user?.isSite();\n    if (patient) {\n      const tests = await API.getAdminTestList(patient.mdID);\n      setTests(\n        tests\n          .filter((t) => {\n            if (t._deleted) return false;\n            if (CONFIG.siteID) t.site !== CONFIG.siteID;\n            return true;\n          })\n          .map((item) => {\n            const result = isProviderLogin && item.releaseStatus !== \"Confirmed\" ? \"\" : item.result;\n\n            return {\n              ...item,\n              result,\n              testStatus: item?.status?.toLowerCase() === \"pending\" ? \"Accepted\" : item.status,\n              collectedDate: item.createdAt,\n              testDate: item?.employee_demographics?.orderDate || item?.order?.orderDate || item.createdAt,\n              comment: item?.employee_demographics?.comment,\n            };\n          })\n      );\n    } else if (order) {\n      const testsToDo = order.testsToDo || {};\n      const test = testsToDo.test || [];\n      let testsDone = [];\n      const ids = test.filter((t) => t.testID).map((t) => t.testID);\n      const isSiteUser = appContext?.user?.isSite();\n\n      if (ids.length > 0) testsDone = await API.getMultipleTests({ ids });\n\n      const testWithDate = test.map((t) => {\n        const testDoneObj = testsDone.find((obj) => obj?.id === t?.testID);\n        const dateOfBirth = order?.dob || patient?.dob;\n        const orderDate = order.createdAt;\n\n        const isCombinedTest =\n          test.length > 1 && test.some((item) => item?.setting?.reqFormTemplate === REQ_TEMPLATES.ALTA_TOX);\n\n        // createdAt\n        if (testDoneObj) {\n          const result = isProviderLogin && testDoneObj.releaseStatus !== \"Confirmed\" ? \"\" : testDoneObj.result;\n          let baseTestStatus =\n            t?.testStatus || (testDoneObj?.status?.toLowerCase() === \"pending\" ? \"Accepted\" : testDoneObj.status);\n          if (\n            !(t?.testStatus?.includes(\"Cancel\") || t?.testStatus?.includes(\"Rejected\")) &&\n            (baseTestStatus === \"sendOut\" || testDoneObj.sendToID)\n          ) {\n            baseTestStatus = testDoneObj.sendToID ? \"sendOut\" : \"Accepted\";\n          }\n\n          const scanByLabUserID = isSiteUser ? getUUID() : testDoneObj.scanByLabUserID;\n\n          return {\n            ...testDoneObj,\n            scanByLabUserID,\n            result,\n            testDate: order.orderDate,\n            collectedDate: testDoneObj.createdAt,\n            testStatus: baseTestStatus,\n            baseTestStatus,\n            testTypeID: testDoneObj?.employee_demographics?.testTypeID || \"\",\n            dob: dateOfBirth,\n            orderDate,\n            preDefineReason: testDoneObj.cancelReason,\n            rejectedReason: t.rejectedReason || testDoneObj.note || \"\",\n            isResultEmailed: order.isResultEmailed,\n            testDoneModalCall: true,\n            fileName: testDoneObj.externalTestFile || null,\n            isCombinedTest,\n          };\n        }\n\n        return {\n          ...t,\n          testStatus: getStatus(t),\n          baseTestStatus: t.testStatus === \"Rejected\" ? \"Rejected\" : \"Pending\",\n          collectedDate: \"\",\n          test_type: t.label,\n          barcode: \"\",\n          resultColor: t.prevTestID ? \"red\" : \"green\",\n          sequenceNo: t.prevTestID || null,\n          testDate: order.orderDate,\n          testTypeID: t.id,\n          dob: dateOfBirth,\n          orderDate,\n          orderNo: order.orderNo,\n          labID: order.labID,\n          selectedSource: t?.sources?.slice(0, 1),\n          sendToID: t?.sendToID || t?.setting?.referenceLabID,\n          sendToName: t?.sendToName || t?.setting?.referenceLab,\n          isCombinedTest,\n        };\n      });\n\n      if (ids.length === 0) {\n        setAllSelected(true);\n        setCheckboxes(testWithDate?.map((t) => t.id));\n      } else {\n        const pendingtestsIds = test\n          ?.filter((item) => !item.testDoneDate && item.testStatus !== \"Rejected\" && !!item.scanByLabUserID)\n          .map((item) => item.id);\n\n        if (pendingtestsIds?.length > 0) {\n          setCheckboxes(pendingtestsIds);\n        }\n      }\n\n      // Check if any tests are not rejected\n      if (testWithDate && testWithDate?.length > 0) {\n        setTests(testWithDate || []);\n      }\n    }\n  };\n\n  const orderStatusAcknowledged = async () => {\n    try {\n      if (!order) return;\n\n      const isCancelStatus = [\"Cancel\", \"Cancelled\", \"Rejected\"].includes(order.providerStatus);\n      const isSiteUser = appContext?.user?.isSite();\n      const isProviderCancelled = order.cancelledBy === \"provider\";\n\n      const ackData = {\n        orderID: order.id,\n        status: order.providerStatus,\n        ...(order.status === \"Cancel\" && !isSiteUser && isProviderCancelled && { type: \"L\" }),\n      };\n\n      if (\n        (isCancelStatus && isSiteUser && !isProviderCancelled && !order.isAcknowledged) ||\n        (ackData.type && !order.isAcknowledged)\n      ) {\n        await API.acknwoledgedOrder(ackData);\n      }\n    } catch (ex) {\n      console.error(\"Error in orderStatusAcknowledged:\", ex);\n    }\n  };\n\n  const getNoteName = () => {\n    if (patient) return patient?.firstName;\n    if (order) return `${order?.firstName} ${order?.lastName}`;\n    return \"\";\n  };\n  const defaultConfig = useMemo(() => {\n    return getClientSpecificString();\n  }, []);\n\n  const handleCellClick = async (item, row, event) => {\n    if (!row) return;\n    switch (item) {\n      case \"result\":\n        if (row.result || row.resultDetails) {\n          dispatch(showResultPdf(row));\n        }\n        break;\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n      case TABLE_QUICK_TOOLS.notes:\n        if (row?.employee_demographics) {\n          appContext.openNoteModal({\n            ...row,\n            objectType: \"test\",\n            title: getNoteName(),\n          });\n        }\n        break;\n    }\n  };\n\n  const showReqForm = async (row) => {\n    if (row.barcode || row.orderNo) {\n      if (order) {\n        const testName = (row?.name ?? row?.test_type)?.replace(/ /g, \"_\");\n\n        dispatch(\n          showResultReqForm({\n            ...order,\n            isCombinedTest: row?.isCombinedTest || false,\n            testTypeID: row.testTypeID,\n            testName,\n          })\n        );\n      } else {\n        // the order is not loaded and calling from test\n        dispatch(showResultReqForm({ ...row, orderNo: row.employee_demographics.orderNo }));\n      }\n    }\n  };\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? tests?.map((t) => t.id) : []);\n\n  const handleDifferentStatus = (e, row) => {\n    const isAccepted = e.value === \"Accepted\";\n    const isSendOut = e.value === \"sendOut\";\n    const isRejected = e.value === \"Rejected\";\n\n    // Determine updated fields based on the new status\n\n    const isNoSendOut = isAccepted || isRejected;\n    const isNoReason = isAccepted || isSendOut;\n\n    const updatedItem = {\n      ...row,\n      testStatus: e.value,\n      sendToID: isNoSendOut ? null : row.sendToID,\n      sendToName: isNoSendOut ? null : row.sendToName,\n      rejectedReason: isNoReason ? null : row.rejectedReason,\n      fileName: isNoReason ? null : row.fileName,\n    };\n\n    // Update the tests array with the new test status\n    const updatedTests = tests.map((item) => (item.id === row.id ? { ...item, ...updatedItem } : item));\n    setTests(updatedTests);\n    setCheckboxes([...checkboxes, updatedItem.id]);\n    // Set selectedRow for further processing if the status is sendOut or Rejected\n    if (isSendOut || isRejected) {\n      setSelectedRow({\n        ...updatedItem,\n        sendToName: row?.sendToName || row?.setting?.referenceLab,\n        sendToID: row?.sendToID || row?.setting?.referenceLabID,\n      });\n    }\n  };\n\n  const handleCheckboxChange = (e, user) => {\n    const filteredList = checkboxes.filter((c) => c !== user.id);\n    if (e.target.checked) {\n      filteredList.push(user.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const quickTools = [TABLE_QUICK_TOOLS.checkbox, TABLE_QUICK_TOOLS.notes];\n\n  const processRejectedTest = async (params) => {\n    const testToPerformList = tests.filter((t) => checkboxes.includes(t.id));\n\n    const hasRejectedTest = testToPerformList?.some((t) => t.testStatus === \"Rejected\" && !t.collectedDate);\n\n    // if (hasRejectedTest) {\n    //   const prevData = order?.testsToDo?.test;\n    //   if (hasRejectedReasonChanged(prevData, tests)) {\n    //     setLoading(true);\n    //     await GQAPI.updateRejcetedOrder({\n    //       dbOrder: order,\n    //       selectedTestIds: checkboxes,\n    //       user: appContext?.user,\n    //       updatedTestsData: tests,\n    //     });\n    //     setLoading(false);\n    //   }\n    // }\n\n    handlePrintClick(params);\n  };\n\n  const isDisableControls = (item) => !!item.scanByLabUserID;\n\n  const getConfirmation = (params) => {\n    if (order.status === \"Cancel\") return;\n\n    let testToPerformList = [];\n    if (params?.rowData?.length > 0) {\n      testToPerformList.push(params?.rowData);\n    } else {\n      testToPerformList = tests.filter((t) => checkboxes.includes(t.id));\n    }\n\n    const unProcessedtests = testToPerformList?.filter((item) => !isDisableControls(item));\n\n    if (unProcessedtests?.length > 0) {\n      setConfirmationTests({\n        isPrintDisabled: params.isPrintDisabled,\n        lab: unProcessedtests.map((item) => item?.sendToName),\n        rowData: params?.rowData,\n      });\n      return;\n    }\n    handleAllPrintTests(params);\n  };\n\n  const handleAllPrintTests = async (params) => {\n    let testToPerformList = [];\n\n    testToPerformList = tests.filter((t) => checkboxes.includes(t.id));\n\n    if (params?.isPrintDisabled && defaultConfig?.isTestCreationFromEmployee) {\n      const testToReceive = testToPerformList.filter((t) => !t.scanByLabUserID && !t.result);\n\n      if (testToReceive.length > 0) {\n        API.changesTestStatus(testToReceive);\n        dispatch(setMessage(\"Received sucessfully\", MESSAGE_MODES.success));\n      } else if (testToReceive.length === 0) {\n        dispatch(setMessage(\"No Test to Process\", MESSAGE_MODES.error));\n      }\n      handleClose();\n      return;\n    }\n\n    processRejectedTest(params);\n  };\n\n  const handlePrintClick = async (paramsData) => {\n    if (!defaultConfig?.isTestCreationFromEmployee) {\n      const client = appContext.clients.find((f) => f.id === CONFIG.clientID);\n      paramsData = { ...paramsData, labelPrintingQty: client?.setting?.labelPrintingQty || 1 };\n    }\n\n    setLoading(true);\n    let testToPerformList = [];\n    const singleTestPrint = paramsData?.rowData || confirmationTests?.rowData;\n    if (singleTestPrint) {\n      testToPerformList.push(singleTestPrint);\n    } else {\n      // if press ok then consider all tests no filter will apply\n      testToPerformList = tests.filter((t) => checkboxes.includes(t.id));\n    }\n\n    const bracodeList = testToPerformList.filter((t) => t.barcode);\n\n    // if (bracodeList.length > 0 && !paramsData?.isPrintDisabled) {\n    //   bracodeList.forEach((item) =>\n    //     appContext.printBarcode({ ...item, labelPrintingQty: paramsData?.labelPrintingQty || 1 })\n    //   );\n    //   setCheckboxes([]);\n    //   setLoading(false);\n    // }\n\n    if (bracodeList.length > 0 && !paramsData?.isPrintDisabled) {\n      bracodeList.forEach((item) => {\n        const qty = paramsData?.labelPrintingQty || 1;\n        for (let i = 0; i < qty; i++) {\n          appContext.printBarcode(item);\n        }\n      });\n      setCheckboxes([]);\n      setLoading(false);\n    }\n\n    try {\n      const { user = {}, userLabName } = appContext;\n\n      const { eligibilityStatus } = order;\n\n      const testsToPerform = testToPerformList\n        .filter((t) => !t.barcode)\n        .map((t) => {\n          const itemSelectedSources = [...new Set(t.selectedSource.map((src) => src?.label?.trim()))].join(\", \");\n          return {\n            ...t,\n            isSelected: t.barcode ? false : true,\n            selectedSource: itemSelectedSources,\n            sendToID: t?.sendToID,\n            sendToName: t?.sendToName,\n          };\n        });\n\n      const testToReceive = testToPerformList.filter((t) => t.barcode && !t.scanByLabUserID);\n\n      if (testToReceive.length > 0) {\n        await api.receiveTests({ testDate: moment().format(\"YYMMDD\"), tests: testToReceive });\n        setLoading(false);\n      }\n\n      if (testsToPerform.length === 0) {\n        setLoading(false);\n        setCheckboxes([]);\n        if (paramsData?.isModalClose) {\n          handleClose();\n        }\n        return;\n      }\n\n      const { testCreatedAt, testDate } = getTestDates(order);\n\n      let isCreatedByLab = appContext?.user?.isSite() ? \"provider\" : \"lab\";\n\n      const params = {\n        labName: userLabName,\n        order: {\n          ...order,\n          testsToDo: { test: testsToPerform },\n          employee_demographics: {\n            ...order.employee_demographics,\n            dob: moment(order.employee_demographics.dob).format(\"MMDDYYYY\"),\n            worker: \"\",\n            possibleexposure: \"\",\n            confirmedexposure: \"\",\n            relatedsymptoms: \"\",\n            symptoms: \"\",\n            othercomment: \"\",\n            comment: \"\",\n            docUploaded: false,\n            isReview: false,\n            venipuncture: false,\n            distance: 0,\n            isEligible: eligibilityStatus?.status?.toLowerCase() === \"eligibile\",\n            stat: false,\n          },\n          labID: CONFIG.whiteLabelID,\n          labName: userLabName,\n          createSource: \"portal\",\n          timezone: SYSTEM_TIME_ZONE,\n          createdByPhone: user?.phone_number,\n          testCreatedAt,\n          testDate,\n          createdBy: user?.sub,\n          createdByName: user?.name,\n          tester_name: user?.name,\n          isCreatedByLab: isCreatedByLab,\n        },\n      };\n\n      const res = await api.createMulipleTests(params);\n\n      const updatedTests = tests.map((test) => {\n        const processedTest = res[test.label]?.test;\n        if (processedTest) {\n          return {\n            ...test,\n            ...processedTest,\n            dob: order.dob,\n            testStatus: test.testStatus || processedTest.status,\n            testTypeID: test.id,\n            testDate: order.orderDate,\n            collectedDate: processedTest.createdAt,\n            orderDate: order.createdAt,\n          };\n        }\n        return test;\n      });\n\n      // tests for printings\n\n      const testForPrinting = tests\n        .filter((test) => res[test.label]?.test) // Filter out only the tests that have processedTest\n        .map((test) => {\n          const processedTest = res[test.label].test;\n          return {\n            ...test,\n            ...processedTest,\n            dob: order.dob,\n            testStatus: test.testStatus || processedTest.status,\n            testTypeID: test.id,\n            testDate: order.orderDate,\n            collectedDate: processedTest.createdAt,\n            orderDate: order.createdAt,\n          };\n        });\n\n      setTests(updatedTests);\n\n      // // Print barcodes for newly processed tests\n      testForPrinting.forEach((test) => {\n        if (!paramsData?.isPrintDisabled) {\n          if (test.barcode) {\n            const qty = paramsData?.labelPrintingQty || 1;\n            for (let i = 0; i < qty; i++) {\n              appContext.printBarcode(test);\n            }\n          }\n        }\n      });\n\n      setLoading(false);\n      setCheckboxes([]);\n      if (paramsData?.isModalClose) {\n        handleClose();\n      }\n    } catch (error) {\n      console.log(\"Err\", error);\n      setLoading(false);\n      setCheckboxes([]);\n      dispatch(setMessage(\"Fail to print the Label\", MESSAGE_MODES.error));\n    }\n  };\n\n  const downloadRequisitionFile = async () => {\n    try {\n      await appContext.downloadRequisition({ filteredTests: tests, allSelected, checkboxes });\n    } catch (error) {\n      console.log(\"error\", error);\n      appContext.showErrorMessage(\"Fail to downlaod\");\n    }\n  };\n\n  const handleInputComment = (e, row) => {\n    const updatedItem = {\n      ...row,\n      labComment: e.target.value,\n    };\n\n    const updatedTests = tests.map((item) => (item.id === row.id ? { ...item, ...updatedItem } : item));\n\n    setTests(updatedTests);\n  };\n\n  const handleInputRejectReason = (data) => {\n    const updatedItem = {\n      ...selectedRow,\n      ...data,\n    };\n\n    setSelectedRow(updatedItem);\n  };\n\n  const handleSendOut = (e) => {\n    const updatedItem = {\n      ...selectedRow,\n      sendToName: e.label,\n      sendToID: e.value,\n      rejectedReason: \"\",\n    };\n\n    setSelectedRow(updatedItem);\n  };\n\n  const formatTestStatus = (row) => {\n    const statusMap = {\n      Rejected: { label: \"Reject\", value: \"Rejected\" },\n      sendOut: { label: \"Send Out\", value: \"sendOut\" },\n      Cancel: { label: \"Cancel\", value: \"Cancel\" },\n      Cancelled: { label: \"Cancel\", value: \"Cancel\" },\n    };\n    return statusMap[row.testStatus] || { label: \"Accept\", value: \"Accepted\" };\n  };\n\n  const sourceOptions = [\n    { label: \"Accept\", value: \"Accepted\" },\n    { label: \"Reject\", value: \"Rejected\" },\n    { label: \"Send Out\", value: \"sendOut\" },\n  ];\n\n  const customRenderTD = (item, row, index) => {\n    const isTestDone = !!row?.collectedDate;\n    if (item.itemKey === \"req_form\") {\n      return (\n        <td onClick={() => showReqForm(row)} className=\"cursor-pointer text-center\">\n          <img src={chart_Icon} alt=\"chart Icon\" width={20} height={20} />\n        </td>\n      );\n    }\n    if (item.itemKey === \"name\") {\n      return <td className=\"cursor-pointer text-center\">{row?.name || row?.test_type || \"\"}</td>;\n    }\n    if (item.itemKey === \"print\" && permission?.test?.createTest) {\n      return (\n        <td className=\"cursor-pointer text-center\">\n          <i\n            className=\"fas fa-print mx-2 cursor-pointer\"\n            style={{\n              color: !selectedDevice || row.testStatus === \"Rejected\" ? \"grey\" : \"green\",\n              fontSize: \"24px\",\n              opacity: !selectedDevice || row.testStatus === \"Rejected\" ? \"0.5\" : \"\",\n            }}\n            onClick={() => getConfirmation({ rowData: row, isPrintDisabled: false, isModalClose: false })}\n          ></i>\n        </td>\n      );\n    }\n    if (item.itemKey === \"testStatus\") {\n      const orderTestStatus = row[\"baseTestStatus\"] || row[\"testStatus\"];\n      let rowTitle = orderTestStatus;\n      if (orderTestStatus === \"Cancel\" || orderTestStatus === \"Rejected\" || orderTestStatus === \"Cancelled\") {\n        rowTitle = row.rejectedReason || row.preDefineReason;\n      }\n\n      return (\n        <td className=\"text-center\">\n          <div className=\"star-icon-wrapper cursor-pointer text-center\">\n            <Status\n              type=\"circle\"\n              size=\"md\"\n              color={TESTS_DONE_STATUS[orderTestStatus]}\n              title={rowTitle}\n              crossIcon={orderTestStatus}\n            />\n          </div>\n        </td>\n      );\n    }\n    if (item.itemKey === \"pcrStatus\") {\n      return (\n        <td\n          className=\"ellipsis\"\n          style={{ textAlign: \"center\", color: GET_CUST_COLOR[row.pcrStatus] || \"\" }}\n          title={row.pcrStatus || \"-\"}\n          key={`pcrStatus_${row.id}`}\n        >\n          {row.pcrStatus || \"-\"}\n        </td>\n      );\n    }\n    if (item.itemKey === \"comment\") {\n      return (\n        <MainTableInputBox\n          value={row?.employee_demographics?.comment || row?.labComment}\n          handleBlur={(e) => handleInputComment(e, row)}\n          disabled={isTestDone || appContext?.user?.isSite()}\n        />\n      );\n    }\n\n    if (item.itemKey === \"testAction\") {\n      let testDoneSource = [];\n      if (row?.employee_demographics?.swabtype) {\n        testDoneSource = filterSourcesBySwabType(getTestSource(row.sources), row?.employee_demographics?.swabtype);\n      }\n\n      return (\n        <td className=\"text-center\">\n          <div style={{ position: \"relative\" }}>\n            <div className=\"d-flex justify-content-center\">\n              <Select\n                options={\n                  defaultConfig.isTestCreationFromEmployee\n                    ? sourceOptions.filter((opt) => opt.value !== \"sendOut\")\n                    : sourceOptions\n                }\n                blurInputOnSelect={true}\n                styles={{ width: \"200px !important\" }}\n                menuPlacement=\"auto\"\n                className=\"test-donw-select\"\n                placeholder=\"Select Source\"\n                isDisabled={isDisableControls(row) || order?.status === \"Cancel\"}\n                value={formatTestStatus(row)}\n                onChange={(e) => handleDifferentStatus(e, row)}\n                components={{ ValueContainer: ReactSelectCustomContainer }}\n              />\n            </div>\n            {(row?.testStatus === \"sendOut\" || row?.testStatus === \"Rejected\") && (\n              <div className=\"ms-1 d-flex align-items-center\" style={{ position: \"absolute\", top: 13, right: \"-20px\" }}>\n                <img\n                  src={infoIcon}\n                  alt=\"edit icon\"\n                  width=\"20\"\n                  height={20}\n                  onMouseOver={(e) => {\n                    e.target.style.cursor = \"pointer\";\n                  }}\n                  title={row?.rejectedReason || row?.sendToName}\n                  aria-hidden=\"true\"\n                  onClick={(event) => {\n                    const formattedRow = {\n                      ...row,\n                      sendToName: row?.sendToName || row?.setting?.referenceLab,\n                      sendToID: row?.sendToID || row?.setting?.referenceLabID,\n                    };\n                    setSelectedRow(formattedRow);\n                  }}\n                />\n              </div>\n            )}\n          </div>\n        </td>\n      );\n    }\n  };\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n  const formattedDate = moment(order?.dob).format(\"MM/DD/YYYY\");\n\n  const getName = () => {\n    if (patient) {\n      return `Test History for ${patient?.firstName} ${patient?.lastName} DOB: ${formatDateMDY(patient.dob)} ${\n        patient?.schrID ? `MRN: ${patient.schrID}` : \"\"\n      }`;\n    }\n    if (order) {\n      let testBarcode = tests && tests.length > 0 ? tests[0].barcode : \"\";\n      const nameParts = [\n        uiType === \"testManagmentUi\" && !appContext?.user?.isSite() ? \"Test Management\" : \"Test Details\",\n        `${order?.firstName || \"\"} ${order?.lastName || \"\"}`.trim(),\n        `DOB: ${formattedDate}` || \"\",\n      ];\n\n      if (order?.barcode || testBarcode) {\n        nameParts.push(`Acc #${order?.barcode || testBarcode}`);\n      }\n\n      const filteredParts = nameParts.filter((part) => part && part.length > 0);\n\n      return filteredParts.join(\" - \");\n    }\n\n    return \"Test Management\";\n  };\n\n  const handleSendEmail = async () => {\n    const selectedTest = tests.filter((test) => checkboxes.includes(test.id));\n    if (!selectedTest.length) {\n      return;\n    }\n    const params = selectedTest.map((t) => {\n      return {\n        id: t.id,\n        sequenceNo: t.sequenceNo,\n      };\n    });\n    await appContext.sendEmailToCrew(params, \"Email\");\n  };\n\n  const isChangeOccur = (item) => {\n    if (!item?.rejectedReason && !item?.preDefineReason && item?.testStatus === \"Rejected\") {\n      return true;\n    }\n    if (!item?.sendToName && item.testStatus === \"sendOut\") {\n      return true;\n    }\n    return false;\n  };\n\n  const searchTerms = [\"Test Name\", \"Test Status\", \"Order Date\", \"Accession No\"];\n\n  const updateTestsOnConfirm = (params) => {\n    const { selectedRow, fileName, isConfirm } = params;\n    const updatedTests = tests.map((item) => {\n      if (item.id === selectedRow.id) {\n        const isRowChanges = isChangeOccur(isConfirm ? selectedRow : item);\n        const testStatus = isRowChanges ? \"Accepted\" : selectedRow.testStatus;\n        // only on confirm update row otherwise not\n        const updatedTest = isConfirm\n          ? {\n              ...item,\n              ...selectedRow,\n              testStatus,\n              labComment: selectedRow.rejectedReason,\n              fileName: isRowChanges ? \"\" : fileName || selectedRow.fileName,\n            }\n          : {\n              ...item,\n              testStatus,\n            };\n        const fieldsToCompare = [\"rejectedReason\", \"sendToName\"];\n\n        // Compare fileName from params with item.fileName and also reason and send name also comapre and then add checkbox\n        const hasChanges =\n          isConfirm &&\n          (fieldsToCompare.some((field) => selectedRow?.[field] !== item?.[field]) ||\n            (fileName && fileName !== item.fileName)); // Compare fileName from params with item.fileName\n        if (hasChanges) {\n          setCheckboxes((prev) => [...prev, item.id]);\n        }\n        return updatedTest;\n      }\n      return item;\n    });\n\n    setTests(updatedTests);\n  };\n\n  return (\n    <>\n      <Modal\n        backdrop=\"static\"\n        keyboard={false}\n        show\n        animation={true}\n        onHide={() => handleClose()}\n        centered\n        size={\"2xl\"}\n      >\n        <Modal.Header closeButton className=\"my-0\">\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {getName()}\n            {/* {modalHeading || \"\"} */}\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body className=\"p-3  marginTop0 modal-body-bg-gray\">\n          {loading && <Loader />}\n\n          <div>\n            <Row className=\"m-0\">\n              <Col md=\"12\" className=\"p-0\">\n                <Card className=\"border-0 mb-1 shows-screen-wrapper\">\n                  <Card.Body className=\"p-0\">\n                    <div className=\"shows-filter-wrapper\">\n                      <div className=\"shows-filter-inner\">\n                        <Icon\n                          handleClick={() => setShowFilter(!showFilter)}\n                          title={\"Filter\"}\n                          label={\"Filter\"}\n                          iconType={\"filter\"}\n                        />\n                        {uiType === \"testHistory\" && (\n                          <Icon\n                            handleClick={handleSendEmail}\n                            disabled={checkboxes.length ? false : true}\n                            title={\"Send Results\"}\n                            label={\"Send Results\"}\n                            iconType={\"messageIcon\"}\n                          />\n                        )}\n                        <Icon\n                          handleClick={async () => {\n                            if (tests && tests.length > 0) {\n                              setAllSelected(!allSelected);\n                              toggleCheckboxes(!allSelected);\n                            }\n                            //  await API.invoicesPDF();\n                          }}\n                          title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                          label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                          iconType={\"selectAllIcon\"}\n                        />\n                        <Icon\n                          handleClick={() => downloadRequisitionFile()}\n                          disabled={checkboxes.length === 0}\n                          title={\"Req Forms\"}\n                          label=\"Req Forms\"\n                          iconType={\"dw_Icon\"}\n                        />\n                        {permission?.test?.createTest && (\n                          <Icon\n                            handleClick={() =>\n                              getConfirmation({\n                                rowData: null,\n                                isPrintDisabled: false,\n                                isModalClose: true,\n                              })\n                            }\n                            title={\"Print Label\"}\n                            disabled={checkboxes.length > 0 ? false : true}\n                            label=\"Print\"\n                            iconType={\"printerIcon\"}\n                          />\n                        )}\n                      </div>\n                    </div>\n                    <div>\n                      {showFilter && <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} />}\n                    </div>\n                  </Card.Body>\n                </Card>\n              </Col>\n            </Row>\n            <div className=\"shows-screen-parent\">\n              <MainTable\n                columns={personalize}\n                rows={tests}\n                selectedRows={checkboxes}\n                flipSort={flipSort}\n                personalisationKey={PERSONALISATION_KEY.TEST_DETAILS_DONE}\n                cssClass=\"table-noresponsive\"\n                sortBy={sortBy}\n                sortDescending={sortDescending}\n                tools={quickTools}\n                handleCellClick={handleCellClick}\n                customColumnCellRenderer={customRenderTD}\n                // dropDownOptions={\n                //   uiType === \"testManagmentUi\" && [\n                //     { value: \"Accept\", title: \"Accept\" },\n                //     //{ value: \"Create New\", title: \"Create New\" },\n                //     { value: \"Reject\", title: \"Reject\" },\n                //     // { value: \"Send Out\", title: \"Send Out\" },\n                //   ]\n                // }\n                // handleDropDownClick={(type, row) => {\n                //   if (type === \"Reject\") {\n                //     setOpenRejectTestModal(true);\n\n                //     setCheckboxes([row.id]);\n                //   }\n                //   if (type === \"Audit Trail\") {\n                //     appContext.showLogs(row);\n                //   } else if (type === \"Print Label\") {\n                //     handlePrintClick(row);\n                //   } else if (type === \"Requisition Form\") {\n                //     showReqForm(row);\n                //   }\n                // }}\n                isTestDoneModal\n              />\n            </div>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer className=\"flex-row-reverse mt-3\">\n          {permission?.test?.createTest && (\n            <Button\n              className=\"modalButtons\"\n              variant=\"primary\"\n              style={{ width: \"85px\" }}\n              onClick={() => {\n                getConfirmation({ rowData: null, isPrintDisabled: true, isModalClose: true });\n              }}\n            >\n              Ok\n            </Button>\n          )}\n          <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleClose()}>\n            Cancel\n          </Button>\n\n          {/* <Button className=\"modalButtons\" variant=\"primary\" onClick={updateColumns}>\n            Update Columns\n          </Button> */}\n        </Modal.Footer>\n        {selectedRow?.id && (\n          <TestConfirmationModal\n            show={selectedRow}\n            title={selectedRow?.testStatus === \"sendOut\" ? \"Select Reference Lab\" : \"Rejected Reason\"}\n            options={sendOutOptions}\n            handleOptions={(e) => handleSendOut(e)}\n            handleConfirm={(params) => {\n              const { isConfirm, fileName } = params;\n              // If not confirmed, update only the testStatus without merging selectedRow\n              if (!isConfirm) {\n                updateTestsOnConfirm({ fileName, selectedRow, isConfirm }); // `false` to avoid updating the entire `selectedRow`\n              } else {\n                // If confirmed, update all the fields based on selectedRow\n                updateTestsOnConfirm({ fileName, selectedRow, isConfirm }); // `true` to merge selectedRow into the item\n              }\n              setSelectedRow(null);\n            }}\n            selectedRow={selectedRow}\n            handleClose={() => setSelectedRow(null)}\n            handleRejectReason={(e) => handleInputRejectReason(e)}\n            employeeID={order?.employeeID}\n            orderId={order?.id}\n            defaultConfig={defaultConfig}\n          />\n        )}\n        {confirmationTests && (\n          <ConfirmationModal\n            show\n            title=\"Confirmation\"\n            handleClose={() => setConfirmationTests(null)}\n            handleConfirm={(isConfirm) => {\n              if (isConfirm) {\n                handleAllPrintTests({\n                  isPrintDisabled: confirmationTests?.isPrintDisabled,\n                  rowData: confirmationTests?.rowData,\n                  isModalClose: true,\n                });\n              }\n              setConfirmationTests(null);\n            }}\n            isPreRegister\n            message={<div>{`Do you want to process  ${checkboxes.length === 1 ? \"the test?\" : \"these tests?\"} `}</div>}\n          />\n        )}\n      </Modal>\n    </>\n  );\n};\n\nexport default TestDoneModal;\n","import React, { useEffect, useState } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { formatTest } from \"utils\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\n\nconst ResultViewModal = (props) => {\n  const { test, appContextView, handleClose, detailEmpId } = props;\n\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n\n  useEffect(() => {\n    if (test) {\n      loadPDFData();\n    }\n  }, []);\n\n  const loadPDFData = async () => {\n    const {\n      employee_demographics: { mdID },\n    } = test;\n    let empID = mdID;\n\n    if (!empID) {\n      empID = detailEmpId;\n    }\n\n    appContextView.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setTestPdf(formatTest({ ...test, empID }));\n    });\n  };\n\n  return (\n    <>\n      <Modal show animation={true} onHide={() => handleClose()} size={\"2x2\"} scrollable>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Result View - {`${test?.barcode}`}\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body className=\"marginTop0\">\n          {testPdf ? <PDFLayout setShowPdf={handleClose} testPdf={testPdf} testsLab={testsLab} /> : \"Loading\"}\n        </Modal.Body>\n      </Modal>\n    </>\n  );\n};\n\nexport default ResultViewModal;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\nimport React, { Component, useEffect, useState, useLayoutEffect } from \"react\";\nimport { useLocation, NavLink, useHistory } from \"react-router-dom\";\n\nimport { Nav } from \"react-bootstrap\";\nimport { logoImage } from \"constant\";\n\nimport logo from \"assets/img/reactlogo.png\";\nimport API from \"api\";\nimport { useRendersCount } from \"react-use\";\nimport { CONFIG } from \"constant\";\nimport moment from \"moment\";\n\nfunction Sidebar({ color, image, routes, user, pendingTests, invalidTests, setTestFilter, testFilter }) {\n  const location = useLocation();\n  const [tests, setTests] = useState([]);\n  const history = useHistory();\n\n  const activeRoute = (routeName) => {\n    return location.pathname.indexOf(routeName) > -1 ? \"active\" : \"\";\n  };\n  const isUserAllowed = (user, roles) => {\n    let allowed = false;\n    roles.forEach((role) => {\n      if (user?.[role]()) {\n        allowed = true;\n      }\n    });\n    return allowed;\n  };\n\n  useEffect(() => {\n    // console.log(pendingTests.length);\n  }, [pendingTests]);\n\n  const handleNavClick = () => {\n    if (testFilter) setTestFilter(null);\n  };\n\n  return (\n    <div className=\"sidebar\" data-image={image} data-color={color}>\n      <div\n        className=\"sidebar-background\"\n        style={{\n          backgroundImage: \"url(\" + image + \")\",\n        }}\n      />\n      <div className=\"sidebar-wrapper\">\n        <div className=\"logo d-flex align-items-center justify-content-start\">\n          {/* <a\n            href=\"https://www.creative-tim.com?ref=lbd-sidebar\"\n            className=\"simple-text logo-mini mx-1\"\n          >\n            <div className=\"logo-img\">\n              <img\n                src={require(\"assets/img/reactlogo.png\").default}\n                alt=\"...\"\n              />\n            </div>\n          </a> */}\n          <img\n            onClick={() => history.push(\"/admin\")}\n            src={logoImage}\n            alt=\"...\"\n            style={{ width: 240, ...(CONFIG.isWhiteLabel && { padding: \"20px 10px\" }) }}\n          />\n        </div>\n        {routes?.length > 1 && (\n          <Nav>\n            {routes.map((prop, key) => {\n              if (!prop.redirect)\n                return (\n                  <li className={prop.upgrade ? \"active active-pro\" : activeRoute(prop.layout + prop.path)} key={key}>\n                    <NavLink\n                      to={prop.layout + prop.path}\n                      className=\"nav-link\"\n                      activeClassName=\"active\"\n                      onClick={handleNavClick}\n                    >\n                      <i className={prop.icon} style={{ fontWeight: \"lighter\" }} />\n                      <p>\n                        {prop.name}{\" \"}\n                        {(prop.name === \"Pending Release\" || prop.name === \"Inconclusive\") &&\n                          (pendingTests.length > 0 || invalidTests.length > 0) && (\n                            <span className=\"sidebarListing-badge\">\n                              {prop.name === \"Pending Release\" ? pendingTests.length : invalidTests.length}\n                            </span>\n                          )}\n                      </p>\n                    </NavLink>\n                  </li>\n                );\n              return null;\n            })}\n            <div className=\"navFooter\">\n              <div>Version 1.0.0</div>\n              <div>\n                <div>{\"03/29/2025 09:00AM\"}</div>\n              </div>\n            </div>\n          </Nav>\n        )}\n      </div>\n    </div>\n  );\n}\n\nexport default Sidebar;\n","import React, { useState } from \"react\";\nimport { Modal, Button, Form } from \"react-bootstrap\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport Loader from \"components/Loader/Loader\";\nimport api from \"api\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport moment from \"moment\";\nimport { Storage } from \"aws-amplify\";\nimport { CSVReader } from \"react-papaparse\";\nimport { exportToCalRedie, SYSTEM_TIME_ZONE, removeSpecialCharacters } from \"utils\";\nimport { CONFIG, TEST_TYPES, validationRules, CSVValidationRules, Sero_CSVValidationRules } from \"constant\";\nimport InputField from \"components/InputField/InputField\";\nimport Select from \"react-select\";\nimport { UPLOAD_CSV_FILE } from \"constant\";\nimport { RevokeTokenRequestFilterSensitiveLog } from \"@aws-sdk/client-cognito-identity-provider\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { downloadDataAsCSV, convertArraytoObject } from \"utils\";\nimport { selectedProvider } from \"store/features/providers/providersSelectors\";\nimport { useSelector } from \"react-redux\";\nimport { SEROCLINIX_ID } from \"constant\";\nimport { SEROCLINIX_TEST } from \"constant\";\n\nconst TestScheduleModal = (props) => {\n  const { handleClose, employees, user, uploadCallType, showSuccessMessage, showErrorMessage, appContext } = props;\n  const [detail, setDetail] = useState({ testType: TEST_TYPES, date: moment().add(1, \"day\").format(\"YYYY-MM-DD\") });\n  const [loading, setLoading] = useState(false);\n  const [records, setRecords] = useState([]);\n  const [error, setError] = useState(\"\");\n\n  const { providers } = useSelector(selectedProvider);\n\n  const isDuplicateRecord = (list, item) => {\n    if (list.length === 0 || !item) return null;\n\n    return list.find(\n      (f) =>\n        removeSpecialCharacters(f.first_name) === removeSpecialCharacters(item.first_name) &&\n        removeSpecialCharacters(f.last_name) === removeSpecialCharacters(item.last_name) &&\n        removeSpecialCharacters(f.dob) === removeSpecialCharacters(item.dob) &&\n        removeSpecialCharacters(f.gender) === removeSpecialCharacters(item.gender)\n    );\n  };\n\n  const processPhoneNumber = (user) => {\n    user.phone_number = user.phone_number.replace(/\\D/g, \"\");\n\n    if (user.phone_number.startsWith(\"1\")) {\n      user.country_code = \"+1\";\n      user.phone_number = user.phone_number.slice(1);\n    } else {\n      user.country_code = \"\";\n    }\n\n    return user;\n  };\n\n  const handleOnDrop = async (arr) => {\n    let patients = [];\n    setLoading(true);\n\n    let site = null;\n    const client = appContext.clients?.find((f) => f.id === CONFIG.clientID);\n\n    const isSeroClinix = CONFIG.clientID === SEROCLINIX_ID || CONFIG.clientID === SEROCLINIX_TEST;\n    const requiredKeysObj = isSeroClinix ? Sero_CSVValidationRules : CSVValidationRules;\n\n    const providerList = convertArraytoObject(providers, \"npi\");\n\n    for (const { data } of arr) {\n      let status = \"pass\";\n      if (uploadCallType === UPLOAD_CSV_FILE.employee) {\n        const validationKeys = Object.keys(requiredKeysObj);\n        const isValid = validationKeys.every((key) => {\n          if (key === \"phone_number_email\" && requiredKeysObj[key]) {\n            return data.phone_number || data.email;\n          }\n          if (requiredKeysObj[key]) {\n            return data[key];\n          }\n          return true;\n        });\n        if (!isValid) {\n          continue;\n        }\n      }\n      console.log(\"Is Valid\");\n      if (isDuplicateRecord(patients, data)) {\n        status = \"duplicate\";\n        continue;\n      }\n\n      const connectedProvider = providerList[data.referringProviderNpi];\n\n      let siteID = CONFIG.siteID;\n      \n      if (connectedProvider?.associatedClient) {\n        siteID = connectedProvider.associatedClient;\n        site = appContext.sites?.find((f) => f.id === siteID);\n      }\n\n      if (!siteID) {\n        const isOneSite = Array.isArray(appContext.sites) && appContext?.sites?.length === 1;\n\n        if (isOneSite) {\n          site = appContext.sites[0];\n          siteID = site.id;\n        }\n      }\n\n      patients.push({\n        ...data,\n        dob: data.dob.replace(/[-/]/g, \"\"),\n        ...processPhoneNumber({ phone_number: data.phone_number }),\n        country: data.country || client.country,\n        p_insurance: data.p_payer,\n        p_insurance_id: data.p_member_id,\n        s_insurance: data.s_payer,\n        s_insurance_id: data.s_member_id,\n        clientID: CONFIG.clientID,\n        siteID: siteID,\n        clientName: client?.name,\n        siteName: site?.name,\n        localID: uuidv4(),\n        floorID: \"\",\n        timezone: SYSTEM_TIME_ZONE,\n        createdAt: moment().toISOString(),\n        createdBy: user.sub,\n        createdByName: user.name,\n        status,\n        uploadCallType,\n        ...(connectedProvider && {\n          ref_id: connectedProvider.id,\n          ref_name: connectedProvider.name,\n          ref_npi: connectedProvider.npi,\n        }),\n      });\n    }\n    console.log(\"Data\", patients);\n    if (patients.length > 0) {\n      setRecords(patients);\n    }\n    setLoading(false);\n  };\n\n  const handleOnError = (err) => {\n    console.log(err);\n    setError(err);\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n    setRecords([]);\n  };\n\n  const isValidInput = () => {\n    if (uploadCallType !== UPLOAD_CSV_FILE.manualtest && records.length === 0) {\n      setError(\"Please Upload CSV File !\");\n      return false;\n    }\n    if (uploadCallType === UPLOAD_CSV_FILE.manualtest) {\n      if (!detail.date) {\n        setError(\"Please Select the Test Date\");\n        return false;\n      }\n      if (!detail.testType) {\n        setError(\"Please Select the Test Type\");\n        return false;\n      }\n    }\n    return true;\n  };\n\n  const onHandleConfirm = async () => {\n    if (!isValidInput()) {\n      return;\n    }\n\n    setLoading(true);\n\n    let requestRes = null;\n    try {\n      if (uploadCallType !== UPLOAD_CSV_FILE.manualtest) {\n        const fileName = `${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_employee_import_${CONFIG.envType}.csv`;\n        const fileID = uuidv4();\n\n        const res = await api.createUploadResult({\n          clientID: CONFIG.clientID,\n          title: `Upload ${uploadCallType}`.toUpperCase(),\n          fileName,\n          fileType: \"csv\",\n          createdByName: user?.name,\n          createdBy: user?.sub,\n          uploadCallType,\n          status: \"pending\",\n        });\n\n        const params = records.map((d) => ({ ...d, fileID, fileName, requestID: res.id }));\n        await api.uploadPatientTestSchedule(params, fileName);\n\n        requestRes = { ...res, Items: [] };\n        // showSuccessMessage(\n        //   uploadCallType === UPLOAD_CSV_FILE.employee\n        //     ? `Total of  ${records.length} ${\n        //         records.length > 1 ? \"Patients  have\" : \"Patient has\"\n        //       } been uploaded successfully`\n        //     : `Total of  ${records.length} ${\n        //         records.length > 1 ? \"Tests  have\" : \"Test has\"\n        //       } been uploaded for scheduling`\n        // );\n      } else {\n        const empIds = employees.map((e) => ({ employeeID: e.mdID }));\n        await api.assignedTestSchedule(empIds, detail, user);\n        showSuccessMessage(`Successfully Assigned Test Schedule`);\n      }\n\n      setLoading(false);\n      handleClose(requestRes);\n    } catch (err) {\n      console.log(\"err\", err);\n      setLoading(false);\n      showErrorMessage(err.message);\n      handleClose();\n    }\n  };\n\n  const downloadTemplateInfo = async () => {\n    const data = [\n      { \"Filed Name\": \"first_name\", STATUS: \"( required )\", VALUE: \"Jhon\" },\n      { \"Filed Name\": \"middle_name\", STATUS: \"( optional )\", VALUE: \"\" },\n      { \"Filed Name\": \"last_name\", STATUS: \"( required )\", VALUE: \"Fedric\" },\n      { \"Filed Name\": \"gender\", STATUS: \"( required )\", VALUE: \"M\" },\n      { \"Filed Name\": \"dob\", STATUS: \"( required )\", VALUE: \"09/26/1975\" },\n      { \"Filed Name\": \"address\", STATUS: \"( optional )\", VALUE: \"1249 Abc Town\" },\n      { \"Filed Name\": \"address2\", STATUS: \"( optional )\", VALUE: \"\" },\n      { \"Filed Name\": \"city\", STATUS: \"( optional )\", VALUE: \"Clifornia\" },\n      { \"Filed Name\": \"state\", STATUS: \"( optional )\", VALUE: \"CF\" },\n      { \"Filed Name\": \"zip\", STATUS: \"( optional )\", VALUE: \"20657\" },\n      { \"Filed Name\": \"country\", STATUS: \"( optional )\", VALUE: \"United State\" },\n      { \"Filed Name\": \"phone_number\", STATUS: \"( required )\", VALUE: \"+18189750320\" },\n      { \"Filed Name\": \"email\", STATUS: \"( optional )\", VALUE: \"test@yopmail.com\" },\n      { \"Filed Name\": \"p_payer\", STATUS: \"( required )\", VALUE: \"01192 (payer Id) or medicare (payer name)\" },\n      { \"Filed Name\": \"p_member_id\", STATUS: \"( required )\", VALUE: \"6230df8dj26 (insurnce Number)\" },\n      { \"Filed Name\": \"p_group_id\", STATUS: \"( optional )\", VALUE: \"(insurance group Id)\" },\n      { \"Filed Name\": \"accountNo\", STATUS: \"( optional )\", VALUE: \"\" },\n      { \"Filed Name\": \"renderingProviderNpi\", STATUS: \"( optional )\", VALUE: \"1326756545 (NPI of Rendering Provider)\" },\n      {\n        \"Filed Name\": \"referringProviderNpi\",\n        STATUS: \"( required )\",\n        VALUE: \"1326756545 (NPI of Referring  Provider)\",\n      },\n      { \"Filed Name\": \"orderingProviderNpi\", STATUS: \"( optional )\", VALUE: \"1326756545 (NPI of Ordering Provider)\" },\n    ];\n\n    await downloadDataAsCSV(data, \"Import Sample Info\");\n  };\n\n  const handleDownloadSample = async () => {\n    const data = [\n      {\n        first_name: \"Jhon\",\n        middle_name: \"\",\n        last_name: \"Fedric\",\n        gender: \"M\",\n        dob: \"09/26/1975\",\n        address: \"\",\n        address2: \"\",\n        city: \"\",\n        state: \"\",\n        zip: \"\",\n        country: \"\",\n        phone_number: \"+18189750320\",\n        email: \"\",\n        p_payer: \"Medicare\",\n        p_member_id: \"6230df8dj26\",\n        p_group_id: \"\",\n        s_payer: \"\",\n        s_member_id: \"\",\n        s_group_id: \"\",\n        // accountNo: \"\",\n        // renderingProviderNpi: \"1326756546\",\n        referringProviderNpi: \"1326756545\",\n        // orderingProviderNpi: \"1326756547\",\n      },\n    ];\n    await downloadDataAsCSV(data, \"Patient Import Sample\");\n  };\n\n  return (\n    <Modal\n      show\n      // style={{ transform: \"translate(0, -30%)\" }}\n      animation={true}\n      onHide={() => {\n        handleClose();\n      }}\n      centered\n      size=\"lg\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 modal-title h4\" id=\"contained-modal-title-vcenter\">\n          {uploadCallType === UPLOAD_CSV_FILE.employee ? \"Upload Patient Data\" : \"Upload Patient Test Schedule\"}\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body>\n        <div className=\"d-flex align-items-center justify-content-around mb-3\">\n          {/* <div\n            style={{\n              textAlign: \"right\",\n              color: \"#42cef5\",\n              textAlign: \"center\",\n              cursor: \"Pointer\",\n            }}\n            onClick={() => downloadTemplateInfo()}\n          >\n            Download Template Info\n          </div> */}\n          <div\n            style={{\n              textAlign: \"right\",\n              color: \"#42cef5\",\n              textAlign: \"center\",\n              cursor: \"Pointer\",\n            }}\n            onClick={() => handleDownloadSample()}\n          >\n            Download Upload Template\n          </div>\n        </div>\n\n        {uploadCallType !== UPLOAD_CSV_FILE.manualtest && (\n          <div className=\"form-group-wrapper d-block md-customer-reader\">\n            <CSVReader\n              onDrop={handleOnDrop}\n              onError={handleOnError}\n              addRemoveButton\n              config={{\n                header: true,\n                skipEmptyLines: true,\n                skipLinesWithEmptyValues: true, // Skip lines with empty values\n              }}\n              onRemoveFile={handleOnRemoveFile}\n            >\n              <span>Drop CSV file here.</span>\n            </CSVReader>\n          </div>\n        )}\n        {uploadCallType === UPLOAD_CSV_FILE.manualtest && (\n          <>\n            <div className=\"form-group-wrapper dateWrapper\">\n              <label className=\"modalLineHeaders\">Test Date: </label>\n\n              <input\n                className=\"modalInput\"\n                type=\"date\"\n                value={detail?.date}\n                style={{ width: \"100%\", marginBottom: \"10px\" }}\n                onChange={(e) => setDetail({ ...detail, date: e.target.value })}\n                min={moment().format(\"YYYY-MM-DD\")}\n              />\n            </div>\n\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Select Test Type: </label>\n              <Select\n                className=\"w-100 siteSelector\"\n                options={TEST_TYPES}\n                blurInputOnSelect={true}\n                defaultValue={null}\n                isMulti\n                menuPlacement=\"auto\"\n                value={detail?.testType}\n                placeholder=\"Select Test Type\"\n                onChange={(e) =>\n                  setDetail({\n                    ...detail,\n                    testType: e,\n                  })\n                }\n              />\n            </div>\n          </>\n        )}\n      </Modal.Body>\n      <div className=\"px-4\" style={{ minHeight: \"3vh\" }}>\n        {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n      </div>\n      <Modal.Footer>\n        <Button\n          className=\"headerButton btn-fill\"\n          variant=\"secondary\"\n          onClick={() => {\n            handleClose();\n          }}\n        >\n          Cancel\n        </Button>\n        <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={() => onHandleConfirm()}>\n          {uploadCallType === UPLOAD_CSV_FILE.manualtest ? \"Schedule\" : \"Upload\"}\n        </Button>\n      </Modal.Footer>\n\n      {loading && <Loader />}\n    </Modal>\n  );\n};\n\nexport default TestScheduleModal;\n","import React from \"react\";\n\nconst DateItem = (props) => {\n  const { date, count, cssClass, handleChangeDate } = props;\n\n  return (\n    <div className={cssClass || \"radio-custom-label\"} onClick={() => handleChangeDate(date)}>\n      <div className=\"fs-6\">{date}</div>\n      <div className=\"fs-4\">{count}</div>\n    </div>\n  );\n};\n\nexport default DateItem;\n","import moment from \"moment\";\nimport React from \"react\";\nimport user from \"assets/img/default_profile.png\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport { Form } from \"react-bootstrap\";\nimport dotIcons from \"assets/img/dots.png\";\n\nconst EventBar = (props) => {\n  const {\n    emp,\n    handleUpdateSchedule,\n    childNode,\n    isSelected,\n    scheduled,\n    handleEditUser,\n    date,\n    onChangeSelection,\n    handleMoreAction,\n  } = props;\n\n  const handleUpdateClick = (emp) => {\n    const isValid = moment(date).isSameOrAfter(moment().format(\"YYYY-MM-DD\"));\n    if (isValid) handleUpdateSchedule(emp);\n  };\n\n  return (\n    <>\n      <div className=\"event-bar mb-2\" key={emp.id}>\n        <span\n          className=\"event-bar-left\"\n          style={{\n            backgroundColor: `#88ccff`,\n          }}\n        />\n        <span\n          style={{\n            backgroundColor: `#88ccff`,\n            padding: \"6px 20px\",\n            paddingRight: \"30px\",\n          }}\n          className=\"event\"\n          ref={childNode}\n        >\n          <div\n            className=\"d-flex justify-content-between\"\n            style={{ position: \"relative\", alignItems: \"center\", lineHeight: \"2\" }}\n          >\n            <div style={{ flex: \"0 0 98%\" }} className=\"d-flex justify-content-start align-items-center w-100\">\n              <div style={{ marginTop: \"10px\", position: \"relative\", left: \"-10px\" }}>\n                <Form.Check>\n                  <Form.Check.Input\n                    type=\"checkbox\"\n                    checked={isSelected}\n                    value={emp.id}\n                    onChange={(e) => onChangeSelection(e, emp)}\n                  />\n                </Form.Check>\n              </div>\n              {/* <div className=\"eventIcon eventUserIcon\">\n                <img src={user} className=\"header-btn-img\" />\n              </div> */}\n              <div className=\"d-flex flex-column\" style={{ width: \"55%\" }}>\n                <span\n                  className=\"eventName event-name\"\n                  title={`${emp.firstName} ${emp.lastName}`}\n                  onClick={() => handleEditUser(emp)}\n                >{`${emp.lastName}, ${emp.firstName}`}</span>\n                <span\n                  className=\"eventName ellipsis\"\n                  title={`DOB: ${emp.dob || \"\"}`}\n                  style={{ fontSize: \"small\", marginTop: \"-10px\", minWidth: \"100%\" }}\n                >\n                  {`DOB: ${emp.dob || \"\"}`}\n                </span>\n                <span\n                  className=\"eventName ellipsis\"\n                  title={`Room# ${emp.street2 || \"\"}`}\n                  style={{ fontSize: \"small\", marginTop: \"-10px\", minWidth: \"100%\" }}\n                >\n                  {`Room# ${emp.street2 || \"\"}`}\n                </span>\n              </div>\n            </div>\n            <div className=\"eventIcon\">\n              {/* <img src={dotIcons} alt=\"more icon\" title=\"more\" onClick={() => handleMoreAction(emp)} /> */}\n              {/* <div className=\"header-btns\">\n                <i\n                  onClick={() => handleUpdateClick(emp)}\n                  className={scheduled ? \"fa fa-minus-circle\" : \"fa fa-plus-circle\"}\n                />\n              </div> */}\n            </div>\n          </div>\n        </span>\n      </div>\n    </>\n  );\n};\n\nexport default EventBar;\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport { debounce } from \"debounce\";\nconst GlobalSearch = (props) => {\n  const { handleSave, handleFilterClick, globalSearchText, cssClass, eosModal } = props;\n  const [search, setSearch] = useState(globalSearchText);\n\n  useEffect(() => {\n    setSearch(globalSearchText);\n  }, [globalSearchText]);\n\n  const debounceFire = useCallback(\n    debounce((text, handleSave) => handleSave(text), 300),\n    []\n  );\n\n  const handleChange = (e) => {\n    setSearch(e.target.value);\n    debounceFire(e.target.value, handleSave);\n  };\n\n  return (\n    <div className={`globalSearchBar  testAdmin createClientsWrapper col-md-6 col-sm-12 ${cssClass}`}>\n      <div className=\"form-group-wrapper position-relative mb-0\">\n        <input\n          className=\"modalInput pd-right-90\"\n          placeholder=\"Search\"\n          type=\"text\"\n          style={{\n            width: \"100%\",\n            flexShrink: \"initial\",\n          }}\n          value={search}\n          onChange={handleChange}\n        />\n        {search && (\n          <i\n            className=\"fas fa-times cancelSearch\"\n            onClick={() => {\n              setSearch(\"\");\n              handleSave(\"\");\n            }}\n          />\n        )}\n        <i className=\"fas fa-search globalSearch\" />\n        {eosModal && <i className={`fas fa-filter globalFilterIcon`} onClick={() => handleFilterClick()} />}\n      </div>\n    </div>\n  );\n};\n\nexport default GlobalSearch;\n","import api from \"api\";\nimport { CONFIG } from \"constant\";\nimport React, { useState, useEffect } from \"react\";\nimport { Form, Row, Col } from \"react-bootstrap\";\nimport { ViewportList } from \"react-viewport-list\";\nimport EventBar from \"./EventBar\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport moment from \"moment\";\nimport Loader from \"components/Loader/Loader\";\nimport { EOS_MODAL_GROUPS } from \"constant\";\nimport GroupLabelTab from \"./GroupLabelTab\";\nimport GlobalSearch from \"components/GlobalSearch\";\n\nconst SideListBar = (props) => {\n  const { selectedDate, user, updateDateList } = props;\n  const [empsToShow, setEmpsToShow] = useState([]);\n  const [filteredEmps, setFilteredEmps] = useState({ eosEmps: [], nonEosEmps: [] });\n  const [filteredPatient, setFilteredPatients] = useState([]);\n  const [patients, setPatients] = useState([]);\n  const [filter, setFilter] = useState({});\n  const [selectAll, setSellectAll] = useState(false);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [scheduled, setScheduled] = useState(true);\n  const [openConfirmation, setOpenConfirmation] = useState(false);\n  const [scheduledPatient, setScheduledPatient] = useState([]);\n  const [expectedOnSet, setExpectedOnSet] = useState(true);\n  const [loading, setLoading] = useState(false);\n\n  useEffect(() => {\n    loadAllEmployees();\n  }, []);\n\n  useEffect(() => {\n    if (selectedDate) {\n      loadEmployees();\n    }\n  }, [selectedDate]);\n\n  useEffect(() => {\n    setFilteredPatients(globalFilter(filter));\n  }, [filter]);\n\n  const loadAllEmployees = async () => {\n    const filterParam = { short: \"yes\" };\n    try {\n      const pgList = await api.getEmployeeListFromPG(filterParam);\n      setEmpsToShow(pgList?.rows || []);\n    } catch (err) {\n      console.log(\"Load Employees Error:-\", err);\n    }\n  };\n\n  const loadEmployees = async () => {\n    const filterParam = {\n      short: \"yes\",\n      current: \"yes\",\n      testDate: moment(selectedDate, \"MM-DD-YYYY\").format(\"YYYY-MM-DD\"),\n    };\n    try {\n      setLoading(true);\n      const pgList = await api.getEmployeeListFromPG(filterParam);\n      setLoading(false);\n      setScheduledPatient(pgList?.rows || []);\n    } catch (err) {\n      console.log(\"Load Employees Error:-\", err);\n    }\n  };\n\n  const globalFilter = (filter) => {\n    if (filter && Object.keys(filter).length > 0) {\n      return patients.filter((f) =>\n        `${f.firstName} ${f.lastName}`.toLowerCase().includes(filter.fullName?.toLowerCase())\n      );\n    }\n    return patients;\n  };\n\n  useEffect(() => {\n    if (empsToShow) {\n      if (scheduled) {\n        setFilteredPatients(scheduledPatient);\n        setPatients(scheduledPatient);\n      } else {\n        const nonScheduledPatients = empsToShow.filter(\n          (patient) => !scheduledPatient.some((scheduledPat) => patient.id === scheduledPat.id)\n        );\n        setFilteredPatients(nonScheduledPatients);\n        setPatients(nonScheduledPatients);\n      }\n    }\n    setCheckboxes([]);\n    setSellectAll(false);\n    setFilter({});\n  }, [scheduled, empsToShow, scheduledPatient]);\n\n  const updateScheduledList = (typeOfAction) => {\n    setScheduledPatient((prevCheckboxes) => {\n      if (typeOfAction === \"add\") {\n        const filteredItem = empsToShow.filter((e) => checkboxes.includes(e.id));\n        return [...prevCheckboxes, ...filteredItem];\n      }\n      return prevCheckboxes.filter((e) => !checkboxes.includes(e.id));\n    });\n\n    updateDateList((pervList) => {\n      const prevItemIndex = pervList.findIndex((d) => d.date === selectedDate);\n      if (prevItemIndex !== -1) {\n        const newPervList = [...pervList];\n        if (typeOfAction === \"add\") {\n          newPervList[prevItemIndex].count = parseInt(newPervList[prevItemIndex].count) + checkboxes.length;\n        } else {\n          newPervList[prevItemIndex].count = parseInt(newPervList[prevItemIndex].count) - checkboxes.length;\n        }\n        return newPervList;\n      }\n      return pervList;\n    });\n\n    setCheckboxes([]);\n  };\n\n  const handleSaveGolobalSearch = (search) => {\n    if (search !== filter.fullName) setFilter({ ...filter, fullName: search });\n  };\n  const updateCountInDateListing = (type) => {};\n\n  const handleMoreAction = () => {\n    console.log(\"handleMoreAction\");\n  };\n\n  const handleChangeSelection = (e, emp) => {\n    setCheckboxes((prevCheckboxes) => {\n      const index = prevCheckboxes.indexOf(emp.id);\n      if (index === -1) {\n        return [...prevCheckboxes, emp.id];\n      } else {\n        return prevCheckboxes.filter((id) => id !== emp.id);\n      }\n    });\n  };\n  const handleEditUser = () => {\n    console.log(\"handleEditUser\");\n  };\n  const handleUpdateSchedule = () => {\n    console.log(\"handleUpdateSchedule\");\n  };\n\n  const addSchedule = async () => {\n    try {\n      const empIds = checkboxes.map((e) => {\n        return {\n          employeeID: e,\n        };\n      });\n      const detail = {\n        date: moment(selectedDate, \"MM-DD-YYYY\").format(\"YYYY-MM-DD\"),\n        testType: [{ test: [{ value: \"PCR\", label: \"PCR\" }] }],\n      };\n      setLoading(true);\n      await api.assignedTestSchedule(empIds, detail, user);\n      setLoading(false);\n      updateScheduledList(\"add\");\n    } catch (ex) {\n      console.log(\"[addSchedule]\", ex);\n    }\n  };\n\n  const removeSchdeule = async () => {\n    try {\n      const detail = {\n        date: moment(selectedDate, \"MM-DD-YYYY\").format(\"YYYY-MM-DD\"),\n      };\n      setLoading(true);\n      await api.removeTestSchedule(checkboxes, detail, user);\n      setLoading(false);\n      updateScheduledList(\"remove\");\n    } catch (ex) {\n      console.log(\"[addSchedule]\", ex);\n    }\n  };\n\n  const handleChangeSchedule = () => {\n    if (checkboxes.length === 0) return;\n    setOpenConfirmation(true);\n  };\n\n  const handleConfirmation = (isConfirm) => {\n    setOpenConfirmation(false);\n    if (!isConfirm) return;\n    if (scheduled) {\n      removeSchdeule();\n    } else {\n      addSchedule();\n    }\n  };\n\n  const handleSelectAll = (val) => {\n    setSellectAll(val);\n    if (val) {\n      const ids = filteredPatient.map((m) => m.id);\n      setCheckboxes(ids);\n    } else {\n      setCheckboxes([]);\n    }\n  };\n\n  return (\n    <div className=\"calendar-details eos-calendar-details\">\n      <div className=\"p-2 fw-bold\">{`Selected Date ${selectedDate}`}</div>\n      <div className=\"d-flex align-items-center justify-content-between m-2\">\n        <div className={`${scheduled ? \"underlinedText\" : \"\"} cursor-pointer filter-groups`}>\n          <span\n            onClick={() => {\n              if (!scheduled) setScheduled(true);\n            }}\n          >\n            Patients Scheduled ({scheduledPatient.length})\n          </span>\n          <span className=\"active-group-identifier\" />\n        </div>\n        <div className={`${!scheduled ? \"underlinedText\" : \"\"} cursor-pointer filter-groups`}>\n          <span\n            onClick={() => {\n              if (scheduled) setScheduled(false);\n            }}\n          >\n            Patients Not Scheduled ({Math.abs(empsToShow.length - scheduledPatient.length)})\n          </span>\n          {!scheduled && <span className=\"active-group-identifier\" />}\n        </div>\n      </div>\n      <GlobalSearch\n        cssClass={`eos-searchBar  mt-1`}\n        handleSave={handleSaveGolobalSearch}\n        globalSearchText={filter.fullName || \"\"}\n      />\n      <div className=\"d-flex align-items-center justify-content-between mb-2\" style={{ paddingInline: \"26px\" }}>\n        <div className=\"d-flex align-items-center\">\n          <Form.Check>\n            <Form.Check.Input\n              type=\"checkbox\"\n              onChange={(e) => handleSelectAll(!selectAll)}\n              checked={selectAll}\n              value=\"selectAll\"\n              style={{ marginTop: \"7px\" }}\n            />\n          </Form.Check>\n          <span className=\"ms-1 d-inline-block selectedTextSpan\">{!selectAll ? \"Select All\" : \"Deselect All\"}</span>\n        </div>\n\n        <span className=\"event selectedTextSpan\">Selected: {checkboxes.length}</span>\n        <div className=\"my-1 mt-2\">\n          <i\n            onClick={handleChangeSchedule}\n            style={{ fontSize: \"20px\", color: checkboxes.length === 0 ? \"grey\" : \"#bf1e2e\" }}\n            className={`fa ${scheduled ? \"fa-minus-circle\" : \"fa-plus-circle\"} mx-2`}\n            title={scheduled ? \"Remove\" : \"Add\"}\n          />\n        </div>\n      </div>\n      <div className=\"details-container px-3\">\n        <div className={`events-container`}>\n          {filteredPatient.length > 0 && (\n            <ViewportList\n              key={filteredPatient.length}\n              items={filteredPatient}\n              itemMinSize={42}\n              margin={16}\n              overflowAnchor=\"auto\"\n              withCache={false}\n            >\n              {(emp, index) => (\n                <EventBar\n                  emp={emp}\n                  key={`${emp.id}-${index}`}\n                  handleUpdateSchedule={handleUpdateSchedule}\n                  handleEditUser={handleEditUser}\n                  scheduled={scheduled}\n                  isSelected={checkboxes.indexOf(emp.id) !== -1}\n                  onChangeSelection={handleChangeSelection}\n                  handleMoreAction={handleMoreAction}\n                />\n              )}\n            </ViewportList>\n          )}\n        </div>\n      </div>\n      {openConfirmation && (\n        <ConfirmationModal\n          show={openConfirmation}\n          title=\"Confirm\"\n          message={`Are you sure you want to ${scheduled ? \"remove\" : \"add\"} ${\n            checkboxes.length\n          } patient(s) to the testing schedule?`}\n          handleConfirm={handleConfirmation}\n          cssClass={\"seperateModal\"}\n        />\n      )}\n      {loading && <Loader />}\n    </div>\n  );\n};\n\nexport default SideListBar;\n","import React, { useEffect, useState } from \"react\";\nimport { Modal, Button, Form, Col, Row } from \"react-bootstrap\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport Loader from \"components/Loader/Loader\";\nimport api from \"api\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport moment from \"moment\";\nimport { Storage } from \"aws-amplify\";\nimport { CSVReader } from \"react-papaparse\";\nimport { exportToCalRedie, SYSTEM_TIME_ZONE } from \"utils\";\nimport { CONFIG, TEST_TYPES } from \"constant\";\nimport InputField from \"components/InputField/InputField\";\nimport Select from \"react-select\";\nimport { UPLOAD_CSV_FILE } from \"constant\";\nimport DateItem from \"components/TestSchedule/Items/DateItem\";\nimport SideListBar from \"./SideListBar\";\n\nconst UpComingScheduleModal = (props) => {\n  const { handleClose, user, appContext } = props;\n  const [scheduleList, setScheduleList] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const [selectedDate, setSelectedDate] = useState(moment().format(\"MM-DD-YYYY\"));\n\n  useEffect(() => {\n    loadScheduleList();\n  }, []);\n\n  const loadScheduleList = async () => {\n    try {\n      const apiRes = await api.upComingSchedule();\n      setScheduleList(\n        apiRes.map((d) => {\n          return { ...d, date: moment(d.date).format(\"MM-DD-YYYY\") };\n        })\n      );\n    } catch (ex) {\n      setScheduleList([]);\n    }\n  };\n\n  return (\n    <Modal\n      show\n      // style={{ transform: \"translate(0, -30%)\" }}\n      animation={true}\n      onHide={() => {\n        handleClose();\n      }}\n      centered\n      scrollable\n      size=\"lg\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 modal-title h4\" id=\"contained-modal-title-vcenter\">\n          Upcoming Test Schedule Management\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body>\n        <Row>\n          <Col md=\"6\">\n            <div className=\"calendar-details\">\n              <div className=\"p-2 fw-bold\">Schedule Dates</div>\n              <div className=\"employee-schedule-item\">\n                {scheduleList.map((item) => {\n                  return (\n                    <DateItem\n                      key={item.date}\n                      date={item.date}\n                      count={item.count}\n                      handleChangeDate={setSelectedDate}\n                      cssClass={`upComingSchedule-item ${item.date == selectedDate ? \"selectedScheduled\" : \"\"}`}\n                    />\n                  );\n                })}\n              </div>\n            </div>\n          </Col>\n          <Col md=\"6\">\n            <SideListBar selectedDate={selectedDate} user={user} updateDateList={setScheduleList} />\n          </Col>\n        </Row>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button\n          className=\"headerButton btn-fill\"\n          variant=\"secondary\"\n          onClick={() => {\n            handleClose();\n          }}\n        >\n          Close\n        </Button>\n      </Modal.Footer>\n\n      {loading && <Loader />}\n    </Modal>\n  );\n};\n\nexport default UpComingScheduleModal;\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const onCreateLab = /* GraphQL */ `\n  subscription OnCreateLab {\n    onCreateLab {\n      id\n      name\n      logo\n      contact_name\n      contact_phone\n      phone_number\n      fax_number\n      user_id\n      contact_email\n      tubes_provided\n      lab_director\n      country\n      referredDoctor\n      clia_number\n      testing_notes\n      street\n      city_state_zip\n      lab_contacts\n      default_antigen\n      antigen_notes\n      default_molecular\n      default_other\n      default_rapidflu\n      default_lucira\n      molecular_notes\n      custom_notes\n      invalid_notes\n      indeterminate_notes\n      other_notes\n      lucira_notes\n      rapidflu_notes\n      sendInsurance\n      barCodeProvided\n      barCodeAlertLimit\n      whiteLabel\n      whiteLabelPackage\n      showOnSummaryScreen\n      orderCodes\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      pendingRelease\n      logourl\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onUpdateLab = /* GraphQL */ `\n  subscription OnUpdateLab {\n    onUpdateLab {\n      id\n      name\n      logo\n      contact_name\n      contact_phone\n      phone_number\n      fax_number\n      user_id\n      contact_email\n      tubes_provided\n      lab_director\n      country\n      referredDoctor\n      clia_number\n      testing_notes\n      street\n      city_state_zip\n      lab_contacts\n      default_antigen\n      antigen_notes\n      default_molecular\n      default_other\n      default_rapidflu\n      default_lucira\n      molecular_notes\n      custom_notes\n      invalid_notes\n      indeterminate_notes\n      other_notes\n      lucira_notes\n      rapidflu_notes\n      sendInsurance\n      barCodeProvided\n      barCodeAlertLimit\n      whiteLabel\n      whiteLabelPackage\n      showOnSummaryScreen\n      orderCodes\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      pendingRelease\n      logourl\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onDeleteLab = /* GraphQL */ `\n  subscription OnDeleteLab {\n    onDeleteLab {\n      id\n      name\n      logo\n      contact_name\n      contact_phone\n      phone_number\n      fax_number\n      user_id\n      contact_email\n      tubes_provided\n      lab_director\n      country\n      referredDoctor\n      clia_number\n      testing_notes\n      street\n      city_state_zip\n      lab_contacts\n      default_antigen\n      antigen_notes\n      default_molecular\n      default_other\n      default_rapidflu\n      default_lucira\n      molecular_notes\n      custom_notes\n      invalid_notes\n      indeterminate_notes\n      other_notes\n      lucira_notes\n      rapidflu_notes\n      sendInsurance\n      barCodeProvided\n      barCodeAlertLimit\n      whiteLabel\n      whiteLabelPackage\n      showOnSummaryScreen\n      orderCodes\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      pendingRelease\n      logourl\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onCreateSite = /* GraphQL */ `\n  subscription OnCreateSite {\n    onCreateSite {\n      id\n      name\n      clientID\n      contact_name\n      contactName\n      contact_phone\n      phone_number\n      email\n      contact_email\n      safeCampAdmin\n      antigen\n      automateTestType\n      user_id\n      show_contacts\n      insurance_required\n      sendInsuranceCard\n      isInsurance\n      resetTestDay\n      startDate\n      endDate\n      orderKitDate\n      orderKitType\n      orderQuantity\n      enableShipment\n      showOnSummaryScreen\n      messageTested\n      messageResulted\n      messagePositive\n      messageReTest\n      printLabel\n      isArchive\n      isActive\n      isLucira\n      isPCRCustody\n      vaccinationCard\n      externalTest\n      externalTestType\n      externalTestDuration\n      externalTestAdmit\n      patternTesting\n      isHRPR\n      patternHippa\n      preRegistration\n      admit\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      totalPR\n      totalOrdered\n      totalExtTest\n      totalCheckIn\n      totalGuest\n      totalStaff\n      status\n      companyID\n      sendIdentification\n      isAutoSubmitClaim\n      sendExternalRequisition\n      sendPrescription\n      sendAuthorization\n      sendOtherDocuments\n      startBarCode\n      uploadFileStatus\n      hippa\n      hippaFile\n      resultTemplate\n      isTesting\n      street\n      city\n      state\n      zipcode\n      countryCode\n      country\n      setting\n      defaultProvider\n      practiceID\n      labLocalID\n      fax\n      contact_fax\n      discount\n      commission\n      totalOrders\n      totalBilledAmount\n      claimAmount\n      openAmount\n      paid\n      lastOrder\n      note\n      createdBy\n      createdByName\n      updatedByName\n      siteType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onUpdateSite = /* GraphQL */ `\n  subscription OnUpdateSite {\n    onUpdateSite {\n      id\n      name\n      clientID\n      contact_name\n      contactName\n      contact_phone\n      phone_number\n      email\n      contact_email\n      safeCampAdmin\n      antigen\n      automateTestType\n      user_id\n      show_contacts\n      insurance_required\n      sendInsuranceCard\n      isInsurance\n      resetTestDay\n      startDate\n      endDate\n      orderKitDate\n      orderKitType\n      orderQuantity\n      enableShipment\n      showOnSummaryScreen\n      messageTested\n      messageResulted\n      messagePositive\n      messageReTest\n      printLabel\n      isArchive\n      isActive\n      isLucira\n      isPCRCustody\n      vaccinationCard\n      externalTest\n      externalTestType\n      externalTestDuration\n      externalTestAdmit\n      patternTesting\n      isHRPR\n      patternHippa\n      preRegistration\n      admit\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      totalPR\n      totalOrdered\n      totalExtTest\n      totalCheckIn\n      totalGuest\n      totalStaff\n      status\n      companyID\n      sendIdentification\n      isAutoSubmitClaim\n      sendExternalRequisition\n      sendPrescription\n      sendAuthorization\n      sendOtherDocuments\n      startBarCode\n      uploadFileStatus\n      hippa\n      hippaFile\n      resultTemplate\n      isTesting\n      street\n      city\n      state\n      zipcode\n      countryCode\n      country\n      setting\n      defaultProvider\n      practiceID\n      labLocalID\n      fax\n      contact_fax\n      discount\n      commission\n      totalOrders\n      totalBilledAmount\n      claimAmount\n      openAmount\n      paid\n      lastOrder\n      note\n      createdBy\n      createdByName\n      updatedByName\n      siteType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onDeleteSite = /* GraphQL */ `\n  subscription OnDeleteSite {\n    onDeleteSite {\n      id\n      name\n      clientID\n      contact_name\n      contactName\n      contact_phone\n      phone_number\n      email\n      contact_email\n      safeCampAdmin\n      antigen\n      automateTestType\n      user_id\n      show_contacts\n      insurance_required\n      sendInsuranceCard\n      isInsurance\n      resetTestDay\n      startDate\n      endDate\n      orderKitDate\n      orderKitType\n      orderQuantity\n      enableShipment\n      showOnSummaryScreen\n      messageTested\n      messageResulted\n      messagePositive\n      messageReTest\n      printLabel\n      isArchive\n      isActive\n      isLucira\n      isPCRCustody\n      vaccinationCard\n      externalTest\n      externalTestType\n      externalTestDuration\n      externalTestAdmit\n      patternTesting\n      isHRPR\n      patternHippa\n      preRegistration\n      admit\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      totalPR\n      totalOrdered\n      totalExtTest\n      totalCheckIn\n      totalGuest\n      totalStaff\n      status\n      companyID\n      sendIdentification\n      isAutoSubmitClaim\n      sendExternalRequisition\n      sendPrescription\n      sendAuthorization\n      sendOtherDocuments\n      startBarCode\n      uploadFileStatus\n      hippa\n      hippaFile\n      resultTemplate\n      isTesting\n      street\n      city\n      state\n      zipcode\n      countryCode\n      country\n      setting\n      defaultProvider\n      practiceID\n      labLocalID\n      fax\n      contact_fax\n      discount\n      commission\n      totalOrders\n      totalBilledAmount\n      claimAmount\n      openAmount\n      paid\n      lastOrder\n      note\n      createdBy\n      createdByName\n      updatedByName\n      siteType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onCreateClient = /* GraphQL */ `\n  subscription OnCreateClient {\n    onCreateClient {\n      id\n      name\n      contact_name\n      contact_phone\n      phone_number\n      country\n      timezone\n      fax_number\n      street\n      city\n      state\n      zipcode\n      contact_email\n      hippa\n      hippaFile\n      resultType\n      showOnSummaryScreen\n      whiteLabel\n      whiteLabelPackage\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      resultTypes\n      brmSetting\n      setting\n      pgName\n      colLabId\n      uploadFileStatus\n      orderCounter\n      requiredKeys\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Sites {\n        items {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Employees {\n        items {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onUpdateClient = /* GraphQL */ `\n  subscription OnUpdateClient {\n    onUpdateClient {\n      id\n      name\n      contact_name\n      contact_phone\n      phone_number\n      country\n      timezone\n      fax_number\n      street\n      city\n      state\n      zipcode\n      contact_email\n      hippa\n      hippaFile\n      resultType\n      showOnSummaryScreen\n      whiteLabel\n      whiteLabelPackage\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      resultTypes\n      brmSetting\n      setting\n      pgName\n      colLabId\n      uploadFileStatus\n      orderCounter\n      requiredKeys\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Sites {\n        items {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Employees {\n        items {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onDeleteClient = /* GraphQL */ `\n  subscription OnDeleteClient {\n    onDeleteClient {\n      id\n      name\n      contact_name\n      contact_phone\n      phone_number\n      country\n      timezone\n      fax_number\n      street\n      city\n      state\n      zipcode\n      contact_email\n      hippa\n      hippaFile\n      resultType\n      showOnSummaryScreen\n      whiteLabel\n      whiteLabelPackage\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      resultTypes\n      brmSetting\n      setting\n      pgName\n      colLabId\n      uploadFileStatus\n      orderCounter\n      requiredKeys\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Sites {\n        items {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Employees {\n        items {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onCreateEmployee = /* GraphQL */ `\n  subscription OnCreateEmployee {\n    onCreateEmployee {\n      id\n      first\n      last\n      middleName\n      dob\n      id_number\n      clientID\n      employeeFND\n      street\n      street2\n      city\n      state\n      county\n      zip\n      country\n      countryCode\n      phone_number\n      sex\n      email\n      isVaccinated\n      insurance_name\n      insurance_number\n      insuranceGroupId\n      insurance_img_front\n      insurance_img_back\n      subID\n      site_name\n      isNew\n      isPreRegistered\n      medflowDomain\n      mdID\n      schrID\n      whiteGlove\n      employeeType\n      profileImage\n      vaccinationCardUpload\n      vaccinationCardImage\n      vaccinationDetails\n      vaccinationType\n      vaccinationDate\n      vaccinationLocation\n      vaccinationDateS\n      vaccinationLocationS\n      isBooster\n      BoosterShotCardImage\n      isExternalTest\n      externalTestImage\n      externalTestDate\n      externalTestType\n      externalTestResult\n      preRegisterShowId\n      patternConsent\n      hippaConsent\n      insuranceScan\n      createdAt\n      updatedBy\n      updatedByName\n      lastUpdatedTest\n      autoRelease\n      lastUsed\n      isPrimaryProfile\n      parentRelation\n      note\n      sendSMS\n      sendEmail\n      totalTest\n      connectedTo\n      createdBy\n      createdByName\n      insuranceDetails\n      insuranceCompanyCode\n      medicalNo\n      postGridID\n      noteAddedBy\n      status\n      isHospice\n      snf\n      isInsHousing\n      eligibilityStatus\n      requestedDetails\n      primaryCarePhysician\n      referringPyhsician\n      renderingProvider\n      referringProvider\n      orderingProvider\n      codes\n      testTwo\n      siteID\n      setting\n      ssn\n      ethinicity\n      provider\n      externalID\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      Client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onUpdateEmployee = /* GraphQL */ `\n  subscription OnUpdateEmployee {\n    onUpdateEmployee {\n      id\n      first\n      last\n      middleName\n      dob\n      id_number\n      clientID\n      employeeFND\n      street\n      street2\n      city\n      state\n      county\n      zip\n      country\n      countryCode\n      phone_number\n      sex\n      email\n      isVaccinated\n      insurance_name\n      insurance_number\n      insuranceGroupId\n      insurance_img_front\n      insurance_img_back\n      subID\n      site_name\n      isNew\n      isPreRegistered\n      medflowDomain\n      mdID\n      schrID\n      whiteGlove\n      employeeType\n      profileImage\n      vaccinationCardUpload\n      vaccinationCardImage\n      vaccinationDetails\n      vaccinationType\n      vaccinationDate\n      vaccinationLocation\n      vaccinationDateS\n      vaccinationLocationS\n      isBooster\n      BoosterShotCardImage\n      isExternalTest\n      externalTestImage\n      externalTestDate\n      externalTestType\n      externalTestResult\n      preRegisterShowId\n      patternConsent\n      hippaConsent\n      insuranceScan\n      createdAt\n      updatedBy\n      updatedByName\n      lastUpdatedTest\n      autoRelease\n      lastUsed\n      isPrimaryProfile\n      parentRelation\n      note\n      sendSMS\n      sendEmail\n      totalTest\n      connectedTo\n      createdBy\n      createdByName\n      insuranceDetails\n      insuranceCompanyCode\n      medicalNo\n      postGridID\n      noteAddedBy\n      status\n      isHospice\n      snf\n      isInsHousing\n      eligibilityStatus\n      requestedDetails\n      primaryCarePhysician\n      referringPyhsician\n      renderingProvider\n      referringProvider\n      orderingProvider\n      codes\n      testTwo\n      siteID\n      setting\n      ssn\n      ethinicity\n      provider\n      externalID\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      Client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onDeleteEmployee = /* GraphQL */ `\n  subscription OnDeleteEmployee {\n    onDeleteEmployee {\n      id\n      first\n      last\n      middleName\n      dob\n      id_number\n      clientID\n      employeeFND\n      street\n      street2\n      city\n      state\n      county\n      zip\n      country\n      countryCode\n      phone_number\n      sex\n      email\n      isVaccinated\n      insurance_name\n      insurance_number\n      insuranceGroupId\n      insurance_img_front\n      insurance_img_back\n      subID\n      site_name\n      isNew\n      isPreRegistered\n      medflowDomain\n      mdID\n      schrID\n      whiteGlove\n      employeeType\n      profileImage\n      vaccinationCardUpload\n      vaccinationCardImage\n      vaccinationDetails\n      vaccinationType\n      vaccinationDate\n      vaccinationLocation\n      vaccinationDateS\n      vaccinationLocationS\n      isBooster\n      BoosterShotCardImage\n      isExternalTest\n      externalTestImage\n      externalTestDate\n      externalTestType\n      externalTestResult\n      preRegisterShowId\n      patternConsent\n      hippaConsent\n      insuranceScan\n      createdAt\n      updatedBy\n      updatedByName\n      lastUpdatedTest\n      autoRelease\n      lastUsed\n      isPrimaryProfile\n      parentRelation\n      note\n      sendSMS\n      sendEmail\n      totalTest\n      connectedTo\n      createdBy\n      createdByName\n      insuranceDetails\n      insuranceCompanyCode\n      medicalNo\n      postGridID\n      noteAddedBy\n      status\n      isHospice\n      snf\n      isInsHousing\n      eligibilityStatus\n      requestedDetails\n      primaryCarePhysician\n      referringPyhsician\n      renderingProvider\n      referringProvider\n      orderingProvider\n      codes\n      testTwo\n      siteID\n      setting\n      ssn\n      ethinicity\n      provider\n      externalID\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      Client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onCreateTest = /* GraphQL */ `\n  subscription OnCreateTest {\n    onCreateTest {\n      id\n      status\n      clientID\n      labID\n      employeeID\n      siteID\n      orderID\n      baseSiteID\n      testTypeID\n      batch\n      barcode\n      owner\n      result\n      resultDetails\n      resultDate\n      resultDateTime\n      receiveDateTime\n      employee_demographics\n      labOrderDetail\n      site_name\n      clientName\n      labName\n      phoneNumber\n      test_number\n      email\n      tester_name\n      testerID\n      isAntigen\n      referenceID\n      test_type\n      createdBy\n      testerPhone\n      submittedBy\n      submittedByName\n      StampBy\n      StampByName\n      emailSend\n      quarantinedStart\n      quarantinedEnd\n      startTimeStamp\n      timerStatus\n      startDate\n      expired\n      beenTimed\n      done\n      sr_no\n      appVer\n      sequenceNo\n      createSource\n      isFalsePositive\n      isRestated\n      invalidResultStatus\n      isLucira\n      patternTestAnswer\n      schrID\n      schrTestID\n      createdAt\n      updatedAt\n      timezone\n      pcrStatus\n      scanByTesterID\n      scanByTesterName\n      scanByLabUserID\n      scanByLabUserName\n      labelPrinted\n      isExternalTest\n      externalTestFile\n      testLocation\n      isArchive\n      arkstoneID\n      arkstoneStatus\n      sendToID\n      sendToName\n      sentToLabDate\n      verifiedBy\n      verifiedByName\n      releaseDate\n      releaseStatus\n      resultPDF\n      resultColor\n      cancelReason\n      note\n      claimID\n      restatedNote\n      sampleContainer\n      externalID\n      chartID\n      isSendToInstrument\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      lab {\n        id\n        name\n        logo\n        contact_name\n        contact_phone\n        phone_number\n        fax_number\n        user_id\n        contact_email\n        tubes_provided\n        lab_director\n        country\n        referredDoctor\n        clia_number\n        testing_notes\n        street\n        city_state_zip\n        lab_contacts\n        default_antigen\n        antigen_notes\n        default_molecular\n        default_other\n        default_rapidflu\n        default_lucira\n        molecular_notes\n        custom_notes\n        invalid_notes\n        indeterminate_notes\n        other_notes\n        lucira_notes\n        rapidflu_notes\n        sendInsurance\n        barCodeProvided\n        barCodeAlertLimit\n        whiteLabel\n        whiteLabelPackage\n        showOnSummaryScreen\n        orderCodes\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        pendingRelease\n        logourl\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      order {\n        id\n        employeeID\n        orderNo\n        providerID\n        clientID\n        labID\n        labName\n        clientName\n        providerName\n        siteID\n        site_name\n        employee_demographics\n        testsToDo\n        barcode\n        oldbarcode\n        diag_1\n        diag_2\n        diag_3\n        diag_4\n        diag_5\n        diag_6\n        diag_7\n        diag_8\n        diag_9\n        diag_10\n        diag_11\n        diag_12\n        proc_array\n        provider\n        orderDate\n        collectionDate\n        collectedBy\n        collectedByName\n        testDoneDate\n        labReceiveDate\n        status\n        providerStatus\n        cancelledReason\n        notes\n        isActive\n        isResultEmailed\n        floorNo\n        requestID\n        receivedBy\n        receivedByName\n        receivedDate\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        timezone\n        eligibilityStatus\n        location\n        tdDate\n        externalID\n        clincialComments\n        hippaSignature\n        createdAt\n        updatedAt\n        testOrdered\n        testQuantity\n        cancelledBy\n        isAcknowledged\n        departmentid\n        chartID\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onUpdateTest = /* GraphQL */ `\n  subscription OnUpdateTest {\n    onUpdateTest {\n      id\n      status\n      clientID\n      labID\n      employeeID\n      siteID\n      orderID\n      baseSiteID\n      testTypeID\n      batch\n      barcode\n      owner\n      result\n      resultDetails\n      resultDate\n      resultDateTime\n      receiveDateTime\n      employee_demographics\n      labOrderDetail\n      site_name\n      clientName\n      labName\n      phoneNumber\n      test_number\n      email\n      tester_name\n      testerID\n      isAntigen\n      referenceID\n      test_type\n      createdBy\n      testerPhone\n      submittedBy\n      submittedByName\n      StampBy\n      StampByName\n      emailSend\n      quarantinedStart\n      quarantinedEnd\n      startTimeStamp\n      timerStatus\n      startDate\n      expired\n      beenTimed\n      done\n      sr_no\n      appVer\n      sequenceNo\n      createSource\n      isFalsePositive\n      isRestated\n      invalidResultStatus\n      isLucira\n      patternTestAnswer\n      schrID\n      schrTestID\n      createdAt\n      updatedAt\n      timezone\n      pcrStatus\n      scanByTesterID\n      scanByTesterName\n      scanByLabUserID\n      scanByLabUserName\n      labelPrinted\n      isExternalTest\n      externalTestFile\n      testLocation\n      isArchive\n      arkstoneID\n      arkstoneStatus\n      sendToID\n      sendToName\n      sentToLabDate\n      verifiedBy\n      verifiedByName\n      releaseDate\n      releaseStatus\n      resultPDF\n      resultColor\n      cancelReason\n      note\n      claimID\n      restatedNote\n      sampleContainer\n      externalID\n      chartID\n      isSendToInstrument\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      lab {\n        id\n        name\n        logo\n        contact_name\n        contact_phone\n        phone_number\n        fax_number\n        user_id\n        contact_email\n        tubes_provided\n        lab_director\n        country\n        referredDoctor\n        clia_number\n        testing_notes\n        street\n        city_state_zip\n        lab_contacts\n        default_antigen\n        antigen_notes\n        default_molecular\n        default_other\n        default_rapidflu\n        default_lucira\n        molecular_notes\n        custom_notes\n        invalid_notes\n        indeterminate_notes\n        other_notes\n        lucira_notes\n        rapidflu_notes\n        sendInsurance\n        barCodeProvided\n        barCodeAlertLimit\n        whiteLabel\n        whiteLabelPackage\n        showOnSummaryScreen\n        orderCodes\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        pendingRelease\n        logourl\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      order {\n        id\n        employeeID\n        orderNo\n        providerID\n        clientID\n        labID\n        labName\n        clientName\n        providerName\n        siteID\n        site_name\n        employee_demographics\n        testsToDo\n        barcode\n        oldbarcode\n        diag_1\n        diag_2\n        diag_3\n        diag_4\n        diag_5\n        diag_6\n        diag_7\n        diag_8\n        diag_9\n        diag_10\n        diag_11\n        diag_12\n        proc_array\n        provider\n        orderDate\n        collectionDate\n        collectedBy\n        collectedByName\n        testDoneDate\n        labReceiveDate\n        status\n        providerStatus\n        cancelledReason\n        notes\n        isActive\n        isResultEmailed\n        floorNo\n        requestID\n        receivedBy\n        receivedByName\n        receivedDate\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        timezone\n        eligibilityStatus\n        location\n        tdDate\n        externalID\n        clincialComments\n        hippaSignature\n        createdAt\n        updatedAt\n        testOrdered\n        testQuantity\n        cancelledBy\n        isAcknowledged\n        departmentid\n        chartID\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onDeleteTest = /* GraphQL */ `\n  subscription OnDeleteTest {\n    onDeleteTest {\n      id\n      status\n      clientID\n      labID\n      employeeID\n      siteID\n      orderID\n      baseSiteID\n      testTypeID\n      batch\n      barcode\n      owner\n      result\n      resultDetails\n      resultDate\n      resultDateTime\n      receiveDateTime\n      employee_demographics\n      labOrderDetail\n      site_name\n      clientName\n      labName\n      phoneNumber\n      test_number\n      email\n      tester_name\n      testerID\n      isAntigen\n      referenceID\n      test_type\n      createdBy\n      testerPhone\n      submittedBy\n      submittedByName\n      StampBy\n      StampByName\n      emailSend\n      quarantinedStart\n      quarantinedEnd\n      startTimeStamp\n      timerStatus\n      startDate\n      expired\n      beenTimed\n      done\n      sr_no\n      appVer\n      sequenceNo\n      createSource\n      isFalsePositive\n      isRestated\n      invalidResultStatus\n      isLucira\n      patternTestAnswer\n      schrID\n      schrTestID\n      createdAt\n      updatedAt\n      timezone\n      pcrStatus\n      scanByTesterID\n      scanByTesterName\n      scanByLabUserID\n      scanByLabUserName\n      labelPrinted\n      isExternalTest\n      externalTestFile\n      testLocation\n      isArchive\n      arkstoneID\n      arkstoneStatus\n      sendToID\n      sendToName\n      sentToLabDate\n      verifiedBy\n      verifiedByName\n      releaseDate\n      releaseStatus\n      resultPDF\n      resultColor\n      cancelReason\n      note\n      claimID\n      restatedNote\n      sampleContainer\n      externalID\n      chartID\n      isSendToInstrument\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      lab {\n        id\n        name\n        logo\n        contact_name\n        contact_phone\n        phone_number\n        fax_number\n        user_id\n        contact_email\n        tubes_provided\n        lab_director\n        country\n        referredDoctor\n        clia_number\n        testing_notes\n        street\n        city_state_zip\n        lab_contacts\n        default_antigen\n        antigen_notes\n        default_molecular\n        default_other\n        default_rapidflu\n        default_lucira\n        molecular_notes\n        custom_notes\n        invalid_notes\n        indeterminate_notes\n        other_notes\n        lucira_notes\n        rapidflu_notes\n        sendInsurance\n        barCodeProvided\n        barCodeAlertLimit\n        whiteLabel\n        whiteLabelPackage\n        showOnSummaryScreen\n        orderCodes\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        pendingRelease\n        logourl\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      order {\n        id\n        employeeID\n        orderNo\n        providerID\n        clientID\n        labID\n        labName\n        clientName\n        providerName\n        siteID\n        site_name\n        employee_demographics\n        testsToDo\n        barcode\n        oldbarcode\n        diag_1\n        diag_2\n        diag_3\n        diag_4\n        diag_5\n        diag_6\n        diag_7\n        diag_8\n        diag_9\n        diag_10\n        diag_11\n        diag_12\n        proc_array\n        provider\n        orderDate\n        collectionDate\n        collectedBy\n        collectedByName\n        testDoneDate\n        labReceiveDate\n        status\n        providerStatus\n        cancelledReason\n        notes\n        isActive\n        isResultEmailed\n        floorNo\n        requestID\n        receivedBy\n        receivedByName\n        receivedDate\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        timezone\n        eligibilityStatus\n        location\n        tdDate\n        externalID\n        clincialComments\n        hippaSignature\n        createdAt\n        updatedAt\n        testOrdered\n        testQuantity\n        cancelledBy\n        isAcknowledged\n        departmentid\n        chartID\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onCreateLencoBarcodes = /* GraphQL */ `\n  subscription OnCreateLencoBarcodes {\n    onCreateLencoBarcodes {\n      id\n      labID\n      clientID\n      barcode\n      available\n      isActive\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateLencoBarcodes = /* GraphQL */ `\n  subscription OnUpdateLencoBarcodes {\n    onUpdateLencoBarcodes {\n      id\n      labID\n      clientID\n      barcode\n      available\n      isActive\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteLencoBarcodes = /* GraphQL */ `\n  subscription OnDeleteLencoBarcodes {\n    onDeleteLencoBarcodes {\n      id\n      labID\n      clientID\n      barcode\n      available\n      isActive\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateTestConsent = /* GraphQL */ `\n  subscription OnCreateTestConsent {\n    onCreateTestConsent {\n      id\n      employeeID\n      siteID\n      isConsent\n      isInsuranceCardScan\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onUpdateTestConsent = /* GraphQL */ `\n  subscription OnUpdateTestConsent {\n    onUpdateTestConsent {\n      id\n      employeeID\n      siteID\n      isConsent\n      isInsuranceCardScan\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onDeleteTestConsent = /* GraphQL */ `\n  subscription OnDeleteTestConsent {\n    onDeleteTestConsent {\n      id\n      employeeID\n      siteID\n      isConsent\n      isInsuranceCardScan\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onCreateTestTypes = /* GraphQL */ `\n  subscription OnCreateTestTypes {\n    onCreateTestTypes {\n      id\n      code\n      name\n      category\n      custom_notes\n      typeOfTest\n      type\n      totalTime\n      firstAlert\n      secondAlert\n      units\n      minValue\n      maxValue\n      refInterval\n      duration\n      hrCounter\n      siteID\n      clientID\n      sources\n      sampleContainer\n      cptCodes\n      ictCodes\n      targetRanges\n      isActive\n      isArchive\n      isAssociatedPanel\n      isPanelOnly\n      isARKStone\n      lonicCode\n      setting\n      ranges\n      createdByName\n      updatedByName\n      lastUsed\n      location\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateTestTypes = /* GraphQL */ `\n  subscription OnUpdateTestTypes {\n    onUpdateTestTypes {\n      id\n      code\n      name\n      category\n      custom_notes\n      typeOfTest\n      type\n      totalTime\n      firstAlert\n      secondAlert\n      units\n      minValue\n      maxValue\n      refInterval\n      duration\n      hrCounter\n      siteID\n      clientID\n      sources\n      sampleContainer\n      cptCodes\n      ictCodes\n      targetRanges\n      isActive\n      isArchive\n      isAssociatedPanel\n      isPanelOnly\n      isARKStone\n      lonicCode\n      setting\n      ranges\n      createdByName\n      updatedByName\n      lastUsed\n      location\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteTestTypes = /* GraphQL */ `\n  subscription OnDeleteTestTypes {\n    onDeleteTestTypes {\n      id\n      code\n      name\n      category\n      custom_notes\n      typeOfTest\n      type\n      totalTime\n      firstAlert\n      secondAlert\n      units\n      minValue\n      maxValue\n      refInterval\n      duration\n      hrCounter\n      siteID\n      clientID\n      sources\n      sampleContainer\n      cptCodes\n      ictCodes\n      targetRanges\n      isActive\n      isArchive\n      isAssociatedPanel\n      isPanelOnly\n      isARKStone\n      lonicCode\n      setting\n      ranges\n      createdByName\n      updatedByName\n      lastUsed\n      location\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateEmployeeBarCodes = /* GraphQL */ `\n  subscription OnCreateEmployeeBarCodes {\n    onCreateEmployeeBarCodes {\n      id\n      employeeID\n      barcode\n      phone_number\n      licenceNumber\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateEmployeeBarCodes = /* GraphQL */ `\n  subscription OnUpdateEmployeeBarCodes {\n    onUpdateEmployeeBarCodes {\n      id\n      employeeID\n      barcode\n      phone_number\n      licenceNumber\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteEmployeeBarCodes = /* GraphQL */ `\n  subscription OnDeleteEmployeeBarCodes {\n    onDeleteEmployeeBarCodes {\n      id\n      employeeID\n      barcode\n      phone_number\n      licenceNumber\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateEmployeeTestCounter = /* GraphQL */ `\n  subscription OnCreateEmployeeTestCounter {\n    onCreateEmployeeTestCounter {\n      id\n      counter\n      employeeCounter\n      orderCounter\n      patternQuestion\n      totalTest\n      employeeUpdate\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateEmployeeTestCounter = /* GraphQL */ `\n  subscription OnUpdateEmployeeTestCounter {\n    onUpdateEmployeeTestCounter {\n      id\n      counter\n      employeeCounter\n      orderCounter\n      patternQuestion\n      totalTest\n      employeeUpdate\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteEmployeeTestCounter = /* GraphQL */ `\n  subscription OnDeleteEmployeeTestCounter {\n    onDeleteEmployeeTestCounter {\n      id\n      counter\n      employeeCounter\n      orderCounter\n      patternQuestion\n      totalTest\n      employeeUpdate\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateExternalTest = /* GraphQL */ `\n  subscription OnCreateExternalTest {\n    onCreateExternalTest {\n      id\n      status\n      clientID\n      employeeID\n      siteID\n      owner\n      reason\n      employee_demographics\n      site_name\n      phoneNumber\n      tester_name\n      email\n      vaccineCardFile\n      vaccineCardFileBack\n      test_type\n      result\n      resultDateTime\n      externalTestFile\n      createdAt\n      prID\n      isPosted\n      testNow\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateExternalTest = /* GraphQL */ `\n  subscription OnUpdateExternalTest {\n    onUpdateExternalTest {\n      id\n      status\n      clientID\n      employeeID\n      siteID\n      owner\n      reason\n      employee_demographics\n      site_name\n      phoneNumber\n      tester_name\n      email\n      vaccineCardFile\n      vaccineCardFileBack\n      test_type\n      result\n      resultDateTime\n      externalTestFile\n      createdAt\n      prID\n      isPosted\n      testNow\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteExternalTest = /* GraphQL */ `\n  subscription OnDeleteExternalTest {\n    onDeleteExternalTest {\n      id\n      status\n      clientID\n      employeeID\n      siteID\n      owner\n      reason\n      employee_demographics\n      site_name\n      phoneNumber\n      tester_name\n      email\n      vaccineCardFile\n      vaccineCardFileBack\n      test_type\n      result\n      resultDateTime\n      externalTestFile\n      createdAt\n      prID\n      isPosted\n      testNow\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateEmployeeLogin = /* GraphQL */ `\n  subscription OnCreateEmployeeLogin {\n    onCreateEmployeeLogin {\n      id\n      employeeID\n      deviceID\n      deviceType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateEmployeeLogin = /* GraphQL */ `\n  subscription OnUpdateEmployeeLogin {\n    onUpdateEmployeeLogin {\n      id\n      employeeID\n      deviceID\n      deviceType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteEmployeeLogin = /* GraphQL */ `\n  subscription OnDeleteEmployeeLogin {\n    onDeleteEmployeeLogin {\n      id\n      employeeID\n      deviceID\n      deviceType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateTestSession = /* GraphQL */ `\n  subscription OnCreateTestSession {\n    onCreateTestSession {\n      id\n      siteID\n      clientID\n      sessionStart\n      sessionEnd\n      activeTester\n      Tester\n      startedBy\n      startedByName\n      status\n      endedBy\n      endedByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateTestSession = /* GraphQL */ `\n  subscription OnUpdateTestSession {\n    onUpdateTestSession {\n      id\n      siteID\n      clientID\n      sessionStart\n      sessionEnd\n      activeTester\n      Tester\n      startedBy\n      startedByName\n      status\n      endedBy\n      endedByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteTestSession = /* GraphQL */ `\n  subscription OnDeleteTestSession {\n    onDeleteTestSession {\n      id\n      siteID\n      clientID\n      sessionStart\n      sessionEnd\n      activeTester\n      Tester\n      startedBy\n      startedByName\n      status\n      endedBy\n      endedByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateDocuments = /* GraphQL */ `\n  subscription OnCreateDocuments {\n    onCreateDocuments {\n      id\n      clientID\n      employeeID\n      testID\n      orderID\n      docType\n      docLabel\n      fileName\n      fileType\n      fileSize\n      notes\n      isActive\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateDocuments = /* GraphQL */ `\n  subscription OnUpdateDocuments {\n    onUpdateDocuments {\n      id\n      clientID\n      employeeID\n      testID\n      orderID\n      docType\n      docLabel\n      fileName\n      fileType\n      fileSize\n      notes\n      isActive\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteDocuments = /* GraphQL */ `\n  subscription OnDeleteDocuments {\n    onDeleteDocuments {\n      id\n      clientID\n      employeeID\n      testID\n      orderID\n      docType\n      docLabel\n      fileName\n      fileType\n      fileSize\n      notes\n      isActive\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateOrder = /* GraphQL */ `\n  subscription OnCreateOrder {\n    onCreateOrder {\n      id\n      employeeID\n      orderNo\n      providerID\n      clientID\n      labID\n      labName\n      clientName\n      providerName\n      siteID\n      site_name\n      employee_demographics\n      testsToDo\n      barcode\n      oldbarcode\n      diag_1\n      diag_2\n      diag_3\n      diag_4\n      diag_5\n      diag_6\n      diag_7\n      diag_8\n      diag_9\n      diag_10\n      diag_11\n      diag_12\n      proc_array\n      provider\n      orderDate\n      collectionDate\n      collectedBy\n      collectedByName\n      testDoneDate\n      labReceiveDate\n      status\n      providerStatus\n      cancelledReason\n      notes\n      isActive\n      isResultEmailed\n      floorNo\n      requestID\n      receivedBy\n      receivedByName\n      receivedDate\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      timezone\n      eligibilityStatus\n      location\n      tdDate\n      externalID\n      clincialComments\n      hippaSignature\n      createdAt\n      updatedAt\n      testOrdered\n      testQuantity\n      cancelledBy\n      isAcknowledged\n      departmentid\n      chartID\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onUpdateOrder = /* GraphQL */ `\n  subscription OnUpdateOrder {\n    onUpdateOrder {\n      id\n      employeeID\n      orderNo\n      providerID\n      clientID\n      labID\n      labName\n      clientName\n      providerName\n      siteID\n      site_name\n      employee_demographics\n      testsToDo\n      barcode\n      oldbarcode\n      diag_1\n      diag_2\n      diag_3\n      diag_4\n      diag_5\n      diag_6\n      diag_7\n      diag_8\n      diag_9\n      diag_10\n      diag_11\n      diag_12\n      proc_array\n      provider\n      orderDate\n      collectionDate\n      collectedBy\n      collectedByName\n      testDoneDate\n      labReceiveDate\n      status\n      providerStatus\n      cancelledReason\n      notes\n      isActive\n      isResultEmailed\n      floorNo\n      requestID\n      receivedBy\n      receivedByName\n      receivedDate\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      timezone\n      eligibilityStatus\n      location\n      tdDate\n      externalID\n      clincialComments\n      hippaSignature\n      createdAt\n      updatedAt\n      testOrdered\n      testQuantity\n      cancelledBy\n      isAcknowledged\n      departmentid\n      chartID\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onDeleteOrder = /* GraphQL */ `\n  subscription OnDeleteOrder {\n    onDeleteOrder {\n      id\n      employeeID\n      orderNo\n      providerID\n      clientID\n      labID\n      labName\n      clientName\n      providerName\n      siteID\n      site_name\n      employee_demographics\n      testsToDo\n      barcode\n      oldbarcode\n      diag_1\n      diag_2\n      diag_3\n      diag_4\n      diag_5\n      diag_6\n      diag_7\n      diag_8\n      diag_9\n      diag_10\n      diag_11\n      diag_12\n      proc_array\n      provider\n      orderDate\n      collectionDate\n      collectedBy\n      collectedByName\n      testDoneDate\n      labReceiveDate\n      status\n      providerStatus\n      cancelledReason\n      notes\n      isActive\n      isResultEmailed\n      floorNo\n      requestID\n      receivedBy\n      receivedByName\n      receivedDate\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      timezone\n      eligibilityStatus\n      location\n      tdDate\n      externalID\n      clincialComments\n      hippaSignature\n      createdAt\n      updatedAt\n      testOrdered\n      testQuantity\n      cancelledBy\n      isAcknowledged\n      departmentid\n      chartID\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onCreateUploadRequestMain = /* GraphQL */ `\n  subscription OnCreateUploadRequestMain {\n    onCreateUploadRequestMain {\n      id\n      filesStatus\n      employeeID\n      clientID\n      siteID\n      fileName\n      fileType\n      title\n      uploadCallType\n      status\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Items {\n        items {\n          id\n          employeeID\n          clientID\n          siteID\n          requestID\n          fileID\n          fileName\n          fileType\n          floorNo\n          uploadCallType\n          data\n          status\n          reason\n          processingStatus\n          createdBy\n          createdByName\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onUpdateUploadRequestMain = /* GraphQL */ `\n  subscription OnUpdateUploadRequestMain {\n    onUpdateUploadRequestMain {\n      id\n      filesStatus\n      employeeID\n      clientID\n      siteID\n      fileName\n      fileType\n      title\n      uploadCallType\n      status\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Items {\n        items {\n          id\n          employeeID\n          clientID\n          siteID\n          requestID\n          fileID\n          fileName\n          fileType\n          floorNo\n          uploadCallType\n          data\n          status\n          reason\n          processingStatus\n          createdBy\n          createdByName\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onDeleteUploadRequestMain = /* GraphQL */ `\n  subscription OnDeleteUploadRequestMain {\n    onDeleteUploadRequestMain {\n      id\n      filesStatus\n      employeeID\n      clientID\n      siteID\n      fileName\n      fileType\n      title\n      uploadCallType\n      status\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Items {\n        items {\n          id\n          employeeID\n          clientID\n          siteID\n          requestID\n          fileID\n          fileName\n          fileType\n          floorNo\n          uploadCallType\n          data\n          status\n          reason\n          processingStatus\n          createdBy\n          createdByName\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onCreateUploadRequest = /* GraphQL */ `\n  subscription OnCreateUploadRequest {\n    onCreateUploadRequest {\n      id\n      employeeID\n      clientID\n      siteID\n      requestID\n      fileID\n      fileName\n      fileType\n      floorNo\n      uploadCallType\n      data\n      status\n      reason\n      processingStatus\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateUploadRequest = /* GraphQL */ `\n  subscription OnUpdateUploadRequest {\n    onUpdateUploadRequest {\n      id\n      employeeID\n      clientID\n      siteID\n      requestID\n      fileID\n      fileName\n      fileType\n      floorNo\n      uploadCallType\n      data\n      status\n      reason\n      processingStatus\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteUploadRequest = /* GraphQL */ `\n  subscription OnDeleteUploadRequest {\n    onDeleteUploadRequest {\n      id\n      employeeID\n      clientID\n      siteID\n      requestID\n      fileID\n      fileName\n      fileType\n      floorNo\n      uploadCallType\n      data\n      status\n      reason\n      processingStatus\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateGeneralSettingType = /* GraphQL */ `\n  subscription OnCreateGeneralSettingType {\n    onCreateGeneralSettingType {\n      id\n      clientID\n      code\n      title\n      label\n      value\n      isActive\n      settingType\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateGeneralSettingType = /* GraphQL */ `\n  subscription OnUpdateGeneralSettingType {\n    onUpdateGeneralSettingType {\n      id\n      clientID\n      code\n      title\n      label\n      value\n      isActive\n      settingType\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteGeneralSettingType = /* GraphQL */ `\n  subscription OnDeleteGeneralSettingType {\n    onDeleteGeneralSettingType {\n      id\n      clientID\n      code\n      title\n      label\n      value\n      isActive\n      settingType\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateUsers = /* GraphQL */ `\n  subscription OnCreateUsers {\n    onCreateUsers {\n      id\n      roles\n      firstName\n      lastName\n      note\n      email\n      personalisation\n      phone_number\n      userRole\n      clientID\n      connectedID\n      labID\n      providerID\n      status\n      systemUser\n      appType\n      userPermission\n      is2FaEnabled\n      userID\n      labAdmin\n      createdBy\n      createdByName\n      updatedBy\n      updatedByName\n      provider\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateUsers = /* GraphQL */ `\n  subscription OnUpdateUsers {\n    onUpdateUsers {\n      id\n      roles\n      firstName\n      lastName\n      note\n      email\n      personalisation\n      phone_number\n      userRole\n      clientID\n      connectedID\n      labID\n      providerID\n      status\n      systemUser\n      appType\n      userPermission\n      is2FaEnabled\n      userID\n      labAdmin\n      createdBy\n      createdByName\n      updatedBy\n      updatedByName\n      provider\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteUsers = /* GraphQL */ `\n  subscription OnDeleteUsers {\n    onDeleteUsers {\n      id\n      roles\n      firstName\n      lastName\n      note\n      email\n      personalisation\n      phone_number\n      userRole\n      clientID\n      connectedID\n      labID\n      providerID\n      status\n      systemUser\n      appType\n      userPermission\n      is2FaEnabled\n      userID\n      labAdmin\n      createdBy\n      createdByName\n      updatedBy\n      updatedByName\n      provider\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateMessageTemplate = /* GraphQL */ `\n  subscription OnCreateMessageTemplate {\n    onCreateMessageTemplate {\n      id\n      clientID\n      companyID\n      subAgentID\n      name\n      category\n      subject\n      message\n      isActive\n      criteria\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateMessageTemplate = /* GraphQL */ `\n  subscription OnUpdateMessageTemplate {\n    onUpdateMessageTemplate {\n      id\n      clientID\n      companyID\n      subAgentID\n      name\n      category\n      subject\n      message\n      isActive\n      criteria\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteMessageTemplate = /* GraphQL */ `\n  subscription OnDeleteMessageTemplate {\n    onDeleteMessageTemplate {\n      id\n      clientID\n      companyID\n      subAgentID\n      name\n      category\n      subject\n      message\n      isActive\n      criteria\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\n","import { TABLE_COLUMN_TYPES, GET_CUST_COLOR } from \"constant\";\n\nexport const UNPROCESSED_LOCATION_COLUMN_DETAILS = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Date Collected\",\n    textAlign: \"left\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n    isCheck: true,\n    id: 1,\n  },\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 2,\n  },\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 3,\n  },\n  {\n    itemKey: \"dob\",\n    title: \"DOB\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n    isCheck: true,\n    id: 4,\n  },\n  {\n    itemKey: \"sex\",\n    title: \"Gender\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 5,\n  },\n  {\n    itemKey: \"street2\",\n    title: \"Room No\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 6,\n  },\n  {\n    itemKey: \"test_type\",\n    title: \"Test Type\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    isCheck: true,\n    id: 7,\n  },\n  {\n    itemKey: \"barcode\",\n    title: \"Accession No\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 8,\n  },\n\n  {\n    itemKey: \"pcrStatus\",\n    title: \"Cust Status\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    colorObj: GET_CUST_COLOR,\n    id: 9,\n  },\n  {\n    itemKey: \"tester_name\",\n    title: \"Tester\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 10,\n  },\n];\n\n\nexport const COMPLETED_TEST_LOCATION_COLUMN_DETAILS = [\n  {\n    itemKey: \"resultDateTime\",\n    title: \"Processed\",\n    textAlign: \"left\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n    isCheck: true,\n    id: 1,\n  },\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 2,\n  },\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 3,\n  },\n  {\n    itemKey: \"dob\",\n    title: \"DOB\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n    isCheck: true,\n    id: 4,\n  },\n  {\n    itemKey: \"sex\",\n    title: \"Gender\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 5,\n  },\n  {\n    itemKey: \"street2\",\n    title: \"Room No\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 6,\n  },\n  {\n    itemKey: \"test_type\",\n    title: \"Test Type\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    isCheck: true,\n    id: 7,\n  },\n  {\n    itemKey: \"barcode\",\n    title: \"Accession No\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    isCheck: true,\n    id: 8,\n  },\n\n  {\n    itemKey: \"result\",\n    title: \"Result\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.result,\n    isCheck: true,\n    id: 9,\n  },\n  {\n    itemKey: \"tester_name\",\n    title: \"Tester\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 10,\n  },\n];\n\nexport const UNPROCESSED_COLUMN_DETAILS = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Date Collected\",\n    textAlign: \"left\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n    isCheck: true,\n    id: 1,\n  },\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 2,\n  },\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 3,\n  },\n  {\n    itemKey: \"phoneNumber\",\n    title: \"Phone\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.phone,\n    isCheck: true,\n    id: 4,\n  },\n  {\n    itemKey: \"clientName\",\n    title: \"Client\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 5,\n  },\n  {\n    itemKey: \"test_type\",\n    title: \"Test Type\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    isCheck: true,\n    id: 6,\n  },\n  {\n    itemKey: \"barcode\",\n    title: \"Accession No\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 7,\n  },\n  {\n    itemKey: \"site_name\",\n    title: \"Location\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 8,\n  },\n  {\n    itemKey: \"pcrStatus\",\n    title: \"Cust Status\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    colorObj: GET_CUST_COLOR,\n    id: 9,\n  },\n  {\n    itemKey: \"tester_name\",\n    title: \"Tester\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    id: 10,\n  },\n];\n","import React from \"react\";\nimport Barcode from \"react-barcode\";\n\nconst LabBarCode = (props) => {\n  const { code } = props;\n  return <Barcode value={code || \"\"} height={30} displayValue={false} />;\n};\n\nexport default LabBarCode;\n","import { memo, useRef } from \"react\";\n\nconst AutoFocusInput = ({ defaultValue, onBlur, placeholder, type = \"text\", disabled = false }) => {\n  const inputRef = useRef(null);\n  return (\n    <div className=\"w-100\">\n      <input\n        title={`${defaultValue}` || \"\"}\n        className=\"w-100 modalInput\"\n        ref={inputRef}\n        defaultValue={defaultValue || \"\"}\n        onBlur={onBlur}\n        type={type}\n        onFocus={() => inputRef.current && inputRef.current.select()}\n        placeholder={placeholder || \"\"}\n        disabled={disabled}\n      />\n    </div>\n  );\n};\nexport default memo(AutoFocusInput);\n","import React, { useState, useEffect, useRef, memo, useCallback } from \"react\";\nimport MainTable from \"components/Table/MainTable\";\nimport RadioButton from \"components/RadioButton/RadioButton\";\nimport { ORDER_ADDITIONAL_QUESTION_PERSONALIZATION } from \"constants/personalization\";\nimport Select from \"react-select\";\nimport AutoFocusInput from \"components/AutoFocusInput/AutoFocusInput\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nconst OrderAdditionalQuestionView = ({ additionalQuestion, setAdditionalQuestions, disabled = false }) => {\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [sortedList, setSortedList] = useState(additionalQuestion); // Derived state for sorted data\n  const inputRef = useRef(null);\n\n  const handleSetAdditionalQuestions = useCallback(\n    (rowIndex, value) => {\n      setAdditionalQuestions((prevQuestions) =>\n        prevQuestions.map((item, index) => (index === rowIndex ? { ...item, selectedValue: value } : item))\n      );\n    },\n    [setAdditionalQuestions]\n  );\n  const sortList = (list, sortBy, sortDescending) => {\n    if (!sortBy) return list;\n\n    return [...list].sort((a, b) => {\n      const valueA = a[sortBy]?.toString().toLowerCase() || \"\";\n      const valueB = b[sortBy]?.toString().toLowerCase() || \"\";\n\n      return sortDescending ? valueB.localeCompare(valueA) : valueA.localeCompare(valueB);\n    });\n  };\n\n  // Effect for handling sorting\n  useEffect(() => {\n    setSortedList(sortList(additionalQuestion, sortBy, sortDescending));\n  }, [additionalQuestion, sortBy, sortDescending]);\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n  const customRenderTD = (item, row, index, rowIndex) => {\n    if (item?.itemKey === \"type\") {\n      if (row?.type === \"radio\") {\n        return (\n          <td key={`radio_${row.id}_${rowIndex}`} className=\"d-flex justify-content-center\">\n            <div className=\"d-flex justify-content-between align-items-center gap-1\" style={{ width: \"100px\" }}>\n              <RadioButton\n                name={`option-${row.id}`}\n                id={`yes-${row.id}`}\n                label=\"Yes\"\n                value=\"yes\"\n                checked={row?.selectedValue === \"yes\"}\n                handleRadioButtonChange={(e) => handleSetAdditionalQuestions(rowIndex, e.target.value)}\n                disabled={disabled}\n              />\n              <RadioButton\n                name={`option-${row.id}`}\n                id={`no-${row.id}`}\n                label=\"No\"\n                value=\"no\"\n                checked={row?.selectedValue === \"no\"}\n                handleRadioButtonChange={(e) => handleSetAdditionalQuestions(rowIndex, e.target.value)}\n                disabled={disabled}\n              />\n            </div>\n          </td>\n        );\n      }\n      if (row?.type === \"input\") {\n        return (\n          <td key={`input_${row.id}_${rowIndex}`}>\n            <AutoFocusInput\n              defaultValue={row?.selectedValue || \"\"}\n              onBlur={(e) => handleSetAdditionalQuestions(rowIndex, e.target.value)}\n              id={`input_${rowIndex}`}\n              placeholder=\"Enter Answer Here\"\n              disabled={disabled}\n            />\n          </td>\n        );\n      }\n      if (row?.type === \"dropdown\") {\n        return (\n          <td key={`dropdown_${row.id}_${rowIndex}`}>\n            <Select\n              className=\"w-100 siteSelector\"\n              options={row?.options || []}\n              blurInputOnSelect={true}\n              menuPlacement=\"auto\"\n              value={row?.options.find((item) => item.value === row.selectedValue)}\n              placeholder=\"Select Answer\"\n              onChange={(e) => handleSetAdditionalQuestions(rowIndex, e.value)}\n              isDisabled={disabled}\n            />\n          </td>\n        );\n      }\n    }\n    if (item?.itemKey === \"title\" && row?.title) {\n      return (\n        <td key={`title_${row.id}_${rowIndex}`}>\n          {row.title.charAt(0).toUpperCase() + row.title.slice(1)}\n\n          {row.required && <sup style={{ position: \"relative\", top: \"-5px\", color: \"red\", fontSize: \"1em\" }}>*</sup>}\n        </td>\n      );\n    }\n\n    return <td key={row?.id}></td>;\n  };\n\n  return (\n    <div\n      className=\"additionalQuestionTable\"\n      style={{ background: \"#f2f0f0\", paddingLeft: \"4px\", paddingRight: \"4px\", width: \"100%\" }}\n    >\n      <MainTable\n        cssClass=\"table-noresponsive\"\n        trDataWrapperHeader={\"trDataWrapperHeader\"}\n        rows={sortedList || []}\n        columns={ORDER_ADDITIONAL_QUESTION_PERSONALIZATION}\n        customColumnCellRenderer={customRenderTD}\n        flipSort={flipSort}\n        sortBy={sortBy}\n        sortDescending={sortDescending}\n      />\n    </div>\n  );\n};\n\nexport default memo(OrderAdditionalQuestionView);\n","import React, { useEffect, useState, useContext, useMemo, useRef } from \"react\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport editIcon from \"../assets/img/edit-icon.svg\";\nimport profileImageDefault from \"../assets/img/default_profile.png\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\n// react-bootstrap components\nimport { Button, Card, Form, Container, Row, Col, Modal, CloseButton } from \"react-bootstrap\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport API from \"api\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport Select from \"react-select\";\nimport { AppContext } from \"../context/app-context\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport QrCodeDownloadIcon from \"assets/img/qr-code-rounded.svg\";\nimport EditIcon from \"assets/img/edit-icon.png\";\nimport { COMPLETED_TESTS } from \"constant\";\nimport { showResultPdf } from \"store/features/resultPdf/reslutPdfSlice\";\n\nimport {\n  TEST_TYPE_VALUE,\n  countryListAllIsoData,\n  IMAGE_UPLOAD_TYPE,\n  PROFILE_IMAGE_PATH,\n  TEST_EMPTY_OBJECT,\n  RESULT_COLOR,\n  SWAB_TYPES_OPT,\n  POSSIBLE_EXPOSURE_OPT,\n  CONFIRMED_EXPOSURE_OPT,\n  TEST_SETTING_TYPES,\n  CUSTOM_INS,\n} from \"constant\";\nimport {\n  getDemoGraphics,\n  formatZip,\n  formatTest,\n  setPhoneNo,\n  formatPhoneNumber,\n  formatDateOfBirthDOB,\n  formatQuaratineDisplayDate,\n  isValidName,\n  isValidPhoneWithCode,\n  isValidIdNum,\n  getValidName,\n  getPhoneNo,\n  isValidEmail,\n  connectedIDByURL,\n  ChangeObject,\n  formatPhoneWithOutSpaces,\n  qrResponseJOSN,\n  toTitleCase,\n  zipCodeValidationUS,\n  getValidDep,\n  getRecviedDateFromSrNo,\n  loadReqFormTest,\n  isLocalhost,\n  convertTestToOrderObj,\n  compareTestdReturnNewValues,\n  getResultColors,\n  createChangeObjForLogs,\n  prevTestTypeKey,\n} from \"../utils\";\nimport \"react-activity/dist/Bounce.css\";\nimport { Storage } from \"aws-amplify\";\nimport { useSelector } from \"react-redux\";\nimport moment from \"moment\";\nimport QuarantineModal from \"components/Modal/QuarantineModal\";\nimport EditTestDetailsModal from \"components/Modal/EditTestDetailsModal\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport \"react-tabs/style/react-tabs.css\";\nimport Loader from \"../components/Loader/Loader\";\nimport TestModal from \"components/Modal/TestModal\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport { stringConstant } from \"constant\";\nimport { CONFIG } from \"constant\";\nimport { QRCode } from \"react-qrcode-logo\";\nimport gqApi from \"./GraphQL/gqApi\";\nimport RadioInput from \"components/RadioInput/RadioInput\";\nimport { SYMPTOMS_OPT } from \"constant\";\nimport CheckBoxInput from \"components/CheckBoxInput/CheckBoxInput\";\nimport { SYMPTOMS } from \"constant\";\nimport { WORKER_OPT } from \"constant\";\nimport { async } from \"@firebase/util\";\nimport html2canvas from \"html2canvas\";\nimport whiteLabelLogo from \"assets/img/medflow_icon.png\";\nimport { UN_RESULT } from \"constant\";\nimport { GET_CUST_COLOR } from \"constant\";\nimport { RECEIVED_BYLAB } from \"constant\";\nimport { ADMIN_USER } from \"constant\";\nimport DocumentList from \"components/Document/DocumentList\";\nimport DocumentForm from \"components/Document/DocumentForm\";\nimport { INSURANCE_PROVIDER } from \"constant\";\nimport LabBarCode from \"components/BarCode/LabBarCode\";\nimport { EDIT_PERMISSION_ROLE } from \"constant\";\nimport { useDispatch } from \"react-redux\";\nimport { setSelectedTestForResult } from \"store/features/resultsTests/resultsTestAction\";\nimport { showResultReqForm } from \"store/features/resultPdf/reslutPdfSlice\";\nimport { LAB_ID } from \"constant\";\nimport { refLabsSelectors } from \"store/features/locations/locationsSelectors\";\nimport ResultCell from \"./GraphQL/TestListCompletedTest/ResultCell\";\nimport OrderAdditionalQuestionView from \"./Order/OrderAdditionalQuestionView\";\nimport { ALTA_NEW_ID } from \"constant\";\nimport { providerOptionList } from \"store/features/providers/providersSelectors\";\n\nfunction TestDetails(props) {\n  const [additionalQuestion, setAdditionalQuestion] = useState([]);\n  const location = useLocation();\n  const history = useHistory();\n  const downloadRef = useRef();\n  const [test, setTest] = useState();\n\n  const [site, setSite] = useState();\n  const [lab, setLab] = useState();\n  const [testNames, setTestNames] = useState([]);\n  const [demographics, setDemographics] = useState();\n  const [showAlert, setShowAlert] = useState(false);\n  const [releaseTo, setReleaseTo] = useState([]);\n  const [signature, setSignature] = useState();\n  const [loading, setLoading] = useState(false);\n  const [hippaConsent, setHippaConsent] = useState(false);\n  const [showImages, setShowImages] = useState(null);\n  const [showSubmitAlert, setShowSubmitAlert] = useState(false);\n  const [editButton, setEditButton] = useState(true);\n  const [editInfo, setEditInfo] = useState();\n  const [Employee, setEmployee] = useState({});\n  const [defaultTestData, setDefaultTestData] = useState({});\n  const labLocations = useSelector(refLabsSelectors);\n\n  const [error, setError] = useState(\"\");\n  const [openQuarantined, setOpenQuaratined] = useState(false);\n  const [allowToEditQuarantine, setAllowToEditQuarantine] = useState(false);\n  const [openDataChangeConfirmation, setOpenDataChangeConfirmation] = useState(false);\n  const [changeBarcodeConfirmation, setChangeBarcodeConfirmation] = useState(false);\n  const [phoneError, setPhoneError] = useState(\"\");\n  const [vaccinationImage, setVaccinationImage] = useState(\"\");\n  const [externalTestImage, setExternalTestImage] = useState(\"\");\n  const [changeData, setchangeData] = useState({});\n  const [changeDataCheck, setchangeDataCheck] = useState(true);\n  const appContext = useContext(AppContext);\n  const [profileImage, setProfileImage] = useState(profileImageDefault);\n  const [openDocumentModal, setOpenDocumentModal] = useState(null);\n  const [selectedDocument, setSelectedDocument] = useState({ isNew: true });\n  const [users, setUsers] = useState([]);\n  //\n  const [openCreator, setOpenCreator] = useState(false);\n  const [newTestCreate, setTestCreate] = useState(_.cloneDeep(TEST_EMPTY_OBJECT));\n  const [labs, setLabs] = useState([]);\n  const [resultTypes, setResultTypes] = useState([]);\n  const [openHSForm, setOpenHSForm] = useState(false);\n  const [documents, setDocuments] = useState([]);\n  const [barcodeBase64, setBarcodeBase64] = useState(\"\");\n  const [testSources, setTestSources] = useState(\"\");\n  const [testOptions, setTestOptions] = useState();\n\n  const dispatch = useDispatch();\n\n  const barcodeRef = useRef(null);\n\n  const permission = useSelector(userGivenPermission);\n  const providers = useSelector(providerOptionList);\n\n  const labOptions = useMemo(() => {\n    return labLocations.map((item) => ({\n      ...item,\n      label: item.name,\n      value: item.id,\n    }));\n  }, [labLocations]);\n\n  const hideAlert = () => {\n    props.history.push(\"/admin/pendingrelease\");\n    setShowAlert(false);\n  };\n\n  const getUserFromLocalDB = async () => {\n    let getUserDAta = await API.getUserFromLocalDB(CONFIG.isWhiteLabel ? CONFIG.whiteLabelID : \"\");\n    setUsers(getUserDAta);\n  };\n\n  const usersData = useMemo(() => {\n    if (!users) return;\n    return users\n      .filter((u) => u.roles?.includes(\"Tester\") || u.roles?.includes(\"Admin\") || u.roles?.includes(\"Lab\"))\n      .map((u) => {\n        return {\n          value: u.userID,\n          label: `${u.firstName} ${u.lastName}`,\n          phone_number: u.phone_number?.replace(/ /g, \"\"),\n        };\n      });\n  }, [users]);\n\n  const collectorList = useMemo(() => {\n    if (!users && !providers) return [];\n\n    return [\n      ...(users || [])\n        .filter((u) => u.roles?.includes(\"Tester\") || u.roles?.includes(\"Admin\") || u.roles?.includes(\"Lab\"))\n        .map((u) => ({\n          value: u.userID,\n          label: `${u.firstName} ${u.lastName}`,\n          phone_number: u.phone_number?.replace(/ /g, \"\"),\n        })),\n\n      ...(providers || []),\n    ].sort((a, b) => a.label.localeCompare(b.label));\n  }, [users, providers]);\n\n  const getSelectedTester = (onChangeTesterData) => {\n    setTestCreate({\n      ...newTestCreate,\n      testerID: onChangeTesterData.value,\n      tester_name: onChangeTesterData.label,\n      testerPhone: onChangeTesterData.phone_number,\n    });\n  };\n\n  const triggerNewData = (data) => {\n    const {\n      match: { params },\n      location: { state },\n    } = props;\n    if (data.id === state?.test?.id || data.id === params.testId) {\n      if (!editButton) {\n        setchangeData(data);\n        setOpenDataChangeConfirmation(true);\n      } else {\n        setEditInfo(data);\n        setDemographics(getDemoGraphics(data));\n        setEmployee(getDemoGraphics(data));\n        setTest(data);\n      }\n    } else {\n      return;\n    }\n  };\n\n  const downloadQRCode = async () => {\n    const element = downloadRef.current;\n    const canvas = await html2canvas(element);\n    const pngUrl = canvas.toDataURL(\"image/png\").replace(\"image/png\", \"image/octet-stream\");\n    let downloadLink = document.createElement(\"a\");\n    downloadLink.href = pngUrl;\n    downloadLink.download = Employee ? `${Employee.firstName} ${Employee.lastName}.png` : `QRCode.png`;\n    document.body.appendChild(downloadLink);\n    downloadLink.click();\n    document.body.removeChild(downloadLink);\n  };\n\n  // SETTING UP LISTNER\n  useEffect(() => {\n    if (changeDataCheck && appContext?.testObject && appContext.testObject?.opType === \"UPDATE\") {\n      triggerNewData(appContext.testObject.element);\n    }\n  }, [appContext?.testObject]);\n\n  useEffect(() => {\n    getUserFromLocalDB();\n  }, []);\n\n  useEffect(() => {\n    if (appContext?.clients?.length > 0) {\n      const client = appContext.clients.find((f) => f.id === CONFIG.clientID);\n      if (client && client.resultTypes) {\n        setResultTypes([\n          ...(client.resultTypes.results.map((m) => ({ value: m, label: m })) || []),\n          { value: UN_RESULT, label: UN_RESULT },\n        ]);\n      }\n    }\n  }, [appContext.clients]);\n\n  useEffect(() => {\n    if (appContext.labs instanceof Array) {\n      setLabs(appContext.labs);\n    } else if (appContext.labs instanceof Object) {\n      setLabs([appContext.labs]);\n    }\n    setSite(appContext.sites);\n  }, [appContext.sites, appContext.labs]);\n\n  // SETTING UP LISTNER\n  useEffect(() => {\n    if (changeDataCheck && appContext?.eventObject && appContext.eventObject?.opType === \"UPDATE\") {\n      triggerNewData(appContext.eventObject.element);\n    }\n  }, [appContext?.eventObject]);\n\n  const handleDataChangeConfirm = async (isConfirm) => {\n    if (isConfirm) {\n      setOpenDataChangeConfirmation(false);\n      setEditInfo(changeData);\n      setDemographics(getDemoGraphics(changeData));\n      setEmployee(getDemoGraphics(changeData));\n      setTestCreate(changeData);\n      setTest(changeData);\n    } else {\n      setOpenDataChangeConfirmation(false);\n    }\n  };\n\n  const handleChangeBarcodeNo = async (isConfirm) => {\n    setChangeBarcodeConfirmation(false);\n    if (isConfirm) {\n      const res = await gqApi.validateAccessionNo(newTestCreate);\n\n      if (!res) {\n        appContext.showErrorMessage(`Accession No. ${newTestCreate.barcode} is already assigned. Please use the other`);\n      } else {\n        handleSave(true);\n      }\n    } else {\n      handleSave(false);\n    }\n  };\n\n  const getResultToShow = (testCreate) => {\n    const { resultDetails, result } = testCreate;\n\n    const resultColor = getResultColors(testCreate);\n\n    if (resultDetails != null) {\n      return { label: \"View Detail\", labelColor: resultColor };\n    }\n\n    const resultKey = result ? result.toLowerCase() : \"-\";\n    return {\n      label: result || \"-\",\n      labelColor: resultColor,\n    };\n  };\n\n  const resultToShow = useMemo(() => getResultToShow(newTestCreate), [newTestCreate]);\n\n  const loadTestOptions = async () => {\n    const options = await API.getTestTypesOptions();\n    setTestOptions(options);\n  };\n\n  const setImageIfPathExists = async (filePath, setImageFunction) => {\n    if (filePath) {\n      const image = await API.getFileProfileStorage(filePath);\n      setImageFunction(image);\n    }\n  };\n\n  const getTest = async (id) => {\n    try {\n      setLoading(true);\n\n      const [model] = await API.getRecordById(id, \"test\");\n      const { order } = model;\n      const orderAdditionalQuestionData = order?.testsToDo?.test?.flatMap((item) => item?.answerAdditionalQuestion);\n      setAdditionalQuestion(orderAdditionalQuestionData);\n\n      const { employee = {}, employee_demographics, test_type } = model;\n\n      const { vaccinationCardImage, externalTestImage, profileImage, autoRelease: empAutoRelease } = employee;\n\n      const autoRelease = empAutoRelease || empAutoRelease === \"1\";\n\n      const demoWithFormattedDOB = {\n        ...employee_demographics,\n        dob: moment(employee_demographics.dob, \"MMDDYYYY\").format(\"YYYY-MM-DD\"),\n      };\n\n      setEditInfo(model);\n\n      setTest(model);\n      const formatedObj = {\n        ...employee,\n        ...demoWithFormattedDOB,\n        vaccinationCardImage,\n        externalTestImage,\n        autoRelease,\n      };\n      setEmployee(formatedObj);\n      setDefaultTestData({ ...formatedObj, test_type, result: model?.result, barcode: model?.barcode });\n\n      await setImageIfPathExists(externalTestImage, setExternalTestImage);\n      await setImageIfPathExists(profileImage, setProfileImage);\n      await setImageIfPathExists(vaccinationCardImage, setVaccinationImage);\n      const testNames = await loadReqFormTest({ clientID: model.clientID, getTestTypes: API.getTestTypes });\n\n      setLoading(false);\n      const optionList = await API.getGeneralSetting(TEST_SETTING_TYPES.SOURCE);\n      setTestSources(optionList);\n      setTestNames(testNames);\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Error:-\", err.message);\n    }\n  };\n\n  const {\n    match: { params },\n    location: { state },\n  } = props;\n\n  useEffect(async () => {\n    setLoading(true);\n    loadTestOptions();\n    if (state?.test?.id) {\n      getTest(state?.test?.id);\n    } else {\n      if (params.testId) {\n        getTest(params.testId);\n      } else {\n        let testID = connectedIDByURL(window.location.pathname);\n        if (testID?.testID != \"\") {\n          await getTest(testID.testID);\n        }\n      }\n    }\n  }, []);\n\n  useEffect(() => {\n    if (appContext.user) setAllowToEditQuarantine(appContext.user.isSite() || appContext.user.isClient());\n  }, [appContext.user]);\n\n  useEffect(() => {\n    if (editInfo && editInfo.employee_demographics) {\n      setLoading(true);\n      const emp = getDemoGraphics(editInfo);\n      const list = countryListAllIsoData.find((f) => f.name === emp.country) || { code: \"US\" };\n      setEmployee(emp);\n      setTestCreate({ ...editInfo, employee_demographics: emp });\n      setDemographics({ ...emp, isoCode: list.code });\n      setLoading(false);\n    }\n  }, [editInfo]);\n\n  useEffect(() => {\n    const getSite = async (id) => {\n      const model = await API.findSiteByID(id);\n      model.length > 0 && setSite(model[0]);\n    };\n\n    const getSignature = async (test) => {\n      const imgObject = [];\n\n      try {\n        const siteID = test.baseSiteID || test.siteID;\n        const fileName = `${siteID}&&${test.employeeID}&&sig.png`;\n        const sigt = await Storage.get(fileName);\n        setSignature(sigt);\n        imgObject.push({ title: \"HIPPA Consent\", isHIPPA: true, imgSrc: sigt });\n\n        const sig = await Storage.get(`${test.employeeID}&&${siteID}&&ins-f.jpeg`);\n        if (sig) imgObject.push({ title: \"Insurance Card Front\", isHIPPA: false, imgSrc: sig });\n        const sig1 = await Storage.get(`${test.employeeID}&&${siteID}&&ins-b.jpeg`);\n        if (sig1) imgObject.push({ title: \"Insurance Card Back\", isHIPPA: false, imgSrc: sig1 });\n      } catch (error) {\n        console.log(\"Image Error\", error);\n      }\n\n      if (imgObject.length > 0) {\n        setShowImages(imgObject);\n      }\n      setHippaConsent(true);\n    };\n\n    const getDocuments = async (test) => {\n      try {\n        const res = await API.fetchDocumentAPI({ testID: test.id, employeeID: test.employeeID });\n        if (res && res.length > 0) {\n          const filteredTests = res.filter((item) => {\n            const isOrderIDNull = !item?.orderID;\n            const isTestIDNull = !item?.testID;\n            const isOrderIDMatch = item?.orderID === test.orderID;\n            const isTestIDMatch = item?.testID === test.id;\n\n            return isOrderIDMatch || isTestIDMatch || (isOrderIDNull && isTestIDNull);\n          });\n          setDocuments(filteredTests);\n        }\n      } catch (err) {\n        console.log(\"Error:-\", err);\n      }\n    };\n\n    if (test) {\n      setSite(getSite(test.siteID));\n\n      getDocuments(test);\n      getSignature(test);\n    }\n\n    setLoading(false);\n  }, [test]);\n\n  function calculate_age(dob) {\n    const val = formatDateOfBirthDOB(dob);\n    const years = moment().diff(val, \"years\", false);\n    return years;\n  }\n\n  const formatIDNo = () => {\n    if (calculate_age(demographics?.dob) < 18) {\n      const id = demographics?.idNumber;\n      if (id && id.length > 5) {\n        return `${id.substring(0, 3)}-${id.substring(3, 5)}-${id.substring(5)}`;\n      }\n      if (id && id.length > 3) {\n        return `${id.substring(0, 3)}-${id.substring(3)}`;\n      }\n      return demographics?.idNumber;\n    }\n    return demographics?.idNumber;\n  };\n\n  const displayPdf = async (test) => {\n    appContext.showTestResult(test);\n  };\n\n  const handleSave = async (isConfirm) => {\n    let phoneNo = \"\";\n    let countryCode = \"\";\n    if (!Employee) return;\n    if (!Employee.firstName) {\n      setError(\"First name is required\");\n      return;\n    }\n    if (!isValidName(Employee.firstName)) {\n      setError(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!Employee.lastName) {\n      setError(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(Employee.lastName)) {\n      setError(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n\n    if (!Employee.email) {\n      setError(\"Email name is required\");\n      return;\n    }\n    if (!isValidEmail(Employee.email)) {\n      setError(\"Invalid Email\");\n      return;\n    }\n\n    if (!Employee.phoneNumber) {\n      setError(\"Phone name is required\");\n      return;\n    }\n\n    // FOR PHONE CHECK COUTRY CODE FOR INTERNATIONAL RECORD VERIFICATION\n    const phone = formatPhoneNumberIntl(Employee.phoneNumber);\n    const phoneArr = phone.split(\" \");\n    // check Country code exist\n\n    if (phoneArr[0].includes(\"+\")) {\n      let [cc, pNo] = getPhoneNo(Employee.phoneNumber, phoneArr[0]);\n      phoneNo = pNo;\n      countryCode = cc;\n    } else {\n      phoneNo = Employee.phoneNumber;\n      countryCode = Employee.countryCode ? Employee.countryCode : \"+1\";\n    }\n\n    if (phoneError || !isValidPhoneWithCode(`${countryCode}${phoneNo}`)) {\n      setError(\"Invalid Phone Number\");\n      return;\n    }\n    if (!Employee.dob) {\n      setError(\"DOB is required\");\n      return;\n    }\n    if (Employee.dob === \"Invalid date\") {\n      setError(\"Invalid Date of Birth\");\n      return;\n    }\n\n    if (!zipCodeValidationUS(Employee.zip)) {\n      setError(\"Invalid Postal Code\");\n      return;\n    }\n\n    if (!Employee.idNumber) {\n      setError(`${calculate_age(Employee.dob) < 18 ? \"SSN\" : \"ID Number\"} is required`);\n      return;\n    }\n    if (!isValidIdNum(Employee.idNumber)) {\n      setError(`Invalid ${calculate_age(Employee.dob) < 18 ? \"SSN\" : \"ID Number\"} must contains at least 5 characters`);\n      return;\n    }\n\n    if (!newTestCreate.clientID) {\n      setError(\"Client is required\");\n      return;\n    }\n    if (!newTestCreate.siteID) {\n      setError(\"Site is required\");\n      return;\n    }\n\n    if (!newTestCreate.labID) {\n      setError(\"Lab is required\");\n      return;\n    }\n\n    if (!newTestCreate.test_type || newTestCreate.test_type == \"\" || newTestCreate.test_type == \"undefined\") {\n      setError(\"Test Type is required\");\n      return;\n    }\n\n    if (newTestCreate.barcode && newTestCreate.barcode.length !== 10) {\n      setError(\"Barcode is Invalid e.g. (YYMMDD0001)\");\n      return;\n    }\n    if (\n      newTestCreate.createdAt &&\n      newTestCreate.resultDateTime &&\n      moment(newTestCreate.resultDateTime).isBefore(moment(newTestCreate.createdAt))\n    ) {\n      setError(\"Result date time should be after date collected\");\n      return;\n    }\n    if (\n      newTestCreate.createdAt &&\n      newTestCreate.receivedDate &&\n      moment(newTestCreate.receivedDate).isBefore(moment(newTestCreate.createdAt))\n    ) {\n      setError(\"Received date time should be after date collected\");\n      return;\n    }\n    setLoading(true);\n    setchangeDataCheck(false);\n    const testPrevObject = await API.getRecordById(test.id, \"test\");\n    const testModal = testPrevObject[0];\n    const testVersionNo = testModal._version;\n    const models = await API.getRecordById(test.employeeID, \"employee\");\n    const versionNo = models[0]?._version || null;\n    const fileName = `${Employee.mdID ? Employee.mdID : test.employeeID}/${test.employeeID}-${\n      Employee.phoneNumber\n    }-${moment().toISOString()}`;\n\n    // Vacination Image\n    let vaccinationFileName = \"\";\n    if (typeof vaccinationImage === \"object\") {\n      vaccinationFileName = await API.saveFileExternalStorage(\n        phoneNo,\n        test.employeeID,\n        IMAGE_UPLOAD_TYPE.VacinationCard,\n        vaccinationImage\n      );\n    }\n\n    // External Test Image\n    let externalImageFileName = \"\";\n    if (typeof externalTestImage === \"object\") {\n      externalImageFileName = await API.saveFileExternalStorage(\n        phoneNo,\n        test.employeeID,\n        IMAGE_UPLOAD_TYPE.ExternalTest,\n        externalTestImage\n      );\n    }\n\n    const emp = {\n      ...Employee,\n      countryCode: countryCode,\n      vaccinationCardImage: vaccinationFileName ? vaccinationFileName : Employee.vaccinationCardImage,\n      externalTestImage: externalImageFileName ? externalImageFileName : Employee.externalTestImage,\n      othercomment: Employee.symptoms?.includes(SYMPTOMS.other) ? Employee.othercomment : \"\",\n      _version: versionNo,\n      updatedBy: appContext.user.sub,\n      updatedByName: appContext.user.name,\n      phoneNumber: phoneNo,\n    };\n\n    if (Employee?.autoRelease) {\n      const pendingTestList = appContext.pendingTests?.filter((f) => f.employeeID === test.employeeID);\n      const paramsData = [];\n      pendingTestList.forEach((element) => {\n        paramsData.push({\n          id: element.id,\n          status: \"Processed\",\n          timerStatus: \"Processed\",\n          sequenceNo: element.sequenceNo,\n          invalidResultStatus: 1,\n        });\n      });\n      try {\n        await GQAPI.releaseTest(paramsData);\n      } catch (err) {\n        console.log(\"Error:-\", err.message);\n      }\n    }\n    try {\n      if (isConfirm && newTestCreate.barcode !== editInfo.barcode) {\n        await GQAPI.addTestLogs({\n          ids: [{ id: test.id, sequenceNo: test.sequenceNo }],\n          oldValue: editInfo.barcode,\n          newValue: newTestCreate.barcode,\n          userID: appContext.user?.sub,\n          userName: appContext.user?.name,\n          slug: \"AccessionNoChanged\",\n        });\n        newTestCreate.labelPrinted = 2;\n      }\n      const newTestObj = { ...newTestCreate, ...(!isConfirm && { barcode: editInfo.barcode }) };\n      if (newTestCreate.result === UN_RESULT && CONFIG.isWhiteLabel) {\n        Object.assign(newTestObj, { result: \"\", status: \"Pending\" });\n      }\n\n      if (!test.result && newTestObj.result && !newTestObj.resultDateTime) {\n        Object.assign(newTestObj, { resultDateTime: moment().toISOString() });\n      }\n\n      // const res = ChangeObject(emp, demographics, newTestObj, testModal);\n\n      const fieldsName = {\n        \"employee_demographics.firstName\": \"First Name\",\n        \"employee_demographics.lastName\": \"Last Name\",\n        \"employee_demographics.dob\": \"DOB\",\n        \"employee_demographics.email\": \"Email\",\n        \"employee_demographics.city\": \"City\",\n        \"employee_demographics.idNumber\": \"SSN\",\n        \"employee_demographics.phoneNumber\": \"Phone Number\",\n        \"employee_demographics.state\": \"State\",\n        \"employee_demographics.street\": \"Address\",\n        \"employee_demographics.street2\": \"Apt/Unit#\",\n        \"employee_demographics.zip\": \"Zip\",\n        \"employee_demographics.insurance_name\": \"Payer Name\",\n        \"employee_demographics.insurance_number\": \"Member ID\",\n        \"employee_demographics.insuranceGroupId\": \"Group ID\",\n        \"employee_demographics.clinicalcomment\": \"Clinical Comment\",\n        \"employee_demographics.comment\": \"Lab Comment\",\n        test_type: \"Test Name\",\n        tester_name: \"Collected By\",\n        receivedDate: \"Received Date\",\n        scanByLabUserName: \"Received By\",\n        releaseDate: \"Release Date\",\n        verifiedByName: \"Released By\",\n        resultDateTime: \"Result Date Time\",\n        StampByName: \"Resulted By\",\n        testerPhone: \"Tester Phone\",\n        sendToName: \"Reference Lab\",\n      };\n\n      const chngObj = createChangeObjForLogs({\n        oldRecord: testPrevObject?.[0],\n        newRecord: {\n          ...newTestObj,\n          employee_demographics: {\n            ...newTestObj.employee_demographics,\n            ...emp,\n            dob: moment(emp.dob).format(\"MMDDYYYY\"),\n          },\n        },\n        fieldsName,\n      });\n\n      let logs = null;\n\n      if (chngObj.length > 0) {\n        const ids = [{ id: test.id, sequenceNo: test.sequenceNo }];\n        logs = {\n          ids: ids,\n          changeObject: chngObj,\n          userID: appContext.user?.sub,\n          userName: appContext.user?.name,\n          slug: \"Test Updated\",\n        };\n      }\n\n      const srNo = JSON.parse(newTestObj.sr_no);\n\n      if (newTestObj.receivedDate) {\n        srNo[0].date = moment(newTestObj.receivedDate).toISOString();\n      }\n\n      if (newTestObj.receivedBy) {\n        srNo[0].name = newTestObj.receivedBy;\n      }\n\n      newTestObj.sr_no = JSON.stringify(srNo);\n\n      const obj = {\n        ...newTestObj,\n        employee_demographics: {\n          ...newTestObj.employee_demographics,\n          ...emp,\n          ...(newTestObj.testTypeID && { testTypeID: newTestObj.testTypeID }),\n        },\n        _version: testVersionNo,\n        createdAt: moment(newTestObj.createdAt).toISOString(),\n      };\n\n      const finalEmpolyeeData = {\n        ...Employee,\n        test_type: newTestCreate.test_type,\n        result: newTestCreate?.result,\n        barcode: newTestCreate?.barcode,\n      };\n\n      const comapredData = compareTestdReturnNewValues(defaultTestData, finalEmpolyeeData);\n\n      const formattedOrder1 = convertTestToOrderObj(comapredData);\n\n      const prevTestType = prevTestTypeKey(defaultTestData, obj);\n\n      const updateTest = await API.updateCompleteCrewInfo({\n        crew: obj,\n        user: appContext.user,\n        isConfirm: isConfirm,\n        chngObj,\n        prevTestType,\n      });\n\n      let testStatus =\n        testModal?.sendToID && !obj?.sendToID ? \"Accepted\" : !testModal?.sendToID && obj?.sendToID ? \"sendOut\" : null;\n\n      if (testStatus) {\n        await API.updateOrderTestStatus({\n          orderID: testModal.orderID,\n          testID: testModal.id,\n          status: testStatus,\n          sendToID: obj.sendToID,\n          sendToName: obj.sendToName,\n        });\n      }\n\n      if (logs) await GQAPI.addTestLogs(logs);\n\n      setDemographics(getDemoGraphics(updateTest));\n      setEditInfo(updateTest);\n      setTest(updateTest);\n      setEmployee(getDemoGraphics(updateTest));\n      setTestCreate(updateTest);\n      setEditButton(true);\n\n      switch (location?.state?.type) {\n        case \"pendingRelease\":\n          appContext.resetPendingTests();\n          break;\n        case \"inconclusiveTest\":\n          appContext.resetInvalidTests();\n          break;\n      }\n      appContext.showSuccessMessage(\"Test updated Successfully\");\n\n      const {\n        match: { params },\n      } = props;\n      if (params.employeeId) {\n        getTest(params.employeeId);\n      }\n      if (params.testId) {\n        getTest(params.testId);\n      }\n\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error in crew save\", err);\n      appContext.showErrorMessage(err.message);\n      setLoading(false);\n    }\n    setTimeout(() => {\n      setchangeDataCheck(true);\n    }, 60000);\n  };\n\n  const handleCancelButton = async () => {\n    if (!Employee) {\n      setEditButton(true);\n      return;\n    }\n    let models = await API.getRecordById(test.employeeID, \"employee\");\n    let vacinatedFilePath = models[0]?.vaccinationCardImage;\n    let externalTestFilePath = models[0]?.externalTestImage;\n    let profileImageFilePath = models[0]?.profileImage;\n\n    if (!profileImageFilePath) {\n      setProfileImage(profileImageDefault);\n    }\n    if (!externalTestFilePath) {\n      setExternalTestImage(\"\");\n    }\n    if (!vacinatedFilePath) {\n      setVaccinationImage(\"\");\n    }\n    setEmployee(getDemoGraphics(editInfo));\n    setTestCreate(editInfo);\n\n    setEditButton(true);\n  };\n\n  const emailTest = async (t) => {\n    setLoading(true);\n    const test = formatTest(t);\n    const params = [\n      {\n        id: test.id,\n        sequenceNo: test.sequenceNo,\n      },\n    ];\n    try {\n      setLoading(true);\n      await appContext.sendEmailToCrew(params, \"Email\");\n      appContext.showSuccessMessage(\"Email has been sent successfully\");\n      setLoading(false);\n    } catch (err) {\n      console.log(\"err\", err);\n      setLoading(false);\n    }\n  };\n\n  const handleSaveQuarantine = async (obj) => {\n    try {\n      await API.updateQuarantineData(test.id, obj.startDate, obj.endDate);\n      getTest(test.id);\n      window.location.reload();\n      appContext.showSuccessMessage(\"Quarantine dates changed successfully\");\n    } catch (err) {\n      appContext.showErrorMessage(err.message);\n    }\n  };\n\n  const dataOfBirthParse = (dob) => {\n    if (dob && dob !== \"Invalid date\") {\n      return formatDateOfBirthDOB(dob);\n    }\n    return moment().format(\"MM/DD/YYYY\");\n  };\n\n  const handleCloseCreateTest = () => {\n    setTestCreate(_.cloneDeep(TEST_EMPTY_OBJECT));\n    setOpenCreator(false);\n  };\n\n  const updateTest = async (updatedTestData) => {\n    updatedTestData.id = test?.id;\n    updatedTestData._version = test?._version;\n    let testData = {\n      ...updatedTestData,\n      submittedByName: appContext?.user?.name,\n      createdBy: appContext?.user?.sub,\n      barcode: test?.barcode,\n    };\n\n    const updateTest = await API.updateTestDataV1(testData);\n\n    setLoading(false);\n\n    if (updateTest) {\n      appContext.showSuccessMessage(\"Test updated successfully\");\n      handleCloseCreateTest();\n    } else {\n      appContext.showErrorMessage(\"Test can't be updated\");\n    }\n  };\n\n  const openAssignResultModal = () => {\n    let resultDetails =\n      typeof newTestCreate?.resultDetails === \"string\"\n        ? JSON.parse(newTestCreate.resultDetails)\n        : newTestCreate.resultDetails;\n\n    dispatch(\n      setSelectedTestForResult([\n        {\n          ...newTestCreate,\n          resultDetails,\n        },\n      ])\n    );\n  };\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setEmployee({ ...Employee, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zipcode: val.zipcode,\n        zip: val.zipcode,\n        county: val.county,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setEmployee({ ...Employee, ...addressObj });\n    }\n  };\n\n  const custodyButtonStatus = (result) => {\n    const userRoles = appContext.user?.roles || [];\n    const isUserAuthroized = EDIT_PERMISSION_ROLE.some((role) => userRoles.includes(role));\n\n    if (result) return newTestCreate.result || editButton || !isUserAuthroized;\n    return editButton || !isUserAuthroized;\n  };\n\n  const getTesterDetails = () => {\n    if (newTestCreate?.testerID) {\n      return { label: newTestCreate?.tester_name, value: newTestCreate?.testerID };\n    }\n    if (newTestCreate.createdBy) {\n      const data = usersData.find((f) => f.value === newTestCreate.createdBy);\n      if (data) {\n        return data;\n      }\n    }\n    return { label: newTestCreate.tester_name, value: newTestCreate.tester_name };\n  };\n\n  const getVerifiedDetails = () => {\n    if (newTestCreate.verifiedBy) {\n      const data = usersData.find((f) => f.value === newTestCreate.verifiedBy);\n      if (data) {\n        return data;\n      }\n    }\n    return { label: newTestCreate.verifiedByName, value: newTestCreate.verifiedBy };\n  };\n\n  const showReqForm = ({ test, signature, testNames }) => {\n    dispatch(showResultReqForm({ ...test, orderNo: test.order.orderNo }));\n  };\n\n  const handelChangeReferenceLab = (event) => {\n    const { label = null, value = null } = event || {};\n\n    setTestCreate((previousValue) => ({\n      ...previousValue,\n      sendToName: label,\n      sendToID: value,\n    }));\n  };\n\n  return !loading ? (\n    <>\n      <Container fluid className=\"profile-container\">\n        <SweetAlert show={showAlert} success title=\"Success\" onConfirm={hideAlert}>\n          Test Released\n        </SweetAlert>\n        <SweetAlert\n          show={showSubmitAlert}\n          success\n          title=\"Success\"\n          onConfirm={() => {\n            window.history.back();\n            setShowSubmitAlert(false);\n          }}\n        >\n          Test Submitted Successfully.\n        </SweetAlert>\n        <Row className=\"crew-member-profile\">\n          <Col md=\"12\">\n            <Card className=\"member-profile-card\">\n              <Card.Header className=\"d-flex align-items-center justify-content-between\">\n                <Card.Title as=\"h4\" className=\"w-100 d-flex justify-content-between mb-0\">\n                  <div>\n                    Test Details\n                    {calculate_age(demographics?.dob) < 18 ? (\n                      <>\n                        {\" \"}\n                        - <span className=\"crew-minor-text\"> MINOR</span>\n                      </>\n                    ) : null}\n                    {CONFIG.isWhiteLabel\n                      ? ` - ${newTestCreate?.barcode || \"\"}`\n                      : newTestCreate.sequenceNo\n                      ? ` - ${newTestCreate.sequenceNo}`\n                      : \"\"}\n                  </div>\n                  {newTestCreate.barcode && (\n                    <>\n                      <div className=\"d-flex align-items-center  column-gap-50\">\n                        <div className=\"d-flex align-items-center qr-code-download w-75\">\n                          {/* <i className=\"fas fa-download\"></i> */}\n                          <span className=\"mx-2\">Patient QR Code:</span>\n                          <img\n                            src={QrCodeDownloadIcon}\n                            alt=\"qr\"\n                            className=\"cursor-pointer\"\n                            width=\"30\"\n                            onClick={downloadQRCode}\n                          />\n\n                          <div\n                            className=\"qrCodeWrapper text-center\"\n                            ref={downloadRef}\n                            style={{ position: \"absolute\", left: \"-9999px\" }}\n                          >\n                            <div className=\"d-flex justify-content-center align-items-center\">\n                              <QRCode\n                                id=\"qr-gen-view\"\n                                ecLevel={\"H\"}\n                                className=\"text-center px-4\"\n                                value={JSON.stringify(qrResponseJOSN(Employee, Employee?.id) || \"\")}\n                                enableCORS={true}\n                                logoImage={whiteLabelLogo}\n                                size=\"250\"\n                                logoHeight={\"50\"}\n                                logoWidth={\"50\"}\n                                fgColor={\"#000\"}\n                                bgColor={\"#fff\"}\n                              />\n                            </div>\n                            <div className=\"text-center fs-4 fw-bold qrSubdiv\">{`${toTitleCase(\n                              Employee.firstName\n                            )} ${toTitleCase(Employee.lastName)}`}</div>\n                          </div>\n                        </div>\n\n                        <CloseButton\n                          onClick={() => {\n                            if (history.length > 1) {\n                              history.goBack();\n                            } else {\n                              history.push(\"/admin\");\n                            }\n                          }}\n                          variant=\"white\"\n                        />\n                      </div>\n                    </>\n                  )}\n                </Card.Title>\n              </Card.Header>\n              <Card.Body className=\"card-text py-3\" style={{ backgroundColor: \"#f6fbff\" }}>\n                <Form className=\"crew-member-profile\">\n                  <Row>\n                    <Col md=\"12\">\n                      <div className=\"testAdmin createClientsWrapper\">\n                        <span className=\"mx-3 fs-5 fw-bold\">Demographic Information</span>\n                        <div className=\"crew-profile-info section-testDetails\">\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">First Name</label>\n                            <Form.Control\n                              readOnly={editButton}\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setEmployee({ ...Employee, firstName: getValidName(e.target.value) })}\n                              value={Employee?.firstName}\n                              defaultValue={demographics?.firstName}\n                              placeholder={`${!editButton ? \"Enter First Name \" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Last Name</label>\n                            <Form.Control\n                              readOnly={editButton}\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setEmployee({ ...Employee, lastName: getValidName(e.target.value) })}\n                              value={Employee?.lastName}\n                              defaultValue={demographics?.lastName}\n                              placeholder={`${!editButton ? \"Enter Last Name \" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Date of Birth</label>\n                            {editButton ? (\n                              <Form.Control\n                                readOnly={editButton}\n                                value={formatDateOfBirthDOB(Employee?.dob)}\n                                defaultValue={formatDateOfBirthDOB(demographics?.dob)}\n                                placeholder=\"Date of Birth\"\n                                type=\"text\"\n                              />\n                            ) : (\n                              <div>\n                                <SingleDatePicker\n                                  onApply={(event, picker) => {\n                                    setEmployee({ ...Employee, dob: moment(picker.startDate).format(\"YYYY-MM-DD\") });\n                                  }}\n                                  value={dataOfBirthParse(Employee?.dob)}\n                                  startDate={dataOfBirthParse(Employee?.dob)}\n                                />\n                              </div>\n                            )}\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Phone Number</label>\n                            {editButton ? (\n                              <Form.Control\n                                className={`${!editButton ? \"modalInput underlinedText\" : \"underlinedText\"}`}\n                                onMouseOver={(e) => {\n                                  editButton ? (e.target.style.cursor = \"pointer\") : (e.target.style.cursor = \"auto\");\n                                  e.target.style.textDecoration = \"underline\";\n                                }}\n                                onClick={() =>\n                                  editButton\n                                    ? Employee?.phoneNumber && window.open(`tel:+1${Employee.phoneNumber}`)\n                                    : false\n                                }\n                                onChange={(e) => setEmployee({ ...Employee, phoneNumber: setPhoneNo(e.target.value) })}\n                                readOnly\n                                maxLength={15}\n                                value={formatPhoneNumber(Employee?.phoneNumber, Employee?.countryCode || \"+1\", true)}\n                                defaultValue={formatPhoneNumber(\n                                  Employee?.phoneNumber,\n                                  Employee?.countryCode || \"+1\",\n                                  true\n                                )}\n                                placeholder={`${!editButton ? \"Enter Phone Number \" : \"\"}`}\n                                type=\"text\"\n                              />\n                            ) : (\n                              <PhoneNoInput\n                                error={setPhoneError}\n                                handleChange={(e) => {\n                                  setEmployee({ ...Employee, phoneNumber: e });\n                                }}\n                                value={formatPhoneWithOutSpaces(Employee?.phoneNumber, Employee?.countryCode || \"+1\")}\n                                cssCode={\"crewPhoneInput w-100\"}\n                              />\n                            )}\n                          </Form.Group>\n\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Email Address</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput underlinedText\" : \"underlinedText\"}`}\n                              onMouseOver={(e) => {\n                                editButton ? (e.target.style.cursor = \"pointer\") : (e.target.style.cursor = \"auto\");\n                                e.target.style.textDecoration = \"underline\";\n                              }}\n                              onClick={() =>\n                                editButton ? Employee?.email && window.open(`mailto:${Employee.email}`) : false\n                              }\n                              onChange={(e) => setEmployee({ ...Employee, email: e.target.value })}\n                              value={Employee?.email}\n                              readOnly={editButton}\n                              defaultValue={test?.email}\n                              placeholder={`${!editButton ? \"Enter Email \" : \"\"}`}\n                              type=\"email\"\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\" readOnly={editButton} plaintext>\n                            {calculate_age(demographics?.dob) > 18 ? (\n                              <label className=\"modalLineHeaders mt-0 text-capitalize\">ID Number</label>\n                            ) : (\n                              <label>SSN</label>\n                            )}\n                            <Form.Control\n                              readOnly={editButton}\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              value={Employee?.idNumber}\n                              onChange={(e) => setEmployee({ ...Employee, idNumber: e.target.value })}\n                              defaultValue={formatIDNo()}\n                              placeholder=\"ID Number\"\n                              type=\"text\"\n                            />\n                          </Form.Group>\n\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"mt-0 modalLineHeaders text-capitalize\">Address</label>\n\n                            <AutoCompleteAddress\n                              readOnly={editButton}\n                              value={Employee?.street}\n                              handleChange={handleUpdateAddress}\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"mt-0 modalLineHeaders text-capitalize\">Address 2</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              readOnly={editButton}\n                              onChange={(e) => setEmployee({ ...Employee, street2: e.target.value })}\n                              value={Employee?.street2 || \"\"}\n                              defaultValue={demographics?.street2 || \"\"}\n                              placeholder={`${!editButton ? \"Enter Address 2 \" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"mt-0 modalLineHeaders text-capitalize\">City</label>\n                            <Form.Control\n                              readOnly={editButton}\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setEmployee({ ...Employee, city: e.target.value })}\n                              value={Employee?.city}\n                              defaultValue={demographics?.city}\n                              placeholder={`${!editButton ? \"Enter City\" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">State</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              readOnly={editButton}\n                              onChange={(e) => setEmployee({ ...Employee, state: e.target.value })}\n                              value={Employee?.state}\n                              defaultValue={demographics?.state}\n                              maxLength={35}\n                              placeholder={`${!editButton ? \"Enter Country\" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Postal Code</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              onChange={(e) => setEmployee({ ...Employee, zip: e.target.value })}\n                              readOnly={editButton}\n                              value={Employee?.isoCode === \"US\" ? formatZip(Employee?.zip) : Employee?.zip}\n                              defaultValue={Employee?.isoCode === \"US\" ? formatZip(Employee?.zip) : Employee?.zip}\n                              placeholder={`${!editButton ? \"Enter Postal Code \" : \"\"}`}\n                              maxLength={10}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                        </div>\n                        <span className=\"mx-3 fs-5 fw-bold\">Insurance Information</span>\n                        <div className=\"crew-profile-info-cl-3  section-testDetails\">\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders  mt-0 text-capitalize\">Payer </label>\n                            <Select\n                              className=\"w-100 roleSelector\"\n                              options={INSURANCE_PROVIDER}\n                              blurInputOnSelect={true}\n                              isDisabled={editButton}\n                              defaultValue={null}\n                              menuPlacement=\"auto\"\n                              placeholder=\"Select Payer\"\n                              value={\n                                Employee?.insurance_name\n                                  ? { label: Employee?.insurance_name, value: Employee?.insuranceCompanyCode }\n                                  : null\n                              }\n                              onChange={(e) => {\n                                setEmployee({ ...Employee, insuranceCompanyCode: e.value, insurance_name: e.label });\n                              }}\n                            />\n                          </div>\n                          {!CUSTOM_INS.includes(Employee?.insuranceCompanyCode) && (\n                            <>\n                              <Form.Group className=\"form-group-wrapper\">\n                                <label className=\"mt-0 modalLineHeaders text-capitalize\">Member ID</label>\n                                <Form.Control\n                                  readOnly={editButton}\n                                  className={`${!editButton ? \"modalInput\" : \"\"}`}\n                                  onChange={(e) => setEmployee({ ...Employee, insurance_number: e.target.value })}\n                                  value={Employee?.insurance_number}\n                                  placeholder={`${!editButton ? \"Enter Member ID\" : \"\"}`}\n                                  type=\"text\"\n                                />\n                              </Form.Group>\n\n                              <Form.Group className=\"form-group-wrapper\">\n                                <label className=\"mt-0 modalLineHeaders text-capitalize\">Group ID</label>\n                                <Form.Control\n                                  readOnly={editButton}\n                                  className={`${!editButton ? \"modalInput\" : \"\"}`}\n                                  onChange={(e) => setEmployee({ ...Employee, insuranceGroupId: e.target.value })}\n                                  value={Employee?.insuranceGroupId}\n                                  placeholder={`${!editButton ? \"Enter Group ID\" : \"\"}`}\n                                  type=\"text\"\n                                />\n                              </Form.Group>\n                            </>\n                          )}\n                        </div>\n                        <span className=\"mx-3 fs-5 fw-bold\">Chain of Custody</span>\n                        <div className=\"section-testDetails w-100\">\n                          <div className=\"crew-profile-info\">\n                            <Form.Group className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders mt-0 text-capitalize\">Date Collected</label>\n                              <Form.Control\n                                type=\"datetime-local\"\n                                readOnly={custodyButtonStatus()}\n                                placeholder=\"Date Collected\"\n                                value={\n                                  newTestCreate?.createdAt\n                                    ? moment(newTestCreate?.createdAt).format(\"YYYY-MM-DDTHH:mm\")\n                                    : \"\"\n                                }\n                                onChange={(e) => setTestCreate({ ...newTestCreate, createdAt: e.target.value })}\n                              />\n                            </Form.Group>\n\n                            <Form.Group className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders mt-0 text-capitalize\">Date Received</label>\n                              <Form.Control\n                                type=\"datetime-local\"\n                                readOnly={custodyButtonStatus()}\n                                placeholder=\"Date Received\"\n                                value={getRecviedDateFromSrNo(newTestCreate)}\n                                onChange={(e) => setTestCreate({ ...newTestCreate, receivedDate: e.target.value })}\n                              />\n                            </Form.Group>\n                            <Form.Group className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders mt-0 text-capitalize\">Date Resulted</label>\n                              <Form.Control\n                                type=\"datetime-local\"\n                                readOnly={custodyButtonStatus()}\n                                placeholder=\"Result Date\"\n                                value={\n                                  newTestCreate?.result\n                                    ? newTestCreate?.resultDateTime\n                                      ? moment(newTestCreate?.resultDateTime).format(\"YYYY-MM-DDTHH:mm\")\n                                      : newTestCreate?.resultDate\n                                      ? moment(newTestCreate?.resultDate).format(\"YYYY-MM-DDTHH:mm\")\n                                      : moment(newTestCreate?.updatedAt).format(\"YYYY-MM-DDTHH:mm\")\n                                    : \"\"\n                                }\n                                onChange={(e) => setTestCreate({ ...newTestCreate, resultDateTime: e.target.value })}\n                              />\n                            </Form.Group>\n                            <Form.Group className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders mt-0 text-capitalize\">Date Released </label>\n                              <Form.Control\n                                type=\"datetime-local\"\n                                readOnly={newTestCreate?.releaseStatus !== \"Confirmed\" || editButton}\n                                placeholder=\"Date Released\"\n                                value={\n                                  newTestCreate?.releaseDate\n                                    ? moment(newTestCreate?.releaseDate).format(\"YYYY-MM-DDTHH:mm\")\n                                    : \"\"\n                                }\n                                onChange={(e) => setTestCreate({ ...newTestCreate, releaseDate: e.target.value })}\n                              />\n                            </Form.Group>\n                          </div>\n                          <div className=\"crew-profile-info \">\n                            {CONFIG.clientID === ALTA_NEW_ID ? (\n                              <div className=\"form-group-wrapper\"></div>\n                            ) : (\n                              <div className=\"form-group-wrapper\">\n                                <label className=\"modalLineHeaders  mt-0 text-capitalize\">Collected By </label>\n                                <Select\n                                  className=\"w-100 roleSelector\"\n                                  options={collectorList}\n                                  isDisabled={custodyButtonStatus()}\n                                  blurInputOnSelect={true}\n                                  defaultValue={null}\n                                  menuPlacement=\"auto\"\n                                  //value={getSelectedTester()}\n                                  placeholder=\"Select Collected By\"\n                                  value={getTesterDetails()}\n                                  onChange={getSelectedTester}\n                                />\n                              </div>\n                            )}\n                            <div className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders  mt-0 text-capitalize\">Received By</label>\n                              <Select\n                                className=\"w-100 roleSelector\"\n                                options={usersData}\n                                isDisabled={custodyButtonStatus()}\n                                blurInputOnSelect={true}\n                                defaultValue={null}\n                                menuPlacement=\"auto\"\n                                placeholder=\"Select Received By\"\n                                value={\n                                  newTestCreate.scanByLabUserName\n                                    ? {\n                                        label: newTestCreate.scanByLabUserName,\n                                        value: newTestCreate.scanByLabUserName,\n                                      }\n                                    : null\n                                }\n                                onChange={(e) =>\n                                  setTestCreate({\n                                    ...newTestCreate,\n                                    scanByLabUserName: e.label,\n                                    scanByLabUserID: e.value,\n                                  })\n                                }\n                              />\n                            </div>\n\n                            <div className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders  mt-0 text-capitalize\">Resulted By</label>\n                              <Select\n                                className=\"w-100 roleSelector\"\n                                options={usersData}\n                                isDisabled={custodyButtonStatus()}\n                                blurInputOnSelect={true}\n                                defaultValue={null}\n                                menuPlacement=\"auto\"\n                                placeholder=\"Select Resulted By\"\n                                value={\n                                  newTestCreate.StampByName\n                                    ? { label: newTestCreate.StampByName, value: newTestCreate.StampByName }\n                                    : null\n                                }\n                                onChange={(e) => setTestCreate({ ...newTestCreate, StampByName: e.label })}\n                              />\n                            </div>\n                            <div className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders  mt-0 text-capitalize\">Released By </label>\n                              <Select\n                                className=\"w-100 roleSelector\"\n                                options={usersData}\n                                isDisabled={newTestCreate?.releaseStatus !== \"Confirmed\" || editButton}\n                                blurInputOnSelect={true}\n                                defaultValue={null}\n                                menuPlacement=\"auto\"\n                                //value={getSelectedTester()}\n                                placeholder=\"Select Verified By\"\n                                value={getVerifiedDetails()}\n                                onChange={(e) => {\n                                  setTestCreate({\n                                    ...newTestCreate,\n                                    verifiedBy: e.value,\n                                    verifiedByName: e.label,\n                                  });\n                                }}\n                              />\n                            </div>\n                            <div className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders mt-0 text-capitalize\">Custody Status</label>\n                              <input\n                                className=\"modalInput w-100\"\n                                style={{\n                                  color: newTestCreate?.result\n                                    ? \"green\"\n                                    : GET_CUST_COLOR[getValidDep(newTestCreate.pcrStatus)] || \"\",\n                                }}\n                                readOnly\n                                value={newTestCreate?.result ? RECEIVED_BYLAB : getValidDep(newTestCreate.pcrStatus)}\n                              />\n                            </div>\n\n                            <div className=\"form-group-wrapper\">\n                              <label className=\"modalLineHeaders  mt-0 text-capitalize\">Reference Lab:</label>\n\n                              <Select\n                                options={labOptions || []}\n                                blurInputOnSelect={true}\n                                isDisabled={editButton}\n                                menuPlacement=\"auto\"\n                                className=\"w-100 siteSelector\"\n                                placeholder=\"Select Reference Lab\"\n                                isClearable={true}\n                                value={{\n                                  label: newTestCreate?.sendToName,\n                                  value: newTestCreate?.sendToID,\n                                }}\n                                onChange={handelChangeReferenceLab}\n                                // components={{ ValueContainer: ReactSelectCustomContainer }}\n                              />\n                            </div>\n                          </div>\n                        </div>\n                        <span className=\"mx-3 fs-5 fw-bold\">Test Details</span>\n                        <div className=\"crew-profile-info-cl-3  section-testDetails\">\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders  mt-0 text-capitalize\">Test Name </label>\n                            <Select\n                              className=\"w-100 roleSelector\"\n                              options={testOptions}\n                              blurInputOnSelect={true}\n                              isDisabled={editButton || newTestCreate?.result}\n                              defaultValue={null}\n                              menuPlacement=\"auto\"\n                              placeholder=\"Test Name\"\n                              value={\n                                newTestCreate.test_type\n                                  ? testOptions?.find((f) => f.value === newTestCreate.test_type)\n                                  : null\n                              }\n                              onChange={(e) =>\n                                setTestCreate({ ...newTestCreate, testType: e, test_type: e.label, testTypeID: e.id })\n                              }\n                            />\n                          </div>\n\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders  mt-0 text-capitalize\">Accession Number</label>\n                            {editButton ? (\n                              <input\n                                className=\"modalInput w-100\"\n                                readOnly={editButton}\n                                placeholder=\"Accession Number\"\n                                value={newTestCreate?.barcode}\n                                onChange={(e) => {\n                                  setTestCreate({\n                                    ...newTestCreate,\n                                    barcode: e.target.value,\n                                  });\n                                }}\n                              />\n                            ) : (\n                              <div className=\"merged-input-container\">\n                                <input\n                                  className=\"merged-input\"\n                                  style={{ width: \"22%\" }}\n                                  readOnly\n                                  value={newTestCreate?.barcode?.slice(0, 6)}\n                                />\n                                <input\n                                  className=\"merged-input\"\n                                  style={{ width: \"78%\" }}\n                                  readOnly={test?.result}\n                                  placeholder=\"Barcode\"\n                                  value={newTestCreate?.barcode.slice(6)}\n                                  maxLength={\"4\"}\n                                  onChange={(e) => {\n                                    setTestCreate({\n                                      ...newTestCreate,\n                                      barcode: `${newTestCreate?.barcode?.slice(0, 6)}${e.target.value.replace(\n                                        /[^0-9]/g,\n                                        \"\"\n                                      )}`,\n                                    });\n                                  }}\n                                />\n                              </div>\n                            )}\n                          </div>\n                          <div className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders  mt-0 text-capitalize\">Result</label>\n                            {editButton ? (\n                              <>\n                                <span\n                                  className=\"vaccination-status pl-3 cursor-pointer\"\n                                  style={{\n                                    color: test?.resultColor || resultToShow.labelColor,\n                                  }}\n                                  onClick={() => dispatch(showResultPdf(newTestCreate))}\n                                >\n                                  {resultToShow.label}\n                                </span>\n                                {/* <ResultCell test={newTestCreate} /> */}\n                                {/* {resultToShow.label === \"View Detail\" && permission[COMPLETED_TESTS]?.write && (\n                                  <img\n                                    src={EditIcon}\n                                    alt=\"edit icon\"\n                                    width=\"18\"\n                                    style={{ marginLeft: \"10px\", cursor: \"pointer\" }}\n                                    aria-hidden=\"true\"\n                                    onClick={openAssignResultModal}\n                                  />\n                                )} */}\n                              </>\n                            ) : (\n                              // <Select\n                              //   className=\"w-100 roleSelector\"\n                              //   options={resultTypes}\n                              //   blurInputOnSelect={true}\n                              //   defaultValue={null}\n                              //   menuPlacement=\"auto\"\n                              //   value={\n                              //     newTestCreate.result\n                              //       ? { value: newTestCreate.result, label: newTestCreate.result }\n                              //       : null\n                              //   }\n                              //   placeholder=\"Select Result\"\n                              //   onChange={(e) =>\n                              //     setTestCreate({\n                              //       ...newTestCreate,\n                              //       result: e.value,\n                              //       status: \"Processed\",\n                              //     })\n                              //   }\n                              // />\n\n                              <div>\n                                Edit Result\n                                <img\n                                  src={EditIcon}\n                                  alt=\"edit icon\"\n                                  width=\"18\"\n                                  style={{ marginLeft: \"10px\", cursor: \"pointer\" }}\n                                  aria-hidden=\"true\"\n                                  onClick={() => {\n                                    dispatch(setSelectedTestForResult([newTestCreate]));\n                                  }}\n                                />\n                              </div>\n                            )}\n                          </div>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Clinical Comments</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              readOnly={editButton}\n                              onChange={(e) => setEmployee({ ...Employee, clinicalcomment: e.target.value })}\n                              value={Employee?.clinicalcomment}\n                              defaultValue={demographics?.clinicalcomment}\n                              placeholder={`${!editButton ? \"Enter Clinical Comments\" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Laboratory Comments</label>\n                            <Form.Control\n                              className={`${!editButton ? \"modalInput\" : \"\"}`}\n                              readOnly={editButton}\n                              onChange={(e) => setEmployee({ ...Employee, comment: e.target.value })}\n                              value={Employee?.comment}\n                              defaultValue={demographics?.comment}\n                              placeholder={`${!editButton ? \"Enter Laboratory Comments\" : \"\"}`}\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                          <Form.Group className=\"form-group-wrapper\">\n                            <label className=\"modalLineHeaders mt-0 text-capitalize\">Sample Container</label>\n                            <Form.Control\n                              readOnly\n                              value={newTestCreate?.sampleContainer}\n                              defaultValue={newTestCreate?.sampleContainer}\n                              placeholder=\"Sample Container\"\n                              type=\"text\"\n                            />\n                          </Form.Group>\n                          {newTestCreate?.isRestated && (\n                            <>\n                              <Form.Group className=\"form-group-wrapper\">\n                                <label className=\"modalLineHeaders mt-0 text-capitalize\">Result Edit Reason</label>\n                                <Form.Control\n                                  readOnly\n                                  value={newTestCreate?.restatedNote}\n                                  defaultValue={newTestCreate?.restatedNote}\n                                  placeholder=\"Result Edit Reason\"\n                                  type=\"text\"\n                                />\n                              </Form.Group>\n                            </>\n                          )}\n                        </div>\n                      </div>\n                    </Col>\n\n                    <Col md=\"12\" className=\"hsWrapper  mb-2 bg-white\">\n                      <div\n                        className=\"d-flex align-items-center justify-content-between cursor-pointer py-1  fw-bold fs-6\"\n                        onClick={() => setOpenHSForm(!openHSForm)}\n                      >\n                        <span className=\"mx-3\"> Additional Screening Information</span>\n                        {openHSForm ? (\n                          <i className=\"fas fa-chevron-down mx-3\" />\n                        ) : (\n                          <i className=\"fas fa-chevron-up mx-3\" />\n                        )}\n                      </div>\n\n                      {openHSForm && (\n                        <div className=\"testAdmin createClientsWrapper\">\n                          {additionalQuestion?.[0] && (\n                            <OrderAdditionalQuestionView\n                              additionalQuestion={additionalQuestion}\n                              setAdditionalQuestion={(questionList) => setAdditionalQuestion(questionList)}\n                              disabled={true}\n                            />\n                          )}\n                          <div className=\"px-3 py-3 w-100\">\n                            <div className=\"form-group-wrapper mx-2 my-4\">\n                              <strong>Health & Safety Questions:</strong>\n                            </div>\n\n                            <div className=\"first-last-name-wrapper\">\n                              <Select\n                                className=\"w-100 roleSelector\"\n                                options={testSources || []}\n                                blurInputOnSelect={true}\n                                isDisabled={editButton}\n                                defaultValue={null}\n                                menuPlacement=\"auto\"\n                                placeholder=\"Source\"\n                                value={\n                                  Employee?.swabtype\n                                    ? testSources?.filter(\n                                        (f) => f.value.toLowerCase() === Employee?.swabtype?.toLowerCase()\n                                      )\n                                    : null\n                                }\n                                onChange={(e) => setEmployee({ ...Employee, swabtype: e.value })}\n                              />\n\n                              <RadioInput\n                                label={\"Are you an Essential Worker?\"}\n                                options={WORKER_OPT}\n                                handleRadioButtonChange={(e) => setEmployee({ ...Employee, worker: e.target.value })}\n                                input={Employee?.worker}\n                                disabled={editButton}\n                              />\n                            </div>\n\n                            <div className=\"first-last-name-wrapper\">\n                              <RadioInput\n                                label={\"Possible Exposure?\"}\n                                options={POSSIBLE_EXPOSURE_OPT}\n                                handleRadioButtonChange={(e) =>\n                                  setEmployee({ ...Employee, possibleexposure: e.target.value })\n                                }\n                                input={Employee?.possibleexposure}\n                                disabled={editButton}\n                              />\n                              <RadioInput\n                                label={\"Confirmed Exposure?\"}\n                                options={CONFIRMED_EXPOSURE_OPT}\n                                handleRadioButtonChange={(e) =>\n                                  setEmployee({ ...Employee, confirmedexposure: e.target.value })\n                                }\n                                input={Employee?.confirmedexposure}\n                                disabled={editButton}\n                              />\n                            </div>\n\n                            <CheckBoxInput\n                              label=\"Please mark all that apply:\"\n                              options={SYMPTOMS_OPT}\n                              handleButtonChange={(val) => setEmployee({ ...Employee, symptoms: val })}\n                              input={Employee?.symptoms || \"\"}\n                              disabled={editButton}\n                            />\n                            <div className=\"first-last-name-wrapper\">\n                              {Employee.symptoms?.includes(SYMPTOMS.other) && (\n                                <Form.Group className=\"form-group-wrapper\">\n                                  <label className=\"modalLineHeaders mt-0 text-capitalize\">Other Comment</label>\n                                  <Form.Control\n                                    className={`${!editButton ? \"modalInput\" : \"\"}`}\n                                    readOnly={editButton}\n                                    onChange={(e) => setEmployee({ ...Employee, othercomment: e.target.value })}\n                                    value={Employee?.othercomment}\n                                    defaultValue={demographics?.othercomment}\n                                    placeholder={`${!editButton ? \"Enter Other Symptoms\" : \"\"}`}\n                                    type=\"text\"\n                                  />\n                                </Form.Group>\n                              )}\n\n                              <Form.Group className=\"form-group-wrapper\">\n                                <label className=\"modalLineHeaders mt-0 text-capitalize\">Test Comment</label>\n                                <Form.Control\n                                  className={`${!editButton ? \"modalInput\" : \"\"}`}\n                                  readOnly={editButton}\n                                  onChange={(e) => setEmployee({ ...Employee, comment: e.target.value })}\n                                  value={Employee?.comment}\n                                  defaultValue={demographics?.comment}\n                                  placeholder={`${!editButton ? \"Enter Test Comment\" : \"\"}`}\n                                  type=\"text\"\n                                />\n                              </Form.Group>\n                            </div>\n\n                            <div className=\"first-last-name-wrapper\">\n                              {allowToEditQuarantine && (\n                                <>\n                                  <div className=\"form-group-wrapper\">\n                                    <label className=\"text-capitalize mt-0 modalLineHeaders  mt-0 text-capitalize\">\n                                      Quarantined Start\n                                    </label>{\" \"}\n                                    <br />\n                                    <span className=\"vaccination-status pl-3\">\n                                      {formatQuaratineDisplayDate(test?.quarantinedStart)}\n                                    </span>\n                                  </div>\n                                  <div className=\"form-group-wrapper\">\n                                    <label className=\"text-capitalize mt-0 modalLineHeaders mt-0 text-capitalize\">\n                                      Quarantined End\n                                    </label>{\" \"}\n                                    <br />\n                                    <span className=\"vaccination-status pl-3\">\n                                      {formatQuaratineDisplayDate(test?.quarantinedEnd)}\n                                    </span>\n                                  </div>\n                                </>\n                              )}\n                            </div>\n                          </div>\n                        </div>\n                      )}\n                    </Col>\n                    <Col md=\"12\" className=\"additional-info-radios border-right-1\">\n                      <div className=\"justify-content-between d-flex align-items-center\">\n                        <span className=\"mx-3 fs-5 fw-bold\">Documents</span>\n                        <div className=\"plus-icon\">\n                          <i\n                            className={`fas fa-plus-circle fa-lg cursor-pointer w-auto`}\n                            onClick={() => (\n                              setSelectedDocument({ isNew: true, testID: test.id }), setOpenDocumentModal(Employee)\n                            )}\n                          />\n                        </div>\n                      </div>\n\n                      <DocumentList\n                        list={documents}\n                        disabled={editButton}\n                        setDocuments={setDocuments}\n                        appContext={appContext}\n                        setLoading={setLoading}\n                        dropDownOptions={[{ title: \"Download\" }, { title: \"Edit\" }]}\n                        tabelForm\n                        handleEdit={(item) => (\n                          setSelectedDocument({ ...item, isNew: false }), setOpenDocumentModal(Employee)\n                        )}\n                      />\n                    </Col>\n                  </Row>\n\n                  {test && (\n                    <div className=\"text-right w-100\">\n                      {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n\n                      {location?.state?.pendingRelease && (\n                        <>\n                          <Button\n                            className=\"profileButton btn-fill createButtons\"\n                            style={{\n                              marginRight: 10,\n                              marginTop: 10,\n                            }}\n                            variant=\"secondary\"\n                            onClick={async () => {\n                              setLoading(true);\n                              if (test?.result.toLowerCase() === \"positive\") {\n                                const result = await API.sendSMSNotification(\n                                  test.phoneNumber,\n                                  \"Hello, can you please report back to your testing site for further information regarding your test.\"\n                                );\n                                if (result) {\n                                  appContext.showSuccessMessage(\n                                    \"The crew member has been sent a text message to be retested.\"\n                                  );\n                                }\n                                setLoading(false);\n                              } else {\n                                const params = [\n                                  {\n                                    id: test.id,\n                                    phoneNumber: test.phoneNumber,\n                                    email: test.email,\n                                    test_type: TEST_TYPE_VALUE[test.test_type],\n                                    site_name: test.site_name,\n                                    firstName: Employee.firstName,\n                                    siteID: test.siteID,\n                                    lastName: Employee.lastName,\n                                    userName: appContext.user.name,\n                                    type: \"invalid\",\n                                  },\n                                ];\n                                try {\n                                  await GQAPI.sendSmsToCrews(params);\n                                  appContext.showSuccessMessage(\n                                    \"The crew member has been sent a message to be retested.\"\n                                  );\n                                  setLoading(false);\n                                } catch (err) {\n                                  console.log(err.message);\n                                  appContext.showErrorMessage(err.message);\n                                  setLoading(false);\n                                }\n                              }\n                            }}\n                          >\n                            Retest\n                          </Button>\n                        </>\n                      )}\n                      <Button\n                        className=\"profileButton btn-fill createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        disabled={!test?.sequenceNo}\n                        variant=\"primary\"\n                        // onClick={async () => {\n                        //   appContext.showRequisitionForm({ test, signature, testNames });\n                        // }}\n                        onClick={() => showReqForm({ test, signature, testNames })}\n                      >\n                        Requisition Form\n                      </Button>\n                      <div style={{ position: \"absolute\", left: \"-10000px\" }} ref={barcodeRef}>\n                        <LabBarCode code={test.barcode} />\n                      </div>\n                      {test?.result && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"primary\"\n                          onClick={async () => emailTest(test)}\n                        >\n                          Resend Results\n                        </Button>\n                      )}\n\n                      {(test?.result === \"Positive\" || test?.result === \"Fail\") &&\n                        !CONFIG.isWhiteLabel &&\n                        allowToEditQuarantine && (\n                          <Button\n                            className=\"profileButton btn-fill createButtons\"\n                            style={{\n                              marginRight: 10,\n                              marginTop: 10,\n                            }}\n                            variant=\"secondary\"\n                            onClick={() => setOpenQuaratined(true)}\n                          >\n                            Quarantined\n                          </Button>\n                        )}\n\n                      {editButton && permission?.test?.editTest && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"primary\"\n                          onClick={() => {\n                            setEditButton(false);\n                          }}\n                        >\n                          Edit Info\n                        </Button>\n                      )}\n                      {!editButton && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"secondary\"\n                          onClick={() => {\n                            if (newTestCreate.barcode !== editInfo.barcode) {\n                              setChangeBarcodeConfirmation(true);\n                            } else {\n                              handleSave();\n                            }\n                          }}\n                        >\n                          Save\n                        </Button>\n                      )}\n                      {!editButton && (\n                        <Button\n                          className=\"profileButton btn-fill createButtons\"\n                          style={{\n                            marginRight: 10,\n                            marginTop: 10,\n                          }}\n                          variant=\"primary\"\n                          onClick={handleCancelButton}\n                        >\n                          Cancel\n                        </Button>\n                      )}\n                    </div>\n                  )}\n\n                  <div className=\"clearfix\" />\n                </Form>\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n      </Container>\n\n      {openQuarantined && (\n        <QuarantineModal test={test} handleSave={handleSaveQuarantine} handleClose={() => setOpenQuaratined(false)} />\n      )}\n\n      {openCreator && (\n        <TestModal\n          newTestCreate={newTestCreate}\n          handleCloseCreateTest={handleCloseCreateTest}\n          createTest={updateTest}\n          setTestCreate={setTestCreate}\n          clients={appContext.clients}\n          sites={appContext.sites}\n          labs={appContext.labs}\n          isNew={false}\n          users={users}\n        />\n      )}\n\n      {openDocumentModal && (\n        <DocumentForm\n          emp={openDocumentModal}\n          document={selectedDocument}\n          handleClose={() => {\n            setOpenDocumentModal(null);\n          }}\n          setLoading={setLoading}\n          appContext={appContext}\n          setDocuments={setDocuments}\n          cssClass=\"seperateModal\"\n        />\n      )}\n\n      {openDataChangeConfirmation && (\n        <ConfirmationModal\n          show={openDataChangeConfirmation}\n          title=\"Test Update Alert\"\n          message={`New Changes occures, are you want to update your edit info!`}\n          handleConfirm={handleDataChangeConfirm}\n        />\n      )}\n      {changeBarcodeConfirmation && (\n        <ConfirmationModal\n          show={changeBarcodeConfirmation}\n          title={`Change ${stringConstant.barcode} Confirmation`}\n          message={`Are you sure you want to edit the ${stringConstant.barcode}. from ${editInfo.barcode} to ${newTestCreate.barcode} for this test?`}\n          handleConfirm={handleChangeBarcodeNo}\n          isPreRegister={true}\n          handleClose={() => setChangeBarcodeConfirmation(false)}\n        />\n      )}\n    </>\n  ) : (\n    <Loader />\n  );\n}\n\nexport default TestDetails;\n","import React, { useState, useMemo, useEffect } from \"react\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport Select from \"react-select\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport { countryListAllIsoData } from \"constant\";\nimport api from \"api\";\nimport { getValidName } from \"utils\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport { isValidPhoneWithCode } from \"utils\";\n\nconst EmployeeModal = (props) => {\n  const { handleClose, selectItem, handleSave } = props;\n  const getObject = () => {\n    const country = countryListAllIsoData.find((f) => f.name === selectItem.country) || { code: \"US\" };\n\n    return { ...selectItem, isoCode: country.code };\n  };\n\n  const [error, setError] = useState(\"\");\n  const [newEmployee, setNewEmployee] = useState(getObject());\n\n  const handleSaveChange = async (newEmployee) => {\n    if (!newEmployee.firstName || !newEmployee.firstName.trim()) {\n      setError(\"First Name required\");\n      return;\n    }\n\n    if (!newEmployee.lastName || !newEmployee.lastName.trim()) {\n      setError(\"Last Name is required\");\n      return;\n    }\n\n    if (!newEmployee.email || !newEmployee.email.trim()) {\n      setError(\"Email is required\");\n      return;\n    }\n\n    if (!isValidEmail(newEmployee.email)) {\n      setError(\"Invalid Email\");\n      return;\n    }\n\n    if (!newEmployee.phoneNumber) {\n      setError(\"Phone Number is required\");\n      return;\n    }\n    if (!isValidPhoneWithCode(newEmployee.phoneNumber)) {\n      setError(\"Invalid Phone Number\");\n      return;\n    }\n\n    handleSave(newEmployee);\n  };\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setNewEmployee({ ...newEmployee, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setNewEmployee({ ...newEmployee, ...addressObj });\n    }\n  };\n\n  const handlePhoneNo = (e) => {\n    setNewEmployee({\n      ...newEmployee,\n      phone_number: e,\n    });\n  };\n\n  return (\n    <Modal show animation={true} onHide={() => handleClose()} backdrop=\"static\" centered size={\"lg\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {newEmployee.isNew ? \"Create New Employee\" : \"Edit Employee Data\"}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"createClientsWrapper\">\n          <div className=\"leftSide\">\n            <div className=\"row mb-3\">\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">First Name:</label>\n                <input\n                  value={newEmployee?.firstName}\n                  className=\"modalInput\"\n                  placeholder=\"First Name\"\n                  style={{\n                    width: \"100%\",\n                  }}\n                  onChange={(e) =>\n                    setNewEmployee({\n                      ...newEmployee,\n                      firstName: getValidName(e.target.value),\n                    })\n                  }\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders mt-0\">Last Name:</label>\n                <input\n                  type=\"text\"\n                  className=\"modalInput\"\n                  value={newEmployee.lastName}\n                  placeholder=\"Last Name\"\n                  onChange={(e) => setNewEmployee({ ...newEmployee, lastName: getValidName(e.target.value) })}\n                />\n              </div>\n\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Email:</label>\n                <input\n                  type=\"email\"\n                  className=\"modalInput\"\n                  placeholder=\"Email\"\n                  value={newEmployee.email}\n                  onChange={(e) => {\n                    let val = e.target.value;\n                    if (val) val = val.toLowerCase();\n                    setNewEmployee({\n                      ...newEmployee,\n                      email: val,\n                    });\n                  }}\n                />\n              </div>\n\n              <div className=\"form-group-wrapper phoneInput position-relative\">\n                <label className=\"modalLineHeaders\">Phone Number:</label>\n                <PhoneNoInput\n                  handleChange={(e) =>\n                    setNewEmployee({\n                      ...newEmployee,\n                      phoneNumber: e,\n                    })\n                  }\n                  value={newEmployee?.phoneNumber}\n                />\n              </div>\n\n              <div className=\"d-flex align-items-center column-gap-50\">\n                <label>Test Request:</label>\n                <SwitchToggle\n                  checked={newEmployee.isTest}\n                  handleChange={(e) =>\n                    setNewEmployee({\n                      ...newEmployee,\n                      isTest: e.target.checked,\n                    })\n                  }\n                />\n              </div>\n            </div>\n\n            {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n          </div>\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <Button variant=\"secondary\" className=\"headerButton btn-fill\" onClick={() => handleSaveChange(newEmployee)}>\n          {newEmployee.isNew ? \"Create\" : \"Update\"}\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default EmployeeModal;\n","import { TABLE_COLUMN_TYPES } from \"constants/personalization\";\nexport const ARCHIVE_PERSONALIZATION = [\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    columnWidth : \"60px\"\n\n  },\n  \n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    columnWidth : \"60px\"\n\n  },\n  {\n    itemKey: \"status\",\n    title: \"Status\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    columnWidth : \"60px\",\n    type :TABLE_COLUMN_TYPES.text,\n    customCellRenderer : false\n  },\n  \n  {\n    itemKey: \"message\",\n    title: \"Reason\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth : \"60px\"\n  },\n];\n","import API from \"api\";\nimport Filter from \"components/Filter\";\nimport {\n  PAGE_LIMIT,\n  PERSONALISATION_KEY,\n  PRE_REGISTRATION_STATUS,\n  CONFIG,\n  ORDER_EMPTY_OBJECT,\n  MESSAGE_MODES,\n  EMPLOYEE,\n  ORDER,\n} from \"constant\";\nimport { AppContext } from \"context/app-context\";\nimport { useContext, useEffect, useMemo, useCallback, useState, useRef } from \"react\";\nimport { debounce } from \"debounce\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport \"react-activity/dist/Bounce.css\";\nimport { Card, Col, Container, Modal, Row } from \"react-bootstrap\";\nimport { useLocation } from \"react-router-dom\";\nimport { useInitialRender } from \"components/useInitialRender\";\nimport {\n  parseBooleanValue,\n  sortingFilterInLC,\n  sortTestList,\n  draggablePersonalizationLocalStorage,\n  getClientSpecificString,\n} from \"utils\";\nimport { t } from \"stringConstants\";\n\nimport ExportToExcel from \"components/ExportToExcel\";\nimport Icon from \"components/Icon\";\nimport Loader from \"components/Loader/Loader\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport { TABLE_QUICK_TOOLS } from \"constant\";\nimport MainTable from \"components/Table/MainTable\";\nimport EmployeeModal from \"components/Hipaa/Modal/EmployeeModal\";\nimport PGPagination from \"components/Pagination/PGPagination\";\nimport NotesModal from \"components/Notes/NotesModal\";\nimport { useHistory } from \"react-router-dom\";\nimport { UPLOAD_CSV_FILE } from \"constant\";\nimport { setMessage } from \"../../../src/store/features/general/generalAction\";\nimport { fetchAllProviders, renderingProviderAsync } from \"store/features/providers/providersSlice\";\nimport { setSelectedEmployeeForTest } from \"store/features/employees/employeesSlice\";\nimport { selectedProvider } from \"store/features/providers/providersSelectors\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport { LAB_MEMBER_PERSONALIZE } from \"constants/personalization\";\nimport { IGNORE_INS } from \"constant\";\nimport { selectClient } from \"store/features/authentication/authenticationSelectors\";\nimport { locationsSelectors } from \"store/features/locations/locationsSelectors\";\nimport { fetchAllLocations } from \"store/features/locations/locationsSlice\";\nimport { setArchivedList } from \"store/features/general/generalSlice\";\nimport { ARCHIVE_PERSONALIZATION } from \"views/Archive/archivePersonalization\";\n\nconst PatientView = () => {\n  const [employees, setEmployees] = useState([]);\n  const history = useHistory();\n  const [filteredEmployees, setFilteredEmployees] = useState([]);\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n  const [selectedEmployee, setSelectedEmployee] = useState({ isNew: true });\n  const [openEmployeeModal, setOpenEmployeeModal] = useState(false);\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [noteModal, setNoteModal] = useState(null);\n  const initialRender = useInitialRender();\n  const [showConfirmation, setShowConfirmation] = useState(false);\n\n  const [personalize, setPersonalize] = useState([]);\n  const [searchTerms, setSearchTerms] = useState([]);\n\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const permission = useSelector(userGivenPermission);\n  const userClientData = useSelector(selectClient);\n  const [filterTabIndex, setFilterTabIndex] = useState(0);\n\n  const quickTools = [\n    TABLE_QUICK_TOOLS.checkbox,\n    permission[EMPLOYEE]?.editPatientRecord && TABLE_QUICK_TOOLS.edit,\n    permission[EMPLOYEE]?.addPatientNote && TABLE_QUICK_TOOLS.notes,\n  ];\n  const { providers } = useSelector(selectedProvider);\n  const dispatch = useDispatch();\n  const [archiveStatusList, setArchiveStatusList] = useState([]);\n  const [users, setUsers] = useState([]);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [loading, setLoading] = useState(true);\n  const location = useLocation();\n  const [triggerFilter, setTriggerFilter] = useState(false);\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [pageNo, setPageNo] = useState(1);\n  const [stats, setStats] = useState(\"\");\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);\n  const tempOrderRef = useRef(null);\n\n  // const searchTerms = [\n  //   \"First Name\",\n  //   \"Last Name\",\n  //   \"Email\",\n  //   \"Phone\",\n  //   \"Gender\",\n  //   \"City\",\n  //   \"State\",\n  //   \"Zip Code\",\n  //   \"Primary Payer\",\n  //   \"Member ID\",\n  //   \"Additional Payer\",\n  //   \"Additional Member ID\",\n  //   \"Last Updated\",\n  //   \"Eligibility\",\n  //   \"Note\",\n  //   \"Status\",\n  //   \"Date of Birth\",\n  //   \"Referring Physician\",\n  //   \"Client\",\n  // ];\n\n  // const searchTerms = useMemo(() => {\n  //   return LAB_MEMBER_PERSONALIZE.map((item) => item.title);\n  // }, [LAB_MEMBER_PERSONALIZE]);\n\n  const appContext = useContext(AppContext);\n\n  const defaultConfig = useMemo(() => {\n    return getClientSpecificString();\n  }, []);\n\n  const isSiteUser = useMemo(() => {\n    return !!appContext?.user?.isSite();\n  }, [appContext]);\n\n  const itemsToMap = useMemo(() => {\n    const list = filteredEmployees;\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredEmployees, currentPage]);\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case \"eligibilityStatus\":\n        appContext.showEligibilityDetails({\n          ...row,\n          ...row.eligibilityStatus,\n          ins_name_f: row.firstName,\n          ins_name_l: row.lastName,\n          ins_dob: row.dob,\n        });\n        break;\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n      case \"firstName\":\n      case \"lastName\":\n        history.push(\"/admin/order/\", { employeeID: row?.mdID });\n        break;\n      case TABLE_QUICK_TOOLS.edit:\n        appContext.showPatient({ ...row, isNew: false });\n        setCheckboxes([]);\n        break;\n      case TABLE_QUICK_TOOLS.notes:\n        setNoteModal(row);\n        setCheckboxes([]);\n        break;\n      default:\n        break;\n    }\n  };\n\n  const labLocations = useSelector(locationsSelectors);\n\n  useEffect(() => {\n    if (initialRender) return;\n\n    if (appContext.patientObject && appContext.patientObject !== 0) {\n      const eventType = appContext.patientObject.opType;\n      const model = appContext.patientObject.element;\n\n      let newList = [...employees];\n\n      if (eventType === \"DELETE\") {\n        const updatedEmployees = employees.filter((t) => t.mdID !== model.mdID);\n        setEmployees(updatedEmployees);\n        setFilteredEmployees(filteredEmployees.filter((t) => t.mdID !== model.mdID));\n        setTotalRecord(totalRecord - 1);\n        return;\n      }\n\n      const hasValidSiteID = CONFIG.siteID !== null && CONFIG.siteID !== undefined;\n      const matchesSiteOrProvider =\n        !hasValidSiteID ||\n        (CONFIG.allowSites || []).includes(model.siteID) ||\n        model.provider?.some((provider) => (CONFIG.allowSites || []).includes(provider.value));\n\n      if (eventType === \"INSERT\" && matchesSiteOrProvider) {\n        newList.unshift(model);\n        setTotalRecord(totalRecord + 1);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.mdID === model.mdID);\n        if (index !== -1) {\n          if (matchesSiteOrProvider) {\n            newList.splice(index, 1, model);\n          } else {\n            newList = newList.filter((f) => f.mdID !== model.mdID);\n          }\n        } else {\n          if (matchesSiteOrProvider) {\n            newList.unshift(model);\n          }\n        }\n      }\n      setEmployees(newList);\n      refreshList(newList);\n    }\n  }, [appContext.patientObject]);\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? filteredEmployees.map((t) => t.id) : []);\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (key === \"firstName\") {\n          return obj[\"first\"] && obj[\"first\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"lastName\") {\n          return obj[\"last\"] && obj[\"last\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"Show\") {\n          return obj.showId && appContext.getSiteName(obj.showId).toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"step\") {\n          return obj.step && PRE_REGISTRATION_STATUS[obj.step].toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"isVaccinated\") {\n          return parseBooleanValue(obj.isVaccinated).toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"sex\") {\n          return obj[key] && obj[key] == filters[key];\n        }\n\n        if (key === \"ordered\") {\n          return obj[\"testSend\"] === \"true\" && obj[\"testSendQty\"];\n        }\n        if (key === \"shipped\") {\n          return obj[\"orderStatus\"] && obj[\"orderStatus\"] !== \"delivered\";\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n    return models;\n  };\n\n  useEffect(() => {\n    dispatch(fetchAllLocations({ noShowLoader: true }));\n    const sortingFilters = sortingFilterInLC.get();\n    // const employeePersonalization = personalisationInLC.get(PERSONALISATION_KEY.EMPLOYEE);\n\n    const employeePersonalization = draggablePersonalizationLocalStorage.get(\n      appContext.user.sub,\n      PERSONALISATION_KEY.EMPLOYEE,\n      isSiteUser && CONFIG.allowSites?.length < 2\n        ? LAB_MEMBER_PERSONALIZE.filter((t) => t.itemKey !== \"site_name\")\n        : LAB_MEMBER_PERSONALIZE\n    );\n    const personalizeData = employeePersonalization?.filter((item) => item.itemKey);\n    const serarchTermData = personalizeData.map((item) => item.title);\n    setSearchTerms(serarchTermData);\n    setPersonalize(personalizeData);\n\n    if (sortingFilters.sites.sortBy) {\n      setSortDescending(sortingFilters.sites.sortDescending);\n      setSortBy(sortingFilters.sites.sortBy);\n    }\n    dispatch(fetchAllProviders({ noShowLoader: true }));\n    dispatch(renderingProviderAsync({ noShowLoader: true }));\n  }, []);\n\n  useEffect(() => {\n    // Ensure userClientData and necessary fields are available before filtering\n    setPersonalize((prevData) =>\n      prevData.filter((item) => {\n        // Remove 'eligibilityStatus' item if eligibility is false\n        return !(item.itemKey === \"eligibilityStatus\" && !userClientData?.setting?.eligibility);\n      })\n    );\n  }, [userClientData]);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      loadEmployees(Object.keys(filter).length === 0 ? { id: 1 } : filter, pageNo, sortBy, sortDescending);\n    }\n  }, [pageNo]);\n\n  const fetchFromApi = useCallback(\n    debounce((filter, page, sortBy, sortDescending) => {\n      loadEmployees(filter, page, sortBy, sortDescending);\n    }, 800),\n    []\n  );\n\n  useEffect(() => {\n    if (location.state) {\n      setShowFilter(true);\n      setFilter({ ...filter, [location.state.term]: location.state.name });\n      setTriggerFilter(true);\n    }\n    setTimeout(() => setShowFilter(false), 1);\n  }, [location.state]);\n\n  useEffect(() => {\n    setPageNo(1);\n\n    fetchFromApi({ ...filter }, 1, sortBy, sortDescending);\n  }, [filter, sortBy, sortDescending]);\n\n  const handleEligibilityCheck = async () => {\n    if (checkboxes.length > 0) {\n      const emps = filteredEmployees.filter((f) => checkboxes.includes(f.id));\n      try {\n        const empEligibilityToCheck = emps[0];\n\n        if (\n          !empEligibilityToCheck?.insuranceCompanyCode ||\n          IGNORE_INS.includes(empEligibilityToCheck.insuranceCompanyCode)\n        ) {\n          dispatch(setMessage(\"Payer does not support realtime eligibility.\", MESSAGE_MODES.info));\n          setCheckboxes([]);\n          return;\n        }\n        setCheckboxes([]);\n        setLoading(true);\n        const res = await API.checkEligibility(empEligibilityToCheck);\n\n        const { error, data } = res || {};\n\n        const eligibilityError = Array.isArray(error) ? error[0]?.error_mesg : error?.error_mesg;\n\n        if (error) {\n          dispatch(setMessage(eligibilityError || \"Not Eligible\", MESSAGE_MODES.info, \"Not Eligible\"));\n        } else if (data) {\n          appContext.showEligibilityDetails({ ...empEligibilityToCheck, ...data });\n        } else {\n          dispatch(setMessage(eligibilityError || \"Not Eligible\", MESSAGE_MODES.info, \"Not Eligible\"));\n        }\n        setLoading(false);\n      } catch (err) {\n        console.log(\"Error: -\", err);\n      }\n    }\n  };\n\n  const handleOpenCreatePatient = () => {\n    let siteObject = null;\n    if (Array.isArray(labLocations) && labLocations.length === 1) {\n      siteObject = { value: labLocations[0].id, label: labLocations[0].name };\n    }\n    appContext.showPatient({\n      isNew: true,\n      ...(siteObject && {\n        provider: [siteObject],\n        siteID: siteObject.value,\n        site_name: siteObject.label,\n      }),\n    });\n    setCheckboxes([]);\n  };\n\n  const formatEmployees = (emps) => {\n    return emps.map((m) => {\n      const provider = providers?.find((f) => f.id === m.renderingProvider);\n      return {\n        ...m,\n        providerName: provider?.name,\n      };\n    });\n  };\n\n  const empsToMap = useMemo(() => {\n    const list = filteredEmployees ? [...filteredEmployees] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredEmployees, currentPage]);\n  const loadEmployees = async (params, page, sortBy, sortByDirection) => {\n    setLoading(true);\n    const filterParam = params;\n\n    try {\n      Object.assign(filterParam, { page: page, clientID: CONFIG.clientID });\n\n      if (sortBy) {\n        Object.assign(filterParam, { orderBy: sortBy, orderByDirection: sortByDirection });\n      }\n\n      const pgList = await API.getEmployeeListFromPG(filterParam);\n      setLoading(false);\n\n      let ttlEmps = employees.concat(pgList?.rows);\n      if (pageNo === 1) {\n        setTotalRecord(pgList.total);\n        ttlEmps = pgList.rows;\n      }\n\n      const emps = formatEmployees(ttlEmps);\n\n      setEmployees(emps);\n      refreshList(emps);\n    } catch (err) {\n      console.log(\"Load Employees Error:-\", err);\n      setLoading(false);\n    }\n  };\n\n  const refreshList = (list) => {\n    if (sortBy) {\n      setFilteredEmployees(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredEmployees(list);\n    }\n  };\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filteredEmployees.length;\n    if (direction === \"next\" && page === totalPages && totalRecord > 0 && currentRecord < totalRecord) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n    const personalisationData = draggablePersonalizationLocalStorage.saveAs(data, PERSONALISATION_KEY.EMPLOYEE);\n    setOpenPersonalizationModal(false);\n    draggablePersonalizationLocalStorage.save(JSON.stringify(personalisationData));\n    await API.saveUserPersonalisation(appContext.user.sub, personalisationData);\n  };\n\n  const parseArchiveResponse = (apiRes) => {\n    const resultData = apiRes.data;\n\n    const statusList = [];\n    const successfulIDs = [];\n\n    // Populate statusList and successfulIDs\n    for (const id of Object.keys(resultData)) {\n      const record = resultData[id];\n      const user = employees.find((user) => user.mdID === id);\n\n      statusList.push({\n        id,\n        firstName: user?.firstName,\n        lastName: user?.lastName,\n        status: record.status ? \"active\" : \"inactive\",\n        message: record.message,\n      });\n\n      if (record.status) {\n        successfulIDs.push(id);\n      }\n    }\n\n    if (statusList.length > 1) {\n      dispatch(setArchivedList({ archivedList: statusList, personalization: ARCHIVE_PERSONALIZATION}));\n      return { statusList, successfulIDs };\n    }\n\n    if (successfulIDs.length === 0) {\n      appContext.showErrorMessage(statusList[0].message);\n    } else {\n      appContext.showSuccessMessage(\"Record archived successfully\");\n    }\n    return { successfulIDs };\n  };\n\n  const handleDeleteConfirm = async (isConfirm) => {\n    setOpenDeleteConfirmation(false);\n    if (!isConfirm) {\n      setCheckboxes([]);\n      return;\n    }\n    try {\n      const updateSelectedTestResult = filteredEmployees\n        .filter((test) => checkboxes.includes(test.id))\n        .map((d) => d.mdID);\n      const ttlTest = updateSelectedTestResult.length;\n      if (!ttlTest) {\n        return;\n      }\n      setLoading(true);\n      let siteID = isSiteUser ? CONFIG.siteID : null;\n      const apiRes = await API.deleteEmployeeGQL(updateSelectedTestResult, siteID);\n\n      const { successfulIDs } = parseArchiveResponse(apiRes);\n\n      setEmployees(employees.filter((user) => !successfulIDs.includes(user.mdID)));\n      setFilteredEmployees(filteredEmployees.filter((user) => !successfulIDs.includes(user.mdID)));\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n    setLoading(false);\n    setCheckboxes([]);\n  };\n\n  const handleCheckboxChange = (e, user) => {\n    const filteredList = checkboxes.filter((c) => c !== user.id);\n    if (e.target.checked) {\n      filteredList.push(user.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const handleConfirmationOrder = (isConfirm) => {\n    if (!isConfirm) {\n      setShowConfirmation(false);\n      tempOrderRef.current = null;\n      return;\n    }\n\n    if (tempOrderRef.current) {\n      appContext.showOrderModal(tempOrderRef.current);\n      setCheckboxes([]);\n      tempOrderRef.current = null;\n      setShowConfirmation(false);\n    }\n  };\n\n  const handleClickCreateOrder = () => {\n    const selectedPatient = filteredEmployees.find((test) => checkboxes.includes(test.id));\n    const newOrder = {\n      ...ORDER_EMPTY_OBJECT,\n      clientID: CONFIG.clientID,\n      selectedPatient: { ...selectedPatient, id: selectedPatient?.mdID, accNo: selectedPatient?.mdID },\n    };\n\n    if (selectedPatient.status === \"inactive\") {\n      tempOrderRef.current = newOrder;\n      setShowConfirmation(true);\n      return;\n    }\n\n    appContext.showOrderModal(newOrder);\n    setCheckboxes([]);\n  };\n\n  const handleClickTestOrder = () => {\n    const selectedPatient = filteredEmployees.filter((test) => checkboxes.includes(test.id));\n    dispatch(setSelectedEmployeeForTest(selectedPatient));\n    setCheckboxes([]);\n  };\n\n  const archiveRecordMessage = () => {\n    let ttlRecord = allSelected ? totalRecord : checkboxes.length;\n    return `Are you sure you want to archive the selected  Record${ttlRecord > 1 ? \"s\" : \"\"}?`;\n  };\n\n  const getDropDownOptions = () => {\n    const optionsList = [\n      { value: \"Logs\", title: \"Audit Trail\" },\n      { value: \"test\", title: \"Test History\" },\n    ];\n    if (isSiteUser) {\n      optionsList.shift();\n    }\n    return optionsList;\n  };\n\n  const getClientName = (patientObj) => {\n    const { site_name } = patientObj;\n\n    if (!site_name) return \"\";\n\n    return site_name;\n  };\n\n  const getClientTitle = (patientObj) => {\n    const { site_name, provider } = patientObj;\n    if (site_name === \"Multi\") return provider.map((item) => item.label).join(\", \");\n  };\n\n  const customRenderTD = (item, row) => {\n    if (item.itemKey === \"insurance_number\") {\n      return (\n        <td\n          key={item.id}\n          style={{\n            textAlign: item.textAlign,\n            textOverflow: item.textOverflow,\n          }}\n        >\n          {row.insurance_name === \"Bill Client\" ? \"\" : row?.insurance_number || \"\"}\n        </td>\n      );\n    }\n\n    if (item.itemKey === \"site_name\") {\n      return (\n        <td\n          key={item.id}\n          style={{\n            textAlign: item.textAlign,\n            textOverflow: item.textOverflow,\n          }}\n          className=\"ellipsis\"\n          title={getClientTitle(row)}\n        >\n          {getClientName(row)}\n        </td>\n      );\n    }\n  };\n\n  return (\n    <Container fluid>\n      {loading && <Loader />}\n\n      <div className=\"shows-screen-parent\">\n        <Row className=\"mx-0\">\n          <Col md=\"12\">\n            <Card className=\"border-0 mb-1\">\n              <Card.Body className=\"p-0\">\n                <div className=\"shows-filter-wrapper\">\n                  <div className=\"shows-filter-inner\">\n                    <Icon\n                      handleClick={() => setShowFilter(!showFilter)}\n                      title={\"Filter\"}\n                      label={\"Filter\"}\n                      iconType={\"filter\"}\n                    />\n                    <Icon\n                      handleClick={() => {\n                        if (filteredEmployees && filteredEmployees.length > 0) {\n                          setAllSelected(!allSelected);\n                          toggleCheckboxes(!allSelected);\n                        }\n                      }}\n                      title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                      label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                      iconType={\"selectAllIcon\"}\n                    />\n                    {/* <Icon\n                        handleClick={() => setOpenEmployeeModal(true)}\n                        label={\"Create\"}\n                        title={\"Create\"}\n                        iconType={\"addUserIcon\"}\n                      /> */}\n\n                    <ExportToExcel\n                      items={filteredEmployees}\n                      selectedItem={personalize.map((m) => {\n                        if (m.isCheck) return m.itemKey;\n                      })}\n                      appContext={appContext}\n                      filter={filter}\n                      title=\"Patient Records\"\n                      sortBy={sortBy}\n                      summary={stats}\n                      emp\n                    />\n                    {permission[EMPLOYEE]?.archivePatient && (\n                      <Icon\n                        disabled={checkboxes.length === 0}\n                        handleClick={() => setOpenDeleteConfirmation(true)}\n                        title={\"Archive\"}\n                        label={\"Archive\"}\n                        iconType={\"binIcon\"}\n                      />\n                    )}\n                    <Icon\n                      handleClick={() => setOpenPersonalizationModal(true)}\n                      title={t(\"personalize\")}\n                      label={t(\"personalize\")}\n                      iconType={\"personalizeIcon\"}\n                    />\n                    {userClientData?.setting?.eligibility && (\n                      <Icon\n                        handleClick={handleEligibilityCheck}\n                        title={\"Check Eligibility\"}\n                        disabled={checkboxes.length === 0}\n                        iconType=\"acknowledgedPositiveIcon\"\n                        label=\"Check Eligibility\"\n                      />\n                    )}\n                    {permission[EMPLOYEE]?.createPatient && (\n                      <Icon\n                        handleClick={() => {\n                          handleOpenCreatePatient();\n                        }}\n                        title={\"Create Patient\"}\n                        label={\"Create Patient\"}\n                        iconType={\"createIcon\"}\n                      />\n                    )}\n                    {permission[EMPLOYEE]?.write && (\n                      <Icon\n                        handleClick={() => {\n                          appContext.showTestScheduleModal([], UPLOAD_CSV_FILE.employee);\n                          setCheckboxes([]);\n                        }}\n                        title={\"Upload Patients\"}\n                        label={\"Upload Patients\"}\n                        iconType={\"loadCrewIcon\"}\n                      />\n                    )}\n                    {/* {defaultConfig.isTestCreationFromEmployee && (\n                      <Icon\n                        handleClick={handleClickTestOrder}\n                        disabled={checkboxes.length === 0}\n                        title={\"Create Test\"}\n                        label={\"Create Test\"}\n                        iconType={\"createIcon\"}\n                      />\n                    )} */}\n\n                    {permission[ORDER]?.addOrders && (\n                      <Icon\n                        handleClick={handleClickCreateOrder}\n                        disabled={checkboxes.length !== 1}\n                        title={\"Create Order\"}\n                        label={\"Create Order\"}\n                        iconType={\"createIcon\"}\n                      />\n                    )}\n\n                    {/* <Icon\n                        handleClick={() => {\n                          const selectedEmps = filteredEmployees.filter((f) => checkboxes.indexOf(f.id) !== -1);\n                          const uploadCallType =\n                            selectedEmps.length > 0 ? UPLOAD_CSV_FILE.manualtest : UPLOAD_CSV_FILE.test;\n\n                          appContext.showTestScheduleModal(selectedEmps, uploadCallType);\n                          setCheckboxes([]);\n                        }}\n                        title={\"Schedule Test\"}\n                        label={\"Schedule Test\"}\n                        iconType={\"testNowIcon\"}\n                      />\n\n                      <Icon\n                        handleClick={() => appContext.showUpComingSchedule()}\n                        title={\"Upcoming Test\"}\n                        label={\"Upcoming Test\"}\n                        iconType={\"calendarIcon\"}\n                      /> */}\n                  </div>\n                </div>\n                {showFilter && (\n                  <Filter\n                    filterTerms={searchTerms}\n                    setFilter={setFilter}\n                    filter={filter}\n                    triggerFilter={triggerFilter}\n                    setTriggerFilter={setTriggerFilter}\n                    isUsersTable={true}\n                    isGrouped={true}\n                    personalisationData={personalize}\n                    filterTabIndex={filterTabIndex}\n                    setFilterTabIndex={(value) => setFilterTabIndex(value)}\n                    filterTab=\"patient\"\n                  />\n                )}\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n        <Row className=\"mx-0\">\n          <Col md=\"12\">\n            <div\n              className={`striped-tabled-with-hover bg-transparent    ${\n                empsToMap?.length === 1 || empsToMap?.length === 2 ? \"test-details-table\" : \"\"\n              }`}\n            >\n              <Card.Header className=\"shows-screen-wrapper\">\n                <Row className=\"pb-4\">\n                  <Col md-=\"6\">\n                    <Card.Title>\n                      <div className=\"\">\n                        Patients:\n                        <span className=\"ps-2\">\n                          {\" \"}\n                          {totalRecord ? totalRecord : filteredEmployees ? filteredEmployees.length : 0}\n                        </span>\n                      </div>\n                    </Card.Title>\n                  </Col>\n                  <Col md=\"6\">\n                    <PGPagination\n                      currentPage={currentPage}\n                      handleChangePage={handleChangePage}\n                      totalPages={totalPages}\n                      totalRecord={totalRecord}\n                      currentRecord={filteredEmployees.length}\n                      showSelectedRecord\n                      totalSelected={checkboxes.length}\n                    />\n                  </Col>\n                </Row>\n              </Card.Header>\n\n              <div className=\"table-full-width px-0 desktop-noScroll mt-0 pt-0\">\n                <MainTable\n                  columns={personalize}\n                  rows={empsToMap}\n                  flipSort={flipSort}\n                  sortBy={sortBy}\n                  sortDescending={sortDescending}\n                  draggable\n                  resizable\n                  personalisationKey={\"employee\"}\n                  handleSaveDragAndResize={(personalizeArr) => setPersonalize(personalizeArr)}\n                  widthToSkip={155}\n                  customColumnCellRenderer={customRenderTD}\n                  selectedRows={checkboxes}\n                  tools={quickTools}\n                  dropDownOptions={getDropDownOptions()}\n                  handleDropDownClick={(type, row) => {\n                    if (type === \"Test History\") {\n                      appContext.openPatientTestViewModal({ patient: row, type: \"patient\", uiType: \"testHistory\" });\n                    }\n                    if (type === \"Audit Trail\") {\n                      appContext.showLogs({ ...row, title: \"Patient Logs\", recordType: \"employee\" });\n                    }\n                  }}\n                  handleCellClick={handleCellClick}\n                />\n              </div>\n            </div>\n          </Col>\n        </Row>\n      </div>\n\n      {showConfirmation && (\n        <ConfirmationModal\n          show={showConfirmation}\n          title=\"Confirmation\"\n          message={\"This patient is inactive. Do you still want to create an order?\"}\n          handleConfirm={handleConfirmationOrder}\n          cssClass=\"seperateModal\"\n          isPreRegister\n        />\n      )}\n\n      {openEmployeeModal && (\n        <EmployeeModal\n          handleClose={() => setOpenEmployeeModal(false)}\n          selectItem={selectedEmployee}\n          handleSave={() => console.log(\"save employee\")}\n        />\n      )}\n\n      {openPersonalizationModal && (\n        <PersonalizationModal\n          data={personalize}\n          handleChange={handlePersonalization}\n          show={openPersonalizationModal}\n          handleClose={() => setOpenPersonalizationModal(false)}\n        />\n      )}\n\n      {openDeleteConfirmation && (\n        <ConfirmationModal\n          show={openDeleteConfirmation}\n          title=\"Archive Record\"\n          message={archiveRecordMessage()}\n          handleConfirm={handleDeleteConfirm}\n        />\n      )}\n\n      {noteModal && (\n        <NotesModal\n          handleClose={(obj) => {\n            setNoteModal(null);\n            if (obj) {\n              const emps = [...filteredEmployees];\n              const findIndex = emps.findIndex((f) => f.mdID === obj.id);\n\n              const isEditing = emps[findIndex].note ? true : false; // Check if note already exists\n\n              emps[findIndex] = { ...emps[findIndex], note: obj.note };\n              setFilteredEmployees(emps);\n\n              if (isEditing) {\n                appContext.showSuccessMessage(\"Note edited successfully\");\n              } else {\n                appContext.showSuccessMessage(\"Note added successfully\");\n              }\n            }\n          }}\n          emp\n          user={appContext.user}\n          data={noteModal}\n        />\n      )}\n    </Container>\n  );\n};\n\nexport default PatientView;\n","import { Button, Card, Col, Modal, Row, Table } from \"react-bootstrap\";\nimport ViewCheckBox from \"components/CheckBox/ViewCheckBox\";\n\nconst ProviderSearchRecord = (props) => {\n  const { data, handleSelect, handleClose, setSelectSearchData, selectSearchdata } = props;\n  console.log(\"data\", data);\n  const TableRow = ({ item, index }) => {\n    const { basic } = item;\n    return (\n      <tr className=\"cursor-pointer active\" onClick={() => setSelectSearchData(item)}>\n        <td className=\"popOver-centered\">{basic.first_name}</td>\n        <td className=\"popOver-centered\">{basic.middle_name}</td>\n        <td className=\"popOver-centered\">{basic.last_name}</td>\n        <td className=\"popOver-centered\">{item.number}</td>\n        <td className=\"popOver-centered\">{item.taxonomies[0].code}</td>\n        <td>{selectSearchdata?.number === item.number && <ViewCheckBox />}</td>\n      </tr>\n    );\n  };\n\n  return (\n    <Modal\n      className=\"searchList seperateModal\"\n      show\n      animation={true}\n      size=\"xl\"\n      onHide={() => {\n        handleClose();\n      }}\n      style={{ paddingLeft: \"0\" }}\n      centered\n      scrollable\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Search Provider List\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body>\n        <div style={{ flex: 1 }}>\n          <Row>\n            <Col md=\"12\">\n              <Card className=\"strpied-tabled-with-hover m-0\">\n                <Card.Body>\n                  <div className=\"form-group-wrapper m-0 d-block\">\n                    <div className=\"table-responsive overFlow-y-hidden\">\n                      <Table className=\"table\">\n                        <thead>\n                          <tr>\n                            <th className=\"popOver-centered border-0\">First Name</th>\n                            <th className=\"popOver-centered border-0\">Middle Name</th>\n                            <th className=\"popOver-centered border-0\">Last Name</th>\n                            <th className=\"popOver-centered border-0\">NPI</th>\n                            <th className=\"popOver-centered border-0\">Taxonomy ID</th>\n                            <th></th>\n                          </tr>\n                        </thead>\n                        <tbody>\n                          {data.map((item, i) => (\n                            <TableRow key={i} index={i} item={item} />\n                          ))}\n                        </tbody>\n                      </Table>\n                    </div>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"primary\" className=\"modalButtons headerButton btn-fill\" onClick={handleClose}>\n          Close\n        </Button>\n        <Button\n          variant=\"secondary\"\n          className=\"modalButtons headerButton btn-fill\"\n          onClick={() => {\n            if (selectSearchdata) handleSelect(selectSearchdata);\n          }}\n        >\n          Ok\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ProviderSearchRecord;\n","import { useRef } from \"react\";\nimport API from \"api\";\nimport { Modal, Button, Card } from \"react-bootstrap\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport ProviderSearchRecord from \"./ProviderSearchRecord\";\nimport { useEffect, useState } from \"react\";\nimport Select from \"react-select\";\nimport { NPI_TYPE_OPTIONS } from \"constant\";\nimport InputField from \"components/InputField/InputField\";\nimport { formatPhoneNumber } from \"utils\";\nimport SwitchToggle from \"components/SwitchToggle/SwitchToggle\";\nimport api from \"api\";\nimport Loader from \"components/Loader/Loader\";\n\nconst ProviderModal = (props) => {\n  const { show, user, handleClose, readOnly, cssClass, providers, appContext } = props;\n\n  const [newProvider, setNewProvider] = useState(user);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const [recordData, setRecordData] = useState([]);\n  const [selectSearchData, setSelectSearchData] = useState(null);\n  const childNode = useRef();\n\n  useEffect(() => {\n    setNewProvider(user);\n  }, [user]);\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setNewProvider({ ...newProvider, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setNewProvider({ ...newProvider, ...addressObj });\n    }\n  };\n\n  const handleSave = async (user) => {\n    try {\n      if (user.isNew) {\n        const res = await api.newProviderInfo(user);\n        if (res && !res.error) {\n          appContext.showSuccessMessage(\"Provider Created Successfully\");\n          handleClose(res);\n        } else {\n          appContext.showErrorMessage(res?.error || \"Provider not Created\");\n        }\n      } else {\n        const res = await updateProvider(user);\n        if (res && !res.error) {\n          appContext.showSuccessMessage(\"Provider Updated Successfully\");\n          handleClose(res);\n        } else {\n          appContext.showErrorMessage(res?.error || \"Provider not Updated\");\n        }\n      }\n      setLoading(false);\n    } catch (error) {\n      console.log(\"ERROR:User-\", error);\n      appContext.showErrorMessage(error.message);\n      setLoading(false);\n    }\n  };\n\n  const populate = (record) => {\n    setSelectSearchData(null);\n    setRecordData([]);\n\n    const { basic, addresses, taxonomies } = record;\n\n    // Find the LOCATION address if available\n    const locationAddress = addresses?.find((address) => address.address_purpose === \"LOCATION\") || addresses[0];\n\n    // Determine the primary taxonomy\n    const primaryTaxonomy = taxonomies.find((taxonomy) => taxonomy.primary) || taxonomies[0];\n\n    // Format phone numbers if they exist\n    const formattedPhoneNumber = locationAddress?.telephone_number\n      ? formatPhoneNumber(`+1${locationAddress.telephone_number}`)\n      : \"\";\n\n    const formattedFaxNumber = locationAddress?.fax_number ? formatPhoneNumber(`+1${locationAddress.fax_number}`) : \"\";\n\n    // Create the user object\n    const obj = {\n      ...newProvider,\n      firstName: basic.first_name,\n      middleName: basic.middle_name,\n      lastName: basic.last_name,\n      street: locationAddress?.address_1,\n      city: locationAddress?.city,\n      zip: locationAddress?.postal_code,\n      state: locationAddress?.state,\n      phoneNumber: formattedPhoneNumber,\n      fax: formattedFaxNumber,\n      taxid: primaryTaxonomy?.code,\n      npi: record.number,\n      npiType: record.enumeration_type,\n      speciality: primaryTaxonomy?.desc,\n      isFinder: true,\n    };\n\n    setNewProvider(obj);\n  };\n\n  const searchProvider = async (provider) => {\n    let record = [];\n    setLoading(true);\n    try {\n      record = await API.searchProviderAPI(provider);\n      setLoading(false);\n    } catch (err) {\n      console.log(err.message);\n      setLoading(false);\n    }\n\n    if (record?.length === 0) {\n      setError(\"records Not Found!\");\n      return;\n    }\n\n    if (record && record.length === 1) {\n      populate(record[0]);\n    }\n    if (record && record.length > 1) {\n      setRecordData(record);\n    }\n  };\n\n  const handleFindProvider = (newProvider) => {\n    const keys = [\"firstName\", \"lastName\", \"npi\"];\n    if (keys.some((e) => newProvider[e])) {\n      searchProvider(newProvider);\n    } else {\n      appContext.showErrorMessage(\"Please Fill Provider Name or NPI\");\n    }\n  };\n\n  const onHandleSave = () => {\n    let roles = [];\n    const objToSave = { ...newProvider };\n    if (!newProvider.firstName || !newProvider.firstName.trim()) {\n      setError(\"First Name is required\");\n      return;\n    }\n\n    Object.assign(objToSave, {\n      name: `${newProvider.firstName.trim()} ${newProvider?.middleName?.trim() || \"\"} ${newProvider?.lastName.trim()}`,\n    });\n\n    if (!newProvider.npi || !newProvider.npi.trim()) {\n      setError(\"NPI is required\");\n      return;\n    }\n\n    // Find Existing NPI Number\n    const findProvider = providers.find((f) => f.npi === newProvider.npi);\n\n    if (findProvider && (newProvider.isNew || (!newProvider.isNew && newProvider.id !== user.id))) {\n      setError(\"NPI is already exist\");\n      return;\n    }\n\n    handleSave(objToSave);\n  };\n\n  return (\n    <>\n      <Modal\n        show={show}\n        backdrop=\"static\"\n        animation={true}\n        onHide={() => {\n          setNewProvider(\"\");\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        className={cssClass ?? \"\"}\n        size={\"lg\"}\n        keyboard={false}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {newProvider.isNew ? \"Create Provider\" : \"Update Provider\"}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className={\"d-flex w-100 align-items-center justify-content-around\"}>\n            <InputField\n              type=\"text\"\n              groupWrapper={\"form-group-wrapper w-50\"}\n              inputStyle=\"modalInput\"\n              labelStyle=\"text-capitalize\"\n              label=\"NPI:\"\n              value={newProvider.npi}\n              index=\"npi\"\n              maxLength={20}\n              placeholder=\"Search By NPI\"\n              handleChange={(e) => setNewProvider({ ...newProvider, npi: e.target.value })}\n              required\n            />\n\n            <Button\n              style={{ marginBottom: 20 }}\n              variant=\"secondary\"\n              className=\"modalButtons  align-middle headerButton btn-fill\"\n              onClick={() => handleFindProvider(newProvider)}\n            >\n              Search\n            </Button>\n          </div>\n          <div className=\"row\">\n            <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n              <div className={\" crew-profile-row4 crew-profile-again\"}>\n                <InputField\n                  type=\"text\"\n                  inputStyle=\"modalInput w-100\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"First Name\"\n                  value={newProvider.firstName}\n                  index=\"firstName\"\n                  maxLength={30}\n                  placeholder=\"First Name\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, firstName: e.target.value })}\n                />\n\n                <InputField\n                  type=\"text\"\n                  inputStyle=\"modalInput w-100\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"Middle Name\"\n                  value={newProvider.middleName}\n                  index=\"middleName\"\n                  maxLength={30}\n                  placeholder=\"Middle Name\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, middleName: e.target.value })}\n                />\n\n                <InputField\n                  type=\"text\"\n                  inputStyle=\"modalInput w-100\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"Last Name\"\n                  value={newProvider.lastName}\n                  index=\"lastName\"\n                  maxLength={30}\n                  placeholder=\"Last Name\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, lastName: e.target.value })}\n                />\n              </div>\n            </div>\n            <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n              <div className={\" crew-profile-row4 crew-profile-again\"}>\n                <InputField\n                  type=\"address\"\n                  inputStyle=\"modalInput w-100\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"Address\"\n                  value={newProvider.street}\n                  index=\"street\"\n                  maxLength={65}\n                  placeholder=\"Address\"\n                  handleChange={(val, flag) => handleUpdateAddress(val, flag)}\n                />\n\n                <InputField\n                  type=\"text\"\n                  inputStyle=\"modalInput w-100\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"City\"\n                  value={newProvider.city}\n                  index=\"city\"\n                  maxLength={20}\n                  placeholder=\"City\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, city: e.target.value })}\n                />\n                <InputField\n                  type=\"text\"\n                  inputStyle=\"modalInput\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"State\"\n                  value={newProvider.state}\n                  index=\"state\"\n                  maxLength={20}\n                  placeholder=\"State\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, state: e.target.value })}\n                />\n              </div>\n            </div>\n\n            <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n              <div className={\" crew-profile-row4 crew-profile-again\"}>\n                <InputField\n                  type=\"text\"\n                  inputStyle=\"modalInput\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"Zip Code\"\n                  value={newProvider.zip}\n                  index=\"zip\"\n                  maxLength={20}\n                  placeholder=\"Zip Code\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, zip: e.target.value })}\n                />\n\n                <InputField\n                  type=\"phone\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"Phone Number\"\n                  value={newProvider.phoneNumber}\n                  index=\"phoneNumber\"\n                  maxLength={20}\n                  placeholder=\"Enter Phone\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, phoneNumber: e })}\n                />\n\n                <InputField\n                  type=\"phone\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"Fax\"\n                  value={newProvider.fax}\n                  index=\"fax\"\n                  maxLength={20}\n                  placeholder=\"Enter Fax\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, fax: e })}\n                />\n              </div>\n            </div>\n\n            <div className=\"testAdmin createClientsWrapper allowShrink resubmissionFormWrapper\">\n              <div className={\" crew-profile-row4 crew-profile-again\"}>\n                <InputField\n                  type=\"dropDown\"\n                  options={NPI_TYPE_OPTIONS}\n                  inputStyle=\"\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"NPI Type:\"\n                  isClearable={true}\n                  value={NPI_TYPE_OPTIONS.find((f) => f.value === newProvider.npiType) || \"\"}\n                  index=\"npiType\"\n                  placeholder=\"NPI\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, npiType: e?.value })}\n                />\n\n                <InputField\n                  type=\"text\"\n                  inputStyle=\"modalInput\"\n                  labelStyle=\"text-capitalize\"\n                  label=\"Taxonomy ID:\"\n                  value={newProvider.taxid}\n                  index=\"taxid\"\n                  maxLength={20}\n                  placeholder=\"Taxonomy ID\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, taxid: e.target.value })}\n                />\n                <InputField\n                  type=\"text\"\n                  label=\"Speciality:\"\n                  inputStyle=\"modalInput\"\n                  labelStyle=\"text-capitalize\"\n                  value={newProvider.speciality || \"\"}\n                  placeholder=\"Enter Speciality\"\n                  index=\"specialitypi\"\n                  handleChange={(e) => setNewProvider({ ...newProvider, speciality: e.target.value })}\n                />\n              </div>\n            </div>\n\n            <div\n              className=\"d-flex align-items-center column-gap-10 profile-\n                          detail mb-3\"\n            >\n              <span className=\"section-title\">Is Active: </span>\n              <SwitchToggle\n                checked={newProvider.isActive}\n                handleChange={(e) =>\n                  setNewProvider({\n                    ...newProvider,\n                    isActive: e.target.checked,\n                  })\n                }\n              />\n            </div>\n          </div>\n        </Modal.Body>\n        <div className=\"px-4\" style={{ minHeight: \"3vh\" }}>\n          {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n        </div>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons headerButton btn-fill\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n\n          {!readOnly && (!newProvider.isNew || newProvider.isFinder) && (\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"secondary\"\n              className=\"modalButtons headerButton btn-fill\"\n              onClick={onHandleSave}\n            >\n              {newProvider.isNew ? \"Create\" : \"Update\"}\n            </Button>\n          )}\n        </Modal.Footer>\n      </Modal>\n      {recordData.length > 1 && (\n        <ProviderSearchRecord\n          data={recordData}\n          handleSelect={populate}\n          handleClose={() => {\n            setRecordData([]), setSelectSearchData(null);\n          }}\n          setSelectSearchData={setSelectSearchData}\n          selectSearchdata={selectSearchData}\n        />\n      )}\n      {loading && <Loader />}\n    </>\n  );\n};\n\nexport default ProviderModal;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport editIcon from \"../assets/img/edit-icon.svg\";\nimport saveIcon from \"../assets/img/save-icon.png\";\nimport cancelIcon from \"../assets/img/cancel-icon.png\";\nimport Default_Profile from \"../assets/img/default_profile.png\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport { useDispatch, useSelector } from \"react-redux\";\n// react-bootstrap components\nimport { Button, Card, Form, Container, Row, Col, Modal, Table, CloseButton } from \"react-bootstrap\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport API from \"api\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { AppContext } from \"../context/app-context\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { TEST_TYPE_VALUE, countryListAllIsoData, IMAGE_UPLOAD_TYPE } from \"constant\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport userProfileImage from \"../assets/img/user-profile.png\";\nimport SwitchToggle from \"../components/SwitchToggle/SwitchToggle\";\nimport RadioButton from \"../components/RadioButton/RadioButton\";\n\nimport {\n  getDemoGraphics,\n  formatZip,\n  formatTest,\n  isValidPhone,\n  setPhoneNo,\n  formatPhoneNumber,\n  formatDateOfBirthDOB,\n  phoneFormatter,\n  formatQuaratineDisplayDate,\n  parseTestType,\n  FormatAWSDate,\n  isValidName,\n  isValidPhoneWithCode,\n  isValidIdNum,\n  getValidName,\n  convertToLower,\n  isValidZipCode,\n  validSpace,\n  convertToUpper,\n  getPhoneNo,\n  isValidEmail,\n  isValidUrl,\n  getConnectedToValue,\n  getValidDep,\n  getValidSpaces,\n  parseInsDetails,\n  isValidIDNumber,\n} from \"../utils\";\nimport \"react-activity/dist/Bounce.css\";\nimport { Storage } from \"aws-amplify\";\nimport ImageView from \"components/Image/ImageView\";\nimport ReactPDF from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport moment from \"moment\";\nimport QuarantineModal from \"components/Modal/QuarantineModal\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport TestView from \"components/TestView\";\nimport EmployeeLogs from \"components/EmployeeLogs\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport \"react-tabs/style/react-tabs.css\";\nimport Loader from \"../components/Loader/Loader\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport { newRegisterObj } from \"constant\";\nimport { PROFILE_IMAGE_PATH } from \"constant\";\nimport ProfileRelationModal from \"views/Patient/ProfileRelationModalOnModal\";\nimport api from \"api\";\nimport RelationView from \"components/Profile/RelationView\";\nimport DocumentList from \"components/Document/DocumentList\";\nimport DocumentForm from \"components/Document/DocumentForm\";\nimport { INSURANCE_PROVIDER } from \"constant\";\nimport InputField from \"components/InputField/InputField\";\nimport { EMP_INS_OBJECT } from \"constant\";\nimport InsuranceViewCard from \"components/Patient/InsuranceViewCard\";\nimport InsuranceDetailsModal from \"components/Patient/InsuranceDetailsModal\";\nimport { CUSTOM_INS } from \"constant\";\nimport { NEW_PROVIDER_OBJECT } from \"constant\";\nimport ProviderModal from \"components/Provider/ProviderModal\";\nimport { fetchAllProviders } from \"store/features/providers/providersSlice\";\nlet actualProfilePath = \"\";\n\nconst PatientProfile = (props) => {\n  const location = useLocation();\n  const history = useHistory();\n  const { state } = location;\n  const [test, setTest] = useState();\n  const [site, setSite] = useState();\n  const [lab, setLab] = useState();\n  const [siteContactPhone, setSiteContactPhone] = useState();\n  const [demographics, setDemographics] = useState();\n  const [showAlert, setShowAlert] = useState(false);\n  const [modalShow, setModalShow] = useState(false);\n  const [releaseTo, setReleaseTo] = useState([]);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [signature, setSignature] = useState();\n  const [loading, setLoading] = useState(false);\n  const [hippaConsent, setHippaConsent] = useState(false);\n  const [showImages, setShowImages] = useState(null);\n  const [showSubmitAlert, setShowSubmitAlert] = useState(false);\n  const [editButton, setEditButton] = useState(false);\n  const [editInfo, setEditInfo] = useState();\n  const [Employee, setEmployee] = useState();\n  const [error, setError] = useState(\"\");\n  const [openQuarantined, setOpenQuaratined] = useState(false);\n  const [allowToEditQuarantine, setAllowToEditQuarantine] = useState(false);\n  const [openDataChangeConfirmation, setOpenDataChangeConfirmation] = useState(false);\n  const [patternConsent, setPatternConsent] = useState(false);\n  const [phoneError, setPhoneError] = useState(\"\");\n  const [testViews, setTestViews] = useState([]);\n  const [employeeLogs, setEmployeeLogs] = useState([]);\n  const [loadingTestView, setLoadingTestView] = useState(false);\n  const [vaccinationImage, setVaccinationImage] = useState(\"\");\n  const [externalTestImage, setExternalTestImage] = useState(\"\");\n  const [changeData, setchangeData] = useState({});\n  const [changeDataCheck, setchangeDataCheck] = useState(true);\n  const appContext = useContext(AppContext);\n  const [profileImage, setProfileImage] = useState(Default_Profile);\n  const [showProfileModal, setProfileModal] = useState(false);\n  const [openDocumentModal, setOpenDocumentModal] = useState(null);\n  const [selectedDocument, setSelectedDocument] = useState({ isNew: true });\n  const [documents, setDocuments] = useState([]);\n  const [openInsuranceModal, setOpenInsuranceModal] = useState(null);\n  const [providers, setProviders] = useState([]);\n  const [newProviderInfo, setNewUserProvider] = useState(null);\n\n  const dispatch = useDispatch();\n\n  const hideAlert = () => {\n    props.history.push(\"/admin/pendingrelease\");\n    setShowAlert(false);\n  };\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setEmployee({ ...Employee, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setEmployee({ ...Employee, ...addressObj });\n    }\n  };\n\n  const triggerNewData = (data) => {\n    const {\n      match: { params },\n    } = props;\n    if (data.id !== params.patientId) return;\n    if (!editButton) {\n      setchangeData(data);\n      setOpenDataChangeConfirmation(true);\n    } else {\n      setEditInfo(data);\n      setDemographics(getDemoGraphics(data));\n      setEmployee(getDemoGraphics(data));\n      setTest(data);\n    }\n  };\n\n  // SETTING UP LISTNER\n  useEffect(() => {\n    if (changeDataCheck && appContext?.testObject && appContext.testObject?.opType === \"UPDATE\") {\n      triggerNewData(appContext.testObject.element);\n    }\n  }, [appContext?.testObject]);\n\n  // SETTING UP LISTNER\n  useEffect(() => {\n    if (changeDataCheck && appContext?.eventObject && appContext.eventObject?.opType === \"UPDATE\") {\n      triggerNewData(appContext.eventObject.element);\n    }\n  }, [appContext?.eventObject]);\n\n  const getProviders = async (test) => {\n    try {\n      dispatch(fetchAllProviders());\n      const response = await api.fetchProvidersAPI(test);\n      if (response && response.length > 0) {\n        let arr = [];\n        for (let val of response) {\n          arr.push({\n            ...val,\n            label: getValidDep(val.name),\n            value: val.id,\n          });\n        }\n        setProviders(arr);\n      }\n    } catch (err) {\n      console.log(\"getProviders Error:-\", err);\n    }\n  };\n\n  const handleDataChangeConfirm = async (isConfirm) => {\n    if (isConfirm) {\n      setOpenDataChangeConfirmation(false);\n      setEditInfo(changeData);\n      setDemographics(getDemoGraphics(changeData));\n      setEmployee(getDemoGraphics(changeData));\n      setTest(changeData);\n    } else {\n      setOpenDataChangeConfirmation(false);\n    }\n  };\n\n  const getTest = async (id) => {\n    try {\n      const model = await API.getRecordById(id, \"employee\");\n\n      if (model.length > 0) {\n        model[0][\"employee_demographics\"] = model[0];\n\n        if (model[0]?.id) {\n          let models = await API.getRecordById(model[0].id, \"employee\");\n          let vacinatedFilePath = models[0]?.vaccinationCardImage;\n          let imageProfileNew = models[0]?.profileImage;\n          let externalTestFilePath = models[0]?.externalTestImage;\n          let autoRelease = models[0]?.autoRelease || models[0]?.autoRelease == \"1\" ? true : false;\n          let sendSMS = hasKeyOfSMS(model[0]);\n          let sendEmail = hasKeyOfEmail(model[0]);\n          //console.log(\"autoRelease sendSMS sendEmail\", autoRelease + \" \" + sendSMS + \" \" + sendEmail);\n          setEmployee({\n            ...Employee,\n            vaccinationCardImage: vacinatedFilePath,\n            externalTestImage: externalTestFilePath,\n            autoRelease,\n            sendSMS,\n            sendEmail,\n          });\n          model[0].sendSMS = sendSMS;\n          model[0].sendEmail = sendEmail;\n          if (externalTestFilePath) {\n            let getExternalTestImage = await API.getFileExternalStorage(externalTestFilePath);\n            setExternalTestImage(getExternalTestImage);\n          }\n          if (vacinatedFilePath) {\n            let getVacinationCardImage = await API.getFileExternalStorage(vacinatedFilePath);\n            setVaccinationImage(getVacinationCardImage);\n          }\n          if (imageProfileNew) {\n            let path = `${model[0]?.phone_number}-profile-image.png`;\n            if (imageProfileNew.includes(\"_#datePattern#_\")) {\n              path = imageProfileNew;\n            }\n\n            actualProfilePath = path;\n            setProfileImage(`${PROFILE_IMAGE_PATH}${encodeURIComponent(path)}`);\n          }\n        }\n\n        setEditInfo(getDemoGraphics(model[0]));\n        setDemographics(getDemoGraphics(model[0]));\n        setEmployee(getDemoGraphics(model[0]));\n        setTest(model[0]);\n      }\n    } catch (err) {\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  const {\n    match: { params },\n  } = props;\n\n  useEffect(() => {\n    setLoading(true);\n    const {\n      match: { params },\n    } = props;\n    getTest(params.patientId);\n  }, []);\n\n  useEffect(() => {\n    if (appContext.user) setAllowToEditQuarantine(appContext.user.isSite() || appContext.user.isClient());\n  }, [appContext.user]);\n\n  useEffect(async () => {\n    if (test && Object.keys(test).length > 0) {\n      handleViewTest(test.id);\n      handleEmployeeLogs(test.id);\n      try {\n        const res = await api.fetchDocumentAPI({ employeeID: Employee.id });\n        setDocuments(res);\n        await getProviders(test);\n      } catch (err) {\n        console.log(\"Error:-\", err);\n      }\n    }\n  }, [test]);\n\n  const hasKeyOfSMS = (model) => {\n    if (model.hasOwnProperty(\"sendSMS\")) {\n      let sendSMS = model?.sendSMS || model.sendSMS == \"1\" ? true : false;\n      return sendSMS;\n    }\n    return true;\n  };\n\n  const hasKeyOfEmail = (model) => {\n    if (model.hasOwnProperty(\"sendEmail\")) {\n      let sendEmail = model?.sendEmail || model.sendEmail == \"1\" ? true : false;\n      return sendEmail;\n    }\n    return true;\n  };\n\n  // const getFileFromStorage = async (file, setImage) => {\n  //   if (file) {\n  //     try {\n  //       const path = await Storage.get(file);\n  //       setImage(path);\n  //       console.log(\"path\", path);\n  //       return true;\n  //     } catch {\n  //       console.log(\"Image loading fail\");\n  //     }\n  //   } else {\n  //     return false;\n  //   }\n  // };\n\n  // useEffect(async () => {\n\n  // }, []);\n\n  const handlePhoneNo = (e) => {\n    setEmployee({\n      ...Employee,\n      phone_number: e,\n    });\n  };\n\n  const handleViewTest = async (id) => {\n    setLoadingTestView(true);\n    const tests = await API.getAdminTestList(id);\n    setTestViews(tests.filter((t) => !t._deleted));\n    setLoadingTestView(false);\n  };\n\n  // handle employee logs\n  const handleEmployeeLogs = async (id) => {\n    let employeeLogs = await API.getProfileUpdateLogs(id);\n    employeeLogs = employeeLogs.sort((a, b) => (b.createdAt > a.createdAt ? 1 : a.createdAt > b.createdAt ? -1 : 0));\n    setEmployeeLogs(employeeLogs);\n  };\n\n  useEffect(() => {\n    if (editInfo && editInfo.employee_demographics) {\n      const emp = getDemoGraphics(editInfo);\n      const list = countryListAllIsoData.find((f) => f.name === emp.country) || { code: \"US\" };\n      setEmployee(emp);\n      setDemographics({ ...emp, isoCode: list.code });\n    }\n  }, [editInfo]);\n\n  useEffect(() => {\n    const getSite = async (id) => {\n      const model = await API.findSiteByID(id);\n      model.length > 0 && setSite(model[0]);\n    };\n\n    const getSignature = async (test) => {\n      const imgObject = [];\n\n      try {\n        const siteID = test.baseSiteID || test.siteID;\n        const fileName = `${siteID}&&${test.id}&&sig.png`;\n        const sigt = await Storage.get(fileName);\n        setSignature(sigt);\n        imgObject.push({ title: \"HIPPA Consent\", isHIPPA: true, imgSrc: sigt });\n\n        const sig = await Storage.get(`${test.id}&&${siteID}&&ins-f.jpeg`);\n        const isValidInsF = await isValidUrl(sig);\n        if (sig) imgObject.push({ title: \"Insurance Card Front\", isHIPPA: false, imgSrc: sig, isExist: isValidInsF });\n        const sig1 = await Storage.get(`${test.id}&&${siteID}&&ins-b.jpeg`);\n        const isValidInsB = await isValidUrl(sig1);\n        if (sig1) imgObject.push({ title: \"Insurance Card Back\", isHIPPA: false, imgSrc: sig1, isExist: isValidInsB });\n      } catch (error) {\n        console.log(\"Image Error\", error);\n      }\n\n      if (imgObject.length > 0) {\n        setShowImages(imgObject);\n      }\n      setHippaConsent(true);\n    };\n\n    // if (test) {\n    //   setSite(getSite(test.siteID));\n    //   appContext.getLab(test).then((resp) => setLab(resp));\n    //   getSignature(test);\n    // }\n\n    setLoading(false);\n  }, [test]);\n\n  useEffect(() => {\n    site && setSiteContactPhone(site.contact_phone);\n  }, [site]);\n\n  function calculate_age(dob) {\n    const val = formatDateOfBirthDOB(dob);\n    const years = moment().diff(val, \"years\", false);\n    return years;\n  }\n\n  const captalizeFirst = (string) => {\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  };\n\n  const formatIDNo = () => {\n    if (calculate_age(demographics?.dob) < 18) {\n      const id = demographics?.id_number;\n      if (id && id.length > 5) {\n        return `${id.substring(0, 3)}-${id.substring(3, 5)}-${id.substring(5)}`;\n      }\n      if (id && id.length > 3) {\n        return `${id.substring(0, 3)}-${id.substring(3)}`;\n      }\n      return demographics?.id_number;\n    }\n    return demographics?.id_number;\n  };\n\n  const showSubmitButton = () => {\n    if (!test) return true;\n    const st = test.status.toLowerCase();\n    if (st === \"new\") return true;\n    if (st === \"pending\" && !test.result) return true;\n    return false;\n  };\n  const ImageUpload = async (fileName, image) => {\n    if (image instanceof Object) {\n      await Storage.put(fileName, image);\n      return fileName;\n    } else {\n      return \"\";\n    }\n  };\n\n  const handleSave = async (Employee) => {\n    let phone_number = \"\";\n    let countryCode = \"\";\n    if (!Employee) return;\n\n    if (Employee.insuranceDetails?.length > 0) {\n      const ins = Employee.insuranceDetails[0];\n      Object.assign(Employee, {\n        ...Employee,\n        insurance_name: ins.insuranceCompanyCode,\n        medicalNo: ins.medicareNo,\n        insurance_number: ins.medicalNo,\n        insuranceCompanyCode: ins.insuranceCompany,\n      });\n    }\n\n    if (!Employee.first) {\n      setError(\"First name is required\");\n      return;\n    }\n    if (!isValidName(Employee.first)) {\n      setError(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!Employee.last) {\n      setError(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(Employee.last)) {\n      setError(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n\n    if (Employee.insuranceCompanyCode === \"00001\") {\n      if (!Employee.email || !Employee.email.trim()) {\n        setError(\"Email Address is required\");\n        return;\n      }\n\n      if (!isValidEmail(Employee.email)) {\n        setError(\"Invalid Email Address\");\n        return;\n      }\n\n      if (!Employee.phoneNumber || Employee.phoneNumber === \" \") {\n        setError(\"Phone number is required\");\n        return;\n      }\n    }\n\n    if (!Employee.dob) {\n      setError(\"Date of Birth is required\");\n      return;\n    }\n\n    if (!Employee.sex) {\n      setError(\"Required gender\");\n      return;\n    }\n\n    if (!Employee.insuranceCompanyCode) {\n      setError(\"Insurance Provider is required\");\n      return;\n    }\n\n    if (!CUSTOM_INS.includes(Employee.insuranceCompanyCode)) {\n      if (!Employee.insurance_number || !Employee.insurance_number.trim()) {\n        setError(`Insurance Number is required`);\n        return;\n      }\n\n      if (!isValidIDNumber(Employee.insurance_number)) {\n        setError(`Insurance Number is invalid`);\n        return;\n      }\n\n      if (Employee.isMedicare === \"Y\" && !Employee.medicalNo) {\n        setError(\"Medicare Number Not be Empty\");\n        return;\n      }\n      if (Employee.isMedicare === \"Y\" && !isValidIDNumber(Employee.medicalNo)) {\n        setError(\"Medicare Number is invalid\");\n        return;\n      }\n    }\n    // FOR PHONE CHECK COUTRY CODE FOR INTERNATIONAL RECORD VERIFICATION\n    const phone = formatPhoneNumberIntl(Employee.phone_number);\n    const phoneArr = phone.split(\" \");\n    // check Country code exist\n\n    if (phoneArr[0].includes(\"+\")) {\n      let [cc, pNo] = getPhoneNo(Employee.phone_number, phoneArr[0]);\n      phone_number = pNo;\n      countryCode = cc;\n    } else {\n      phone_number = Employee.phone_number;\n      countryCode = Employee.countryCode ? Employee.countryCode : \"+1\";\n    }\n\n    if (phoneError || !isValidPhoneWithCode(`${countryCode}${phone_number}`)) {\n      setError(\"Invalid Phone Number\");\n      return;\n    }\n    if (!Employee.dob) {\n      setError(\"DOB is required\");\n      return;\n    }\n    if (Employee.dob === \"Invalid date\") {\n      setError(\"Invalid Date of Birth\");\n      return;\n    }\n    if (!isValidZipCode(demographics?.isCode || \"US\", Employee.zip)) {\n      setError(\"Invalid Postal Code\");\n      return;\n    }\n    if (!Employee.id_number) {\n      setError(`${calculate_age(Employee.dob) < 18 ? \"SSN\" : \"ID Number\"} is required`);\n      return;\n    }\n    if (!isValidIdNum(Employee.id_number)) {\n      setError(`Invalid ${calculate_age(Employee.dob) < 18 ? \"SSN\" : \"ID Number\"} must contains at least 5 characters`);\n      return;\n    }\n\n    setLoading(true);\n    setchangeDataCheck(false);\n\n    const models = await API.getRecordById(test.id, \"employee\");\n    const versionNo = models[0]?._version || null;\n    //const filename = await API.getFileProfileStorage(imageName)\n    // Vacination Image\n    let vaccinationFileName = \"\";\n    if (typeof vaccinationImage === \"object\") {\n      vaccinationFileName = await API.saveFileExternalStorage(\n        phone_number,\n        test.id,\n        IMAGE_UPLOAD_TYPE.VacinationCard,\n        vaccinationImage\n      );\n    }\n    // External Test Image\n    let externalImageFileName = \"\";\n    if (typeof externalTestImage === \"object\") {\n      externalImageFileName = await API.saveFileExternalStorage(\n        phone_number,\n        test.id,\n        IMAGE_UPLOAD_TYPE.ExternalTest,\n        externalTestImage\n      );\n    }\n\n    if (profileImage && typeof profileImage === \"object\") {\n      let imageFormatWithUtcTime = `_#datePattern#_${moment().utc().format(\"YYYY-MM-DD HH:mm\")}`;\n      const imageName = `${Employee?.phone_number}-profile-image${imageFormatWithUtcTime}.png`;\n      await Storage.put(`profile/${imageName}`, profileImage, { bucket: \"medflow-images\" });\n      Employee.profileImage = imageName;\n      setProfileImage(`${PROFILE_IMAGE_PATH}${encodeURIComponent(imageName)}`);\n    } else if (profileImage && profileImage !== Default_Profile && Employee?.profileImage) {\n      Employee.profileImage = actualProfilePath;\n    } else {\n      Employee.profileImage = \"\";\n    }\n    // return;\n\n    const emp = {\n      ...Employee,\n      countryCode: countryCode,\n      vaccinationCardImage: vaccinationFileName ? vaccinationFileName : Employee.vaccinationCardImage,\n      externalTestImage: externalImageFileName ? externalImageFileName : Employee.externalTestImage,\n      _version: versionNo,\n      updatedBy: appContext.user.sub,\n      updatedByName: appContext.user.name,\n      phone_number: phone_number,\n    };\n\n    try {\n      const updateEmployee = await API.updateEmployeeProfile(emp);\n      if (updateEmployee) await API.patientUpdateAPI(updateEmployee);\n      setEditInfo(updateEmployee);\n      setTest(updateEmployee);\n      setEmployee(getDemoGraphics({ employee_demographics: updateEmployee }));\n      setDemographics(getDemoGraphics({ employee_demographics: updateEmployee }));\n      switch (location?.state?.type) {\n        case \"pendingRelease\":\n          appContext.resetPendingTests();\n          break;\n        case \"inconclusiveTest\":\n          appContext.resetInvalidTests();\n          break;\n      }\n\n      appContext.showSuccessMessage(\"Employee updated Successfully\");\n      const {\n        match: { params },\n      } = props;\n\n      getTest(params.patientId);\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error in crew save\", err);\n      appContext.showErrorMessage(err.message);\n      setLoading(false);\n    }\n    setTimeout(() => {\n      setchangeDataCheck(true);\n    }, 60000);\n  };\n  const handelCancelButton = async () => {\n    setEditButton(true);\n\n    if (!Employee) return;\n    if (!editInfo?.profileImage) {\n      setProfileImage(Default_Profile);\n    }\n    if (!editInfo?.externalTestImage) {\n      setExternalTestImage(\"\");\n    }\n    if (!editInfo?.vaccinationCardImage) {\n      setVaccinationImage(\"\");\n    }\n    setEmployee(getDemoGraphics(editInfo));\n\n    // const {\n    //   match: { params },\n    // } = props;\n    // getTest(params.employeeId);\n\n    let getExternalTestImage = await API.getFileExternalStorage(Employee?.externalTestImage);\n    if (!getExternalTestImage) setExternalTestImage(\"\");\n    let getVacinationCardImage = await API.getFileExternalStorage(Employee?.vaccinationImage);\n    if (!getVacinationCardImage) setVaccinationImage(\"\");\n  };\n  const emailTest = (t) => {\n    setLoading(true);\n    const test = formatTest(t);\n    appContext.getLab(test).then(async (resp) => {\n      ReactPDF.pdf(<PDF test={test} testsLab={resp} parseTestResultForPDF={appContext.parseTestResultForPDF} />)\n        .toBlob()\n        .then(async (data) => {\n          try {\n            const fileName = `${test.id}-result.pdf`;\n            await Storage.put(fileName, data);\n            await API.sendEmailToCrew([{ email: test.email, fileName: `public/${fileName}` }]);\n            await API.updateEmailStatus(test.id);\n            // send sms as well if email is sending first time\n            if (!test.emailSend && test.phone_number) {\n              let smsMessage = `Hello, your test results are in for your test with ${test.site_name}, please log into Med Flow to review.`;\n              const siteObj = appContext.sites.find((s) => s.id === test.siteID);\n              if (siteObj && siteObj.messageResulted && result === \"negative\") {\n                smsMessage = siteObj.messageResulted;\n              } else if (siteObj && siteObj.messagePositive && result === \"positive\") {\n                smsMessage = siteObj.messagePositive;\n              }\n              await API.sendSMSNotification(setPhoneNo(test.phone_number), smsMessage);\n            }\n            setLoading(false);\n            appContext.showSuccessMessage(\"Email has been sent successfully\");\n          } catch (error) {\n            console.log(\"Error\");\n            setLoading(false);\n          }\n        });\n    });\n  };\n\n  const handleSaveQuarantine = async (obj) => {\n    try {\n      await API.updateQuarantineData(test.id, obj.startDate, obj.endDate);\n      getTest(test.id);\n      window.location.reload();\n      appContext.showSuccessMessage(\"Quarantine dates changed successfully\");\n    } catch (err) {\n      appContext.showErrorMessage(err.message);\n    }\n  };\n\n  const isPatternTest = () =>\n    test && test.test_type === \"PCR\" && test.patternTestAnswer && test.patternTestAnswer.length > 5;\n\n  const downloadBlob = (blob, filename) => {\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement(\"a\");\n    a.href = url;\n    a.download = filename || \"download\";\n    const clickHandler = () => {\n      setTimeout(() => {\n        URL.revokeObjectURL(url);\n        a.removeEventListener(\"click\", clickHandler);\n      }, 150);\n    };\n    a.addEventListener(\"click\", clickHandler, false);\n    a.click();\n    return a;\n  };\n  const patternConsentFile = async () => {\n    if (!test) return \"\";\n    const siteID = test.baseSiteID || test.siteID;\n    const fileName = `${siteID}-${test.id}-pattern.pdf`;\n    const result = await Storage.get(fileName, { download: true });\n    downloadBlob(result.Body, `${test.barcode}-pattern.pdf`);\n  };\n\n  const dataOfBirthParse = (dob) => {\n    if (dob && dob !== \"Invalid date\") {\n      return formatDateOfBirthDOB(dob);\n    }\n    return moment().format(\"MM/DD/YYYY\");\n  };\n\n  const showResultPDF = async (test) => {\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const handleRadioButtonChange = (e) => {\n    if (e.target.name === \"isVaccinated\") {\n      if (e.target.value === \"yes\") {\n        setEmployee({ ...Employee, isVaccinated: e.target.checked && true });\n      } else {\n        setEmployee({ ...Employee, isVaccinated: e.target.checked && false });\n      }\n    } else {\n      if (e.target.value === \"yes\") {\n        setEmployee({ ...Employee, isBooster: e.target.checked && true });\n      } else {\n        setEmployee({ ...Employee, isBooster: e.target.checked && false });\n      }\n    }\n  };\n\n  const handleToogleChange = (e) => {\n    if (e.target.name === \"sendSMS\") {\n      if (Employee?.sendSMS == \"1\") {\n        setEmployee({ ...Employee, sendSMS: Employee?.sendSMS == \"1\" ? false : true });\n      } else {\n        setEmployee({ ...Employee, sendSMS: Employee?.sendSMS == \"0\" ? true : false });\n      }\n    }\n    if (e.target.name === \"sendEmail\") {\n      if (Employee?.sendEmail == \"1\") {\n        setEmployee({ ...Employee, sendEmail: Employee?.sendEmail == \"1\" ? false : true });\n      } else {\n        setEmployee({ ...Employee, sendEmail: Employee?.sendEmail == \"0\" ? true : false });\n      }\n    }\n    if (e.target.name === \"autoRelease\") {\n      if (Employee?.autoRelease == \"1\") {\n        setEmployee({ ...Employee, autoRelease: Employee?.autoRelease == \"1\" ? false : true });\n      } else {\n        setEmployee({ ...Employee, autoRelease: Employee?.autoRelease == \"0\" ? true : false });\n      }\n    }\n  };\n\n  const makeRelationModal = (e) => {\n    console.log(\"clicked::\", e);\n    e.preventDefault();\n    e.stopPropagation();\n    setProfileModal(!showProfileModal);\n  };\n\n  return showPdf ? (\n    <PDFLayout setShowPdf={setShowPdf} testPdf={testPdf} testsLab={testsLab} />\n  ) : !loading ? (\n    <>\n      <div className=\"parent-wrapper\">\n        <SweetAlert show={showAlert} success title=\"Success\" onConfirm={hideAlert}>\n          Test Released\n        </SweetAlert>\n        <SweetAlert\n          show={showSubmitAlert}\n          success\n          title=\"Success\"\n          onConfirm={() => {\n            window.history.back();\n            setShowSubmitAlert(false);\n          }}\n        >\n          Test Submitted Successfully.\n        </SweetAlert>\n        <div className=\"crew-member-profile\">\n          <div className=\"crew-member-profile-inner\">\n            <div className=\"d-md-flex  justify-content-between\">\n              <Col md=\"3\" className=\"wrapper-profile\">\n                <div className=\"card-body px-3 pt-3\">\n                  <div className=\"d-flex align-items-center justify-content-between\">\n                    <h4 className=\"profile-title my-0 text-black\">\n                      {\" \"}\n                      Patient Profile\n                      {calculate_age(demographics?.dob) < 18 ? <span className=\"crew-minor-text\">- Minor</span> : null}\n                    </h4>\n                    {/* {\n                        editButton &&\n                        <img src={editIcon} alt=\"edit icon\" className=\"d-inline-block edit-icon\"  onClick={() => setEditButton(false)} />\n                      }\n                      {\n                    \n                        !editButton && (\n                            <div>    \n                              <img src={saveIcon} alt=\"save icon\" className=\"d-inline-block edit-icon cursor-pointer me-2\"  onClick={handleSave} />\n                              <img src={cancelIcon} alt=\"cancel icon\" className=\"d-inline-block edit-icon cursor-pointer\"  onClick={handelCancelButton} />\n                            </div>\n                        )\n                      } */}\n                  </div>\n                  <div className=\"profile-image mt-4 position-relative text-center\">\n                    <div className=\"crew-image-wrapper\">\n                      <figure className=\"profile-image-wrapper\">\n                        {!editButton ? (\n                          <ImageInput\n                            type=\"profile\"\n                            setSelectedImage={setProfileImage}\n                            selectedImage={profileImage}\n                            cameraIcon\n                          />\n                        ) : (\n                          <div className=\"\">\n                            <img src={profileImage} alt=\"profile-image\" />\n                          </div>\n                        )}\n                      </figure>\n                    </div>\n                    <p className=\"text-center mt-3 text-black mb-0\">{`${Employee?.first} ${Employee?.last}`}</p>\n                    <small className=\"mb-0 text-center text-grey\">ID Number: {Employee?.id_number}</small>\n                    <br />\n                    <small className=\"mb-0 text-center text-primary-color\">{Employee?.email}</small>\n                  </div>\n                  <hr className=\"horizontal-line\" />\n                  <div className=\"settings-profile\">\n                    <h4 className=\"profile-title\">Settings</h4>\n                    <div className=\"d-flex align-items-center justify-content-between profile-detail mb-3\">\n                      <span>Send SMS</span>\n                      <SwitchToggle\n                        id=\"sendSMS\"\n                        name=\"sendSMS\"\n                        handleToogleChange={handleToogleChange}\n                        checked={Employee?.sendSMS == \"1\" ? true : false}\n                        disabled={editButton}\n                      />\n                    </div>\n                    <div\n                      className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-3\"\n                    >\n                      <span>Send Email</span>\n                      <SwitchToggle\n                        id=\"sendEmail\"\n                        name=\"sendEmail\"\n                        handleToogleChange={handleToogleChange}\n                        checked={Employee?.sendEmail == \"1\" ? true : false}\n                        disabled={editButton}\n                      />\n                    </div>\n                    <div\n                      className=\"d-flex align-items-center justify-content-between profile-\n                          detail mb-3\"\n                    >\n                      <span>Auto Release</span>\n                      <SwitchToggle\n                        id=\"autoRelease\"\n                        name=\"autoRelease\"\n                        handleToogleChange={handleToogleChange}\n                        checked={Employee?.autoRelease == \"1\" ? true : false}\n                        disabled={editButton}\n                      />\n                    </div>\n                    <h4 className=\"profile-title\">Notes</h4>\n                    <div className=\"mb-3\">\n                      <textarea\n                        readOnly={editButton}\n                        className=\"form-control\"\n                        onChange={(e) => setEmployee({ ...Employee, note: e.target.value })}\n                        value={Employee?.note}\n                        defaultValue={demographics?.note}\n                        placeholder={`${!editButton ? \"Enter Notes\" : \"\"}`}\n                        type=\"text\"\n                      ></textarea>\n                    </div>\n                  </div>\n                </div>\n              </Col>\n              <Col md=\"9\" className=\"border-left-1\">\n                <CloseButton\n                  onClick={() => history.push(\"/admin/patient\")}\n                  variant=\"black\"\n                  className=\"text-right p-2 d-flex ms-auto mx-2\"\n                />\n                <div className=\"personal-info-wrapper pt-3 px-3\">\n                  <div className=\"row\">\n                    <div className=\"col-md-4\">\n                      <h4 className=\"text-decoration-underline text-black mt-0\">Personal Info</h4>\n                    </div>\n                    {/* <div className=\"col-md-4\">\n                      {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n                    </div> */}\n                    <div className=\"col-md-4\"></div>\n                  </div>\n                  <div className=\"testAdmin createClientsWrapper\">\n                    <div className=\"crew-profile-info\">\n                      <InputField\n                        type=\"text\"\n                        inputStyle=\"modalInput\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"First Name\"\n                        value={Employee?.first || \"\"}\n                        index=\"first\"\n                        maxLength={100}\n                        placeholder=\"Enter First Name\"\n                        disabled={editButton}\n                        handleChange={(e) =>\n                          setEmployee({\n                            ...Employee,\n                            first: getValidDep(e.target.value),\n                          })\n                        }\n                        required\n                      />\n                      <InputField\n                        type=\"text\"\n                        inputStyle=\"modalInput\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Middle Name\"\n                        value={Employee?.middle || \"\"}\n                        index=\"middle\"\n                        maxLength={100}\n                        placeholder=\"Enter Middle Name\"\n                        disabled={editButton}\n                        handleChange={(e) =>\n                          setEmployee({\n                            ...Employee,\n                            middle: getValidDep(e.target.value),\n                          })\n                        }\n                      />\n                      <InputField\n                        type=\"text\"\n                        inputStyle=\"modalInput\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Last Name\"\n                        value={Employee?.last || \"\"}\n                        index=\"last\"\n                        maxLength={100}\n                        placeholder=\"Enter Last Name\"\n                        disabled={editButton}\n                        handleChange={(e) =>\n                          setEmployee({\n                            ...Employee,\n                            last: getValidDep(e.target.value),\n                          })\n                        }\n                        required\n                      />\n\n                      <InputField\n                        type=\"email\"\n                        inputStyle=\"modalInput\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Email\"\n                        value={Employee?.email || \"\"}\n                        index=\"email\"\n                        maxLength={25}\n                        placeholder=\"Enter Email\"\n                        disabled={editButton}\n                        handleChange={(e) =>\n                          setEmployee({\n                            ...Employee,\n                            email: convertToLower(e.target.value),\n                          })\n                        }\n                      />\n                    </div>\n                    <div className=\"crew-profile-row2 align-items-center\">\n                      <InputField\n                        type=\"phone\"\n                        inputStyle={`employee-phone-input ${Employee?.isNew && \"pd-right-30\"}`}\n                        labelStyle=\"modalLineHeaders mt-0 text-capitalize\"\n                        label=\"Phone Number\"\n                        value={formatPhoneNumber(Employee?.phone_number, Employee?.countryCode || \"+1\")}\n                        index=\"phone_number\"\n                        maxLength={65}\n                        placeholder=\"Enter Phone Number\"\n                        disabled={editButton}\n                        handleChange={handlePhoneNo}\n                      />\n                      <div className=\"form-group-wrapper my-0 flex-2\">\n                        <label className=\"my-0 modalLineHeaders\">\n                          Gender <span className=\"fw-bold fs-6 maroon\">*</span>\n                        </label>\n                        <div className=\"d-flex justify-content-between w-100 flex-wrap\">\n                          <RadioButton\n                            name=\"sex\"\n                            id={`male${Math.random()}`}\n                            label=\"Male\"\n                            checked={Employee?.sex === \"M\" ? true : false}\n                            handleRadioButtonChange={(e) =>\n                              setEmployee({\n                                ...Employee,\n                                sex: e.target.checked ? \"M\" : \"\",\n                              })\n                            }\n                            disabled={editButton}\n                          />\n                          <RadioButton\n                            name=\"sex\"\n                            id={`female${Math.random()}`}\n                            checked={Employee?.sex === \"F\" ? true : false}\n                            label=\"Female\"\n                            handleRadioButtonChange={(e) =>\n                              setEmployee({\n                                ...Employee,\n                                sex: e.target.checked ? \"F\" : \"\",\n                              })\n                            }\n                            disabled={editButton}\n                          />\n                          <RadioButton\n                            id={`other${Math.random()}`}\n                            checked={Employee?.sex === \"X\" ? true : false}\n                            name=\"sex\"\n                            label=\"Not Specified\"\n                            handleRadioButtonChange={(e) =>\n                              setEmployee({\n                                ...Employee,\n                                sex: e.target.checked ? \"X\" : \"\",\n                              })\n                            }\n                            disabled={editButton}\n                          />\n                        </div>\n                      </div>\n                    </div>\n                    <div className=\"crew-profile-row2\">\n                      <InputField\n                        type=\"address\"\n                        groupWrapper=\"form-group-wrapper w-100\"\n                        inputStyle=\"modalInput\"\n                        labelStyle=\"modalLineHeaders text-capitalize\"\n                        label=\"Address\"\n                        value={Employee?.street || \"\"}\n                        index=\"street\"\n                        maxLength={255}\n                        placeholder=\"Enter Address\"\n                        disabled={editButton}\n                        handleChange={(val, flag) => handleUpdateAddress(val, flag)}\n                      />\n                      <InputField\n                        type=\"text\"\n                        groupWrapper=\"form-group-wrapper w-100\"\n                        inputStyle=\"modalInput\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Apt/Unit#\"\n                        value={Employee?.street2 || \"\"}\n                        index=\"street2\"\n                        maxLength={255}\n                        placeholder=\"Enter Apt/Unit\"\n                        disabled={editButton}\n                        handleChange={(e) => setEmployee({ ...Employee, street2: e.target.value })}\n                      />\n                      <InputField\n                        type=\"text\"\n                        groupWrapper=\"form-group-wrapper w-100\"\n                        inputStyle=\"modalInput\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"City\"\n                        value={Employee?.city || \"\"}\n                        index=\"city\"\n                        maxLength={65}\n                        placeholder=\"Enter City\"\n                        disabled={editButton}\n                        handleChange={(e) => setEmployee({ ...Employee, city: e.target.value })}\n                      />\n                    </div>\n                    <div className=\"crew-profile-row2\">\n                      <InputField\n                        type=\"text\"\n                        groupWrapper=\"form-group-wrapper w-100\"\n                        inputStyle=\"modalInput\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"State\"\n                        value={Employee?.state || \"\"}\n                        index=\"state\"\n                        maxLength={2}\n                        placeholder=\"Enter State\"\n                        disabled={editButton}\n                        handleChange={(e) => {\n                          let val = e.target.value;\n                          if (val) val = val.toUpperCase();\n                          setEmployee({\n                            ...Employee,\n                            state: getValidSpaces(val),\n                          });\n                        }}\n                      />\n                      <InputField\n                        type=\"text\"\n                        groupWrapper=\"form-group-wrapper w-100\"\n                        inputStyle=\"modalInput\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Zip Code\"\n                        value={Employee?.zip || \"\"}\n                        index=\"zip\"\n                        maxLength={10}\n                        placeholder=\"Enter Zip Code\"\n                        disabled={editButton}\n                        handleChange={(e) => {\n                          let val = e.target.value;\n                          if (val) val = val.toUpperCase();\n                          setEmployee({\n                            ...Employee,\n                            zip: Employee.isoCode === \"US\" ? val : getValidSpaces(val),\n                          });\n                        }}\n                      />\n\n                      <InputField\n                        type=\"datePicker\"\n                        inputStyle=\"w-100 orderTestDob\"\n                        labelStyle=\"modalLineHeaders mt-0 text-capitalize\"\n                        label=\"Date of Birth\"\n                        value={\n                          Employee?.dob && new Date(Employee.dob) != \"Invalid Date\"\n                            ? moment(Employee.dob, \"YYYY-MM-DD\").toDate()\n                            : null\n                        }\n                        index=\"dob\"\n                        placeholder=\"Date of Birth\"\n                        disabled={editButton}\n                        handleChange={(e) =>\n                          setEmployee({\n                            ...Employee,\n                            dob: moment(e).format(\"YYYY-MM-DD\") != \"Invalid date\" ? moment(e).format(\"YYYY-MM-DD\") : \"\",\n                          })\n                        }\n                        required\n                      />\n                      {/* \n                      <Form.Group className=\"form-group-wrapper\" readOnly={editButton} plaintext>\n                        {calculate_age(demographics?.dob) > 18 ? (\n                          <label className=\"modalLineHeaders mt-0 text-capitalize\">ID Number</label>\n                        ) : (\n                          <label>SSN</label>\n                        )}\n                        <Form.Control\n                          readOnly={editButton}\n                          className={`${!editButton ? \"modalInput\" : \"\"}`}\n                          value={Employee?.id_number}\n                          onChange={(e) => setEmployee({ ...Employee, id_number: e.target.value })}\n                          defaultValue={formatIDNo()}\n                          placeholder=\"ID Number\"\n                          type=\"text\"\n                        />\n                      </Form.Group> */}\n                    </div>\n                    <div className=\"crew-profile-row2\">\n                      <InputField\n                        type=\"dropDown\"\n                        inputStyle=\"w-100\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Rendering Provider\"\n                        options={providers}\n                        value={\n                          Employee?.renderingProvider\n                            ? providers.find((item) => item.value === Employee.renderingProvider)\n                            : null\n                        }\n                        index=\"renderingProvider\"\n                        isClearable={true}\n                        placeholder=\"Select Rendering Provider\"\n                        disabled={editButton}\n                        handleChange={(e) => {\n                          setEmployee({\n                            ...Employee,\n                            renderingProvider: e?.value || \"\",\n                          });\n                        }}\n                      />\n                      <InputField\n                        type=\"dropDown\"\n                        inputStyle=\"referring-provider-select w-100\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Referring Physician\"\n                        options={providers}\n                        value={\n                          Employee?.referringProvider\n                            ? providers.find((item) => item.value === Employee.referringProvider)\n                            : null\n                        }\n                        index=\"referringProvider\"\n                        placeholder=\"Select Referring Physician\"\n                        disabled={editButton}\n                        isClearable={true}\n                        handleChange={(e) => {\n                          setEmployee({\n                            ...Employee,\n                            referringProvider: e?.value || \"\",\n                          });\n                        }}\n                      />\n                      <InputField\n                        type=\"dropDown\"\n                        inputStyle=\"w-100\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Ordering Provider\"\n                        options={providers}\n                        value={\n                          Employee?.orderingProvider\n                            ? providers.find((item) => item.value === Employee.orderingProvider)\n                            : null\n                        }\n                        index=\"orderingProvider\"\n                        placeholder=\"Select Ordering Provider\"\n                        disabled={editButton}\n                        isClearable={true}\n                        handleChange={(e) => {\n                          setEmployee({\n                            ...Employee,\n                            orderingProvider: e?.value || \"\",\n                          });\n                        }}\n                      />\n                    </div>\n                    <div className=\"crew-profile-row2 mb-3\">\n                      <InputField\n                        type=\"dropDown\"\n                        inputStyle=\"w-100\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Primary Care Physician\"\n                        options={providers}\n                        value={\n                          Employee?.primaryCarePhysician\n                            ? providers.find((item) => item.label === Employee.primaryCarePhysician)\n                            : null\n                        }\n                        index=\"primaryCarePhysician\"\n                        placeholder=\"Select Primary Care Physician\"\n                        disabled={editButton}\n                        isClearable={true}\n                        handleChange={(e) => {\n                          setEmployee({\n                            ...Employee,\n                            primaryCarePhysician: e?.label || \"\",\n                          });\n                        }}\n                      />\n                      <InputField\n                        type=\"dropDown\"\n                        inputStyle=\"w-100\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Referring Physician\"\n                        options={providers}\n                        value={\n                          Employee?.referringPyhsician\n                            ? providers.find((item) => item.label === Employee.referringPyhsician)\n                            : null\n                        }\n                        index=\"referringPyhsician\"\n                        placeholder=\"Select Referring Physician\"\n                        disabled={editButton}\n                        isClearable={true}\n                        handleChange={(e) => {\n                          setEmployee({\n                            ...Employee,\n                            referringPyhsician: e?.label || \"\",\n                          });\n                        }}\n                      />\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"p-3\">\n                  <Row className=\"additional-info w-100\">\n                    <Col md=\"5\" className=\"border-right-1 additional-info-radios\">\n                      <div className=\"justify-content-between d-flex  w-100 mb-0 m-0 secondary-insurance-head\">\n                        <h4 className=\"text-decoration-underline mt-0 section-title\">\n                          {\" \"}\n                          Payer Information <span className=\"fw-bold fs-6 maroon\">*</span>\n                        </h4>\n                        <div className=\"plus-icon mt-1\">\n                          <i\n                            className=\"fas fa-plus-circle fa-lg cursor-pointer w-auto\"\n                            onClick={() => setOpenInsuranceModal(EMP_INS_OBJECT)}\n                          />\n                        </div>\n                      </div>\n                      <div className=\"scrollable-div w-100 p-2\">\n                        {Employee?.insuranceDetails && Employee.insuranceDetails.length > 0\n                          ? Employee.insuranceDetails.map((ins, i) => (\n                              <InsuranceViewCard\n                                insurance={{ ...ins }}\n                                index={i + 1}\n                                key={i}\n                                handleEdit={(obj) => {\n                                  setOpenInsuranceModal({ ...obj, isNew: false });\n                                }}\n                                handleUpdateIns={(obj) => {\n                                  const findIndex = Employee.insuranceDetails.findIndex((f) => f.id === obj.id);\n                                  if (findIndex !== -1) {\n                                    const stateUser = { ...Employee };\n                                    const stateInsDetails = [...stateUser.insuranceDetails];\n                                    stateInsDetails[findIndex] = obj;\n                                    setEmployee({ ...stateUser, insuranceDetails: stateInsDetails });\n                                  }\n                                }}\n                                handleRemove={(obj) => {\n                                  const stateInsDetails = Employee.insuranceDetails.filter((f) => f.id !== obj.id);\n                                  setEmployee({ ...Employee, insuranceDetails: stateInsDetails });\n                                }}\n                                cssClass={\"insCard-background-blue \"}\n                              />\n                            ))\n                          : null}\n                      </div>\n                      {/* <InputField\n                        type=\"dropDown\"\n                        inputStyle=\"w-100\"\n                        labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                        label=\"Insurance Carrier\"\n                        options={INSURANCE_PROVIDER}\n                        value={\n                          Employee?.insurance_name\n                            ? INSURANCE_PROVIDER.find((f) => f.label === Employee?.insurance_name)\n                            : null\n                        }\n                        disabled={editButton}\n                        index=\"insurance_name\"\n                        placeholder=\"Select Insurance\"\n                        handleChange={(e) => {\n                          setEmployee({ ...Employee, insurance_name: e.label });\n                        }}\n                      />\n\n                      <Form.Group className=\"form-group-wrapper\">\n                        <label className=\"modalLineHeaders mt-0 text-capitalize\">Insurance ID</label>\n                        <Form.Control\n                          className={`height-32 ${!editButton ? \"modalInput\" : \"\"}`}\n                          readOnly={editButton}\n                          onChange={(e) => setEmployee({ ...Employee, insurance_number: e.target.value })}\n                          value={Employee?.insurance_number}\n                          defaultValue={demographics?.insurance_number}\n                          placeholder={`${!editButton ? \"Enter Insurance Id\" : \"\"}`}\n                          type=\"text\"\n                        />\n                      </Form.Group> */}\n                      <div className=\"w-100\">\n                        {showImages && (\n                          <div className=\"d-block\">\n                            <div className=\"cards-heading\">\n                              <span>Insurance</span> Card Images\n                            </div>\n                            <div className=\"test-details-wrapper rounded-2\">\n                              <div className=\"imageWrapper\">\n                                {showImages.filter((i) => i.isHIPPA === false && i.isExist).length > 0 ? (\n                                  showImages\n                                    .filter((i) => i.isHIPPA === false && i.isExist)\n                                    .map((showImg, index) => {\n                                      return (\n                                        <ImageView\n                                          key={index}\n                                          cssClass=\"border-0 p-3\"\n                                          imgSrc={showImg.imgSrc}\n                                          onClick={() => handleImageClick(showImg.imgSrc)}\n                                        />\n                                      );\n                                    })\n                                ) : (\n                                  <div className=\"d-flex align-items-center justify-content-between w-100\">\n                                    <ImageView key={0} cssClass=\"border-0 p-3\" imgSrc={\"\"} />\n                                  </div>\n                                )}\n                              </div>\n                            </div>\n                          </div>\n                        )}\n                      </div>\n                    </Col>\n                    <Col md=\"7\" className=\"additional-info-radios border-right-1\">\n                      <div className=\"justify-content-between d-flex align-items-center mb-0 m-0 secondary-insurance-head\">\n                        <h4 className=\"text-decoration-underline mt-0 section-title\">Documents</h4>\n                        <div className=\"plus-icon mx-2\">\n                          <i\n                            className={`fas fa-plus-circle fa-lg cursor-pointer w-auto ${\n                              editButton && \"disable-cursor\"\n                            }`}\n                            onClick={() =>\n                              !editButton && (setSelectedDocument({ isNew: true }), setOpenDocumentModal(Employee))\n                            }\n                          />\n                        </div>\n                      </div>\n\n                      <DocumentList\n                        list={documents}\n                        disabled={editButton}\n                        setDocuments={setDocuments}\n                        dropDownOptions={[{ title: \"Download\" }, { title: \"Edit\" }, { title: \"Delete\" }]}\n                        appContext={appContext}\n                        setLoading={setLoading}\n                        handleEdit={(item) =>\n                          !editButton &&\n                          (setSelectedDocument({ ...item, isNew: false }), setOpenDocumentModal(Employee))\n                        }\n                      />\n                    </Col>\n                  </Row>\n                  <div className=\"text-right w-100\">\n                    {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n\n                    {!editButton && (\n                      <Button\n                        variant=\"secondary\"\n                        className=\"profileButton btn-fill createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        disabled={editButton}\n                        onClick={() => {\n                          const obj = NEW_PROVIDER_OBJECT;\n                          setNewUserProvider({ ...obj, isNew: true });\n                        }}\n                      >\n                        Add Provider\n                      </Button>\n                    )}\n\n                    {editButton && (\n                      <Button\n                        className=\"profileButton btn-fill createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        variant=\"primary\"\n                        onClick={() => setEditButton(false)}\n                      >\n                        Edit Info\n                      </Button>\n                    )}\n\n                    {!editButton && (\n                      <Button\n                        className=\"profileButton btn-fill createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        variant=\"secondary\"\n                        onClick={() => handleSave({ ...Employee })}\n                      >\n                        {\" \"}\n                        Save{\" \"}\n                      </Button>\n                    )}\n\n                    {!editButton && (\n                      <Button\n                        className=\"profileButton btn-fill createButtons\"\n                        style={{\n                          marginRight: 10,\n                          marginTop: 10,\n                        }}\n                        variant=\"primary\"\n                        onClick={handelCancelButton}\n                      >\n                        Cancel\n                      </Button>\n                    )}\n                  </div>\n                </div>\n              </Col>\n            </div>\n          </div>\n        </div>\n\n        <Row className=\"mx-0\">\n          <Col md=\"12\">\n            <div className=\"system-settings-wrapper\">\n              {testViews && <TestView testData={testViews} loader={loadingTestView} handleResultPDF={showResultPDF} />}\n            </div>\n            <div className=\"system-settings-wrapper\">\n              {employeeLogs && <EmployeeLogs employeeData={employeeLogs} />}\n            </div>\n          </Col>\n        </Row>\n\n        <RelationView employee={demographics} />\n      </div>\n\n      <Modal\n        show={modalShow}\n        // style={{ transform: \"translate(0, -30%)\" }}\n        animation={true}\n        onHide={() => setModalShow(false)}\n        centered\n        size={\"md\"}\n      >\n        <Modal.Header closeButton>\n          <Modal.Title id=\"contained-modal-title-vcenter\">Release Test Results</Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body style={{ paddingTop: 0, marginRight: \"auto\", marginLeft: \"auto\" }}>\n          <p>Select all that apply: </p>\n          <div className=\"checkboxRow\">\n            <label className=\"checkboxLabel\">\n              <input\n                disabled={!siteContactPhone}\n                value=\"site\"\n                onChange={(e) => {\n                  if (e.target.checked) {\n                    setReleaseTo({\n                      ...releaseTo,\n                      [e.target.value]: siteContactPhone,\n                    });\n                  } else {\n                    const newReleaseTo = releaseTo;\n                    delete newReleaseTo[e.target.value];\n                    setReleaseTo(newReleaseTo);\n                  }\n                }}\n                className=\"releaseCheckbox\"\n                type=\"checkbox\"\n              />\n              Health and Safety Officer\n            </label>\n            <label>\n              <input\n                value=\"crew\"\n                onChange={(e) => {\n                  if (e.target.checked) {\n                    setReleaseTo({\n                      ...releaseTo,\n                      [e.target.value]: setPhoneNo(test?.phone_number),\n                    });\n                  } else {\n                    const newReleaseTo = releaseTo;\n                    delete newReleaseTo[e.target.value];\n                    setReleaseTo(newReleaseTo);\n                  }\n                }}\n                className=\"releaseCheckbox\"\n                type=\"checkbox\"\n              />\n              Crew Member\n            </label>\n          </div>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button className=\"modalButtons\" variant=\"secondary\" onClick={() => setModalShow(false)}>\n            Cancel\n          </Button>\n          <Button\n            className=\"modalButtons\"\n            variant=\"primary\"\n            onClick={async () => {\n              if (releaseTo.length === 0) return;\n              setLoading(true);\n              const params = [];\n              params.push({\n                id: test.id,\n                status: \"Processed\",\n                timerStatus: \"Processed\",\n                sequenceNo: test.sequenceNo,\n                invalidResultStatus: 1,\n              });\n              const ids = [{ id: test.id, sequenceNo: test.sequenceNo }];\n              await GQAPI.releaseTest(params);\n              if (releaseTo.crew) {\n                await GQAPI.sendEmailToPendingRelease(params);\n              }\n\n              const logs = {\n                ids: ids,\n                userID: appContext.user?.sub,\n                userName: appContext.user?.name,\n                slug: test.result.toLowerCase() !== \"positive\" ? \"Inconclusive Release\" : \"Pending Release\",\n              };\n\n              await GQAPI.addTestLogs(logs);\n\n              releaseTo.site &&\n                (await API.sendSMSNotification(\n                  releaseTo.site,\n                  `Hello, there was a positive (${TEST_TYPE_VALUE[test.test_type]}) test result for ${\n                    site.name\n                  }. please login to your Health & Safety Portal to review.`\n                ));\n\n              await appContext.resetPendingTests([test.id]);\n              props.history.push(\"/admin/pendingrelease\");\n              appContext.showSuccessMessage(`Success! You have released test`);\n              setLoading(false);\n            }}\n          >\n            Release Results\n          </Button>\n        </Modal.Footer>\n      </Modal>\n      {openQuarantined && (\n        <QuarantineModal test={test} handleSave={handleSaveQuarantine} handleClose={() => setOpenQuaratined(false)} />\n      )}\n\n      {openDataChangeConfirmation && (\n        <ConfirmationModal\n          show={openDataChangeConfirmation}\n          title=\"Test Update Alert\"\n          message={`New Changes occures, are you want to update your edit info!`}\n          handleConfirm={handleDataChangeConfirm}\n        />\n      )}\n\n      {openInsuranceModal && (\n        <InsuranceDetailsModal\n          type=\"\"\n          title={openInsuranceModal.isNew ? \"Add Payer Information\" : \"Update Payer information\"}\n          insuranceDetails={{ ...openInsuranceModal }}\n          insuranceList={Employee.insuranceDetails}\n          user={Employee}\n          hanndleAddIns={(obj) => {\n            setOpenInsuranceModal(null);\n            setEmployee({\n              ...Employee,\n              insuranceDetails: parseInsDetails([...Employee.insuranceDetails, obj], Employee),\n            });\n          }}\n          handleUpdateIns={(obj) => {\n            setOpenInsuranceModal(null);\n            if (!obj.isNew) {\n              const findIndex = Employee.insuranceDetails.findIndex((f) => f.id === obj.id);\n              if (findIndex !== -1) {\n                const stateUser = { ...Employee };\n                const stateInsDetails = [...stateUser.insuranceDetails];\n                stateInsDetails[findIndex] = obj;\n                setEmployee({ ...stateUser, insuranceDetails: stateInsDetails });\n              }\n            } else {\n              setEmployee({ ...Employee, insuranceDetails: [...Employee.insuranceDetails, obj] });\n            }\n          }}\n          handleClose={(key) => {\n            setOpenInsuranceModal(null);\n          }}\n        />\n      )}\n\n      {openDocumentModal && (\n        <DocumentForm\n          emp={openDocumentModal}\n          document={selectedDocument}\n          handleClose={() => {\n            setOpenDocumentModal(null);\n          }}\n          setLoading={setLoading}\n          appContext={appContext}\n          setDocuments={setDocuments}\n          cssClass=\"seperateModal\"\n        />\n      )}\n\n      {newProviderInfo && (\n        <ProviderModal\n          cssClass=\"seperateModal\"\n          show={true}\n          user={newProviderInfo}\n          handleClose={(obj) => {\n            setNewUserProvider(null);\n            if (obj && obj.id) {\n              setProviders((prev) => [...prev, { ...obj, label: obj.name, value: obj.id }]);\n            }\n          }}\n          providers={providers}\n          appContext={appContext}\n        />\n      )}\n\n      {showProfileModal && (\n        <ProfileRelationModal\n          filterEmployees={appContext?.users?.filter(\n            (f) => f.id !== Employee.id && connected.findIndex((i) => i.id === f.id) === -1\n          )}\n          employeesId={Employee.id}\n          getConnectedProfiles={getConnectedProfiles}\n          connected={connected}\n          handleClose={() => {\n            setProfileModal(!showProfileModal);\n          }}\n        />\n      )}\n    </>\n  ) : (\n    <Loader />\n  );\n};\n\nexport default PatientProfile;\n","import api from \"api\";\nimport Filter from \"components/Filter\";\nimport FilterSelect from \"components/FilterSelect\";\nimport Icon from \"components/Icon\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport PGPagination from \"components/Pagination/PGPagination\";\nimport Status from \"components/Status/Status\";\nimport MainTable from \"components/Table/MainTable\";\nimport TimeFilter from \"components/TimeFilter\";\nimport { useInitialRender } from \"components/useInitialRender\";\nimport {\n  CONFIG,\n  NEW_DISCOVERY_ID,\n  ORDER_EMPTY_OBJECT,\n  ORDER_STATUS,\n  TEST_NO_COLOR,\n  PAGE_LIMIT,\n  stringConstant,\n  TABLE_QUICK_TOOLS,\n  ORDER,\n  EMPLOYEE,\n  BIO_LAB_ID,\n  LAB_ID,\n} from \"constant\";\nimport { ORDER_PERSONALIZE } from \"constants/personalization\";\nimport { AppContext } from \"context/app-context\";\nimport { debounce } from \"debounce\";\nimport moment from \"moment\";\nimport { useLocation } from \"react-router-dom\";\nimport React, { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport \"react-activity/dist/Bounce.css\";\nimport { Card, Col, Row } from \"react-bootstrap\";\nimport {\n  eligibilityMessageColor,\n  formatOrders,\n  getSelectedColumn,\n  parseBooleanValue,\n  sortingFilterInLC,\n  sortTestList,\n  getClientSpecificString,\n  formatPersonalization,\n  formattedString,\n  getTestDates,\n} from \"utils\";\nimport gqApi from \"views/GraphQL/gqApi\";\nimport Loader from \"../../components/Loader/Loader\";\nimport RedirectLink from \"components/RedirectLink\";\nimport { ALTA_ID } from \"constant\";\nimport { personalisationInLC } from \"utils\";\nimport { PERSONALISATION_KEY } from \"constant\";\nimport PersonalizationModal from \"components/Modal/personalizationModal\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { fetchAllProviders } from \"store/features/providers/providersSlice\";\nimport { SYSTEM_TIME_ZONE } from \"utils\";\nimport { showResultPdf } from \"store/features/resultPdf/reslutPdfSlice\";\nimport { showResultReqForm } from \"store/features/resultPdf/reslutPdfSlice\";\nimport { isLocalhost } from \"utils\";\nimport { selectClient, selectLab } from \"store/features/authentication/authenticationSelectors\";\nimport { showConfirmationModal } from \"store/features/general/generalAction\";\nimport { setClearConfirmation } from \"store/features/general/generalSlice\";\n\nconst options = [\n  {\n    title: \"Edit\",\n  },\n  {\n    title: \"Delete\",\n  },\n  {\n    title: \"View/Update\",\n  },\n];\n\nconst arePropsEqual = (prevProps, nextProps) => {\n  if (JSON.stringify(prevProps) === JSON.stringify(nextProps)) return true;\n  return false;\n  // Custom comparison logic for props\n  // Return true if the props are equal, otherwise return false\n};\n\nconst OrdersView = () => {\n  const [error, setError] = useState(\"\");\n\n  const appContext = useContext(AppContext);\n  const location = useLocation();\n\n  const dispatch = useDispatch();\n\n  const [orderTests, setOrderTests] = useState([]);\n  const [orders, setOrders] = useState([]);\n  const [filteredOrders, setFilteredOrders] = useState([]);\n  const [openCreator, setOpenCreator] = useState(false);\n  const [newOrder, setNewOrder] = useState(ORDER_EMPTY_OBJECT);\n  const [orderToDelete, setOrderToDelete] = useState(\"\");\n  const [openHipaa, setOpenHipaa] = useState(false);\n  const [selectedOrder, setSelectedOrder] = useState({});\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [loading, setLoading] = useState();\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [openPersonalizationModal, setOpenPersonalizationModal] = useState(false);\n  const [filter, setFilter] = useState({});\n  const initialRender = useInitialRender();\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [pageNo, setPageNo] = useState(1);\n  const { filterDates } = TimeFilter;\n  const [personalize, setPersonalize] = useState([]);\n  const [searchTerms, setSearchTerms] = useState([]);\n\n  const [filterTabIndex, setFilterTabIndex] = useState(0);\n\n  const permission = useSelector(userGivenPermission);\n  const userClientData = useSelector(selectClient);\n  const [openRestoredConfirmation, setOpenRestoredConfirmation] = useState(false);\n  const [cancelTestData, setCancelTestsData] = useState({ isConfirm: false, reason: \"\" });\n  const labObject = useSelector(selectLab);\n\n  const quickTools = [\n    TABLE_QUICK_TOOLS.checkbox,\n    permission[ORDER]?.editOrders && TABLE_QUICK_TOOLS.edit,\n    permission[ORDER]?.editOrders && TABLE_QUICK_TOOLS.notes,\n  ];\n\n  const defaultConfig = useMemo(() => {\n    return getClientSpecificString();\n  }, []);\n\n  // const searchTerms = useMemo(() => {\n  //   return ORDER_PERSONALIZE.map((item) => item.title);\n  // }, [ORDER_PERSONALIZE]);\n\n  // const searchTerms = [\n  //   \"First Name\",\n  //   \"Last Name\",\n  //   `${stringConstant.sequenceNo}`,\n  //   \"Date of Birth\",\n  //   \"Gender\",\n  //   `${stringConstant.show}`,\n  //   \"Ord Status\",\n  //   \"Cancelled Reason\",\n  //   \"Eligibility Status\",\n  // ];\n\n  const addTermConditionally = (stringConstant, config) => {\n    const searchTermsArr = [\n      \"First Name\",\n      \"Last Name\",\n      `${stringConstant.sequenceNo}`,\n      \"Date of Birth\",\n      \"Gender\",\n      `${stringConstant.show}`,\n      \"Ord Status\",\n      \"Eligibility Status\",\n      \"Referring Physician\",\n    ];\n\n    const term = \"Cancelled Reason\";\n    if (CONFIG.clientID === BIO_LAB_ID) {\n      const newTerms = [...searchTermsArr];\n      newTerms.splice(7, 0, term);\n      return newTerms;\n    }\n\n    return searchTermsArr;\n  };\n\n  const isSiteUser = useMemo(() => {\n    return !!appContext?.user?.isSite();\n  }, [appContext]);\n\n  const isArchivedOrderUrl = window.location.href.includes(\"archivedOrders\");\n\n  const getProviders = async () => {\n    try {\n      dispatch(fetchAllProviders({ noShowLoader: true }));\n    } catch (err) {\n      console.log(\"getProviders Error:-\", err);\n    }\n  };\n\n  // const searchTerms = useMemo(() => {\n  //   return addTermConditionally(stringConstant, defaultConfig);\n  // }, []);\n\n  const resultTypeOptions = [\n    { value: \"P/N\", label: \"P/N\" },\n    { value: \"P/F\", label: \"P/F\" },\n  ];\n  const handleClose = () => {\n    setOpenCreator(false);\n    setOpenDeleteConfirmation(false);\n    setOpenHipaa(false);\n    setSelectedOrder({});\n  };\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? filteredOrders.map((t) => t.id) : []);\n\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter, page, sortBy, sortDescending) => {\n      loadOrders(filter, timeFilter, page, sortBy, sortDescending);\n    }, 800),\n    []\n  );\n\n  useEffect(() => {\n    setPageNo(1);\n\n    fetchFromApi({ ...filter }, timeFilter, 1, sortBy, sortDescending);\n  }, [filter, sortBy, sortDescending, timeFilter]);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      loadOrders(filter, timeFilter, pageNo, sortBy, sortDescending);\n    }\n  }, [pageNo]);\n\n  useEffect(() => {\n    if (initialRender) return;\n\n    if (appContext.eventOrder && appContext.eventOrder !== 0) {\n      const eventType = appContext.eventOrder.opType;\n\n      const model = formatOrders(appContext.eventOrder.element, appContext?.user?.isSite());\n      const newList = [...orders];\n\n      if (!model.isActive) {\n        const prevLength = orders.length;\n        const newOrderList = orders.filter((t) => t.id !== model.id);\n        setOrders(newOrderList);\n        setFilteredOrders(filteredOrders.filter((t) => t.id !== model.id));\n        if (totalRecord > 0 && prevLength !== newOrderList.length) {\n          setTotalRecord(parseInt(totalRecord) - 1);\n        }\n        return;\n      }\n\n      const isSiteMatched = !CONFIG.siteID || CONFIG.allowSites.includes(model.siteID);\n\n      if (eventType === \"INSERT\" && isSiteMatched) {\n        newList.unshift(model);\n        setTotalRecord(parseInt(totalRecord) + 1);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        if (index !== -1) {\n          if (isSiteMatched) {\n            newList.splice(index, 1, model);\n          } else {\n            newList = newList.filter((f) => f.id !== model.id);\n          }\n        } else {\n          if (isSiteMatched) {\n            newList.unshift(model);\n          }\n        }\n      }\n      let activeOrders = newList.filter((f) => f.isActive);\n      setOrders(activeOrders);\n      refreshList(activeOrders);\n    }\n  }, [appContext?.eventOrder]);\n\n  useEffect(() => {\n    if (location.state) {\n      let filterTerm = location.state.term;\n      let filterTermName = location.state.name;\n\n      setFilter({ ...filter, [filterTerm]: filterTermName });\n    }\n  }, [location.state]);\n\n  const handleEditOrder = (order) => {\n    appContext.showOrderModal({\n      ...order,\n      // orderDate: moment(order.orderDate).format(\"YYYY-MM-DDTHH:mm\"),\n      employee_demographics: {\n        ...order.employee_demographics,\n        phoneNumber: `${order.countryCode}${order.phoneNumber}`,\n      },\n      isNew: false,\n    });\n  };\n\n  const handleUpdateNoteReocrd = async (row) => {\n    try {\n      setLoading(true);\n      await gqApi.updateOrderStatus(row);\n      setFilteredOrders((prevTests) => {\n        const prevIndex = prevTests.findIndex((t) => t.id === row.id);\n        if (prevIndex !== -1) {\n          prevTests[prevIndex].notes = row.note;\n        }\n        return [...prevTests];\n      });\n      appContext.showSuccessMessage(\"Note Added Successfully!\");\n      setLoading(false);\n    } catch (err) {\n      console.log(\"Error:-\", err);\n      setLoading(false);\n    }\n  };\n\n  const ordersToMap = useMemo(() => {\n    let list = filteredOrders ? [...filteredOrders] : [];\n\n    // if (appContext?.user?.isSite()) {\n\n    //   list = list.map((item) => {\n    //     console.log('item', item)\n    //     const isAnyCanceledTest = item.testsToDo.test.some((test) => test.testStatus === \"Cancel\");\n\n    //     return {\n    //       ...item,\n    //       rowColor: isAnyCanceledTest ? \"red\" : \"white\",\n    //     };\n    //   });\n    // }\n\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredOrders, currentPage]);\n\n  const isDisableCreateTest = (orders, orderId) => {\n    if (checkboxes.length === 0) return true;\n    const isExist = orders.find((order) => order.id === orderId)?.testsToDo?.test?.filter((t) => !t.isDone);\n    return isExist?.length === 0;\n  };\n\n  const parseSelectedOption = (id) => {\n    if (!id) return null;\n    const data = resultTypeOptions.find((f) => f.value === id);\n    if (data) return data.label;\n    return id;\n  };\n\n  const handleCheckboxChange = (e, user) => {\n    const filteredList = checkboxes.filter((c) => c !== user.id);\n    if (e.target.checked) {\n      filteredList.push(user.id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const getOrderStatusTitle = (value, row) => {\n    const RENAME_STATUS = {\n      Cancel: \"Cancelled\",\n    };\n    if (value === \"Cancel\" || value === \"Cancelled\" || value === \"Rejected\") {\n      return row.cancelledReason || RENAME_STATUS[value] || value;\n    }\n    return value;\n  };\n\n  const getPathname = (status) => {\n    switch (status) {\n      case \"Pending\":\n        return \"senttest\";\n      case \"Processed\":\n        return \"alltests\";\n      default:\n        return \"\";\n    }\n  };\n\n  const tdFormat = (item, row) => {\n    if (item === \"isResultEmailed\") {\n      return row[item] && row[\"providerStatus\"] !== \"Cancelled\" ? (\n        <div\n          className=\"text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n          onClick={async () => {\n            dispatch(showResultPdf({ ...row, isSiteUser }));\n          }}\n        >\n          View Details\n        </div>\n      ) : (\n        <></>\n      );\n    }\n    if (item === \"barcode\") {\n      return !appContext?.user?.isSite() ? (\n        <RedirectLink pathname={getPathname(row[\"status\"])} value={{ name: row[\"id\"], term: \"orderID\" }}>\n          {row[item]}\n        </RedirectLink>\n      ) : (\n        row[item]\n      );\n    } else if (item === \"status\" || item === \"providerStatus\") {\n      let orderStatus = row[item] || \"Pending\";\n\n      return (\n        <div className=\"star-icon-wrapper cursor-pointer\">\n          <Status\n            type=\"circle\"\n            size=\"md\"\n            title={getOrderStatusTitle(orderStatus, row)}\n            color={ORDER_STATUS[orderStatus]}\n            tickIcon={orderStatus === \"Processed\"}\n            crossIcon={orderStatus !== \"Processed\" ? true : false}\n          />\n        </div>\n      );\n    } else if (item === \"isSendToExternalClient\") {\n      let isSendToExternalClient = row[item];\n      return (\n        <div className=\"star-icon-wrapper cursor-pointer\">\n          <Status\n            type=\"circle\"\n            size=\"md\"\n            color={isSendToExternalClient ? \"green\" : \"maroon\"}\n            tickIcon={isSendToExternalClient === true}\n            crossIcon={isSendToExternalClient === false}\n          />\n        </div>\n      );\n    }\n\n    if (item === \"tests\") {\n      const testProcessed = isSiteUser ? row[\"releasedTest\"] : row[\"processedTest\"];\n      return (\n        <div\n          className=\"cursor-pointer\"\n          onClick={() => appContext.openPatientTestViewModal({ order: row, type: \"order\", uiType: \"testManagmentUi\" })}\n        >\n          <span className=\"text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\">\n            {`${testProcessed} of ${row[item]}`}\n          </span>\n        </div>\n      );\n    }\n\n    if (item === \"test_type\") {\n      return (\n        <div\n          className=\"cursor-pointer\"\n          onClick={() => appContext.openPatientTestViewModal({ order: row, type: \"order\", uiType: \"testManagmentUi\" })}\n        >\n          {row[item]}\n        </div>\n      );\n    }\n    if (item === \"siteID\" || item === \"site_name\") {\n      // const site_name = formattedString(appContext?.getSiteName(row.siteID) || row[item]);\n      return <div title={row[\"site_name\"]}>{row[\"site_name\"]}</div>;\n      // return (\n      //   <a style={{ color: \"#42cef5\" }} onMouseOver={(e) => (e.target.style.cursor = \"pointer\")} title={site_name}>\n      //     {site_name}\n      //   </a>\n      // );\n    }\n\n    return row[item];\n  };\n  const tdFormatTitle = (item, row) => {\n    if (item === \"eligibilityStatus\") return row[item]?.message || \"Not Checked\";\n    return row[item];\n  };\n\n  const customRenderTD = (item, row) => {\n    return (\n      <td\n        key={item.id}\n        className=\"ellipsis\"\n        style={{\n          textAlign: item.textAlign,\n          textOverflow: item.textOverflow,\n        }}\n        title={tdFormatTitle(item.itemKey, row)}\n      >\n        {tdFormat(item.itemKey, row)}\n      </td>\n    );\n  };\n\n  const handleCellClick = (key, row, event) => {\n    switch (key) {\n      case \"eligibilityStatus\":\n        appContext.showEligibilityDetails({\n          ...row,\n          ...row.eligibilityStatus,\n          ins_name_f: row.firstName,\n          ins_name_l: row.lastName,\n          ins_dob: row.dob,\n        });\n        break;\n      case \"firstName\":\n      case \"lastName\":\n        appContext.showPatient({ mdID: row.employeeID, isNew: false });\n        break;\n      case TABLE_QUICK_TOOLS.checkbox:\n        handleCheckboxChange(event, row);\n        break;\n      case TABLE_QUICK_TOOLS.edit:\n        handleEditOrder(row);\n        break;\n      case TABLE_QUICK_TOOLS.notes:\n        appContext.openNoteModal({\n          ...row,\n          objectType: \"order\",\n          handleUpdateNoteReocrd,\n          title: `${row.firstName} ${row.lastName}`,\n        });\n        break;\n      default:\n        break;\n    }\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"resultType\") {\n          return obj[key] && parseSelectedOption(obj[key]).toLowerCase().includes(filters[key]);\n        }\n        if (key === \"whiteLabel\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key]);\n      });\n    });\n    // console.log(\"FROM NESTED FILTER\", models);\n    return models;\n  };\n\n  useEffect(() => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.orders?.sortBy) {\n      setSortDescending(sortingFilters.orders.sortDescending);\n      setSortBy(sortingFilters.orders.sortBy);\n    }\n    getProviders();\n\n    const personalizeData = personalisationInLC.get(PERSONALISATION_KEY.ORDER_PERSONALIZE);\n    const searchTermData = personalizeData.map((item) => item.title);\n    setSearchTerms(searchTermData);\n\n    setPersonalize(personalizeData);\n  }, []);\n\n  useEffect(() => {\n    refreshSummary(orders, orderTests);\n  }, [orderTests]);\n\n  const loadOrderSummary = async () => {\n    const orderSummary = await api.getSummaryFromPG({ summary: \"order\" });\n    setOrderTests(orderSummary.rows);\n  };\n\n  const addDateFilter = (dateFilter) => {\n    let dateParams = {};\n\n    if (dateFilter) {\n      const { start, end } = dateFilter;\n      if (start) Object.assign(dateParams, { startDate: start.format(\"YYYY-MM-DD\") });\n      if (end) Object.assign(dateParams, { endDate: end.format(\"YYYY-MM-DD\") });\n    }\n    return dateParams;\n  };\n\n  const loadOrders = async (params, dateFilter, page, sortBy, sortByDirection) => {\n    setLoading(true);\n    const dateParams = addDateFilter(dateFilter);\n    const filterParam = { ...params, ...dateParams };\n    try {\n      Object.assign(filterParam, {\n        page: page,\n        clientID: CONFIG.clientID,\n        gender: params.sex,\n        employeeID: location?.state?.employeeID,\n        isArchived: isArchivedOrderUrl,\n      });\n\n      if (sortBy) {\n        Object.assign(filterParam, { orderBy: sortBy, orderByDirection: sortByDirection ? \"desc\" : \"asc\" });\n      }\n\n      if (CONFIG.allowSites && CONFIG.allowSites.length > 0) {\n        if (!filterParam.siteID) {\n          Object.assign(filterParam, { siteID: CONFIG.allowSites });\n        }\n      }\n\n      const pgList = await api.getOrderListFromPG(filterParam);\n\n      setLoading(false);\n\n      let ttlOrders = orders.concat(pgList.rows);\n      if (pageNo === 1) {\n        setTotalRecord(pgList.total);\n        ttlOrders = pgList.rows;\n      }\n\n      setOrders(ttlOrders);\n      refreshList(ttlOrders);\n    } catch (err) {\n      console.log(\"Load Employees Error:-\", err);\n      setLoading(false);\n    }\n  };\n\n  const refreshList = (list) => {\n    // if (sortBy) {\n    //   setFilteredOrders(\n    //     sortTestList(\n    //       sortBy,\n    //       sortDescending,\n    //       list,\n    //       appContext.getSiteName,\n    //       appContext.getLabName,\n    //       appContext.getClientName,\n    //       appContext.parseResult\n    //     )\n    //   );\n    // } else {\n    //   setFilteredOrders(list);\n    // }\n    setFilteredOrders(list);\n  };\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(!sortDescending);\n  };\n\n  const handleCancelConfirm = async () => {\n    const { reason } = cancelTestData;\n    const orderToCancel = orders.filter(\n      (order) => !order.barcode && order.status !== \"Cancel\" && checkboxes.includes(order.id)\n    );\n\n    setCancelTestsData({ isConfirm: false, reason: \"\" });\n    setCheckboxes([]);\n\n    const formattedOrder = orderToCancel.map((item) => ({\n      id: item?.id,\n      reason,\n    }));\n\n    if (formattedOrder.length > 0) {\n      setLoading(true);\n      await api.cancelOrder({ orders: formattedOrder });\n\n      const testLabel = formattedOrder.length === 1 ? \"order\" : \"orders\";\n      appContext.showSuccessMessage(`${formattedOrder.length} ${testLabel} have been cancelled successfully`);\n\n      setLoading(false);\n    }\n  };\n\n  const handleDeleteConfirm = async () => {\n    setCancelTestsData({ isConfirm: false, reason: \"\" });\n    setCheckboxes([]);\n\n    try {\n      const updateSelectedTestResult = filteredOrders.filter((test) => checkboxes.includes(test.id));\n      const ttlTest = updateSelectedTestResult.length;\n      if (!ttlTest) {\n        return;\n      }\n      setLoading(true);\n      const orderToArchive = updateSelectedTestResult.map((o) => ({\n        id: o.id,\n        userID: appContext?.user?.sub,\n        userName: appContext?.user?.name,\n      }));\n\n      if (allSelected) {\n        const dateParams = addDateFilter(timeFilter);\n\n        await api.archiveAllOrder({\n          ...filter,\n          ...dateParams,\n          clientID: CONFIG.clientID,\n          userID: appContext?.user?.sub,\n          userName: appContext?.user?.name,\n          timezone: SYSTEM_TIME_ZONE,\n        });\n      } else {\n        await api.archiveOrder(orderToArchive);\n      }\n      const newOrders = orders.filter((test) => !checkboxes.includes(test.id));\n\n      setOrders(newOrders);\n      setFilteredOrders(filteredOrders.filter((test) => !checkboxes.includes(test.id)));\n      if (totalRecord > 0) {\n        setTotalRecord((prev) => {\n          let newTotal = prev - checkboxes.length;\n          if (newTotal < 0) newTotal = 0;\n          return newTotal;\n        });\n      }\n      setCheckboxes([]);\n      if (allSelected) {\n        setFilter({});\n        setAllSelected(false);\n      }\n\n      appContext.showSuccessMessage(\"Record Archive successfully\");\n\n      // if no order to show after archive then call the api and load remaining order\n      loadOrders(filter, timeFilter, 1, sortBy, sortDescending);\n    } catch (error) {\n      appContext.showErrorMessage(error.message);\n    }\n    setLoading(false);\n  };\n\n  const refreshSummary = (data, summary) => {\n    if (data.length === 0) return;\n    if (summary.length === 0) {\n      setFilteredOrders(data);\n      return;\n    }\n    const newList = data.map((c) => {\n      const obj = summary.find((x) => x.id === c.id);\n      return { ...c, totalTest: obj ? obj.totalTest : 0 };\n    });\n    setFilteredOrders(newList);\n  };\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filteredOrders.length;\n    if (direction === \"next\" && page === totalPages && totalRecord > 0 && currentRecord < totalRecord) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  const handleExportOrder = async () => {\n    try {\n      setLoading(true);\n\n      const dateParams = addDateFilter(timeFilter);\n      const params = {\n        ...filter,\n        ...dateParams,\n        selectedColumn: getSelectedColumn(\n          formatPersonalization({ personalize, defaultConfig, userClientData, isSiteUser })\n        ),\n      };\n      const apiRes = await api.exportOrder(params);\n\n      if (apiRes?.fileName) {\n        await api.downloadRequisitionZip(\n          `${apiRes?.fileName}`,\n          `orders_${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}.xlsx`\n        );\n      }\n\n      setLoading(false);\n      appContext.showSuccessMessage(\"File download!!!\");\n    } catch (ex) {\n      console.log(\"Ex\", ex);\n      setLoading(false);\n      appContext.showErrorMessage(error.message);\n    }\n  };\n\n  const processTestFromOrder = async () => {\n    dispatch(setClearConfirmation());\n    const orderList = orders.filter((o) => checkboxes.includes(o.id));\n\n    setCheckboxes([]);\n\n    const formattedOrders = orderList.map((order) => {\n      const { testCreatedAt, testDate } = getTestDates(order);\n\n      return {\n        ...order,\n        employee_demographics: {\n          ...order.employee_demographics,\n          dob: moment(order.employee_demographics.dob).format(\"MMDDYYYY\"),\n          worker: \"\",\n          possibleexposure: \"\",\n          confirmedexposure: \"\",\n          relatedsymptoms: \"\",\n          symptoms: \"\",\n          othercomment: \"\",\n          comment: \"\",\n          docUploaded: false,\n          isReview: false,\n          venipuncture: false,\n          distance: 0,\n          isEligible: order?.eligibilityStatus?.status?.toLowerCase() === \"eligibile\",\n          stat: false,\n        },\n        timezone: SYSTEM_TIME_ZONE,\n        testCreatedAt,\n        testDate,\n        createdBy: appContext?.user?.sub,\n        createdByName: appContext?.user?.name,\n        createSource: \"portal\",\n        shipped: true,\n      };\n    });\n\n    const employeeData = await api.createBulkTestFromOrder({ orders: formattedOrders });\n\n    appContext.showSuccessBottomMessage(\"Processed Successfully\");\n\n    if (employeeData) {\n      employeeData?.forEach((test) => {\n        if (test.barcode) {\n          appContext.printBarcode(test);\n        }\n      });\n    }\n  };\n\n  const handleCreateTestFromOrder = () => {\n    if (defaultConfig.isTestCreationFromEmployee) {\n      const confirmationModalData = {\n        showModal: true,\n        onConfirm: () => processTestFromOrder(true),\n        onClose: () => dispatch(setClearConfirmation()),\n        title: \"Confirmation\",\n        isPreRegister: true,\n        message: \"Would you like to create the test ordered and print label?\",\n      };\n      dispatch(showConfirmationModal(confirmationModalData));\n\n      return;\n    }\n\n    const order = filteredOrders.find((f) => f.id === checkboxes[0]);\n\n    appContext.openPatientTestViewModal({ order: order, type: \"order\", uiType: \"testManagmentUi\" });\n\n    // appContext.createTestFromOrder({\n    //   ...order,\n    //   orderDate: moment(order.orderDate).format(\"YYYY-MM-DDTHH:mm\"),\n    //   employee_demographics: {\n    //     ...order.employee_demographics,\n    //     phoneNumber: `${order.countryCode}${order.phoneNumber}`,\n    //   },\n    // });\n    setCheckboxes([]);\n  };\n\n  const handlePersonalization = async (data) => {\n    setPersonalize([...data]);\n\n    const personalisationData = personalisationInLC.saveAs(data, PERSONALISATION_KEY.ORDER_PERSONALIZE);\n\n    setOpenPersonalizationModal(false);\n\n    await api.saveUserPersonalisation(appContext.user.sub, personalisationData);\n  };\n\n  const showReqForm = async (row) => {\n    if (row.barcode || row.orderNo) {\n      dispatch(showResultReqForm(row));\n      return;\n    }\n  };\n\n  const handleConfirmRestore = async (isConfirm) => {\n    setOpenRestoredConfirmation(false);\n    if (!isConfirm) {\n      return;\n    } else {\n      try {\n        setLoading(true);\n        const ordersList = filteredOrders.filter((order) => checkboxes.includes(order.id));\n\n        const formattedList = ordersList?.map((item) => ({ id: item.id, employeeID: item.employeeID }));\n        await api.restoreOrders(formattedList);\n        appContext.showSuccessMessage(\n          `Successfully Restore ${checkboxes.length} ${checkboxes.length > 1 ? \"Orders\" : \"order\"}`\n        );\n        setCheckboxes([]);\n        if (totalRecord > 0) {\n          setTotalRecord((prev) => {\n            let newTotal = prev - checkboxes.length;\n            if (newTotal < 0) newTotal = 0;\n            return newTotal;\n          });\n        }\n        setAllSelected(false);\n        setLoading(false);\n\n        loadOrders(filter, timeFilter, 1, sortBy, sortDescending);\n      } catch (error) {\n        appContext.showErrorMessage(error.message);\n        console.log(error.message);\n        setLoading(false);\n      }\n    }\n  };\n  const getDropDownOptions = () => {\n    const optionsList = [\n      { value: \"Logs\", title: \"Audit Trail\" },\n      { value: \"test\", title: \"Test History\" },\n      { value: \"req_form\", title: \"Req Form\" },\n    ];\n    if (appContext?.user?.isSite()) {\n      return [{ value: \"req_form\", title: \"Req Form\" }];\n    }\n    return optionsList;\n  };\n\n  const handleConfirmation = (isConfirm) => {\n    if (!isConfirm) {\n      setCancelTestsData({ isConfirm: false, reason: \"\" });\n      setCheckboxes([]);\n      return;\n    }\n\n    const { actionType, reason, preDefineReason } = cancelTestData;\n\n    switch (actionType) {\n      case \"Archive\":\n        return handleDeleteConfirm();\n      case \"Cancel\":\n        if (!(reason || preDefineReason)) {\n          return appContext.showErrorMessage(\"Please Enter Reason\");\n        }\n        return handleCancelConfirm();\n    }\n  };\n\n  const handleClickCancel = () => {\n    const orderToCancel = orders.filter(\n      (order) => !order.barcode && order.status !== \"Cancel\" && checkboxes.includes(order.id)\n    );\n\n    if (orderToCancel.length === 0) {\n      return;\n    }\n\n    const message = `Are you sure you want to cancel the select order${orderToCancel.length > 1 ? \"s\" : \"\"}?`;\n\n    setCancelTestsData({ isConfirm: true, reason: \"\", actionType: \"Cancel\", message });\n  };\n\n  const showRowColor = (row) => {\n    if (\n      [\"Cancel\", \"Cancelled\", \"Rejected\"].includes(row?.providerStatus) &&\n      row.cancelledBy !== \"provider\" &&\n      !row.isAcknowledged &&\n      isSiteUser\n    ) {\n      return \"trDataWrapper isCancelRow\";\n    }\n\n    if (row.status === \"Cancel\" && row.cancelledBy === \"provider\" && !row.isAcknowledged && !isSiteUser) {\n      return \"trDataWrapper isCancelRow\";\n    }\n    if (row.employee_demographics?.stat && row?.status !== \"Processed\") {\n      return \"trDataWrapper isStatRow\";\n    }\n    return \"trDataWrapper\";\n  };\n\n\n  return (\n    <div className=\"container-fluid\">\n      <div className=\"shows-screen-parent\">\n        <Row className=\"mx-0\">\n          <Col md=\"12\">\n            <Card className=\"border-0 mb-1\">\n              <Card.Body className=\"p-0\">\n                <div className=\"shows-filter-wrapper\">\n                  <div className=\"shows-filter-inner\">\n                    <Icon\n                      handleClick={() => setShowFilter(!showFilter)}\n                      title={\"Filter\"}\n                      label={\"Filter\"}\n                      iconType={\"filter\"}\n                    />\n                    {!isArchivedOrderUrl && <FilterSelect setTimeFilter={setTimeFilter} />}{\" \"}\n                    <Icon\n                      handleClick={() => {\n                        if (filteredOrders && filteredOrders.length > 0) {\n                          setAllSelected(!allSelected);\n                          toggleCheckboxes(!allSelected);\n                        }\n                      }}\n                      title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                      label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                      iconType={\"selectAllIcon\"}\n                    />\n                    {isArchivedOrderUrl && (\n                      <Icon\n                        disabled={checkboxes.length === 0}\n                        handleClick={() => setOpenRestoredConfirmation(true)}\n                        title={\"Restore Order\"}\n                        label={\"Restore Order\"}\n                        iconType={\"restoreIcon\"}\n                      />\n                    )}\n                    {permission[EMPLOYEE]?.access && (\n                      <Icon\n                        handleClick={() => setOpenPersonalizationModal(true)}\n                        title={\"Edit Columns\"}\n                        label={\"Edit Columns\"}\n                        iconType={\"personalizeIcon\"}\n                      />\n                    )}\n                    {permission[ORDER]?.archiveOrders === true &&\n                      !isArchivedOrderUrl &&\n                      (isSiteUser ? (\n                        <Icon\n                          disabled={checkboxes.length === 0}\n                          handleClick={handleClickCancel}\n                          title={\"Cancel\"}\n                          label={\"Cancel\"}\n                          iconType={\"binIcon\"}\n                        />\n                      ) : (\n                        <Icon\n                          disabled={checkboxes.length === 0}\n                          handleClick={() => setCancelTestsData({ isConfirm: true, reason: \"\", actionType: \"Archive\" })}\n                          title={\"Archive\"}\n                          label={\"Archive\"}\n                          iconType={\"binIcon\"}\n                        />\n                      ))}\n                    <Icon\n                      disabled={ordersToMap.length === 0}\n                      handleClick={handleExportOrder}\n                      title={\"Export to Excel\"}\n                      label=\"Export\"\n                      iconType={\"XLSIcon\"}\n                    />\n                    {permission[ORDER]?.loadOrders === true && !isArchivedOrderUrl && (\n                      <Icon\n                        handleClick={() => appContext.showLoadOrderModal(true)}\n                        iconType={\"importIcon\"}\n                        label={\"Load Orders\"}\n                        title={\"Load Orders\"}\n                      />\n                    )}\n                    {/* {permission[ORDER]?.addOrders === true && (\n                        <Icon\n                          handleClick={() => {\n                            setCheckboxes([]);\n                            appContext.showOrderModal(newOrder);\n                          }}\n                          title={\"Create Order\"}\n                          label={\"Create Order\"}\n                          iconType={\"createIcon\"}\n                        />\n                      )} */}\n                    {permission?.test?.createTest === true && !appContext?.user?.isSite() && !isArchivedOrderUrl && (\n                      <Icon\n                        handleClick={handleCreateTestFromOrder}\n                        title={\"Create Test\"}\n                        label={\"Create Test\"}\n                        iconType={\"createIcon\"}\n                        disabled={isDisableCreateTest(ordersToMap, checkboxes[0])}\n                      />\n                    )}\n                  </div>\n                </div>\n                <div>\n                  {showFilter && (\n                    <Filter\n                      isGrouped={true}\n                      personalisationData={formatPersonalization({\n                        personalize,\n                        defaultConfig,\n                        userClientData,\n                        isSiteUser,\n                      })}\n                      filterTerms={searchTerms}\n                      setFilter={setFilter}\n                      filter={filter}\n                      filterTabIndex={filterTabIndex}\n                      setFilterTabIndex={(value) => setFilterTabIndex(value)}\n                      filterTab=\"orders\"\n                    />\n                  )}\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n        <Row className=\"mx-0\">\n          <Col md=\"12\">\n            <div\n              className={`strpied-tabled-with-hover bg-transparent border-0 ${\n                ordersToMap?.length === 1 || ordersToMap?.length === 2 ? \"order-details-table\" : \"\"\n              }`}\n            >\n              <Card.Header className=\"shows-screen-wrapper\">\n                <Row className=\"pb-4\">\n                  <Col md=\"6\">\n                    <Card.Title>\n                      <div className=\"\">\n                        Orders:<span className=\"ps-2\"> {totalRecord}</span>\n                      </div>\n                    </Card.Title>\n                  </Col>\n                  <Col md=\"6\">\n                    <PGPagination\n                      currentPage={currentPage}\n                      handleChangePage={handleChangePage}\n                      totalPages={totalPages}\n                      totalRecord={totalRecord}\n                      currentRecord={filteredOrders.length}\n                      showSelectedRecord\n                      totalSelected={checkboxes.length}\n                    />\n                  </Col>\n\n                  {/* <div className=\"buttonHeader ordersButtonHeader justify-content-between mb-1\">\n                      <div className=\"ordersBtnWrapper\">\n                        <div className=\"buttonHeader ordersButtonHeader\">\n                          <Button className=\"headerButton mb-0\" onClick={() => setShowFilter(!showFilter)}>\n                            Filter\n                          </Button>\n                        </div>\n                      </div>\n                      <Button className=\"createButtons\" onClick={() => setOpenCreator(true)}>\n                        Create New Order\n                      </Button>\n                    </div>\n                    <div>\n                      {showFilter && <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} />}\n                    </div> */}\n                </Row>\n              </Card.Header>\n\n              <div className=\"table-full-width px-0 desktop-noScroll mt-0 pt-0\">\n                <MainTable\n                  // columns={personalize}\n                  columns={formatPersonalization({ personalize, defaultConfig, userClientData, isSiteUser })}\n                  rows={ordersToMap}\n                  flipSort={flipSort}\n                  sortBy={sortBy}\n                  draggable\n                  resizable\n                  handleSaveDragAndResize={(personalizeArr) => {\n                    setPersonalize(personalizeArr);\n                  }}\n                  cssClass=\"table-noresponsive\"\n                  sortDescending={sortDescending}\n                  selectedRows={checkboxes}\n                  tools={quickTools}\n                  personalisationKey={PERSONALISATION_KEY.ORDER_PERSONALIZE}\n                  individualRowCssClass={showRowColor}\n                  dropDownOptions={getDropDownOptions()}\n                  handleDropDownClick={(type, row) => {\n                    if (type === \"Audit Trail\") {\n                      appContext.showLogs({ ...row, title: \"Order Logs\", ordID: row.id });\n                    }\n                    if (type === \"Test History\") {\n                      appContext.openPatientTestViewModal({ order: row, type: \"order\", uiType: \"testHistory\" });\n                    }\n                    if (type === \"Req Form\") {\n                      showReqForm(row);\n                    }\n                  }}\n                  customColumnCellRenderer={customRenderTD}\n                  handleCellClick={handleCellClick}\n                />\n              </div>\n            </div>\n          </Col>\n        </Row>\n      </div>\n\n      {/* {openCreator && (\n        <OrderModal user={[newOrder]} appContext={appContext} handleClose={() => setOpenCreator(false)} />\n      )} */}\n\n      {openPersonalizationModal && (\n        <PersonalizationModal\n          data={formatPersonalization({ personalize, defaultConfig, userClientData, isSiteUser })}\n          handleChange={handlePersonalization}\n          show={openPersonalizationModal}\n          handleClose={() => setOpenPersonalizationModal(false)}\n        />\n      )}\n\n      {openRestoredConfirmation && (\n        <ConfirmationModal\n          show={openRestoredConfirmation}\n          title=\"Restore Test\"\n          message={`Are you sure, to restore this ${checkboxes.length} ${checkboxes.length > 1 ? \"Orders\" : \"Order\"} ?`}\n          handleConfirm={handleConfirmRestore}\n        />\n      )}\n      {cancelTestData.isConfirm && (\n        <ConfirmationModal\n          isPreRegister\n          handleConfirm={handleConfirmation}\n          title={`${cancelTestData.actionType} Order`}\n          message={`Are you sure you want to ${cancelTestData.actionType} the select order ${\n            checkboxes.length > 1 ? \"s\" : \"\"\n          }?`}\n          handleClose={() => setCancelTestsData({ isConfirm: false, reason: \"\" })}\n          reasonObj={{ cancelTestData, setCancelTestsData }}\n        />\n      )}\n\n      {loading && <Loader />}\n    </div>\n  );\n};\n\nexport default React.memo(OrdersView, arePropsEqual);\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\n\nimport CrewProfile from \"components/CrewProfile\";\nimport TestListAdmin from \"views/Test/TestListAdmin\";\nimport UnprocessedTestsApi from \"views/GraphQL/UnprocessedTestsApi\";\nimport ProfileEmployeeTest from \"views/ProfileEmployeeTest\";\nimport TestDetails from \"views/TestDetails\";\nimport PatientView from \"views/GraphQL/PatientView\";\nimport PatientProfile from \"views/PatientProfile\";\nimport OrdersView from \"views/Order/OrderView\";\n\nconst dashboardRoutes = [\n  {\n    path: \"/patient\",\n    name: \"Patient\",\n    icon: \"nc-icon nc-notes\",\n    component: PatientView,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/order\",\n    name: \"Orders\",\n    icon: \"nc-icon nc-notes\",\n    component: OrdersView,\n    layout: \"/admin\",\n  },\n  // {\n  //   path: \"/senttest\",\n  //   name: \"Waiting Results\",\n  //   icon: \"nc-icon nc-notes\",\n  //   component: UnprocessedTestsApi,\n  //   layout: \"/admin\",\n  // },\n  // {\n  //   path: \"/alltests\",\n  //   name: \"Completed Tests\",\n  //   icon: \"nc-icon nc-check-2\",\n  //   component: TestListAdmin,\n  //   layout: \"/admin\",\n  // },\n\n  {\n    path: \"/test/:testId\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: TestDetails,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/employee/:employeeId\",\n    name: \"Profile Employee Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: ProfileEmployeeTest,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/profile/:patientId\",\n    name: \"Profile Patient Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: PatientProfile,\n    layout: \"/admin\",\n    redirect: true,\n  },\n\n  {\n    path: \"/crewprofile/:empId\",\n    name: \"CrewProfile\",\n    icon: \"nc-icon nc-circle-09\",\n    component: CrewProfile,\n    layout: \"/admin\",\n    redirect: true,\n  },\n\n  // {\n  //   path: \"/users\",\n  //   name: \"System User\",\n  //   icon: \"nc-icon nc-badge\",\n  //   component: UsersView,\n  //   layout: \"/admin\",\n  // },\n  // {\n  //   path: \"/pendingrelease\",\n  //   name: \"Pending Release\",\n  //   icon: \"nc-icon nc-notes\",\n  //   component: PendingReleaseTestListView,\n  //   layout: \"/admin\",\n  // },\n  // {\n  //   path: \"/tests\",\n  //   name: \"New Tests\",\n  //   icon: \"nc-icon nc-notes\",\n  //   component: TableListApi,\n  //   layout: \"/admin\",\n  // },\n  // {\n  //   path: \"/processing\",\n  //   name: \"Tests Processing\",\n  //   icon: \"nc-icon nc-notes\",\n  //   component: TableListApi,\n  //   layout: \"/admin\",\n  // },\n  // {\n  //   path: \"/processedtests\",\n  //   name: \"Processed Tests\",\n  //   icon: \"nc-icon nc-check-2\",\n  //   component: ProcessedTestListApi,\n  //   layout: \"/admin\",\n  // },\n\n  // {\n  //   path: \"/order\",\n  //   name: \"Orders\",\n  //   icon: \"nc-icon nc-notes\",\n  //   component: OrdersView,\n  //   layout: \"/admin\",\n  // },\n\n  // {\n  //   path: \"/testtypes\",\n  //   name: \"Settings\",\n  //   icon: \"nc-icon nc-notes\",\n  //   component: TestTypesSetting,\n  //   layout: \"/admin\",\n  // },\n];\n\nexport default dashboardRoutes;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\n\nimport Test from \"views/Test\";\nimport ClientsView from \"views/GraphQL/ClientsView\";\nimport LabsView from \"views/GraphQL/LabsView\";\nimport SitesViewOld from \"views/GraphQL/SiteViewOld\";\nimport Hipaa from \"views/Hipaa\";\nimport PendingReleaseTestListView from \"views/GraphQL/PendingReleaseTestListView\";\nimport ExternalTest from \"views/ExternalTest\";\nimport EmailStatusTestList from \"views/EmailStatusTestList\";\nimport Typography from \"views/Typography.js\";\nimport Icons from \"views/Icons.js\";\nimport Maps from \"views/Maps.js\";\nimport Notifications from \"views/Notifications.js\";\nimport Upgrade from \"views/Upgrade.js\";\nimport UsersView from \"views/GraphQL/UsersView\";\nimport User from \"views/Users\";\nimport Crews from \"views/Crews\";\nimport ClientTests from \"views/ClientTests\";\nimport UnprocessedTestsApi from \"views/GraphQL/UnprocessedTestsApi\";\nimport TestTypesSetting from \"views/TestTypeSetting/TestTypesSetting\";\nimport AdminTotalTestApi from \"views/GraphQL/AdminTotalTestApi\";\n\n\nimport ExpiredTestApi from \"views/GraphQL/ExpiredTestsApi\";\nimport DeleteTestApi from \"views/GraphQL/DeleteTestApi\";\nimport ExternalTestCrew from \"views/ExternelTestCrew\";\nimport CrewProfile from \"components/CrewProfile\";\nimport PreRegistrationView from \"views/PreRegistrationView\";\nimport GenericPreRegistration from \"views/GenericPreRegistration\";\nimport EmployeeListing from \"views/EmployeeListing\";\nimport InvalidTestListView from \"views/GraphQL/InvalidTestListView\";\nimport MainCrewLogs from \"views/MainCrewLogs\";\nimport ProfilesView from \"views/GraphQL/ProfilesView\";\nimport ProfileEmployeeTest from \"views/ProfileEmployeeTest\";\nimport SitesView from \"views/GraphQL/SitesView\";\nimport TestListAdminApi from \"views/GraphQL/TestListCompletedTest/TestListAdminApi\";\n\nconst dashboardRoutes = [\n  {\n    path: \"/pendingrelease\",\n    name: \"Pending Release\",\n    icon: \"nc-icon nc-notes\",\n    component: PendingReleaseTestListView,\n    layout: \"/admin\",\n  },\n  // {\n  //   path: \"/inconclusivetests\",\n  //   name: \"Inconclusive\",\n  //   icon: \"nc-icon nc-notes\",\n  //   component: InvalidTestListView,\n  //   layout: \"/admin\",\n  // },\n  {\n    path: \"/unprocessedtests\",\n    name: \"Unprocessed Tests\",\n    icon: \"nc-icon nc-notes\",\n    component: UnprocessedTestsApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/senttest\",\n    name: \"Waiting Results\",\n    icon: \"nc-icon nc-notes\",\n    component: UnprocessedTestsApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/alltests\",\n    name: \"Completed Tests\",\n    icon: \"nc-icon nc-check-2\",\n    component: TestListAdminApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/totaltests\",\n    name: \"All Tests\",\n    icon: \"nc-icon nc-check-2\",\n    component: AdminTotalTestApi,\n    layout: \"/admin\",\n  },\n  // {\n  //   path: \"/expiredtests\",\n  //   name: \"Expired Tests\",\n  //   icon: \"nc-icon nc-check-2\",\n  //   component: ExpiredTestApi,\n  //   layout: \"/admin\",\n  // },\n  {\n    path: \"/deletedtests\",\n    name: \"Deleted Tests\",\n    icon: \"nc-icon nc-check-2\",\n    component: DeleteTestApi,\n    layout: \"/admin\",\n  },\n  /*  {\n    path: \"/emailstatus\",\n    name: \"Email Status\",\n    icon: \"nc-icon nc-check-2\",\n    component: EmailStatusTestList,\n    layout: \"/admin\",\n  }, */\n  // {\n  //   path: \"/externaltests\",\n  //   name: \"External / Vacc Admit\",\n  //   icon: \"nc-icon nc-circle-09\",\n  //   component: ExternalTest,\n  //   layout: \"/admin\",\n  // },\n  //   {\n  //     path: \"/preregistration\",\n  //     name: \"Pre Registration\",\n  //     icon: \"nc-icon nc-atom\",\n  //     component: PreRegistrationView,\n  //     layout: \"/admin\",\n  //   },\n  //   {\n  //     path: \"/genericpreregistration\",\n  //     name: \"Generic Pre-Reg\",\n  //     icon: \"nc-icon nc-atom\",\n  //     component: GenericPreRegistration,\n  //     layout: \"/admin\",\n  //   },\n  {\n    path: \"/test/:testId\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: Test,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/employee/:employeeId\",\n    name: \"Profile Employee Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: ProfileEmployeeTest,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/externaltest/:testId\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: ExternalTestCrew,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/crewprofile/:empId\",\n    name: \"CrewProfile\",\n    icon: \"nc-icon nc-circle-09\",\n    component: CrewProfile,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/users\",\n    name: \"System User\",\n    icon: \"nc-icon nc-badge\",\n    component: UsersView,\n    layout: \"/admin\",\n  },\n  //   {\n  //     path: \"/profiles\",\n  //     name: \"Crew Profiles\",\n  //     icon: \"nc-icon nc-badge\",\n  //     component: ProfilesView,\n  //     layout: \"/admin\",\n  //   },\n\n  // {\n  //   path: \"/crews\",\n  //   name: \"Crew\",\n  //   icon: \"nc-icon nc-badge\",\n  //   component: Crews,\n  //   layout: \"/admin\",\n  // },\n  //{\n  //   path: \"/crewstest\",\n  //   name: \"Main Crew Info\",\n  //   icon: \"nc-icon nc-badge\",\n  //   component: MainCrewLogs,\n  //   layout: \"/admin\",\n  // },\n  // {\n  //   path: \"/employees\",\n  //   name: \"Employee\",\n  //   icon: \"nc-icon nc-badge\",\n  //   component: EmployeeListing,\n  //   layout: \"/admin\",\n  // },\n  //   {\n  //     path: \"/clients\",\n  //     name: \"Clients\",\n  //     icon: \"nc-icon nc-circle-09\",\n  //     component: ClientsView,\n  //     layout: \"/admin\",\n  //   },\n  //   {\n  //     path: \"/clients/:clientId/tests\",\n  //     name: \"ClientTests\",\n  //     icon: \"nc-icon nc-circle-09\",\n  //     component: ClientTests,\n  //     layout: \"/admin\",\n  //     redirect: true,\n  //   },\n  //   {\n  //     path: \"/shows\",\n  //     name: \"Shows\",\n  //     icon: \"nc-icon nc-tv-2\",\n  //     // component: SitesViewOld,\n  //     component: SitesView,\n  //     layout: \"/admin\",\n  //   },\n  //   {\n  //     path: \"/labs\",\n  //     name: \"Labs\",\n  //     icon: \"nc-icon nc-atom\",\n  //     component: LabsView,\n  //     layout: \"/admin\",\n  //   },\n  //   {\n  //     path: \"/testtypes\",\n  //     name: \"Settings\",\n  //     icon: \"nc-icon nc-notes\",\n  //     component: TestTypesSetting,\n  //     layout: \"/admin\",\n  //   },\n  // {\n  //   path: \"/hipaa\",\n  //   name: \"HIPAA\",\n  //   icon: \"nc-icon nc-paper-2\",\n  //   component: Hipaa,\n  //   layout: \"/admin\",\n  // }\n];\n\nexport default dashboardRoutes;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\n\n\nimport UnprocessedTestsApi from \"views/GraphQL/UnprocessedTestsApi\";\nimport ProfileEmployeeTest from \"views/ProfileEmployeeTest\";\nimport TestDetails from \"views/TestDetails\";\nimport PatientView from \"views/GraphQL/PatientView\";\nimport PatientProfile from \"views/PatientProfile\";\nimport TestListAdminApi from \"views/GraphQL/TestListCompletedTest/TestListAdminApi\";\n\nconst dashboardRoutes = [\n  {\n    path: \"/patient\",\n    name: \"Patients\",\n    icon: \"nc-icon nc-notes\",\n    component: PatientView,\n    layout: \"/admin\",\n  },\n\n  {\n    path: \"/senttest\",\n    name: \"Waiting Results\",\n    icon: \"nc-icon nc-notes\",\n    component: UnprocessedTestsApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/alltests\",\n    name: \"Completed Tests\",\n    icon: \"nc-icon nc-check-2\",\n    component: TestListAdminApi,\n    layout: \"/admin\",\n  },\n\n  {\n    path: \"/test/:testId\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: TestDetails,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/employee/:employeeId\",\n    name: \"Profile Employee Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: ProfileEmployeeTest,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/profile/:patientId\",\n    name: \"Profile Patient Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: PatientProfile,\n    layout: \"/admin\",\n    redirect: true,\n  },\n];\n\nexport default dashboardRoutes;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../../api\";\nimport { CONFIG, MESSAGE_MODES } from \"../../../constant\";\nimport { userCompanyID } from \"../../../utils\";\nimport { CHECK_ELIGIBILITY, CHECK_ELIGIBILITY_FETCH } from \"./checkEligibilityConstant\";\nimport { Storage } from \"aws-amplify\";\n\n// Async thunk to fetch all eligibilities\n\nexport const fetchAllEligibilitiesAsync = createAsyncThunk(\n  CHECK_ELIGIBILITY_FETCH,\n  async ({ page, filter, isNewCall }, { getState }) => {\n    const user = getState().auth.user;\n    const params = { ...filter, page };\n\n    if (CONFIG.isWhiteLabel) {\n      Object.assign(params, { clientID: userCompanyID.get() });\n    } else if (user?.isClient()) {\n      Object.assign(params, { clientID: userCompanyID.get() });\n    } else if (user?.isSite()) {\n      Object.assign(params, { locationID: userCompanyID.get() });\n    } else if (user?.isSubAgent()) {\n      Object.assign(params, { subAgentID: userCompanyID.get() });\n    }\n    if (isNewCall) {\n      Object.assign(params, { page: 1 });\n    }\n\n    let res = await api.getEligibilityList(params);\n\n    return res;\n  }\n);\n\n// Async thunk to create a eligibility\nexport const createeligibilityAsync = createAsyncThunk(\"eligibility/careateeligibility\", async (eligibility) => {\n  const response = await api.geteligibilities(eligibility);\n  return response;\n});\n\n// Async thunk to update a eligibility\nexport const updateeligibilityAsync = createAsyncThunk(\n  \"eligibility/updateeligibility\",\n  async ({ eligibilityId, updatedeligibility }) => {\n    const response = await api.updateeligibility(eligibilityId, updatedeligibility);\n    return response;\n  }\n);\n\n// Async thunk to delete a eligibility\nexport const deleteeligibilityAsync = createAsyncThunk(\"eligibility/deleteeligibility\", async (eligibilityId) => {\n  const response = await api.deleteeligibility(eligibilityId);\n  return response;\n});\n\n// Async thunk Open Eligibility Details Modal\nexport const openEligibilityDetailModalAsync = createAsyncThunk(\n  \"eligibility/openDetailsModal\",\n  async ({ item, employee }, { dispatch }) => {\n    if (item.apiData) {\n      const data = JSON.parse(item.apiData);\n\n      if (data.fileName) {\n        try {\n          let res = await Storage.get(`${data.fileName}`, {\n            bucket: CONFIG.eligibilityBucket,\n            download: true,\n          });\n          let eligibile = null;\n          await res.Body.text().then((string) => {\n            // handle the String data return String\n            const apidata = JSON.parse(string);\n            eligibile = {\n              ...item,\n              error: apidata?.error,\n              ...apidata?.elig,\n              ...(employee && { payerId: employee.insuranceCompany, employee }),\n            };\n          });\n          return eligibile;\n        } catch (err) {\n          console.log(\"Error:-\", err.message);\n          dispatch(`${err.message}`, MESSAGE_MODES.error);\n          return null;\n        }\n      } else {\n        return { ...item, ...data?.elig, ...(employee && { payerId: employee.insuranceCompany, employee }) };\n      }\n    } else {\n      return { ...item, ...(employee && { payerId: employee.insuranceCompany, employee }) };\n    }\n  }\n);\n\nconst eligibilitieslice = createSlice({\n  name: CHECK_ELIGIBILITY,\n  initialState: {\n    eligibilities: [],\n    filteredEligibilities: [],\n    totalRecord: 0,\n    currentPage: 1,\n    pageNo: 1,\n    openCheckEligibilityModal: false,\n    eligibilityDetailsData: null,\n    hospiceDetailsData: {\n      showModal: false,\n    },\n  },\n  reducers: {\n    setFilteredEligibilities: (state, action) => {\n      state.filteredEligibilities = action.payload;\n    },\n    setPageNo: (state, action) => {\n      state.pageNo = action.payload;\n    },\n    createEligibility: (state, action) => {\n      state.eligibilities.unshift(action.payload);\n      state.filteredEligibilities.unshift(action.payload);\n    },\n    setOpenCheckEligibilityModal: (state, action) => {\n      state.openCheckEligibilityModal = action.payload;\n    },\n    setEligibilityDetailsData: (state, action) => {\n      state.eligibilityDetailsData = action.payload;\n    },\n    setHospiceDetailsData: (state, action) => {\n      state.hospiceDetailsData = { ...action.payload, showModal: action.payload?.showModal || false };\n    },\n    updateNotes: (state, action) => {\n      const data = action.payload;\n      const emp = state.filteredEligibilities.find((f) => f.id === data.id);\n      emp[\"note\"] = data.note;\n\n      const existingInvoiceIndex = state.eligibilities.findIndex((inv) => inv.id === emp.id);\n      const existingFilterInvoiceIndex = state.filteredEligibilities.findIndex((inv) => inv.id === emp.id);\n      if (existingInvoiceIndex !== -1) {\n        state.eligibilities[existingInvoiceIndex] = emp;\n      }\n      if (existingFilterInvoiceIndex !== -1) {\n        state.filteredEligibilities[existingFilterInvoiceIndex] = emp;\n      }\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchAllEligibilitiesAsync.fulfilled, (state, action) => {\n        const res = action.payload;\n        const eligibilityLists = res.rows.map((r) => ({ ...r, view: \"view\" }));\n        const models = [...state.eligibilities, ...eligibilityLists];\n        if (state.pageNo === 1) {\n          state.totalRecord = res.total;\n          state.eligibilities = eligibilityLists;\n          state.filteredEligibilities = eligibilityLists;\n        } else {\n          state.eligibilities = models;\n          state.filteredEligibilities = models;\n        }\n\n        // setFilteredEligibilities(sortUsers(filterDates(nestedFilter(models, filter), timeFilter), sortBy));\n      })\n      .addCase(createeligibilityAsync.fulfilled, (state, action) => {\n        state.eligibilities.push(action.payload);\n      })\n      .addCase(openEligibilityDetailModalAsync.fulfilled, (state, action) => {\n        state.eligibilityDetailsData = action.payload;\n      })\n      .addCase(updateeligibilityAsync.fulfilled, (state, action) => {\n        const updatedeligibility = action.payload;\n        const existingeligibilityIndex = state.eligibilities.findIndex(\n          (eligibility) => eligibility.id === updatedeligibility.id\n        );\n        if (existingeligibilityIndex !== -1) {\n          state.eligibilities[existingeligibilityIndex] = updatedeligibility;\n        }\n      })\n      .addCase(deleteeligibilityAsync.fulfilled, (state, action) => {\n        const deletedeligibilityId = action.payload;\n        state.eligibilities = state.eligibilities.filter((eligibility) => eligibility.id !== deletedeligibilityId);\n      });\n  },\n});\n\nexport const {\n  setPageNo,\n  setFilteredEligibilities,\n  createEligibility,\n  setOpenCheckEligibilityModal,\n  setEligibilityDetailsData,\n  setHospiceDetailsData,\n  updateNotes,\n} = eligibilitieslice.actions;\n\nexport default eligibilitieslice.reducer;\n","export const CHECK_ELIGIBILITY = \"checkEligibility\";\n\nexport const CHECK_ELIGIBILITY_FETCH = \"checkEligibility/fetchAllEligibilites\";\n","export const checkEligibiitSelector = (state) => state.eligibilities;\n\nexport const openCheckEligibilitySelector = (state) => state.eligibilities.openCheckEligibilityModal;\n\nexport const selectedEligibilityDetails = (state) => state.eligibilities.eligibilityDetailsData;\n\nexport const selectedHospiceDetailsSelector = (state) => state.eligibilities.hospiceDetailsData;\nexport const totalRecordsSelector = (state) => state.eligibilities.totalRecord;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\n\nimport Test from \"views/Test\";\nimport TableListApi from \"views/GraphQL/TableListApi\";\nimport ProcessedTestListApi from \"views/GraphQL/ProcessedTestListApi\";\nimport UsersViewWhiteLabel from \"views/GraphQL/UsersViewWhiteLabel\";\nimport Typography from \"views/Typography.js\";\nimport Icons from \"views/Icons.js\";\nimport Maps from \"views/Maps.js\";\nimport Notifications from \"views/Notifications.js\";\nimport Upgrade from \"views/Upgrade.js\";\nimport Settings from \"views/Settings.js\";\nimport LabSites from \"views/GraphQL/LabSites\";\nimport CrewProfile from \"components/CrewProfile\";\nimport ExternalTestCrew from \"views/ExternelTestCrew\";\nimport settingIcon from \"../assets/img/settings-garage.png\";\nimport AdminTotalTestApi from \"views/GraphQL/AdminTotalTestApi\";\nimport DeleteTestApi from \"views/GraphQL/DeleteTestApi\";\nimport PendingReleaseTestListView from \"views/GraphQL/PendingReleaseTestListView\";\n\nimport UnprocessedTestsApi from \"views/GraphQL/UnprocessedTestsApi\";\nimport UsersView from \"views/GraphQL/UsersView\";\nimport ProfileEmployeeTest from \"views/ProfileEmployeeTest\";\n// import TestTypesSetting from \"views/TestTypeSetting/TestTypesSetting\";\nimport LabTestTypesSetting from \"views/TestTypeSetting/LabTestTypesSetting\";\nimport calendarIcon from \"../assets/img/calendar-icon.svg\";\nimport TestDetails from \"views/TestDetails\";\nimport Employee from \"views/Hipaa/Employees\";\nimport PatientView from \"views/GraphQL/PatientView\";\nimport CheckEligibility from \"views/GraphQL/CheckEligibility\";\nimport OrdersView from \"views/Order/OrderView\";\nimport PatientProfile from \"views/PatientProfile\";\nimport TestListAdminApi from \"views/GraphQL/TestListCompletedTest/TestListAdminApi\";\n\nconst dashboardRoutes = [\n  // {\n  //   path: \"/employees\",\n  //   name: \"Employee\",\n  //   icon: \"nc-icon nc-notes\",\n  //   component: Employee,\n  //   layout: \"/admin\",\n  // },\n  {\n    path: \"/patient\",\n    name: \"Patients\",\n    icon: \"nc-icon nc-notes\",\n    component: PatientView,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/order\",\n    name: \"Orders\",\n    icon: \"nc-icon nc-notes\",\n    component: OrdersView,\n    layout: \"/admin\",\n  },\n  // {\n  //   path: \"/unprocessedtests\",\n  //   name: \"Unprocessed Tests\",\n  //   icon: \"nc-icon nc-notes\",\n  //   component: UnprocessedTestsApi,\n  //   layout: \"/admin\",\n  // },\n  {\n    path: \"/senttest\",\n    name: \"Pending Results\",\n    icon: \"nc-icon nc-notes\",\n    component: UnprocessedTestsApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/alltests\",\n    name: \"Completed Tests\",\n    icon: \"nc-icon nc-check-2\",\n    component: TestListAdminApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/test/:testId\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: TestDetails,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/employee/:employeeId\",\n    name: \"Profile Employee Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: ProfileEmployeeTest,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/profile/:patientId\",\n    name: \"Profile Patient Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: PatientProfile,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/externaltest/:testId\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: ExternalTestCrew,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  {\n    path: \"/crewprofile/:empId\",\n    name: \"CrewProfile\",\n    icon: \"nc-icon nc-circle-09\",\n    component: CrewProfile,\n    layout: \"/admin\",\n    redirect: true,\n  },\n  // {\n  //   path: \"/locations\",\n  //   name: \"Locations\",\n  //   icon: \"nc-icon nc-tv-2\",\n  //   component: LabSites,\n  //   layout: \"/admin\",\n  // },\n\n  // {\n  //   path: \"/whiteusers\",\n  //   name: \"System User\",\n  //   icon: \"nc-icon nc-badge\",\n  //   component: UsersViewWhiteLabel,\n  //   layout: \"/admin\",\n  // },\n  // {\n  //   path: \"/checkeligibility\",\n  //   name: \"Check Eligibility\",\n  //   icon: \"nc-icon nc-badge\",\n  //   src: calendarIcon,\n  //   component: CheckEligibility,\n  //   layout: \"/admin\",\n  // },\n  {\n    path: \"/testtypes\",\n    name: \"Settings\",\n    icon: \"nc-icon nc-notes\",\n    src: settingIcon,\n    component: LabTestTypesSetting,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/archivedTests\",\n    name: \"Archived Tests\",\n    icon: \"nc-icon nc-simple-remove\",\n    component: DeleteTestApi,\n    layout: \"/admin\",\n  },\n  {\n    path: \"/archivedOrders\",\n    name: \"Archived Orders\",\n    icon: \"nc-icon nc-simple-remove\",\n    component: OrdersView,\n    layout: \"/admin\",\n  },\n];\n\nexport default dashboardRoutes;\n","import React, { useEffect, useState } from \"react\";\nimport {\n  Chart as ChartJS,\n  CategoryScale,\n  LinearScale,\n  PointElement,\n  LineElement,\n  BarElement,\n  ArcElement,\n  Title,\n  Tooltip,\n  Legend,\n} from \"chart.js\";\nimport API from \"api\";\nimport { Bar, Line, Pie } from \"react-chartjs-2\";\nimport { SUMMARY_STATS_TYPE } from \"constant\";\nimport moment from \"moment\";\nimport { SUMMARY_TABLES_KEY_LABELS } from \"constant\";\nimport { GRAPH_COLOR_VALUES } from \"constant\";\nimport { GRAPH_WEEKDAYS_LABELS } from \"constant\";\n// import Slider from \"../../components/Slider/Slider\";\n\nChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, BarElement, ArcElement, Title, Tooltip, Legend);\n\nconst DashboardLineChart = (props) => {\n\n  const { statsType, connectedID, statsTitle, dateTimeType , orderedClientNamesData , orderedLabNamesData , orderedSiteNamesData} = props;\n\n  let summaryDataFromLocalStorage =     JSON.parse(localStorage.getItem(statsType + \"Data\"));\n  const [summaryResultData, setSummaryResultData] = useState( summaryDataFromLocalStorage || []);\n  const [isWeeklyData , setIsWeeklyData] = useState(false);\n  const [dateType, setDateType] = useState(\"month\");\n  const [labels, setGraphLabel] = useState([]);\n  const [colors, setColors] = useState(GRAPH_COLOR_VALUES);\n  const [legendcolor, setLegend] = useState([]);\n\n\n  const loadGraphStats = async (statsSummary) => {\n    try {\n\n      let startDate = moment().startOf(dateType).format('YYYY-MM-DD');\n      let endDate = \"\";\n      let dates = [];\n      let formatedDates = [];\n      let graphlabels = [];\n      if (dateType == \"isoWeek\") {\n        endDate = moment().endOf(dateType).format('YYYY-MM-DD');\n        for (var i = 0; i <= 6; i++) {\n          dates.push(moment(startDate).add(i, 'days').format(\"DD/MM/YYYY\"));\n        };\n        graphlabels = GRAPH_WEEKDAYS_LABELS;\n      } else {\n        endDate = moment().endOf(dateType).format('YYYY-MM-DD');\n        var day = moment().format('D');\n        for (var i = 0; i < Number(day); i++) {\n          dates.push(moment(startDate).add(i, 'days').format(\"DD/MM/YYYY\"));\n          formatedDates.push(moment(startDate).add(i, 'days').format('DD'));\n        };\n        graphlabels = formatedDates;\n      }\n\n      const summaryStatsData = await API.getSummaryFromPG({ summary: statsSummary, startDate, endDate, id: connectedID });\n      \n\n      //get Clients-wise Data\n      const nameArray = [];\n      summaryStatsData?.rows?.map(test => {\n        if (!(nameArray.includes(test.name))) {\n          nameArray.push(test.name);\n        }\n\n      });\n\n      let seriesDataArr = [];\n      nameArray.sort().forEach((nameElement) => {\n        let tempSeriesArray = [];\n        dates.forEach((dateElement, index) => {\n          tempSeriesArray.push(parseInt(summaryStatsData?.rows?.find((test) => test.date === dateElement && (test.name === nameElement))?.count) || 0);\n\n        });\n        seriesDataArr.push({ data: tempSeriesArray, datalabel: nameElement || '' });\n\n      });\n\n      let colorsArr = [];\n      seriesDataArr?.map((data, index) => {\n        colorsArr.push({ color: colors[index], label: data.datalabel });\n      });\n\n      setLegend(colorsArr);\n      setGraphLabel(graphlabels);\n      setSummaryResultData(seriesDataArr);\n      localStorage.setItem(statsType + \"Data\" , JSON.stringify(seriesDataArr));\n      if(orderedClientNamesData){\n        orderedClientNamesData(nameArray);\n      } else if(orderedLabNamesData){\n        orderedLabNamesData(nameArray);\n      } else if(orderedSiteNamesData){\n        orderedSiteNamesData(nameArray);\n      }\n    \n\n\n    } catch (err) {\n      console.log(\"Error \", err);\n    }\n\n  };\n\n  useEffect(async () => {\n    loadGraphStats(statsType);\n  }, [dateType]);\n\n  const handleDatewiseData = () => {\n    //setCurrentValue(value);\n    if(isWeeklyData){\n      setDateType(\"month\");\n    } else {\n      setDateType(\"isoWeek\");\n    }\n    setIsWeeklyData(!isWeeklyData)\n  };\n\n  const options = {\n    responsive: true,\n    maintainAspectRatio: false,\n    plugins: {\n      legend: {\n        display: false,\n      },\n      title: {\n        display: false,\n        text: SUMMARY_STATS_TYPE[statsType],\n\n      },\n      legend: {\n        display: false,\n        labels: {\n          usePointStyle: true,\n          boxWidth: 8,\n\n        }\n      },\n    },\n  };\n\n\n\n  const data = {\n    labels,\n    datasets: summaryResultData.map((data, index) => {\n      return {\n        label: data.datalabel || '',\n        data: data.data,\n        borderColor: colors[index],\n        backgroundColor: colors[index],\n        borderWidth: 1,\n      }\n\n    }),\n  };\n\n\n  return (\n    <>\n      <div id={statsType} name={statsType} className=\"position-absolute right-3 top-1 fs-7 d-flex\">\n        <a className=\"mb-0 cursor-pointer fs-7 text-black text-decoration-none bg-white\" id={statsType} name={statsType} onClick={() => handleDatewiseData()}>Switch to {isWeeklyData ? 'Month' : 'Week'} </a>\n      </div>\n      <Line options={options} data={data} className=\"mt-3\" />\n\n      <div className=\"d-flex justify-content-start mt-3 px-2\">\n        <p className=\"mb-1 text-center pe-2 stats-title\">{statsTitle}</p>\n        <div className=\"stats-title-border d-flex align-items-center flex-wrap\">\n            {\n              legendcolor.map((element) => {\n                let color = element.color;\n                return <span className=\"row\" title={element.label} style={{\n                  margin: \"5px\",\n                  height: \"15px\",\n                  width: \"15px\",\n                  backgroundColor: color,\n                  borderRadius: \"50%\",\n                  display: \"inline-block\",\n                  alignContent: 'center',\n\n                }} value={element.label} >\n\n            </span>\n              })\n            }\n        </div>\n      </div>\n      \n    </>\n  );\n};\n\nexport default DashboardLineChart;\n\n","import React, { useEffect, useState } from \"react\";\nimport {\n  Chart as ChartJS,\n  CategoryScale,\n  LinearScale,\n  PointElement,\n  LineElement,\n  BarElement,\n  ArcElement,\n  Title,\n  Tooltip,\n  Legend,\n\n} from \"chart.js\";\nimport { Bar , Line , Pie , Doughnut} from \"react-chartjs-2\";\nimport { GRAPH_COLOR_VALUES } from \"constant\";\n\n\nChartJS.register(\n  CategoryScale,\n  LinearScale,\n  PointElement,\n  LineElement,\n  BarElement,\n  ArcElement,\n  Title,\n  Tooltip,\n  Legend\n);\n\nconst DashboardPieChart = (props) => {\n\n  const [colors, setColors] = useState(GRAPH_COLOR_VALUES);\n  const [legendcolor, setLegend] = useState([]);\n  const [chartDataSet , setChartDataSet] = useState([]);\n  const [chartDataLabels , setChartDatalabel] = useState([]);\n  const {chartData} = props;\n\n    const loadChartData = () => {\n      let dataArray = [];\n      let labelsArray = [];\n      const asArray = Object.entries(chartData);\n      const filteredData = asArray.filter(([key, value]) => typeof value === 'number' && key !== 'totalTests' && key != 'showRunningDays');\n      filteredData.map((data , index) => {\n      let formattedLabel = formatTestLabels(data[0]);\n      labelsArray.push(formattedLabel);\n      dataArray.push(data[1]);\n  \n      })\n\n      setChartDataSet(dataArray);\n      setChartDatalabel(labelsArray);\n    };\n\n\n    const formatTestLabels = (label) => {\n      if(label === 'positiveTests') return 'Positive';\n      if(label === 'pendingTests') return 'Pending';\n      if(label === 'negativeTests') return 'Negative';\n      if(label === 'inconclusiveTests') return 'Inconclusive';\n    };\n\n    useEffect(()=>{\n      loadChartData();\n    } , [chartData]);\n\n\n  const options = {\n    responsive: true,\n    maintainAspectRatio: false,\n    plugins: {\n      title: {\n        display: true,\n        text: \"Tests Stats\",\n      },\n    },\n  };\n\n  const labels = chartDataLabels;\n\n  const data = {\n    labels,\n    datasets: [\n        {\n          label: 'Tests Count:',\n          data: chartDataSet,\n          backgroundColor: [\n            'rgba(255, 99, 132, 0.2)',\n            'rgba(75, 192, 192, 0.2)',\n            'rgba(255, 206, 86, 0.2)',\n            'rgba(54, 162, 235, 0.2)',\n            'rgba(153, 102, 255, 0.2)',\n            'rgba(255, 159, 64, 0.2)',\n          ],\n          borderColor: [\n            'rgba(255, 99, 132, 1)',\n            'rgba(75, 192, 192, 1)',\n            'rgba(255, 206, 86, 1)',\n            'rgba(54, 162, 235, 1)',\n            'rgba(153, 102, 255, 1)',\n            'rgba(255, 159, 64, 1)',\n          ],\n          borderWidth: 1,\n       \n        },\n        \n      ],\n      \n        options: {\n          legend: {\n            display: false,\n            position: 'bottom',\n            labels: {\n              fontColor: \"#000080\",\n            }\n          }\n        }\n      \n      \n\n   \n  };\n\n  return (\n    <>\n      <Pie options={options} data={data} />\n    </>\n  );\n};\n\n\n\nexport default DashboardPieChart;\n","import React, { useEffect, useState } from \"react\";\nimport {\n    Chart as ChartJS,\n    CategoryScale,\n    LinearScale,\n    PointElement,\n    LineElement,\n    BarElement,\n    ArcElement,\n    Title,\n    Tooltip,\n    Legend,\n\n} from \"chart.js\";\n\nimport API from \"api\";\nimport { Bar , Line , Pie} from \"react-chartjs-2\";\nimport { SUMMARY_STATS_TYPE } from \"constant\";\nimport moment from \"moment\";\nimport { GRAPH_COLOR_VALUES } from \"constant\";\n\n\nChartJS.register(\n    CategoryScale,\n    LinearScale,\n    PointElement,\n    LineElement,\n    BarElement,\n    ArcElement,\n    Title,\n    Tooltip,\n    Legend\n);\n\nconst DashboardBarChart = (props) => {\n\n\n  const { statsType, connectedID , statsTitle } = props;\n  \n    const [ summaryResultData ,  setSummaryResultData] = useState([]);\n    const [dateType , setDateType] = useState('month');\n    const [labels , setGraphLabel] = useState([]);\n    const [colors , setColors] = useState(GRAPH_COLOR_VALUES);\n    const [legendcolor, setLegend] = useState([]);\n\n    \n\n    const loadGraphStats = async (statsSummary) => {\n      try {\n  \n        let startDate = moment().startOf(dateType).format('YYYY-MM-DD');\n        let endDate = \"\";\n        let dates = [];\n        let formatedDates = [];\n        let graphlabels = [];\n        if (dateType == \"isoWeek\") {\n          endDate = moment().endOf(dateType).format('YYYY-MM-DD');\n          for (var i = 0; i <= 6; i++) {\n            dates.push(moment(startDate).add(i, 'days').format(\"DD/MM/YYYY\"));\n          };\n          graphlabels = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\",];\n        } else {\n          endDate = moment().endOf(dateType).format('YYYY-MM-DD');\n          var day = moment().format('D');\n          for (var i = 0; i < Number(day); i++) {\n            dates.push(moment(startDate).add(i, 'days').format(\"DD/MM/YYYY\"));\n            formatedDates.push(moment(startDate).add(i, 'days').format('DD-MMM'));\n          };\n          graphlabels = formatedDates;\n  \n  \n        }\n  \n        const summaryStatsData = await API.getSummaryFromPG({ summary: statsSummary, startDate, endDate, id: connectedID });\n        //console.log(\"summaryStatsData:\", summaryStatsData.rows);\n  \n  \n        //get Clients-wise Data\n        const nameArray = [];\n        summaryStatsData?.rows?.map(test => {\n          if (!(nameArray.includes(test.name))) {\n            nameArray.push(test.name);\n          }\n  \n        });\n  \n        let seriesDataArr = [];\n\n          let tempSeriesArray = [];\n          let dateElementLabel= \"\"\n\n             dates.forEach((dateElement, index) => {\n             tempSeriesArray.push(summaryStatsData?.rows?.filter((test) => test.date == dateElement).reduce((ttl , obj) => ttl + Number(obj.count) , 0)  || 0) ;\n             \n          });\n          \n        seriesDataArr.push({ data: tempSeriesArray || '' });\n\n        let colorsArr = [];\n        seriesDataArr?.map((data, index) => {\n          colorsArr.push({ color: colors[index], label: data.datalabel });\n        });\n  \n        setLegend(colorsArr);\n        setGraphLabel(graphlabels);\n        setSummaryResultData(seriesDataArr);\n  \n  \n  \n  \n      } catch (err) {\n        console.log(\"Error \", err);\n      }\n  \n    };\n  \n    useEffect(async () => {\n      loadGraphStats(statsType);\n    }, []);\n\n  const options = {\n    responsive: true,\n      maintainAspectRatio: false,\n    plugins: {\n      legend: {\n        display: false,\n      },\n      title: {\n        display: false,\n        text: SUMMARY_STATS_TYPE[statsType],\n\n      },\n      legend: {\n        display: false,\n        labels: {\n          usePointStyle: true,\n          boxWidth: 8,\n\n        }\n      },\n    },\n  };\n\n\n  const data = {\n    labels,\n    datasets:  summaryResultData.map((data , index) =>{\n        return {\n              label: data.datalabel || '' ,\n              data: data.data,\n              borderColor:  colors[index],\n              backgroundColor: colors[index],\n              borderWidth: 10,\n            }\n        \n    }),\n\n   \n  };\n\n    return (\n  \n\n<>\n\n<Bar width={100} height={100} options={options} data={data} className=\"mb-3\" />\n\n<div className=\"d-flex justify-content-start px-2\" style={{marginBlock: \"-18px\"}}>\n  <p className=\"mb-1 text-center pe-2 stats-title\">{statsTitle}</p>\n  <div className=\"stats-title-border d-flex align-items-center flex-wrap\">\n      {\n        legendcolor.map((element) => {\n          let color = element.color;\n          return <span className=\"row\" title={element.label} style={{\n            margin: \"5px\",\n            height: \"15px\",\n            width: \"15px\",\n            backgroundColor: color,\n            borderRadius: \"50%\",\n            display: \"inline-block\",\n            alignContent: 'center',\n\n          }} value={element.label} >\n\n      </span>\n        })\n      }\n  </div>\n</div>\n\n</>\n    );\n};\n\n\n\nexport default DashboardBarChart;\n","import React from \"react\";\nimport {\n  Chart as ChartJS,\n  CategoryScale,\n  LinearScale,\n  PointElement,\n  LineElement,\n  BarElement,\n  ArcElement,\n  Title,\n  Tooltip,\n  Legend,\n\n} from \"chart.js\";\nimport { Bar , Line , Pie , Doughnut} from \"react-chartjs-2\";\n\n\nChartJS.register(\n  CategoryScale,\n  LinearScale,\n  PointElement,\n  LineElement,\n  BarElement,\n  ArcElement,\n  Title,\n  Tooltip,\n  Legend\n);\n\nconst DashboardDougnutChart = (props) => {\n\n    const {chartData , colors  } = props;\n    const options = {\n    responsive: true,\n    plugins: {\n      title: {\n        display: true,\n        text: \"Tests Stats\",\n      },\n    },\n  };\n\n  const labels = [\n    \"Mon\",\n    \"Tue\",\n    \"Wed\",\n    \"Thu\",\n    \"Fri\",\n    \"Sat\",\n    \"Sun\",\n  ];\n\n  const data = {\n    labels,\n    datasets: [\n        {\n          label: '# of Tests',\n          data: [12, 19, 3, 5, 2, 3], //place chartData here\n          backgroundColor: [\n            'rgba(255, 99, 132, 0.2)',\n            'rgba(54, 162, 235, 0.2)',\n            'rgba(255, 206, 86, 0.2)',\n            'rgba(75, 192, 192, 0.2)',\n            'rgba(153, 102, 255, 0.2)',\n            'rgba(255, 159, 64, 0.2)',\n          ],\n          borderColor: [\n            'rgba(255, 99, 132, 1)',\n            'rgba(54, 162, 235, 1)',\n            'rgba(255, 206, 86, 1)',\n            'rgba(75, 192, 192, 1)',\n            'rgba(153, 102, 255, 1)',\n            'rgba(255, 159, 64, 1)',\n          ],\n          borderWidth: 1,\n        },\n      ],\n\n   \n  };\n\n  return (\n    <>\n      <Doughnut options={options} data={data} />\n    </>\n  );\n};\n\n\n\nexport default DashboardDougnutChart;\n","export default __webpack_public_path__ + \"static/media/icon1.329e5eac.svg\";","export default __webpack_public_path__ + \"static/media/plus.bd82285e.svg\";","export default __webpack_public_path__ + \"static/media/minus.a616ce0d.svg\";","import React, { useEffect, useState } from \"react\";\nimport totalTestsImg from '../../assets/img/icon1.svg';\nimport positiveTestsImg from '../../assets/img/plus.svg';\nimport negativeTestsImg from '../../assets/img/minus.svg';\n\nimport API from \"api\";\n// react-bootstrap components\nimport {\n    Badge,\n    Button,\n    Card,\n    Navbar,\n    Nav,\n    Table,\n    Container,\n    Row,\n    Col,\n    Form,\n    OverlayTrigger,\n    Tooltip,\n} from \"react-bootstrap\";\n\n\nconst DashboardChartTotalTestsDataCard = (props) => {\n\n    const {totalTestCounts, clientDashboard} = props;\n   \n    return (\n        <>\n            <div className=\"row\">\n                <div className={`col-12 col-sm-12 px-4 ${clientDashboard ? 'col-md-12 col-xl-12 mb-3' : 'col-md-6 col-xl-3'}`}>\n                    <div className=\"card total-test mb-xl-0 mb-md-3\">\n                        <div className=\"card-body custom-card-body\">\n                            <div className=\"detail d-flex align-items-center\">\n                                <img src={totalTestsImg} className=\"icon-svg\" alt=\"total tests\" />\n                                <p className=\"title mb-0\">Total Tests</p>\n                            </div>\n                            <span className=\"number total-number\">{totalTestCounts?.totalTests || 0}</span>\n                        </div>\n                    </div>\n                </div>\n                <div className={`col-12 col-sm-12 px-4 ${clientDashboard ? 'col-md-12 col-xl-12 mb-3' : 'col-md-6 col-xl-3'}`}>\n                    <div className=\"card positive-test mb-xl-0 mb-md-3\">\n                        <div className=\"card-body custom-card-body\">\n                            <div className=\"detail d-flex align-items-center\">\n                                <img src={positiveTestsImg} className=\"icon-svg\" alt=\"positive tests\" />\n                                <p className=\"title mb-0\">Positive Tests</p>\n                            </div>\n                            <span className=\"number positive-number\">{totalTestCounts?.positiveTests || 0}</span>\n                        </div>\n                    </div>\n                </div>\n                <div className={`col-12 col-sm-12 px-4 ${clientDashboard ? 'col-md-12 col-xl-12 mb-3' : 'col-md-6 col-xl-3'}`}>\n                    <div className=\"card negative-test mb-xl-0 mb-md-3\">\n                        <div className=\"card-body custom-card-body\">\n                            <div className=\"detail d-flex align-items-center\">\n                                <img src={negativeTestsImg} className=\"icon-svg\" alt=\"negative tests\" />\n                                <p className=\"title mb-0\">Negative Tests</p>\n                            </div>\n                            <span className=\"number negative-number\">{totalTestCounts?.negativeTests || 0}</span>\n                        </div>\n                    </div>\n                </div>\n                <div className={`col-12 col-sm-12 px-4 ${clientDashboard ? 'col-md-12 col-xl-12' : 'col-md-6 col-xl-3'}`}>\n                    <div className=\"card inconclusive-test mb-xl-0 mb-md-3\">\n                        <div className=\"card-body custom-card-body\">\n                            <div className=\"detail d-flex align-items-center\">\n                                <img src={negativeTestsImg} className=\"icon-svg\" alt=\"negative tests\" />\n                                <p className=\"title mb-0\">Inconclusive Tests</p>\n                            </div>\n                            <span className=\"number inconclusive-number\">{totalTestCounts?.inconclusiveTests || 0}</span>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </>\n\n\n\n    );\n}\n\nexport default DashboardChartTotalTestsDataCard;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport API from \"api\";\n\nimport { SUMMARY_TABLES_KEY_LABELS, GRAPH_COLOR_VALUES } from \"constant\";\nimport { parseIntVal, formateDateLL, formateDateDDMMMYYYY } from \"utils\";\nimport { SUMMARY_TABLES_STATS_TYPE } from \"constant\";\nimport Loader from \"components/Loader/Loader\";\nimport { Link } from \"react-router-dom\"\nimport { AppContext } from \"context/app-context\";\n\n\nconst DashboardChartsTableData = (props) => {\n\n    const { statsType, totalCounts, orderedClientNamesArray, orderedLabNamesArray, orderedSiteNamesArray } = props;\n    const [sites, setSites] = useState([]);\n    const [testsSummaryData, setTestsSummaryData] = useState([]);\n    const [loading, setLoading] = useState();\n    const [positiveTest, setPositiveTest] = useState([]);\n    const [filter, setFilter] = useState('');\n    const [sortedSummaryData , setSortedsummaryData] = useState([]);\n    const appContext = useContext(AppContext);\n    const lastPositiveTest = (id) => {\n        let key = SUMMARY_TABLES_KEY_LABELS[statsType];\n        let positiveTestsData = positiveTest.find((c) => c[key] === id)\n        return positiveTestsData;\n    };\n\n    const tableSummaryData = async () => {\n\n        let summaryData = \"\";\n        if (statsType === 'clientstats') {\n            summaryData = await API.getSummaryFromPG({ summary: \"client\" });\n            loadTotalTestCounts(summaryData.rows);\n        } else if (statsType === 'sitestats') {\n            const models = await API.getSites();\n\n              let fiteredshowOnSummaryScreen = models.filter((m) => m.showOnSummaryScreen === false);\n            summaryData = await API.getSummaryFromPG({ summary: \"site\" });\n            summaryData.rows = [...(summaryData?.rows || [])].filter((f) => fiteredshowOnSummaryScreen.findIndex((s) => f.id === s.id) !== -1);\n          \n       \n        } else if (statsType === 'labstats') {\n\n\n            summaryData = await API.getSummaryFromPG({ summary: \"lab\" });\n        }\n\n\n        if(summaryData.rows){\n            setTestsSummaryData(summaryData.rows);\n            setFilter(summaryData.rows);\n        }\n      \n    };\n\n    const loadDashboardData = async () => {\n        try {\n            setLoading(true);\n            const ptData = await API.getSummaryFromPG({ summary: \"positiveTest\" });\n            setPositiveTest(ptData.rows);\n\n            let flag = tableSummaryData();\n\n            if (flag) setLoading(false);\n        } catch (err) {\n            console.log(\"Error \", err);\n            setLoading(false);\n        }\n    };\n\n    const loadTotalTestCounts = async (data) => {\n        let sum = { totalTests: 0, positiveTests: 0, negativeTests: 0  , inconclusiveTests: 0};\n        data.reduce((obj, client) => {\n            obj[\"totalTests\"] = (obj[\"totalTests\"] || 0) + client.totalTest;\n            obj[\"positiveTests\"] = (obj[\"positiveTests\"] || 0) + parseIntVal(client.positiveCount);\n            obj[\"negativeTests\"] = (obj[\"negativeTests\"] || 0) + parseIntVal(client.negativeCount);\n            obj[\"inconclusiveTests\"] = (obj[\"inconclusiveTests\"] || 0) + parseIntVal(client.inconclusiveTests);\n            return obj;\n        }, sum)\n\n        totalCounts(sum);\n    };\n\n    const sortByOtherArray = async (arr, orderArr) => {\n        return arr.sort((a, b) => {\n            var aIndex = orderArr?.indexOf(a.name);\n            var bIndex = orderArr?.indexOf(b.name);\n            if (aIndex === -1 && bIndex === -1) {\n                return 0;\n            }\n            if (aIndex === -1) {\n                return 1;\n            }\n            if (bIndex === -1) {\n                return -1;\n            }\n            return aIndex - bIndex;\n        });\n    };\n\n    useEffect(async() => {\n        if (testsSummaryData && orderedClientNamesArray) {\n            await loadColorValues(orderedClientNamesArray);\n        } else if (testsSummaryData && orderedLabNamesArray) {\n            await loadColorValues(orderedLabNamesArray);\n        } else if (testsSummaryData && orderedSiteNamesArray) {\n            await loadColorValues(orderedSiteNamesArray);\n        }\n    }, [testsSummaryData]);\n\n    useEffect(async () => {\n       await loadDashboardData();\n    }, []);\n\n    const loadColorValues = async (orderedNamesArr) => {\n        let sortedsummary = [];\n        sortedsummary = await sortByOtherArray(testsSummaryData, orderedNamesArr);\n        if (sortedsummary) {\n            orderedNamesArr && orderedNamesArr?.forEach((element, index) => {\n                if (element && sortedsummary[index]?.colorValue) {\n                    sortedsummary[index].colorValue = GRAPH_COLOR_VALUES[index];\n                }\n            });\n        }\n\n        setSortedsummaryData(sortedsummary);\n    };\n\n    const handleChange = (e) => {\n        if (e.target.value === \"\" ) {\n            setFilter(testsSummaryData);\n            return;\n        }\n\n        const results = testsSummaryData?.filter(test => {\n            return test?.name.toLowerCase().includes(e.target.value.toLowerCase());\n        })\n        setFilter(results);\n\n    }\n\n    return (\n        <>\n            <div className=\"search-card\">\n                <div\n                    className=\"card-body d-flex align-items-center justify-content-between\">\n                    <p className=\"card-title custom-title\">{SUMMARY_TABLES_STATS_TYPE[statsType]}s</p>\n                    <div>\n                        <div className=\"form position-relative\">\n                            <input type=\"search\" id=\"filterSearch\" name=\"filterSearch\" onChange={handleChange}  placeholder=\"Search...\" className=\"search-field\" />\n                            <div><i className=\"fa fa-search search-icon\"></i></div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <table className=\"dashboard-tables-data\">\n                <tbody>\n                    <tr>\n                        <td>\n                            {filter && sortedSummaryData && (\n                                filter?.map((test, index) => {\n                                    const positiveData = lastPositiveTest(test?.id);\n                                    return (\n                                        <table key={index} className=\"table\">\n                                            <tbody className=\"position-relative\">\n                                                <tr className=\"clientColor\">\n                                                    <svg width=\"35px\" height=\"34px\" viewBox=\"0 0 35 34\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\">\n                                                        <polygon id=\"triangularLabel\" points=\"0 0 35 0 0 34\" fill={test?.colorValue} />\n                                                    </svg>\n                                                </tr>\n                                                <tr className=\"border-bottom-transparent\">\n                                                    <td style={{ width: '50%' }}>\n                                                        <p className=\"custom-title\">Name:</p>\n                                                        <span className=\"text-black\">{test.name}</span>\n                                                    </td>\n                                                    <td>\n                                                        <p className=\"custom-title\">Total Tests</p>\n                                                        <span className=\"fw-bold\">\n                                                            <p>\n                                                                {test.totalTest !== 0 ? (\n                                                                    <Link\n                                                                        className=\"text-black text-decoration-none\"\n                                                                        to={{\n                                                                            pathname: \"/admin/totaltests\",\n                                                                            state: { name: test.name, term: SUMMARY_TABLES_STATS_TYPE[statsType], models: filter },\n                                                                        }}\n                                                                    >\n                                                                        {test.totalTest}\n                                                                    </Link>\n                                                                ) : (\n                                                                    0\n                                                                )}\n                                                            </p>\n                                                        </span>\n                                                    </td>\n                                                </tr>\n                                                <tr>\n                                                    <td>\n                                                        <p className=\"positive-number\">Positive</p>\n                                                        <span className=\"fw-bold\">\n                                                            <p>\n                                                                {test.positiveCount !== 0 ? (\n                                                                    <Link\n                                                                        className=\"text-black text-decoration-none\"\n                                                                        to={{\n                                                                            pathname: \"/admin/alltests\",\n                                                                            state: { name: test.name, term: SUMMARY_TABLES_STATS_TYPE[statsType], models: filter, positiveTests: true },\n                                                                        }}\n                                                                    >\n                                                                        {test.positiveCount}\n                                                                    </Link>\n                                                                ) : (\n                                                                    0\n                                                                )}\n                                                            </p>\n                                                        </span>\n                                                    </td>\n                                                    <td>\n                                                        <p className=\"negative-number\">Negative</p>\n                                                        <span className=\"fw-bold\">\n                                                            <p>\n                                                                {test.negativeCount !== 0 ? (\n                                                                    <Link\n                                                                        className=\"text-black text-decoration-none\"\n                                                                        to={{\n                                                                            pathname: \"/admin/alltests\",\n                                                                            state: { name: test.name, term: SUMMARY_TABLES_STATS_TYPE[statsType], models: filter, negativeTests: true },\n                                                                        }}\n\n                                                                    >\n                                                                        {test.negativeCount}\n                                                                    </Link>\n                                                                ) : (\n                                                                    0\n                                                                )}\n                                                            </p>\n                                                        </span>\n                                                    </td>\n                                                    <td>\n                                                        <p className=\"total-number\">Last Positive</p>\n                                                        <span className=\"fw-bold\">\n                                                            <p>\n                                                                {!positiveData ? (\n                                                                    \"No Positive Tests\"\n                                                                ) : (\n                                                                    <Link\n                                                                        className=\"text-black text-decoration-none\"\n                                                                        to={{\n                                                                            pathname: \"/admin/alltests\",\n                                                                            state: { name: positiveData?.barcode || 1, term: \"barcode\" },\n                                                                        }}\n\n                                                                    >\n                                                                        {formateDateDDMMMYYYY(positiveData.resultDate)}\n                                                                    </Link>\n                                                                )}\n                                                            </p>\n                                                        </span>\n\n                                                    </td>\n                                                </tr>\n                                            </tbody>\n                                        </table>\n                                    );\n                                })\n                            )\n                            }\n\n                            {loading && <Loader />}\n                        </td>\n                    </tr>\n                </tbody>\n            </table>\n\n        </>\n    );\n}\n\nexport default DashboardChartsTableData;\n","import React, { useEffect, useState } from \"react\";\nimport API from \"api\";\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n  Form,\n  OverlayTrigger,\n  Tooltip,\n} from \"react-bootstrap\";\nimport moment from \"moment\";\nimport DashboardLineChart from \"./DashboardLineChart\";\nimport DashboardPieChart from \"./DashboardPieChart\";\nimport DashboardBarChart from \"./DashboardBarChart\";\nimport DashboardDougnutChart from \"./DashboardDougnutChart\";\nimport DashboardChartTotalTestsDataCard from \"./DashboardChartTotalTestsData\";\nimport DashboardChartsTableData from \"./DashboardChartsTableData\";\n\n  const AdminDashboard = (props) => {\n\n    const [totalTestCounts , setTotalCounts] = useState('');\n    const [orderedClientNamesArray , setOrderedClientNames ] = useState([]);\n    const [orderedLabNamesArray , setOrderedLabNames ] = useState([]);\n    const [orderedSiteNamesArray , setOrderedSiteNames ] = useState([]);\n    const totalCounts = (testCountsObj) => {\n        setTotalCounts(testCountsObj);\n    };\n    const orderedClientNamesData = (orderedNames) => {\n        setOrderedClientNames(orderedNames);\n    };\n    const orderedLabNamesData = (orderedNames) => {\n        setOrderedLabNames(orderedNames);\n    };\n    const orderedSiteNamesData = (orderedNames) => {\n        setOrderedSiteNames(orderedNames);\n    };\nreturn (\n    <div className=\"dashboard-wrapper bg-transparent\">\n        <div className=\"container-fluid mb-3\">\n            <DashboardChartTotalTestsDataCard totalTestCounts={totalTestCounts} />\n        </div>\n        <div className=\"dashboard-wrapper\">\n            <div className=\"container-fluid\">\n                <div className=\"row\">\n                    <div className=\"col-12 col-md-6 col-lg-6 col-sm-12 col-xl-4\">\n                        <div className=\"bg-white rounded-3 pt-3 position-relative\">\n                           <div className=\"box-height p-0\">\n                               <div className=\"box-inner-height\">\n                               <DashboardLineChart statsType={'clientstats'} statsTitle=\"Clients\" orderedClientNamesData={orderedClientNamesData} />\n                               </div>\n                           </div>\n                          { orderedClientNamesArray && <DashboardChartsTableData statsType={'clientstats'} totalCounts={totalCounts} orderedClientNamesArray={orderedClientNamesArray}/> }\n                        </div>\n                    </div>\n\n                    <div className=\"col-12 col-md-6 col-lg-6 col-sm-12 col-xl-4\">\n                        <div className=\"bg-white rounded-3 pt-3 position-relative\">\n                            <div className=\"box-height p-0\">\n                                <div className=\"box-inner-height\">\n                                    <DashboardLineChart statsType={'labstats'} statsTitle=\"Labs\" orderedLabNamesData={orderedLabNamesData} />\n                                </div>\n                            </div>\n                           { orderedLabNamesArray && <DashboardChartsTableData statsType={'labstats'} totalCounts={totalCounts} orderedLabNamesArray={orderedLabNamesArray}/> }\n                        </div>\n                    </div>\n\n                    <div className=\"col-12 col-md-6 col-lg-6 col-sm-12 col-xl-4\">\n                        <div className=\"bg-white rounded-3 pt-3 position-relative\">\n                            <div className=\"box-height p-0\">\n                                <div className=\"box-inner-height\">\n                                    <DashboardLineChart statsType={'sitestats'} statsTitle=\"Sites\"  orderedSiteNamesData={orderedSiteNamesData} />\n                                </div>\n                            </div>\n                           { orderedClientNamesArray && <DashboardChartsTableData statsType={'sitestats'} orderedSiteNamesArray={orderedSiteNamesArray}/> }\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n  );\n}\n\nexport default AdminDashboard;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport API from \"api\";\n// react-bootstrap components\nimport {\n    Badge,\n    Button,\n    Card,\n    Navbar,\n    Nav,\n    Table,\n    Container,\n    Row,\n    Col,\n    Form,\n    OverlayTrigger,\n    Tooltip,\n} from \"react-bootstrap\";\nimport moment from \"moment\";\nimport DashboardLineChart from \"./DashboardLineChart\";\nimport DashboardPieChart from \"./DashboardPieChart\";\nimport DashboardBarChart from \"./DashboardBarChart\";\nimport DashboardDougnutChart from \"./DashboardDougnutChart\";\nimport DashboardChartTotalTestsDataCard from \"./DashboardChartTotalTestsData\";\nimport DashboardChartsTableData from \"./DashboardChartsTableData\";\nimport { Link } from \"react-router-dom\";\nimport { connectedIDInLocalStorage, formateDateLL } from \"../../utils\";\nimport { AppContext } from \"context/app-context\";\n\nconst ClientsDashboard = (props) => {\n    const { sites } = props;\n\n    const [summaryData, setSummaryData] = useState({ positiveTests: 0, negativeTests: 0, totalTests: 0, inconclusiveTests: 0, positiveTest: null });\n    const [totalTestCounts, setTotalCounts] = useState('');\n    const connectedIDFromRoute = window.location?.pathname?.split(\"/\").pop();\n    const [routingPathBasedMedFlow, setRoutingPathBasedMedFlow] = useState({\n        userType: \"E\",\n        siteID:\n            connectedIDFromRoute.toLowerCase() !== \"admin\" ? connectedIDFromRoute : connectedIDInLocalStorage.get() || \"A\",\n    });\n\n    useEffect(() => {\n        totalTestsCount();\n    }, []);\n\n    const totalTestsCount = async () => {\n        if (sites && sites.length > 0) {\n            let postiveTestsCount = 0;\n            let negativeTestsCount = 0;\n            let pendingTestsCount = 0;\n            let inconclusiveTestsCount = 0;\n            let totalTestCounts = 0;\n            sites.map((siteTests) => {\n                postiveTestsCount = parseInt(postiveTestsCount) + positiveTests(siteTests.tests).length;\n                negativeTestsCount = parseInt(negativeTestsCount) + negativeTests(siteTests.tests);\n                pendingTestsCount = parseInt(pendingTestsCount) + pendingTests(siteTests.tests);\n                inconclusiveTestsCount = parseInt(inconclusiveTestsCount) + inconclusiveTests(siteTests.tests);\n                totalTestCounts = parseInt(totalTestCounts) + totalTestOfShow(siteTests.tests);\n\n            });\n\n            let newObj = {\n                positiveTests: parseInt(postiveTestsCount),\n                negativeTests: parseInt(negativeTestsCount),\n                pendingTests: parseInt(pendingTestsCount),\n                inconclusiveTests: parseInt(inconclusiveTestsCount),\n                totalTests: parseInt(totalTestCounts),\n            }\n            setTotalCounts(newObj);\n        };\n\n\n\n\n\n    }\n\n\n    const positiveTests = (tests) => {\n        const positiveTests = tests?.filter((test) => {\n            return test.result?.toLowerCase() === \"positive\" && test.status.toLowerCase() === \"processed\";\n            // return test.result?.toLowerCase() === \"positive\" \n        });\n        return positiveTests;\n    };\n\n    const negativeTests = (tests) => {\n        const negativeTests = tests.filter((test) => {\n            return test.result?.toLowerCase() === \"negative\";\n        });\n        return negativeTests.length;\n    };\n\n\n    const pendingTests = (tests) => {\n        const pendingTests = tests?.filter((test) => {\n            return test.result?.toLowerCase() === \"\" || test.result?.toLowerCase() === \"Pending\";\n        });\n        return pendingTests.length;\n    };\n\n    const inconclusiveTests = (tests) => {\n        const inconclusiveTests = tests.filter((test) => {\n            return test.result?.toLowerCase() === \"inconclusive\";\n        });\n        return inconclusiveTests.length;\n    };\n\n\n    const lastPositiveTest = (tests) => {\n        if (tests.length > 0) {\n            const max = positiveTests(tests).reduce((prev, current) => {\n                return new Date(prev.batch) > new Date(current.batch) ? prev : current;\n            });\n            return max;\n        }\n    };\n\n    const showStartDate = (startDate) => {\n        if (startDate) {\n            return new Date(startDate).toDateString();\n        }\n        return \"N/A\";\n    };\n\n    const getShowRunningDays = (startDate) => {\n        if (startDate) {\n            return Math.ceil((new Date() - new Date(startDate).getTime()) / (1000 * 3600 * 24));\n        }\n        return \"N/A\";\n    };\n\n    const lastPositiveTestDate = (testDate) => {\n        if (!testDate) return \"N/A\";\n        const date = new Date(testDate);\n        const currentDate = new Date();\n        const dayLastPositive = Math.floor((currentDate.getTime() - date.getTime()) / (1000 * 3600 * 24));\n        return `${date.toDateString()} (${dayLastPositive} days ago)`;\n    };\n\n    const totalTestOfShow = (tests) => {\n        const ids = tests.filter(\n            (test) => test.result?.toLowerCase() === \"positive\" && test.status.toLowerCase() === \"pending\"\n        ).map((t) => t.id);\n        return tests.filter((t) => !ids.includes(t.id)).length;\n    };\n\n\n    return (\n        <div className=\"dashboard-wrapper client-dashboard-inner\">\n            <div className=\"container-fluid mb-3\">\n                <h4 className=\"mt-0\">Client Summary</h4>\n            </div>\n            <div className=\"container-fluid\">\n                <div className=\"row\">\n                    <div className=\"col-12 col-lg-4 col-sm-12\">\n                        <div className=\"bg-white rounded-3\">\n                            <div className=\"box-height\">\n                                <div className=\"box-inner-height\">\n                                    <DashboardLineChart statsType={'clientstats'} statsTitle=\"Test Type\" connectedID={routingPathBasedMedFlow.siteID} />\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"col-12 col-lg-4 col-sm-12\">\n                        <div className=\"bg-white rounded-3\">\n                            <div className=\"box-height\">\n                                <div className=\"box-inner-height\">\n                                    <DashboardLineChart statsType={'clientsitestats'} statsTitle=\"Sites\" connectedID={routingPathBasedMedFlow.siteID} />\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"col-12 col-lg-4 col-sm-12\">\n                        <div className=\"bg-white rounded-3\">\n                            <div className=\"box-height\">\n                                <div className=\"box-inner-height\">\n                                    <DashboardChartTotalTestsDataCard totalTestCounts={totalTestCounts} clientDashboard=\"clientDashboard\" />\n\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <table className=\"table mt-4 table-fixed\">\n                    <thead>\n                        <tr>\n                            <th className=\"text-start\">Name</th>\n                            <th className=\"text-center\">Total Tests</th>\n                            <th className=\"text-center\">Positive</th>\n                            <th className=\"text-center\">Negative</th>\n                            <th className=\"text-center\">Inconclusive</th>\n                            <th className=\"text-center\">Show Running Days</th>\n                            <th className=\"text-center\">Show Start Day</th>\n                            <th className=\"text-start\">last Positive Test</th>\n                        </tr>\n                    </thead>\n                    <tbody>\n                        {\n                            sites && sites.map((site, index) => {\n                                return (\n                                    <tr>\n                                        <td className=\"elepsis\">{site?.name}</td>\n                                        <td className=\"text-center\">\n                                            {site?.tests?.length !== 0 ? (\n                                                <Link\n                                                    style={{ color: \"#464646\" }}\n                                                    to={{\n                                                        pathname: \"/admin/totaltests\",\n                                                        state: {  showId: site.id },\n                                                      }}\n                                                >\n                                                    {totalTestOfShow(site.tests)}\n                                                </Link>\n                                            ) : (\n                                                site.tests.length\n                                            )}\n                                        </td>\n                                        <td className=\"text-center\">\n\n\n                                            {positiveTests(site.tests).length !== 0 ? (\n                                                <Link\n                                                    style={{ color: \"#B62935\" }}\n                                                    to={{\n                                                        pathname: \"/admin/positivetests\",\n                                                        state: { showId: site.id },\n                                                    }}\n                                                >\n                                                    {positiveTests(site.tests).length}\n                                                </Link>\n                                            ) : (\n                                                positiveTests(site.tests).length\n                                            )}\n\n                                        </td>\n                                        <td className=\"text-center\">\n\n\n                                            {negativeTests(site.tests) !== 0 ? (\n                                                <Link\n                                                    style={{ color: \"#3BB339\" }}\n                                                    to={{\n                                                        pathname: \"/admin/totaltests\",\n                                                        state: { name: \"negative\", term: \"result\", showId: site.id , negativeTests: true},\n                                                    }}\n                                                >\n                                                    {negativeTests(site.tests)}\n                                                </Link>\n                                            ) : (\n                                                negativeTests(site.tests)\n                                            )}\n\n                                        </td>\n                                        <td className=\"text-center\">\n\n\n                                            {inconclusiveTests(site.tests) !== 0 ? (\n                                                <Link\n                                                    style={{ color: \"#42cef5\" }}\n                                                    to={{\n                                                        pathname: \"/admin/totaltests\",\n                                                        state: { negativeTests: true },\n                                                    }}\n                                                >\n                                                    {inconclusiveTests(site.tests)}\n                                                </Link>\n                                            ) : (\n                                                inconclusiveTests(site.tests)\n                                            )}\n\n                                        </td>\n                                        <td className=\"text-center\">\n                                            {site.startDate !== 0 ? (\n                                                getShowRunningDays(site.startDate)\n                                            ) : (\n                                                \"N/A\"\n                                            )}\n                                        </td>\n                                        <td className=\"text-center\">\n                                            {site.startDate !== 0 ? (\n                                                showStartDate(site.startDate)\n                                            ) : (\n                                                \"N/A\"\n                                            )}\n                                        </td>\n                                        <td className=\"text-start\">\n                                            {positiveTests(site.tests).length === 0 ? (\n                                                \"No Positive Tests\"\n                                            ) : (\n                                                <Link\n                                                    style={{ color: \"#A82632\" }}\n                                                    to={{\n                                                        pathname: \"/admin/positivetests\",\n                                                        state: { name: lastPositiveTest(positiveTests(site.tests)).barcode, term: \"barcode\" },\n                                                    }}\n                                                >\n                                                    {lastPositiveTestDate(lastPositiveTest(positiveTests(site.tests)).batch)}\n                                                </Link>\n                                            )}\n                                        </td>\n                                    </tr>\n                                );\n                            })\n                        }\n                    </tbody>\n                </table>\n            </div>\n        </div>\n    );\n}\n\nexport default ClientsDashboard;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport API from \"api\";\n// react-bootstrap components\nimport DashboardLineChart from \"./DashboardLineChart\";\nimport DashboardPieChart from \"./DashboardPieChart\";\nimport DashboardBarChart from \"./DashboardBarChart\";\nimport DashboardChartTotalTestsDataCard from \"./DashboardChartTotalTestsData\";\n\nimport { AppContext } from \"context/app-context\";\nimport { connectedIDInLocalStorage, formateDateLL } from \"utils\";\n\n\n\nconst LabDashboard = (props) => {\n\n    const { lab } = props;\n\n    const [totalTestCounts, setTotalCounts] = useState('');\n\n    const [summaryData, setSummaryData] = useState({ positiveTests: 0, negativeTests: 0, totalTests: 0, inconclusiveTests: 0, positiveTest: null });\n    const appContext = useContext(AppContext);\n    const connectedIDFromRoute = window.location?.pathname?.split(\"/\").pop();\n    const [routingPathBasedMedFlow, setRoutingPathBasedMedFlow] = useState({\n        userType: \"E\",\n        labID: connectedIDFromRoute.toLowerCase() !== \"admin\" ? connectedIDFromRoute : connectedIDInLocalStorage.get() || \"A\",\n    });\n\n    useEffect(() => {\n        loadSummaryData();\n    }, []);\n\n    const loadSummaryData = async () => {\n        const connectedID = routingPathBasedMedFlow.labID || connectedIDInLocalStorage.get() || \"A\";\n\n        const data = await API.getSummaryFromPG({ labID: connectedID });\n        let newObj = {};\n        if (data.rows.length > 0) {\n\n            newObj = data.rows.reduce((obj, item) => {\n                if (item[\"result\"] === \"Negative\" || item[\"result\"] === \"negative\"  ) {\n                    obj.negativeTests = parseInt(item[\"count\"]);\n                }\n                if (item[\"result\"] === \"Inconclusive\" || item[\"result\"] ===\"inconclusive\") {\n                    obj.inconclusiveTests = parseInt(item[\"count\"]);\n                }\n                if (item[\"result\"] === \"\" || item[\"result\"] === \"pending\") {\n                    obj.pendingTests = parseInt(item[\"count\"]);\n                }\n                obj.totalTests =  obj.pendingTests + obj.inconclusiveTests +  obj.negativeTests ;\n       \n                return obj;\n            }, summaryData);\n\n            setTotalCounts(newObj);\n            \n        }\n\n       \n    };\n\n    return (\n\n        <div className=\"dashboard-wrapper bg-transparent\">\n            <div className=\"container-fluid mb-3\">\n                <h4 className=\"mt-0\">Lab Summary</h4>\n                <DashboardChartTotalTestsDataCard totalTestCounts={totalTestCounts} />\n            </div>\n            <div className=\"dashboard-wrapper\">\n                <div className=\"container-fluid\">\n                    <div className=\"row\">\n                        <div className=\"col-12 col-md-6 col-lg-6 col-sm-12 col-xl-4\">\n                            <div className=\"bg-white rounded-3 pt-3 position-relative box-height\">\n                                <DashboardBarChart statsType={'labstats'} statsTitle=\"Date Wise Stats\" connectedID={routingPathBasedMedFlow.labID} />\n                            </div>\n                        </div>\n\n                        <div className=\"col-12 col-md-6 col-lg-6 col-sm-12 col-xl-4\">\n                            <div className=\"bg-white rounded-3 pt-3 position-relative box-height\">\n                                <div className=\"box-inner-height\">\n                                    <DashboardLineChart statsType={'labstats'} statsTitle=\"Test-Type Wise Stats\"  connectedID={routingPathBasedMedFlow.labID} />\n                                </div>\n                            </div>\n                        </div>\n\n                        <div className=\"col-12 col-md-6 col-lg-6 col-sm-12 col-xl-4\">\n                            <div className=\"bg-white rounded-3 pt-3 position-relative box-height\">\n                                <DashboardPieChart statsType={'labstats'} statsTitle=\"Lab Stats\" chartData={totalTestCounts} connectedID={routingPathBasedMedFlow.labID} />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n           \n        </div>\n\n    );\n};\n\n\n\nexport default LabDashboard;\n\n\n\n\n\n","import React from \"react\";\n\nconst DiagnosisAccordionButton = ({ children, isActive, onClick }) => {\n  return (\n    <button\n      type=\"button\"\n      onClick={onClick}\n      style={{\n        backgroundColor: \"transparent\",\n        border: \"none\",\n        boxShadow: \"none\",\n        display: \"flex\",\n        flexDirection: \"column\",\n      }}\n      aria-expanded={isActive}\n      className=\"px-0\"\n    >\n      <p style={{ lineHeight: 1, fontSize:\"18px\" }}>\n        {isActive ? \"-\" : \"+\"} {children[0]}\n      </p>\n      <p style={{ lineHeight: 0, marginLeft:\"15px\" }}> {children[1]}</p>\n    </button>\n  );\n};\n\nexport default DiagnosisAccordionButton;\n","import React, { useEffect, useState } from \"react\";\nimport { Button, Modal, Accordion, Card } from \"react-bootstrap\";\nimport DiagnosisAccordionButton from \"./DiagnosisAccordionButton\";\nimport CptList from \"components/CPT/CptList\";\nimport Icon from \"components/Icon\";\nimport { CPT_CODE_SEARCH_TYPE } from \"constant\";\nimport { customCloneDeep } from \"util/customLodash\";\n\nconst DiagnosisAccordionView = ({ handleClose, handelSaveDiagnosisPanel, ictList, isNew }) => {\n  const [activeKey, setActiveKey] = useState(() => Array.from({ length: ictList.length }, (_, i) => String(i)));\n\n  const [localIctList, setLocalIctList] = useState([]);\n\n  useEffect(() => {\n    setLocalIctList(ictList);\n  }, [ictList]);\n\n  const handleToggle = (newCode) => {\n    setActiveKey((currentCodes) => {\n      const found = activeKey.some((code) => code === newCode);\n      return found ? currentCodes.filter((code) => code !== newCode) : [...currentCodes, newCode];\n    });\n  };\n\n  const handleCptList = (e, index) => {\n    const copyCptList = customCloneDeep(localIctList);\n\n    if (!Object.isExtensible(copyCptList[index])) {\n      copyCptList[index] = { ...copyCptList[index] };\n    }\n\n    if (!copyCptList[index].cptCodes) {\n      copyCptList[index].cptCodes = [];\n    }\n\n    copyCptList[index].cptCodes.push(e.searchCodeKey[0]);\n    setLocalIctList(copyCptList);\n  };\n\n  const handelDeleteDiagnosis = (diagIndex) => {\n    const copyCptList = customCloneDeep(localIctList);\n    copyCptList.splice(diagIndex, 1);\n    setLocalIctList(copyCptList);\n  };\n\n  const handleDiagCode = (item) => {\n    const ictItem = item.ictCodes[0];\n    setLocalIctList([...localIctList, { ...ictItem, cptCodes: [] }]);\n  };\n\n  const removeDiagCode = (mainIndex, procCodeIndex) => {\n    const newData = localIctList.map((item, index) => {\n      if (index === mainIndex) {\n        return {\n          ...item,\n          cptCodes: item?.cptCodes?.filter((_, idx) => idx !== procCodeIndex),\n        };\n      }\n      return item;\n    });\n    setLocalIctList(newData);\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        className=\"second-modal\"\n        onHide={() => handleClose()}\n        animation={true}\n        centered\n        size={\"lg\"}\n        backdrop=\"static\"\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0 h4\" id=\"contained-modal-title-vcenter\">\n            Diagnosis And Procedure Codes\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body style={{ paddingTop: 0 }}>\n          <CptList\n            item={{}}\n            setItem={handleDiagCode}\n            title=\"Diagnosis Code\"\n            searchtype={CPT_CODE_SEARCH_TYPE.ICT}\n            groupWrapper=\"mt-1 form-group-wrapper\"\n            showLabelOnTop={true}\n          />\n\n          <Accordion activeKey={activeKey} className=\"mt-2\">\n            {localIctList &&\n              localIctList.map((item, index) => {\n                return (\n                  <Card className=\"mb-2 \" key={`cpt_${index}`}>\n                    <Card.Header\n                      className={`py-2 shadow-sm`}\n                      style={{ display: \"flex\", justifyContent: \"space-between\" }}\n                    >\n                      <DiagnosisAccordionButton\n                        eventKey={`${index}`}\n                        isActive={activeKey.includes(`${index}`)}\n                        onClick={() => handleToggle(`${index}`)}\n                      >\n                        {item.code}\n                        {item.title}\n                      </DiagnosisAccordionButton>\n\n                      <div style={{ display: \"flex\", alignItems: \"center\" }}>\n                        <CptList\n                          title=\"Procedure Code\"\n                          searchtype={CPT_CODE_SEARCH_TYPE.CPT}\n                          groupWrapper=\"mt-0 form-group-wrapper mb-0\"\n                          showLabelOnTop={false}\n                          showCptSelectedCode={false}\n                          showLabel={false}\n                          setItem={(e) => handleCptList(e, index)}\n                          item={item}\n                          value={\"\"}\n                          searchCodeKey=\"searchCodeKey\"\n                          showInput={false}\n                        />\n\n                        <Icon\n                          iconType={\"binIcon\"}\n                          containerClass={\"ms-2 cursor-pointer\"}\n                          innerClass={\"\"}\n                          imageClass={\"testTabelDeleteIcon\"}\n                          handleClick={() => handelDeleteDiagnosis(index)}\n                        />\n                      </div>\n                    </Card.Header>\n                    <Accordion.Collapse eventKey={`${index}`}>\n                      <Card.Body>\n                        <div className=\"mb-3 d-flex flex-wrap\">\n                          {item?.cptCodes?.map((cpt, innerIndex) => {\n                            return (\n                              <div className=\"d-flex flex-wrap m-0 w-full\" key={`proc_${innerIndex}`}>\n                                <span title={cpt.code} className=\"cptCodeTag mt-0 mx-1 mb-1\">\n                                  {cpt.code}\n                                  <Icon\n                                    iconType={\"binIcon\"}\n                                    containerClass={\"ms-2 cursor-pointer\"}\n                                    innerClass={\"\"}\n                                    imageClass={\"testTabelDeleteIcon\"}\n                                    handleClick={() => removeDiagCode(index, innerIndex)}\n                                  />\n                                </span>\n                              </div>\n                            );\n                          })}\n                        </div>\n                      </Card.Body>\n                    </Accordion.Collapse>\n                  </Card>\n                );\n              })}\n          </Accordion>\n        </Modal.Body>\n\n        <Modal.Footer>\n          <Button variant=\"secondary\" className=\"modalButtons\" onClick={() => handleClose()}>\n            Close\n          </Button>\n\n          <Button variant=\"primary\" className=\"modalButtons\" onClick={() => handelSaveDiagnosisPanel(localIctList)}>\n            {isNew ? \"Save\" : \"Update\"}\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default DiagnosisAccordionView;\n","import deleteIcon from \"assets/img/trash-icon.png\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { Form } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { TEST_SOURCE_OPTIONS } from \"constant\";\nimport Status from \"components/Status/Status\";\nimport { useSelector } from \"react-redux\";\n\nimport { parseJSONObject } from \"utils\";\nimport { ReactSelectCustomContainer } from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\nimport { eligibilityMessage } from \"utils\";\nimport { eligibilityMessageColor } from \"utils\";\nimport { getTestSource } from \"utils\";\nimport { selectedDeviceSelector } from \"store/features/general/generalSelectors\";\nimport { CONFIG } from \"constant\";\nimport { filterSourcesBySwabType } from \"utils\";\n\nconst CreateTestItem = (props) => {\n  const {\n    item,\n    index,\n    onItemChange,\n    onItemRemove,\n    showSelection,\n    testDone,\n    handleEditTest,\n    testDoneList,\n    appContext,\n    onPrintClick,\n    order,\n  } = props;\n  const [newItem, setNewItem] = useState(item);\n\n  useEffect(() => {\n    setNewItem(item);\n  }, [item]);\n\n  const selectedDevice = useSelector(selectedDeviceSelector);\n\n  const handleChangeSource = (e) => {\n    const updatedItem = { ...newItem, selectedSource: e };\n    setNewItem(updatedItem);\n    if (onItemChange) onItemChange(index, updatedItem);\n  };\n\n  const handleInputComment = (e) => {\n    const updatedItem = { ...newItem, labComment: e.target.value };\n    setNewItem(updatedItem);\n    if (onItemChange) onItemChange(index, updatedItem);\n  };\n\n  const handleItemSelection = (e) => {\n    const updatedItem = { ...newItem, isSelected: !newItem.isSelected };\n    setNewItem(updatedItem);\n    if (onItemChange) onItemChange(index, updatedItem);\n  };\n\n  const isTestDone = useMemo(() => {\n    const testInTestDoneList = testDoneList?.find(\n      (t) => parseJSONObject(t.employee_demographics)?.testTypeID === item.id\n    );\n\n    if (item?.isDone) {\n      const swabtype =\n        parseJSONObject(testInTestDoneList?.employee_demographics)?.swabtype || item?.selectedSource || \"\";\n\n      let selectedSource = filterSourcesBySwabType(item.sources, swabtype);\n      return { ...item, selectedSource: selectedSource };\n    }\n\n    if (testInTestDoneList) {\n      return { isDone: true, barcode: testInTestDoneList.barcode };\n    }\n\n    return { isDone: false, barcode: null };\n  }, [item, testDoneList]);\n\n  const eligMessage = eligibilityMessage(order[\"eligibilityStatus\"], order);\n\n  const showEligibilityModal = () => {\n    appContext.showEligibilityDetails({\n      ...order,\n      ...order.eligibilityStatus,\n      ins_name_f: order.firstName,\n      ins_name_l: order.lastName,\n      ins_dob: order.dob,\n    });\n  };\n\n  const handelPa = (e) => {\n    const updatedItem = { ...newItem, isPA: !newItem.isPA };\n    setNewItem(updatedItem);\n    if (onItemChange) onItemChange(index, updatedItem);\n  };\n\n  return (\n    <tr key={index}>\n      <td className=\"text-center cursor-pointer\">\n        <Form.Check>\n          <Form.Check.Input\n            type=\"checkbox\"\n            checked={item.isSelected}\n            value={item.value}\n            disabled={isTestDone.isDone || item.testStatus === \"Rejected\"}\n            onChange={(event) => handleItemSelection(event, index)}\n          />\n        </Form.Check>\n      </td>\n\n      <td className=\"text-center cursor-pointer\">{newItem.label || newItem.name}</td>\n\n      <td className=\"\">\n        <Select\n          options={getTestSource(newItem.sources)}\n          blurInputOnSelect={true}\n          menuPlacement=\"auto\"\n          className=\"w-100 siteSelector site-select-test\"\n          placeholder=\"Select Source\"\n          isMulti\n          isDisabled={isTestDone?.isDone || item.testStatus === \"Rejected\"}\n          value={isTestDone?.selectedSource ? isTestDone?.selectedSource : newItem.selectedSource}\n          onChange={handleChangeSource}\n          components={{ ValueContainer: ReactSelectCustomContainer }}\n        />\n      </td>\n\n      {/* <td>\n        <span>{isTestDone.barcode} </span>\n      </td> */}\n\n      <td className=\"text-center\">\n        <input\n          className=\"modalInput\"\n          style={{\n            width: \"100%\",\n            flexShrink: \"initial\",\n          }}\n          value={newItem?.labComment}\n          onChange={handleInputComment}\n        />\n      </td>\n\n      {CONFIG.clientID !== \"e33ea32c-7cc2-4609-b3b2-35d8309df342\" && (\n        <>\n          <td>\n            <div className=\"star-icon-wrapper cursor-pointer text-center\" onClick={showEligibilityModal}>\n              <Status\n                type=\"circle\"\n                size=\"md\"\n                color={eligibilityMessageColor(eligMessage)}\n                crossIcon=\"Yes\"\n                title={eligMessage}\n              />\n            </div>\n          </td>\n\n          <td className=\"text-center cursor-pointer\">\n            {/* <Status\n          type=\"circle\"\n          size=\"md\"\n          color={eligibilityMessageColor(`${item.isPA ? \"Eligibile\" : \"Not Eligibile\"}`)}\n          crossIcon=\"Yes\"\n        /> */}\n\n            <Status type=\"circle\" size=\"md\" color={eligibilityMessageColor(\"Eligibile\")} crossIcon=\"Yes\" />\n          </td>\n        </>\n      )}\n\n      <td className=\"text-center cursor-pointer\">\n        <i\n          className=\"fas fa-print mx-2 cursor-pointer\"\n          style={{\n            color: !selectedDevice ? \"grey\" : \"green\",\n            color: \"green\",\n            fontSize: \"24px\",\n            opacity: !selectedDevice ? \"0.5\" : \"\",\n          }}\n          onClick={() => selectedDevice && onPrintClick(item)}\n        ></i>\n      </td>\n    </tr>\n  );\n};\n\nexport default CreateTestItem;\n","import { CONFIG } from \"constant\";\nimport React from \"react\";\n\nconst CreateTestHeader = ({ showSelection, testDone, handelSelectDeselect, isAllSelected }) => {\n  return (\n    <tr>\n      <th className=\"text-center cursor-pointer toggleButtonGroup\" onClick={handelSelectDeselect}>\n        {isAllSelected ? \"Deselect ALl\" : \"Select All\"}\n      </th>\n      <th className=\"text-center cursor-pointer\">Test Name</th>\n      <th className=\"\">Sources</th>\n      {/* <th>Accession No</th> */}\n      <th className=\"text-center\">Lab Comments</th>\n      {CONFIG.clientID !== \"e33ea32c-7cc2-4609-b3b2-35d8309df342\" && (\n        <>\n          <th className=\"text-center\">Eligible</th>\n          <th className=\"text-center\">PA Received</th>\n        </>\n      )}\n\n      <th className=\"text-center\">Print Labels</th>\n    </tr>\n  );\n};\n\nexport default CreateTestHeader;\n","import Loader from \"components/Loader/Loader\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport moment from \"moment\";\nimport { useEffect, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { SYSTEM_TIME_ZONE, getTestDates } from \"utils\";\nimport api from \"../../api\";\nimport { CONFIG } from \"../../constant\";\nimport DiagnosisAccordionView from \"views/TestTypeSetting/TestDiagnosisView/DiagnosisAccordionView\";\nimport { customCloneDeep } from \"util/customLodash\";\nimport CreateTestItem from \"./CreateTestItem\";\nimport CreateTestHeader from \"./CreateTestHeader\";\nimport { selectedDeviceSelector } from \"store/features/general/generalSelectors\";\nimport { useSelector } from \"react-redux\";\nimport { formatSelectedSource } from \"utils\";\n\nconst CreateOrderTest = (props) => {\n  const { item, handleCloseCreateTest, appContext, userLabName } = props;\n  const [loading, setLoading] = useState(false);\n  const [error, setError] = useState(\"\");\n  const [order, setOrder] = useState({});\n  const [showConfirmation, setShowConfirmation] = useState(false);\n  const [testDone, setTestDone] = useState(false);\n\n  const [isAllSelected, setIsAllSelected] = useState(true);\n  const selectedDevice = useSelector(selectedDeviceSelector);\n\n  const [ictList, setIctList] = useState(null);\n  const [editIndexIct, setEditIndexIct] = useState(null);\n  const [testDoneList, setTestDoneList] = useState([]);\n\n  const setOrderList = (selectValue) => {\n    let orderItem = { ...item };\n\n    orderItem.testsToDo.test = orderItem?.testsToDo?.test?.map((item) => {\n      if (item.isDone) {\n        return item;\n      }\n\n      let selectedSource = (item.sources.length === 1 && item.sources) || null;\n\n      return { ...item, isSelected: selectValue, selectedSource };\n    });\n    setOrder(orderItem);\n  };\n\n  useEffect(() => {\n    getOrdersTests();\n    setOrderList(true);\n  }, []);\n\n  const getOrdersTests = async () => {\n    try {\n      if (!item?.id || item.status === \"Processed\") return;\n\n      const resData = await api.getOrderTestList(item.id);\n\n      setTestDoneList(resData.rows);\n    } catch (ex) {\n      console.log(ex);\n    }\n  };\n\n  const handleCreateTest = () => {\n    const isAnyTestSelected = getTestListToCreate();\n\n    if (!isAnyTestSelected) {\n      appContext.showErrorMessage(\"Please select Test\");\n      return;\n    }\n\n    const isSourceSelected = order.testsToDo.test\n      .filter((t) => t.isSelected)\n      .every((t) => t.selectedSource && t.selectedSource?.length > 0);\n\n    if (!isSourceSelected) {\n      setError(\"Please select Test Source\");\n      return;\n    }\n\n    setShowConfirmation(true);\n  };\n\n  const handleItemChange = (index, updatedItem) => {\n    const updatedTests = order.testsToDo.test.map((item, i) => (i === index ? { ...item, ...updatedItem } : item));\n\n    setOrder({\n      ...order,\n      testsToDo: { ...order.testsToDo, test: updatedTests },\n    });\n  };\n\n  const handleConfirmation = async (isConfirm) => {\n    setShowConfirmation(false);\n    if (!isConfirm) return;\n\n    let cloneOrder = customCloneDeep(order);\n\n    cloneOrder.testsToDo.test = cloneOrder?.testsToDo?.test?.map((item) => {\n      const sources = item?.selectedSource && item?.selectedSource.length > 0 ? item?.selectedSource : [];\n\n      // just give source when test is not done\n      const uniqueSources = !item?.isDone && formatSelectedSource(sources);\n\n      return {\n        ...item,\n        selectedSource: uniqueSources,\n      };\n    });\n\n    await sendOrderForTestCreation({ orderValue: cloneOrder });\n  };\n\n  const sendOrderForTestCreation = async ({ orderValue, isPrint }) => {\n    setLoading(true);\n\n    try {\n      const { eligibilityStatus } = orderValue;\n\n      const { testCreatedAt, testDate } = getTestDates(orderValue);\n\n      const res = await api.createMulipleTests({\n        labName: userLabName,\n        order: {\n          ...orderValue,\n          employee_demographics: {\n            ...orderValue.employee_demographics,\n            dob: moment(orderValue.employee_demographics.dob).format(\"MMDDYYYY\"),\n            worker: \"\",\n            possibleexposure: \"\",\n            confirmedexposure: \"\",\n            relatedsymptoms: \"\",\n            symptoms: \"\",\n            othercomment: \"\",\n            comment: \"\",\n            docUploaded: false,\n            isReview: false,\n            venipuncture: false,\n            distance: 0,\n            isEligible: eligibilityStatus?.status?.toLowerCase() === \"eligibile\",\n            stat: false,\n          },\n          labID: CONFIG.whiteLabelID,\n          labName: appContext.userLabName,\n          createSource: \"portal\",\n          timezone: SYSTEM_TIME_ZONE,\n          createdByPhone: appContext?.user?.phone_number,\n          testCreatedAt: testCreatedAt,\n          testDate: testDate,\n          createdBy: appContext?.user?.sub,\n          createdByName: appContext?.user?.name,\n          tester_name: appContext?.user?.name,\n        },\n      });\n\n      const {\n        testsToDo: { test },\n      } = orderValue;\n\n      let printTestArray = [];\n\n      const updatedTests = orderValue.testsToDo.test.map((item, i) => {\n        const processedTest = res[item.label];\n\n        if (processedTest) {\n          printTestArray.push(processedTest);\n          return { ...item, barcode: processedTest.test.barcode, isDone: true, isSelected: false };\n        }\n        return { ...item, isSelected: item.isDone ? false : true };\n      });\n\n      setOrder({\n        ...orderValue,\n        testsToDo: { ...orderValue.testsToDo, test: updatedTests },\n      });\n\n      setLoading(false);\n\n      const successMessage = \"Test created successfully\";\n\n      if (printTestArray?.length > 0) {\n        setIsAllSelected(false);\n        if (selectedDevice) {\n          printTestArray.forEach((printData) => {\n            appContext.printBarcode(printData.test);\n          });\n        }\n      }\n      if (!isPrint) {\n        handleCloseCreateTest(successMessage);\n        setTestDone(true);\n      }\n      appContext.showSuccessBottomMessage(successMessage);\n    } catch (ex) {\n      console.log(\"[handleConfirmation]\", ex);\n      setLoading(false);\n      appContext.showErrorMessage(\"Fail to create the test\");\n    }\n  };\n\n  const getTestListToCreate = () =>\n    order.testsToDo.test\n      .filter((t) => t.isSelected)\n      .map((t) => t.label || t.name)\n      .join(\",\");\n\n  const handleEditTest = (item, index) => {\n    setIctList(item.ictCodes);\n    setEditIndexIct(index);\n  };\n\n  const totalTest = () => order?.testsToDo?.test.filter((t) => t.isSelected).length;\n\n  const saveDiagnosisCodes = (item) => {\n    const copyOrder = customCloneDeep(order);\n\n    if (copyOrder && copyOrder.testsToDo && copyOrder.testsToDo.test && copyOrder.testsToDo.test[editIndexIct]) {\n      copyOrder.testsToDo.test[editIndexIct].ictCodes = item;\n    }\n    setOrder(copyOrder);\n    setIctList(null);\n    setEditIndexIct(null);\n  };\n\n  const handelSelectDeselect = () => {\n    setOrderList(!isAllSelected);\n    setIsAllSelected(!isAllSelected);\n  };\n\n  const handlePrintClick = async (printItem) => {\n    if (printItem?.isDone) {\n      const obj = {\n        employee_demographics: {\n          firstName: order.employee_demographics.firstName,\n          lastName: order.employee_demographics.lastName,\n          swabtype: printItem.selectedSource ? formatSelectedSource(printItem.selectedSource) : printItem.swabtype,\n          dob: order.employee_demographics.dob,\n        },\n        barcode: printItem.barcode,\n        createdAt: printItem.createdAt,\n      };\n      appContext.printBarcode(obj);\n      return;\n    }\n    if (!printItem?.selectedSource || printItem?.selectedSource.length === 0) {\n      setError(\"Please select Test Source\");\n      return;\n    }\n    const copyOrder = customCloneDeep(order);\n\n    const {\n      testsToDo: { test },\n    } = copyOrder;\n\n    const updatedTests = copyOrder.testsToDo.test.map((item, i) => {\n      const isSelected = item.id === printItem.id;\n\n      return {\n        ...item,\n        isSelected,\n        selectedSource: isSelected ? formatSelectedSource(item?.selectedSource) : item?.selectedSource,\n      };\n    });\n\n    const objToProcess = {\n      ...copyOrder,\n      testsToDo: { ...copyOrder.testsToDo, test: updatedTests },\n    };\n\n    await sendOrderForTestCreation({ orderValue: objToProcess, isPrint: true });\n  };\n\n  return (\n    <>\n      {ictList && (\n        <DiagnosisAccordionView\n          handleClose={() => setIctList(null)}\n          handelSaveDiagnosisPanel={saveDiagnosisCodes}\n          ictList={ictList}\n          setIctList={setIctList}\n          isNew={false}\n        />\n      )}\n\n      <Modal\n        show\n        animation={true}\n        onHide={handleCloseCreateTest}\n        size=\"xl\"\n        style={{ paddingLeft: \"0\" }}\n        centered\n        className=\"seperateModal\"\n        backdrop=\"static\"\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {order.firstName} {order.lastName} - Date of Birth:{\" \"}\n            {moment(order?.employee_demographics?.dob).format(\"MM-DD-YYYY\")}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <table className=\"custom-separate-border-tr table w-100\">\n            <thead>\n              <CreateTestHeader\n                showSelection={true}\n                isAllSelected={isAllSelected}\n                testDone={testDone}\n                handelSelectDeselect={handelSelectDeselect}\n              />\n            </thead>\n            <tbody>\n              {order.testsToDo?.test\n                ?.filter((item) => item.testStatus !== \"Rejected\")\n                .map((c, index) => (\n                  <CreateTestItem\n                    key={index}\n                    item={c}\n                    index={index}\n                    showSelection={true}\n                    testDoneList={testDoneList}\n                    onItemChange={handleItemChange}\n                    handleEditTest={handleEditTest}\n                    onPrintClick={handlePrintClick}\n                    appContext={appContext}\n                    order={order}\n                  />\n                ))}\n            </tbody>\n          </table>\n        </Modal.Body>\n        <div className=\"px-4\" style={{ height: \"3vh\" }}>\n          {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n        </div>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleCloseCreateTest();\n            }}\n          >\n            Close\n          </Button>\n          <div>\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"primary\"\n              disabled={loading || testDone}\n              className=\"modalButtons mx-2\"\n              onClick={handleCreateTest}\n            >\n              Create Test\n            </Button>\n          </div>\n          {loading && <Loader />}\n          {showConfirmation && (\n            <ConfirmationModal\n              show={showConfirmation}\n              title=\"Confirmation\"\n              message={`Are you sure you want to create the ${getTestListToCreate()} ${\n                totalTest() > 1 ? \"tests\" : \"test\"\n              }`}\n              handleConfirm={handleConfirmation}\n              cssClass=\"seperateModal\"\n            />\n          )}\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default CreateOrderTest;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport SignatureCanvas from \"react-signature-canvas\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { fetchSignature } from \"api\";\nimport editIconBlue from \"assets/img/edit-icon-blue.svg\";\nimport GreenTick from \"assets/img/green-tick-icon.png\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nconst SignaturePad = (props) => {\n  const [error, setError] = useState(\"\");\n  const [disabled, setDisabled] = useState(false);\n  const [disableSaveButton, setDisableSaveButton] = useState(false);\n  let signCanvas = useRef(null);\n  const { appContext,consent, deleteSignature, title, getValidSignature } = props;\n  const clearSignature = () => {\n    setDisableSaveButton(false);\n    if(consent)\n    {\n      try \n      {\n        deleteSignature({consent,title})\n      }\n      catch(err) \n      {\n        console.log(err)\n      }\n    }\n    signCanvas.current.clear();\n  }\n  const handleClose = () => {\n    setDisabled(false);\n  }\n  const onSaveSignature = (signCanvas) => {\n    if (signCanvas.current.isEmpty()) {\n      setError(\"Signature is required\");\n      return;\n    }\n    getValidSignature({signCanvas, title});\n    setDisabled(false);\n    setDisableSaveButton(true);\n  }\n  useEffect(() => {\n    const renderTrimmedSignature = async () => {\n      if (disabled && consent && signCanvas.current) {\n        try {\n          const result = await fetchSignature(consent); // Fetch the signature data\n          const canvas = signCanvas.current.getCanvas();\n          const ctx = canvas.getContext('2d');\n\n          // Clear the canvas\n          ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n          // Create an image from the result\n          const img = new Image();\n          img.onload = () => {\n            // Calculate offsets to center the signature\n            const xOffset = (canvas.width - img.width) / 2;\n            const yOffset = (canvas.height - img.height) / 2;\n\n            // Draw the image on the canvas at the calculated position\n            ctx.drawImage(img, xOffset, yOffset);\n          };\n          img.src = result; // Set the trimmed signature URL\n          setDisableSaveButton(true);\n        } catch (err) {\n          signCanvas.current.clear();\n          appContext.showErrorMessage(\"Failed to fetch signature\");\n        }\n      }\n    };\n\n    renderTrimmedSignature();\n  }, [consent, disabled]);\n\n\n\n  return <>\n    <span\n      style={{\n        color: \"#5b90fa\",\n        fontWeight: \"500\",\n        marginBotton: \"10px\",\n        padding: \"0px\",\n        marginInline: \"10px\",\n        fontSize: \"18px\",\n        cursor: \"pointer\",\n      }}\n      onClick={() => setDisabled(true)}\n    >\n      {\n        consent ? <img src={GreenTick} alt=\"tick icon\" width={24} /> : <img\n          src={editIconBlue}\n          alt=\"edit icon\"\n        />\n      }\n      {title}\n    </span>\n\n\n    <Modal\n    className=\"seperateModal\"\n      show={disabled}\n      size=\"lg\"\n      centered\n      onHide={handleClose}\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {title}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{\n        paddingTop: 0,\n      }}>\n        <div className=\"border border-2 p-2 w-inherit\">\n          <SignatureCanvas\n            ref={signCanvas}\n            penColor='black'\n            // onEnd={() => onSignChange(signCanvas)}\n            canvasProps={{ width: 700, height: 250 }}\n          />\n          <div>\n          </div>\n          <div style={{ display: \"flex\", justifyContent: \"right\" }}>\n            <div style={{ paddingInline: \"2px\", marginRight: \"auto\" }}>{error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}</div>\n            <Button\n              style={{ margin: 1, }}\n              disabled={disableSaveButton}\n              variant=\"secondary\"\n              className={`modalButtons headerButton btn-fill`}\n              onClick={() => onSaveSignature(signCanvas)}\n            >Save</Button>\n            <Button\n              style={{ margin: 1 }}\n              variant=\"secondary\"\n              className=\"modalButtons headerButton btn-fill\"\n              onClick={clearSignature}\n            >Clear</Button>\n\n\n            <Button style={{ margin: 1 }}\n              variant=\"secondary\"\n              className=\"modalButtons headerButton btn-fill\" onClick={handleClose}>Close</Button>\n          </div>\n        </div>\n\n      </Modal.Body>\n\n    </Modal>\n\n  </>\n\n}\n\nexport default React.memo(SignaturePad);\n\n\n\n","import api from \"api\";\nimport React, { useEffect, useState, useCallback } from \"react\";\nimport Select from \"react-select\";\n\nconst OrderTestSelector = ({ onChange, value = null, dataIds, labClientTest }) => {\n  const [options, setOptions] = useState([]);\n\n  const formatOptions = (items = []) =>\n    items.map(({ id, name, ...rest }) => ({\n      ...rest,\n      id,\n      name,\n      label: name,\n      value: id,\n    }));\n\n  const getTestOptions = useCallback(async () => {\n    try {\n      let mergedOption = formatOptions(await api.getTestTypes());\n\n      if (labClientTest && labClientTest.length > 0) {\n        mergedOption = mergedOption.filter((item) => labClientTest.includes(item.id));\n      }\n\n      setOptions(mergedOption.filter((t) => t.isActive).sort((a, b) => a?.name?.localeCompare(b?.name)));\n    } catch (error) {\n      console.error(\"Error fetching test options:\", error);\n    }\n  }, []);\n\n  useEffect(() => {\n    getTestOptions();\n  }, [getTestOptions, dataIds]);\n\n  return (\n    <Select\n      options={options}\n      blurInputOnSelect\n      menuPlacement=\"auto\"\n      className=\"w-100 siteSelector\"\n      placeholder=\"Select Test\"\n      value={value}\n      onChange={onChange}\n    />\n  );\n};\n\nexport default OrderTestSelector;\n","import { CPT_CODE_SEARCH_TYPE } from \"constant\";\nimport React, { useState, memo, useCallback, useRef, useMemo } from \"react\";\nimport { customCloneDeep } from \"util/customLodash\";\nimport { Accordion } from \"react-bootstrap\";\nimport MainTable from \"components/Table/MainTable\";\nimport { ORDER_DIAG_PERSONALIZATION } from \"constants/personalization\";\nimport { TABLE_QUICK_TOOLS } from \"constant\";\nimport InputCPTCodeDropDown from \"components/InputField/InputCPTCodeDropDown\";\nimport {\n  countTotalCpt,\n  makeUniqueSources,\n  formatCurrency,\n  parseCurrency,\n  ictAlreadyExist,\n  isAnySourceExist,\n} from \"utils\";\nimport { ReactSelectCustomContainer } from \"components/CustomReactSelect/ReactSelectCustomOptionContainer\";\nimport Select from \"react-select\";\nimport { setQuestionTableModal, setAnswerAdditionalQuestion } from \"store/features/general/generalSlice\";\nimport OrderTestSelector from \"./OrderTestSelector\";\nimport { useDispatch } from \"react-redux\";\nimport { PANEL_QUESTIONS_PERSONALIZATION } from \"constants/personalization\";\nimport AutoFocusInput from \"components/AutoFocusInput/AutoFocusInput\";\n\nconst OrderDiagnosisView = ({\n  orderIcdData,\n  isSiteUser,\n  setOrderIcdData,\n  appContext,\n  showSourceSiteModal,\n  labClientTest,\n  defaultConfig,\n  additionalQuestion = [],\n  setAdditionalQuestions,\n}) => {\n  const newEmptyTestData = {\n    test: \"\",\n    cpt: \"\",\n    source: \"\",\n    sampleContainer: \"\",\n    unit: \"\",\n    refCharge: \"\",\n    ict: [],\n  };\n\n  const testIds = useMemo(() => {\n    return orderIcdData?.[0]?.orderData?.map((item) => item.test.id).filter(Boolean);\n  }, [orderIcdData]);\n\n  const getDiagOptions = useMemo(() => {\n    return orderIcdData\n      .filter((item) => item.description)\n      .map((item) => ({\n        label: item.title,\n        value: item?.description?.code || \"\",\n      }));\n  }, [orderIcdData]);\n\n  const [activeKey, setActiveKey] = useState(() => Array.from({ length: 8 }, (_, i) => Number(i + 1)));\n\n  const handleDiagCode = useCallback(\n    (cpt, id, title) => {\n      if (cpt) {\n        const isAlreadyExist = ictAlreadyExist(orderIcdData, cpt?.code);\n\n        if (!isAlreadyExist) {\n          if (cpt.isBillable === false) {\n            appContext.showErrorMessage(\"ICD is non billable.\");\n          }\n\n          setOrderIcdData((prevData) => {\n            const cloneOrderIcd = customCloneDeep(prevData);\n            cloneOrderIcd[id].description = { ...cpt, title };\n\n            // if (cloneOrderIcd[0].orderData[cloneOrderIcd[0].orderData.length - 1].test !== \"\") {\n            //   cloneOrderIcd[id].orderData.push(newEmptyTestData);\n            // }\n\n            return cloneOrderIcd;\n          });\n        } else {\n          appContext.showErrorMessage(\"This ict already used.\");\n        }\n      } else {\n        setOrderIcdData((prevData) => {\n          const cloneOrderIcd = customCloneDeep(prevData);\n          cloneOrderIcd[id].description = null;\n\n          return cloneOrderIcd;\n        });\n      }\n    },\n    [orderIcdData]\n  );\n\n  const handleToggle = useCallback(\n    (newCode) => {\n      setActiveKey((currentCodes) => {\n        const found = activeKey.includes(newCode);\n        return found ? currentCodes.filter((code) => code !== newCode) : [...currentCodes, newCode];\n      });\n    },\n    [activeKey]\n  );\n\n  const getFromatedCurrency = (chargeValue) => {\n    const parsedValue = parseCurrency(chargeValue);\n    const formatedValue = formatCurrency(parsedValue);\n    return formatedValue;\n  };\n\n  const formatTestObjectForOrder = (test) => {\n    const obj = { ...test };\n    delete obj._version;\n    delete obj._lastChangedAt;\n    delete obj._deleted;\n    delete obj.totalTime;\n    delete obj.targetRanges;\n    delete obj.secondAlert;\n    delete obj.ranges;\n    delete obj.minValue;\n    delete obj.maxValue;\n    delete obj.lastUsed;\n    delete obj.hrCounter;\n    delete obj.firstAlert;\n    delete obj.duration;\n    delete obj.custom_notes;\n    delete obj.createdByName;\n    delete obj.createdAt;\n    delete obj.clientID;\n    delete obj.updatedByName;\n    delete obj.updatedAt;\n    return obj;\n  };\n\n  const handleGetTests = useCallback(\n    (test, tableId, rowIndex) => {\n      const { setting } = test;\n\n      // const answerList = setting?.additionalQuestion.map((item) => ({\n      //   questions: item.title,\n      //   options: [\n      //     { option: \"yes\", type: \"radio\" },\n      //     { option: \"no\", type: \"radio\" },\n      //   ],\n      //   answer: \"\",\n      //   id: item.id,\n      //   testId: test.id,\n      // }));\n\n      // dispatch(\n      //   setQuestionTableModal({\n      //     rows: rowsList,\n\n      //     columns: [\n      //       ...PANEL_QUESTIONS_PERSONALIZATION,\n      //       {\n      //         itemKey: \"type\",\n      //         title: \"Option\",\n      //         textAlign: \"center\",\n      //         isCheck: true,\n      //         textOverflow: \"none\",\n      //         customCellRenderer: true,\n      //         columnWidth: \"100px\",\n      //       },\n      //     ],\n      //   })\n      // );\n\n      // dispatch(setAnswerAdditionalQuestion({ answerAdditionalQuestion: answerList }));\n\n      let testName = test.name;\n\n      let orderData = orderIcdData[0].orderData;\n\n      const isAlreadyExist = testName ? orderData.some((item) => item.test.name === testName) : false;\n\n      if (isAlreadyExist) {\n        appContext.showErrorMessage(\"This test already used.\");\n        return;\n      }\n      const sourcesList = makeUniqueSources(test.sources);\n\n      const isAnySrcExist = isAnySourceExist({ orderArray: orderData, sourcesArray: sourcesList });\n\n      const isTestCreated = orderData.some((item) => item?.test?.barcode);\n\n      if (isTestCreated && isSiteUser && !isAnySrcExist) {\n        appContext.showErrorMessage(\"This test source not exist in above tests.\");\n        return;\n      }\n\n      const hasCptCodes = test?.cptCodes?.length > 0;\n\n      let formattedTests = { ...formatTestObjectForOrder(test), sources: sourcesList };\n\n      if (isTestCreated && isSiteUser) {\n        const srcList = orderData\n          .flatMap((item) => item.source)\n          .filter(Boolean)\n          .reduce((acc, current) => {\n            const exists = acc.some((obj) => obj.value === current.value);\n            if (!exists) {\n              acc.push(current);\n            }\n            return acc;\n          }, []);\n        formattedTests.sources = srcList;\n      }\n\n      let defaultICT = getDiagOptions.length === 1 ? getDiagOptions.splice(0, 1) : null;\n\n      const newData = {\n        ...newEmptyTestData,\n        test: formattedTests,\n        unit: 1,\n        // cpt: hasCptCodes ? test?.cptCodes?.[0] : {},\n        cpt: hasCptCodes ? test?.cptCodes : [],\n        sampleContainer: test?.sampleContainer?.length > 0 ? test.sampleContainer[0] : \"\",\n        refCharge: getFromatedCurrency(0),\n        source: sourcesList?.length > 0 ? sourcesList[0] : \"\",\n        ...(defaultICT && { ict: defaultICT }),\n      };\n\n      const cloneOrderIcd = customCloneDeep(orderIcdData);\n\n      cloneOrderIcd[tableId].orderData[rowIndex] = newData;\n\n      const testIdSet = new Set(cloneOrderIcd?.[0]?.orderData?.map((item) => item.test?.id).filter(Boolean) || []);\n\n      const questionList = setting?.additionalQuestion?.map((item) => ({ ...item, testId: test.id })) || [];\n      \n      const uniqueQuestions = Array.from(\n        new Map(\n          [...(additionalQuestion || []), ...(questionList || [])]\n            .filter((item) => item && item.id) // Ensure item is not null/undefined and has an id\n            .map((item) => [item.id, item]) // Ensure uniqueness\n        ).values()\n      ).filter((item) => testIdSet.has(item.testId));\n      \n\n      setAdditionalQuestions(uniqueQuestions);\n\n      setOrderIcdData(cloneOrderIcd);\n    },\n    [orderIcdData]\n  );\n\n  const handleSetCpt = useCallback((cpt, tableId, rowIndex) => {\n    if (cpt) {\n      setOrderIcdData((prevData) => {\n        const cloneOrderIcd = customCloneDeep(prevData);\n        cloneOrderIcd[tableId].orderData[rowIndex].cpt = cpt;\n        cloneOrderIcd[tableId].orderData[rowIndex].refCharge = getFromatedCurrency(cpt?.referenceCharge || 0);\n        return cloneOrderIcd;\n      });\n    }\n  }, []);\n\n  const handleSetUnit = useCallback((event, tableId, rowIndex) => {\n    let unitValue = event.target.value;\n    ``;\n\n    if (unitValue.startsWith(\".\") && unitValue.length > 1) {\n      unitValue = `0${unitValue}`;\n    }\n\n    if (unitValue === \"\" || !isNaN(unitValue)) {\n      setOrderIcdData((prevData) => {\n        const cloneOrderIcd = customCloneDeep(prevData);\n        cloneOrderIcd[tableId].orderData[rowIndex].unit = unitValue;\n        return cloneOrderIcd;\n      });\n    }\n  }, []);\n\n  const handleSetRefCharge = useCallback((event, tableId, rowIndex) => {\n    let chargeValue = event.target.value;\n\n    if (chargeValue.startsWith(\".\") && chargeValue.length > 1) {\n      chargeValue = `0${chargeValue}`;\n    }\n\n    const parsedValue = parseCurrency(chargeValue);\n    const formatedValue = formatCurrency(parsedValue);\n\n    setOrderIcdData((prevData) => {\n      const cloneOrderIcd = customCloneDeep(prevData);\n      cloneOrderIcd[tableId].orderData[rowIndex].refCharge = formatedValue;\n      return cloneOrderIcd;\n    });\n  }, []);\n\n  const handelSetSource = useCallback((value, tableIndex, rowIndex) => {\n    if (value) {\n      if (value.label === \"Wound\") {\n        showSourceSiteModal(tableIndex, rowIndex);\n      }\n\n      setOrderIcdData((prevData) => {\n        const currentSource = prevData[tableIndex]?.orderData[rowIndex]?.source;\n\n        const cloneOrderIcd = customCloneDeep(prevData);\n        cloneOrderIcd[tableIndex].orderData[rowIndex].source = value;\n\n        return cloneOrderIcd;\n      });\n    }\n  }, []);\n\n  const handelSetspecimen = useCallback((value, tableIndex, rowIndex) => {\n    if (value) {\n      setOrderIcdData((prevData) => {\n        const cloneOrderIcd = customCloneDeep(prevData);\n        cloneOrderIcd[tableIndex].orderData[rowIndex].sampleContainer = value;\n\n        return cloneOrderIcd;\n      });\n    }\n  }, []);\n\n  const handelSetDiagnosis = useCallback((value, tableIndex, rowIndex) => {\n    if (value) {\n      setOrderIcdData((prevData) => {\n        const currentSource = prevData[tableIndex]?.orderData[rowIndex]?.ict;\n\n        const cloneOrderIcd = customCloneDeep(prevData);\n        cloneOrderIcd[tableIndex].orderData[rowIndex].ict = value;\n\n        return cloneOrderIcd;\n      });\n    }\n  }, []);\n\n  const customRenderTD = (item, row, cellIndex, rowIndex, tableIndex) => {\n    const { itemKey, id } = item;\n    if (itemKey === \"test\") {\n      return (\n        <td key={`test_${id}_${rowIndex}_${tableIndex}`}>\n          <OrderTestSelector\n            dataIds={testIds}\n            onChange={(test) => handleGetTests(test, tableIndex, rowIndex)}\n            value={row?.test ? { ...row.test, label: row.test.name, value: row.test.id } : null}\n            labClientTest={labClientTest}\n          />\n        </td>\n      );\n    }\n    if (itemKey === \"cpt\") {\n      return (\n        <td key={`cpt${id}_${rowIndex}_${tableIndex}`}>\n          <InputCPTCodeDropDown\n            type=\"text\"\n            inputStyle=\"modalInput\"\n            labelStyle=\" text-capitalize\"\n            groupWrapper=\"mb-0\"\n            placeholder={\"Select CPT\"}\n            optionList={[]}\n            handleChange={(data) => handleSetCpt(data, tableIndex, rowIndex)}\n            searchtype={CPT_CODE_SEARCH_TYPE.CPT}\n            selectedDiagnosis={[]}\n            value={row?.cpt ? row?.cpt?.code : \"\"}\n            showCross={true}\n          />\n        </td>\n      );\n    }\n    if (itemKey === \"source\") {\n      return (\n        <td key={`source_${id}_${tableIndex}_${rowIndex}`}>\n          <Select\n            options={row?.test?.sources}\n            blurInputOnSelect={true}\n            menuPlacement=\"auto\"\n            className=\"w-100 siteSelector\"\n            placeholder=\"Select Source\"\n            value={row?.source}\n            onChange={(value) => handelSetSource(value, tableIndex, rowIndex)}\n            components={{ ValueContainer: ReactSelectCustomContainer }}\n          />\n        </td>\n      );\n    }\n    if (itemKey === \"sampleContainer\") {\n      return (\n        <td key={`sampleContainer_${id}_${tableIndex}_${rowIndex}`}>\n          <Select\n            options={row?.test?.sampleContainer || []}\n            blurInputOnSelect={true}\n            menuPlacement=\"auto\"\n            className=\"w-100 siteSelector\"\n            placeholder=\"Select Specimen\"\n            value={row?.sampleContainer}\n            onChange={(value) => handelSetspecimen(value, tableIndex, rowIndex)}\n            components={{ ValueContainer: ReactSelectCustomContainer }}\n          />\n        </td>\n      );\n    }\n    if (itemKey === \"icd\") {\n      return (\n        <td key={`icd${id}_${tableIndex}_${rowIndex}`}>\n          <Select\n            options={getDiagOptions || []}\n            blurInputOnSelect={true}\n            menuPlacement=\"auto\"\n            className=\"w-100 siteSelector\"\n            placeholder=\"Select the Linked Code\"\n            value={row?.ict}\n            isMulti\n            onChange={(value) => handelSetDiagnosis(value, tableIndex, rowIndex)}\n            components={{ ValueContainer: ReactSelectCustomContainer }}\n          />\n        </td>\n      );\n    }\n    if (itemKey === \"unit\") {\n      return (\n        <td key={`unit_${id}_${tableIndex}_${rowIndex}`}>\n          <AutoFocusInput\n            onBlur={(value) => handleSetUnit(value, tableIndex, rowIndex)}\n            defaultValue={row?.unit || \"\"}\n            placeholder={\"Enter unit value\"}\n            type=\"number\"\n          />\n        </td>\n      );\n    }\n    if (itemKey === \"refCharge\") {\n      return (\n        <td key={`refCharge_${id}_${tableIndex}_${rowIndex}`}>\n          <AutoFocusInput\n            onBlur={(value) => handleSetRefCharge(value, tableIndex, rowIndex)}\n            defaultValue={row?.refCharge || \"\"}\n            placeholder={\"Enter reference charge\"}\n          />\n        </td>\n      );\n    }\n  };\n\n  const handleCellClick = useCallback((key, row, event, rowIndex, tableIndex) => {\n    if (key === TABLE_QUICK_TOOLS.delete) {\n      const isTestCreated = row?.test?.barcode;\n      if (isTestCreated && isSiteUser) {\n        appContext.showErrorMessage(\"You do not have the necessary permissions to delete this test.\");\n      } else {\n        removeTest(key, row, event, rowIndex, tableIndex);\n      }\n    }\n  }, []);\n\n  const removeTest = useCallback((key, row, event, rowIndex, tableIndex) => {\n    if (row) {\n      setOrderIcdData((prevData) => {\n        const cloneOrderIcd = customCloneDeep(prevData);\n        if (cloneOrderIcd[tableIndex].orderData.length > 1) {\n          cloneOrderIcd[tableIndex].orderData.splice(rowIndex, 1);\n        }\n\n        const testIdSet = new Set(cloneOrderIcd?.[0]?.orderData?.map((item) => item.test?.id).filter(Boolean) || []);\n\n        const uniqueQuestions = additionalQuestion.filter((item) => testIdSet.has(item.testId));\n\n        setAdditionalQuestions(uniqueQuestions);\n\n        return cloneOrderIcd;\n      });\n    }\n  }, []);\n\n  return (\n    <>\n      {!defaultConfig.isTestCreationFromEmployee && (\n        <div className=\"order-ict-view\">\n          {orderIcdData.map((item, index) => {\n            const { title, id, description } = item;\n            return (\n              <div className=\"order-ict-selector\" key={`input_cpt_${id}`}>\n                <InputCPTCodeDropDown\n                  type=\"text\"\n                  inputStyle={`modalInput ${description?.isBillable === false ? \"border-red\" : \"\"}`}\n                  labelStyle=\" text-capitalize\"\n                  groupWrapper={\"mt-1 form-group-wrapper margin-bottom-1\"}\n                  placeholder={\"Diag Code\"}\n                  optionList={[]}\n                  handleChange={(cpt) => handleDiagCode(cpt, index, title)}\n                  tooltip={description?.isBillable === false ? \"ICD is non billable\" : \"\"}\n                  searchtype={CPT_CODE_SEARCH_TYPE.ICT}\n                  selectedDiagnosis={[]}\n                  value={description ? description.code : \"\"}\n                  showCross={true}\n                  label={title}\n                  showInput={true}\n                  showLabel={true}\n                  showLabelOnTop={true}\n                />\n              </div>\n            );\n          })}\n        </div>\n      )}\n\n      <Accordion activeKey={activeKey} className=\"mt-2\">\n        {orderIcdData.map((item, index) => {\n          if (index !== 0) return null;\n          const { orderData } = item;\n          if (orderData.length) {\n            return (\n              <div style={{ background: \"#f2f0f0\", paddingLeft: \"4px\", paddingRight: \"4px\" }}>\n                <MainTable\n                  cssClass=\"table-noresponsive\"\n                  trDataWrapperHeader={\"trDataWrapperHeader\"}\n                  customColumnCellRenderer={(prItem, row, cellIndex, rowIndex) =>\n                    customRenderTD(prItem, row, cellIndex, rowIndex, index)\n                  }\n                  columns={\n                    defaultConfig.isTestCreationFromEmployee\n                      ? ORDER_DIAG_PERSONALIZATION.filter((item) => item.itemKey !== \"icd\").map((item) => ({\n                          ...item,\n                          columnWidth: \"26.66%\",\n                        }))\n                      : ORDER_DIAG_PERSONALIZATION\n                  }\n                  rows={orderData}\n                  tools={[TABLE_QUICK_TOOLS.delete]}\n                  handleCellClick={(key, row, event, rowIndex) => handleCellClick(key, row, event, rowIndex, index)}\n                />\n              </div>\n            );\n          }\n        })}\n      </Accordion>\n    </>\n  );\n};\n\nexport default memo(OrderDiagnosisView);\n","import React, { useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport InputField from \"components/InputField/InputField\";\n\nconst SourceSiteModal = ({ handleClose, clients,rowData,  handleAddSourceSite }) => {\n  const [inputValue, setInputValue] = useState(rowData || \"\");\n  const [selectedOption, setSelectedOption] = useState(null);\n\n  const handleChangeSourceSite = (option) => {\n    setSelectedOption(option);\n    setInputValue(\"\");\n  };\n\n  const handleInputChange = (newValue, { action }) => {\n    if (action === \"input-change\") {\n      setSelectedOption(null);\n      setInputValue(newValue);\n    }\n  };\n\n  const saveSourceSite = () => {\n    const value = inputValue?.toUpperCase();\n    console.log('Value', value);\n    handleAddSourceSite(value);\n  };\n\n  return (\n    <Modal\n      show\n      animation={true}\n      onHide={() => handleClose()}\n      backdrop=\"static\"\n      centered\n      size={\"md\"}\n      keyboard={true}\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Source Site\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        \n          \n          <InputField\n            type=\"text\"\n            inputStyle=\"modalInput\"\n            labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n            label=\"Source Site\"\n            value={inputValue}\n            index=\"sourceSite\"\n            maxLength={100}\n            placeholder=\"Source Site\"\n            handleChange={(e) => setInputValue(e.target.value)}\n          />\n          {/* <Select\n            className=\"w-100 siteSelector\"\n            options={clients}\n            blurInputOnSelect={true}\n            menuPlacement=\"auto\"\n            placeholder=\"Select Source Site\"\n            value={selectedOption} // Control the selected option\n            inputValue={inputValue} // Control the typed input value\n            onChange={handleChangeSourceSite} // Handle option selection\n            onInputChange={handleInputChange} // Handle typing input\n          /> */}\n        \n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"headerButton\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <Button variant=\"primary\" className=\"modalButtons\" onClick={saveSourceSite}>\n          Save\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default SourceSiteModal;\n","import api from \"api\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport SignaturePad from \"components/SignaturePad/SignaturePad\";\nimport fetchSignature from \"api\";\nimport FilledCheckbox from \"components/CheckBox/FilledCheckBox/FilledCheckBox\";\nimport EmployeeSearchRecord from \"components/EmployeeSearchRecord\";\nimport InputField from \"components/InputField/InputField\";\nimport Loader from \"components/Loader/Loader\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { ORDER } from \"constant\";\n\nimport { answerAdditionalQuestionSelector } from \"store/features/general/generalSelectors\";\nimport {\n  CONFIG,\n  countryListAllIsoData,\n  CUSTOM_INS,\n  IGNORE_INS,\n  INSURANCE_PROVIDER,\n  NEW_DISCOVERY_ID,\n  stringConstant,\n  UN_RESULT,\n  SEROCLINIX_ID,\n  SEROCLINIX_TEST,\n} from \"constant\";\nimport countriesOption from \"countries\";\nimport moment from \"moment\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport Select from \"react-select\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport { providerOptionList } from \"store/features/providers/providersSelectors\";\nimport { fetchAllProviders } from \"store/features/providers/providersSlice\";\nimport { selectedCompanySetting } from \"store/features/companySetting/companySettingSelectors\";\nimport { selectCountryCode } from \"store/features/authentication/authenticationSelectors\";\nimport RadioButton from \"components/RadioButton/RadioButton\";\n\nimport { customCloneDeep } from \"util/customLodash\";\nimport {\n  convertToLower,\n  convertToUpper,\n  formatPhoneWithOutSpaces,\n  formatZip,\n  getPhoneNo,\n  isValidEmail,\n  isValidName,\n  isValidPhoneWithCode,\n  makeAlphabetInput,\n  makeBarcode,\n  sortByAlphaOrder,\n  toTitleCase,\n  validSpace,\n  zipCodeValidationUS,\n  parseJSONObject,\n  getClientSpecificString,\n  formatOrder,\n  getTestDates,\n  SYSTEM_TIME_ZONE,\n} from \"utils\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport OrderTestHeader from \"views/Order/OrderTestHeader\";\nimport OrderTestItem from \"views/Order/OrderTestItem\";\nimport DiagnosisAccordionView from \"views/TestTypeSetting/TestDiagnosisView/DiagnosisAccordionView\";\nimport OrderDiagnosisView from \"./OrderDiagnosisView\";\nimport { updateOrderData } from \"utils\";\nimport { getDiagListFromOrderTest, getTestListFromOrderTest } from \"utils\";\nimport { formatTestForOrder } from \"utils\";\nimport TabPills from \"components/Tabs/TabPills\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport { compareAndReturnNewValues } from \"utils\";\nimport { getUpdatedFields } from \"utils\";\nimport { ALTA_NEW_ID } from \"constant\";\nimport SourceSiteModal from \"./SourceSiteModal\";\nimport { selectClient } from \"store/features/authentication/authenticationSelectors\";\nimport { hasAtLeastOneDiagnosis } from \"utils\";\n\nimport OrderAdditionalQuestionView from \"./OrderAdditionalQuestionView\";\n\nconst getFormattedEmployeeObject = (record, cCode) => {\n  const {\n    zip,\n    state,\n    sex,\n    fetchFrom,\n    city,\n    whiteGlove,\n    isVaccinated,\n    employeeType,\n    street,\n    phone_number,\n    phoneNumber,\n    dob,\n    last,\n    first,\n    firstName,\n    lastName,\n    email,\n    id_number,\n    id,\n    country,\n    countryCode,\n    clientID,\n    status,\n    insurance_name,\n    insuranceCompanyCode,\n    insurance_number,\n    provider,\n    siteID,\n    site_name,\n  } = record;\n\n  const [ccCode, phno] = getPhoneNo(phone_number || phoneNumber, countryCode);\n  const val = countryListAllIsoData.find((f) => f.name === country) || { code: cCode };\n\n  const defaultCountry = {\n    CA: \"Canada\",\n    US: \"United States\",\n  };\n\n  const patientClient =\n    provider && Array.isArray(provider) && provider.length === 1\n      ? { siteID: provider[0].value, site_name: provider[0].label }\n      : siteID\n      ? { siteID, site_name }\n      : null;\n\n  const obj = {\n    employee_demographics: {\n      email: email,\n      firstName: first || firstName,\n      lastName: last || lastName,\n      dob,\n      phoneNumber: `${ccCode}${phno}`,\n      countryCode: ccCode,\n      address: \"\",\n      employeeType: employeeType,\n      isVaccinated: isVaccinated || false,\n      whiteGlove: whiteGlove,\n      city: city,\n      country: country || defaultCountry[cCode] || \"United States\",\n      isoCode: val.code || cCode,\n      state: state,\n      street: street,\n      street2: \"\",\n      zip: zip,\n      isLucira: false,\n      sex: sex,\n      testerDes: \"\",\n      idNumber: id_number,\n      insurance_name,\n      insuranceCompanyCode,\n      insurance_number,\n      status: status,\n    },\n    phoneNumber: phone_number || phoneNumber,\n    email: email,\n    employeeID: CONFIG.clientID === clientID ? id : \"\",\n    ...(patientClient && { ...patientClient }),\n  };\n\n  return obj;\n};\n\nconst OrderTestModal = (props) => {\n  const [showModal, setShowModal] = useState(false);\n  const { order, handleCloseCreateTest, clients, sites, labs, isNew, users, appContext } = props;\n  const [activeTabIndex, setActiveTabIndex] = useState(0); // Default: First Tab\n  const providers = useSelector(providerOptionList);\n  const answerAdditionalQuestion = useSelector(answerAdditionalQuestionSelector);\n\n  const dispatch = useDispatch();\n  const [showSourceSite, setShowSourceSite] = useState(false);\n  const [sourceSiteIndex, setSourceSiteIndex] = useState(null);\n  const [orderEmployee, setOrderEmployee] = useState(null);\n  const permission = useSelector(userGivenPermission);\n\n  const parseOrder = (cCode) => {\n    if (order.isNew) {\n      if (order?.selectedPatient) {\n        const obj = getFormattedEmployeeObject(order.selectedPatient, cCode);\n\n        const newObj = {\n          ...order,\n          employee_demographics: obj.employee_demographics,\n          email: obj.email,\n          phoneNumber: obj.phoneNumber,\n          employeeID: obj.employeeID,\n          createdAt: moment().format(\"YYYY-MM-DDTHH:mm\"),\n          orderDate: moment().format(\"YYYY-MM-DDTHH:mm\"),\n          ...(order.selectedPatient?.referringProvider && {\n            providerID: order.selectedPatient?.referringProvider,\n            providerName: order.selectedPatient?.referringPyhsician,\n          }),\n          ...(obj.siteID && {\n            siteID: obj.siteID,\n            site_name: obj.site_name,\n          }),\n        };\n\n        delete newObj.selectedPatient;\n        return newObj;\n      }\n\n      const getSiteDefaultProvider = providers?.filter((s) => s.associatedClient === order.siteID);\n\n      let providerObject = getSiteDefaultProvider?.length > 0 ? getSiteDefaultProvider[0] : null;\n      return {\n        ...order,\n        ...(providerObject && {\n          providerID: providerObject.id,\n          providerName: providerObject.name,\n        }),\n        orderDate: moment().format(\"YYYY-MM-DDTHH:mm\"),\n      };\n    }\n\n    const { phone_number, phoneNumber, countryCode } = order?.employee_demographics;\n    const [ccCode, phno] = getPhoneNo(phone_number || phoneNumber, countryCode);\n    const providerID = order?.provider?.ref_id;\n    const providerName = order?.provider?.ref_name;\n    return {\n      ...order,\n      ...(providerID && { providerID, providerName }),\n      employee_demographics: { ...order?.employee_demographics, phoneNumber: `${ccCode}${phno}` },\n    };\n  };\n\n  const labCountryCode = useSelector(selectCountryCode);\n\n  const [loading, setLoading] = useState(false);\n  const [recordData, setRecordData] = useState([]);\n  const [showPopOver, setShowPopOver] = useState(false);\n  const [selectSearchdata, setSelectSearchData] = useState(null);\n  const [newTestCreate, setTestCreate] = useState(parseOrder(labCountryCode || \"US\"));\n  const [show, setShow] = useState(\"\");\n  const [error, setError] = useState(\"\");\n  const [disableVaccination, setDisabledVaccination] = useState(false);\n  const [onSelectedTester, setOnSelectedTester] = useState({});\n  const [resultTypes, setResultTypes] = useState([]);\n  const childNode = useRef();\n  const [lab, setLabs] = useState([]);\n  const [clientInsurances, setClientInsurances] = useState(INSURANCE_PROVIDER);\n  const [testOptions, setTestOptions] = useState();\n\n  const [showConfirmation, setShowConfirmation] = useState(false);\n\n  const [orderData, setOrderData] = useState({});\n  const [ictList, setIctList] = useState(null);\n  const [editIndexIct, setEditIndexIct] = useState(null);\n  const companySettings = useSelector(selectedCompanySetting);\n\n  const userClientData = useSelector(selectClient);\n\n  const [additionalQuestion, setAdditionalQuestion] = useState([]);\n\n  const getSite = (siteId, sites) => {\n    const siteData = sites?.find((item) => item.id === siteId);\n    return siteData?.setting?.tests || null;\n  };\n\n  const labClientTest = useMemo(() => getSite(newTestCreate.siteID, sites), [newTestCreate.siteID, sites]);\n\n  const defaultConfig = useMemo(() => {\n    return getClientSpecificString();\n  }, []);\n\n  const [orderIcdData, setOrderIcdData] = useState([\n    {\n      title: \"A\",\n      id: 1,\n      description: null,\n      orderData:\n        defaultConfig.isTestCreationFromEmployee && newTestCreate.isNew === true\n          ? [\n              {\n                cpt: \"\",\n                refCharge: \"\",\n                source: \"\",\n                sampleContainer: \"\",\n                test: \"\",\n                unit: \"\",\n              },\n            ]\n          : [],\n    },\n    {\n      title: \"B\",\n      id: 2,\n      description: null,\n      orderData: [],\n    },\n    {\n      title: \"C\",\n      id: 3,\n      description: null,\n      orderData: [],\n    },\n    {\n      title: \"D\",\n      id: 4,\n      description: null,\n      orderData: [],\n    },\n    {\n      title: \"E\",\n      id: 5,\n      description: null,\n      orderData: [],\n    },\n    {\n      title: \"F\",\n      id: 6,\n      description: null,\n      orderData: [],\n    },\n    {\n      title: \"G\",\n      id: 7,\n      description: null,\n      orderData: [],\n    },\n    {\n      title: \"H\",\n      id: 8,\n      description: null,\n      orderData: [],\n    },\n  ]);\n  const getOrderPatient = async () => {\n    if (!order?.employeeID || orderEmployee) {\n      return;\n    }\n\n    const dbEmployee = await api.getTestByID(order.employeeID, \"employee\");\n    if (dbEmployee) {\n      setOrderEmployee(dbEmployee);\n    }\n  };\n\n  useEffect(() => {\n    const formatedTest = formatTestForOrder(order, orderIcdData);\n    const orderAdditionalQuestionData = order?.testsToDo?.test?.flatMap((item) => item?.answerAdditionalQuestion);\n    setAdditionalQuestion(orderAdditionalQuestionData || []);\n    setOrderIcdData(formatedTest);\n  }, []);\n\n  const getSiteOptions = useMemo(() => {\n    if (!newTestCreate?.clientID) return [];\n    return sites\n      .filter((s) => s.clientID === newTestCreate.clientID)\n      .map((l) => {\n        return { value: l.id, label: l.name };\n      });\n  }, [newTestCreate?.clientID]);\n\n  const handeTestFormat = () => {\n    const formatedTest = formatTestForOrder(order, orderIcdData);\n\n    setOrderIcdData(formatedTest);\n  };\n\n  useEffect(() => {\n    const { updatedArray, hasUpdated } = updateOrderData(orderIcdData, defaultConfig.isTestCreationFromEmployee);\n\n    if (hasUpdated) {\n      setOrderIcdData(updatedArray);\n    }\n  }, [orderIcdData]);\n\n  // Order Diag Functionalty End\n\n  const loadDefaultInsurances = async () => {\n    try {\n      const res = await api.getClientInsurances({ list: \"y\" });\n\n      setClientInsurances(res);\n    } catch (ex) {\n      console.log(\"Ex\", ex);\n    }\n  };\n\n  const loadTestOptions = async () => {\n    const options = await api.getTestTypesOptions();\n    setTestOptions(options);\n  };\n\n  const getProviders = async (test) => {\n    dispatch(fetchAllProviders());\n  };\n\n  useEffect(() => {\n    loadDefaultInsurances();\n    loadTestOptions();\n    getProviders();\n    appContext.resetSites();\n    if (!order.isNew) {\n      getOrderPatient();\n    }\n  }, []);\n\n  const getConfigSites = () =>\n    Array.from(new Set([...(CONFIG.allowSites || []), ...(CONFIG.siteID ? [CONFIG.siteID] : [])]));\n\n  const getLinkedClientsArray = (linkedClient) => linkedClient?.split(\",\") || [];\n\n  const buildAllowSites = (includeAll = false) => {\n    const allAssociatedClients = order?.selectedPatient?.provider?.map((p) => p.value) || [];\n    const selectedEmployeeClients = orderEmployee?.provider?.map((p) => p.value) || [];\n\n    const baseAllowSites = getConfigSites();\n\n    return includeAll\n      ? Array.from(new Set([...baseAllowSites, ...allAssociatedClients, ...selectedEmployeeClients]))\n      : Array.from(new Set(baseAllowSites));\n  };\n\n  const getProviderOption = useMemo(() => {\n    const clientMatchesAllowSites = (sites) => (s) =>\n      sites.includes(s.associatedClient) || sites.some((site) => getLinkedClientsArray(s.linkedClient).includes(site));\n\n    const allowSites = buildAllowSites();\n\n    if (allowSites.length > 0) {\n      return providers?.filter(clientMatchesAllowSites(allowSites));\n    }\n\n    const extendedAllowSites = buildAllowSites(true);\n    return providers?.filter(clientMatchesAllowSites(extendedAllowSites));\n  }, [providers, order?.selectedPatient, orderEmployee]);\n\n  const collectorList = useMemo(() => {\n    const systemUsers = (appContext?.users || []).map((user) => ({\n      label: `${user.firstName} ${user.lastName}`,\n      value: user.id,\n    }));\n    return [...getProviderOption, ...systemUsers];\n  }, [getProviderOption]);\n\n  const handleClearProvider = () => {\n    setTestCreate((prevState) => ({\n      ...prevState,\n      siteID: \"\",\n      site_name: \"\",\n      providerName: \"\",\n      providerID: \"\",\n    }));\n    return;\n  };\n\n  const getLinkedClientsOption = useMemo(() => {\n    if (!newTestCreate?.providerID) return [];\n\n    const selectedProvider = getProviderOption?.find((p) => p.id === newTestCreate.providerID);\n    if (!selectedProvider) return [];\n\n    const { associatedClient, linkedClient } = selectedProvider;\n\n    const linkedClientsArray = [\n      ...(associatedClient ? [associatedClient] : []),\n      ...(linkedClient ? linkedClient.split(\",\").map((value) => value.trim()) : []),\n    ];\n\n    const uniqueClientsArray = Array.from(new Set(linkedClientsArray));\n\n    return uniqueClientsArray.length > 1\n      ? getSiteOptions.filter((item) => uniqueClientsArray.includes(item.value))\n      : [];\n  }, [getProviderOption, newTestCreate?.providerID, getSiteOptions]);\n\n  const getCliaNumber = useMemo(() => {\n    if (!companySettings.cliaNumber) return [];\n    return companySettings.cliaNumber.map((l) => {\n      return { value: l.cliCode, label: l.label || l.cliCode };\n    });\n  }, [companySettings]);\n\n  useEffect(() => {\n    if (appContext?.clients?.length > 0) {\n      const client = appContext.clients.find((f) => f.id === CONFIG.clientID);\n      if (client && client.resultTypes) {\n        setResultTypes(\n          sortByAlphaOrder(\n            [\n              ...(client.resultTypes.results.map((m) => ({ value: m, label: m })) || []),\n              { value: UN_RESULT, label: UN_RESULT },\n            ],\n            \"label\"\n          )\n        );\n      }\n    }\n  }, [appContext.clients]);\n\n  const usersData = useMemo(() => {\n    if (!users) return;\n    return users\n      .filter((u) => u.roles?.includes(\"Tester\") || u.roles?.includes(\"Admin\"))\n      .map((u) => {\n        return {\n          value: u.userID,\n          label: `${u.firstName} ${u.lastName}`,\n          phone_number: u.phone_number?.replace(/ /g, \"\"),\n        };\n      });\n  }, [users]);\n  useEffect(() => {\n    let updates = {};\n\n    if (clients.length === 1 && !newTestCreate.clientName) {\n      const { id, name } = clients[0];\n      updates = {\n        ...updates,\n        clientName: name,\n      };\n    }\n\n    if (labs.length === 1 && !newTestCreate.labID) {\n      const { id, name } = labs[0];\n      updates = {\n        ...updates,\n        labID: id,\n        labName: name,\n      };\n    }\n\n    if (Object.keys(updates).length > 0) {\n      setTestCreate((prev) => ({\n        ...prev,\n        ...updates,\n      }));\n    }\n  }, [clients, labs, newTestCreate]);\n\n  useEffect(() => {\n    if (order?.selectedPatient?.referringProvider) {\n      const providerId = order?.selectedPatient?.referringProvider;\n      const siteID = providers?.find((s) => s.id === providerId)?.associatedClient || \"\";\n      const siteobj = getSiteOptions?.find((f) => f.value === siteID);\n      if (siteobj?.value && siteobj?.label) {\n        setTestCreate({ ...newTestCreate, siteID: siteobj?.value, site_name: siteobj?.label });\n      }\n    }\n  }, [order, getSiteOptions]);\n\n  useEffect(() => {\n    if (newTestCreate?.test_type) {\n      const TEST_TYPE_VALUE = {\n        Lucira: \"Lucira\",\n        PCR: \"PCR\",\n        Molecular: \"Molecular\",\n        Rapid_PCR: \"Other\",\n        Rapid_Antigen: \"Antigen\",\n        Rapid_Flu: \"RapidFlu\",\n      };\n\n      let type = TEST_TYPE_VALUE[newTestCreate?.test_type.replace(/ /g, \"_\")];\n      if (type === undefined) {\n        type = newTestCreate?.test_type;\n      }\n\n      setTestCreate({\n        ...newTestCreate,\n        test_type: type,\n        employee_demographics: {\n          ...newTestCreate.employee_demographics,\n          country: newTestCreate.employee_demographics?.country\n            ? newTestCreate.employee_demographics?.country\n            : \"United States\",\n          isoCode: newTestCreate.employee_demographics?.isoCode ? newTestCreate.employee_demographics?.isoCode : \"US\",\n          phoneNumber: formatPhoneWithOutSpaces(\n            newTestCreate.employee_demographics.phoneNumber,\n            newTestCreate.employee_demographics.countryCode\n          ),\n        },\n      });\n    } else {\n      setTestCreate({\n        ...newTestCreate,\n      });\n    }\n    if (newTestCreate?.tester_name) {\n      setOnSelectedTester({ label: newTestCreate?.tester_name, value: newTestCreate?.tester_name });\n    }\n  }, []);\n\n  useEffect(() => {\n    setTimeout(() => {\n      setShow(\"\");\n    }, 4000);\n  }, [show]);\n\n  useEffect(() => {\n    // setSite(appContext.sites);\n    setLabs(appContext.labs);\n  }, [appContext.sites, appContext.labs]);\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setTestCreate({\n        ...newTestCreate,\n        employee_demographics: { ...newTestCreate.employee_demographics, street: val },\n      });\n    } else {\n      let addressObj = {\n        street: val.street,\n        country: val.country || \"United States\",\n        city: val.city,\n        zip: val.zipcode,\n        county: val.county,\n        state: val.state,\n        isoCode: val.isoCode || val.isCode || \"US\",\n      };\n      setTestCreate({\n        ...newTestCreate,\n        employee_demographics: { ...newTestCreate.employee_demographics, ...addressObj },\n      });\n    }\n  };\n\n  const orderComparison = (ord, list) => {\n    const orderDate = ord.createdAt ? moment(ord.createdAt).format(\"YYYY-MM-DD\") : moment().format(\"YYYY-MM-DD\");\n    const matchingRecord = list.find((f) => moment(f.createdAt).format(\"YYYY-MM-DD\") === orderDate);\n\n    if (matchingRecord) {\n      const currentTestsToDo = ord.testsToDo || {};\n      const currentTests = currentTestsToDo.test || [];\n\n      const existingTestsToDo = matchingRecord.testsToDo || {};\n      const existingTestIds = new Set((existingTestsToDo.test || []).filter((t) => !t.isDone).map((t) => t.id));\n\n      return currentTests.some((test) => existingTestIds.has(test.id));\n    }\n\n    return false;\n  };\n\n  const handlePhoneNo = (e) => {\n    setTestCreate({\n      ...newTestCreate,\n      employee_demographics: { ...newTestCreate.employee_demographics, phoneNumber: e },\n      phoneNumber: e,\n    });\n  };\n\n  const searchPreReg = async (data, type) => {\n    if (!data) return;\n    setLoading(true);\n    let phoneNo = data;\n    let countryCode = \"\";\n    if (phoneNo && type === \"Phone\") {\n      const [cc, ph] = getPhoneNo(data);\n      phoneNo = ph;\n      countryCode = cc;\n    }\n    let env = CONFIG.isLive ? \"remote\" : \"localhost\";\n\n    let uniqueData = [];\n    try {\n      let siteID = null;\n\n      if (sites.length > 0) {\n        siteID = newTestCreate.siteID;\n      }\n\n      let record = await api.getPreRegisterData(phoneNo, env, type, countryCode, siteID);\n\n      uniqueData = Array.from(new Map(record.map((item) => [item[\"id\"], item])).values());\n\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n    }\n\n    if (uniqueData && uniqueData.length === 1) {\n      populate(uniqueData[0]);\n      return;\n    }\n    if (uniqueData && uniqueData.length > 1) {\n      setRecordData(\n        uniqueData.map((e) => {\n          return { ...e, first: toTitleCase(e.first), last: toTitleCase(e.last) };\n        })\n      );\n      setShowPopOver(!showPopOver);\n    }\n  };\n\n  const populate = (record) => {\n    setShowPopOver(false);\n    setSelectSearchData(null);\n    const { isVaccinated, referringProvider, referringPyhsician } = record;\n\n    const obj = getFormattedEmployeeObject(record);\n    setTestCreate({\n      ...newTestCreate,\n      employee_demographics: obj.employee_demographics,\n      email: obj.email,\n      phoneNumber: obj.phoneNumber,\n      employeeID: obj.employeeID,\n      ...(referringProvider && {\n        providerID: referringProvider,\n        providerName: referringPyhsician,\n      }),\n    });\n\n    setDisabledVaccination(isVaccinated || false);\n  };\n\n  const createTest = async (newTestCreate) => {\n    let newTestObj = { ...newTestCreate, createdAt: \"\" };\n    if (newTestCreate.sequenceNo) {\n      let sequenceData = await GQAPI.getTestBySequenceNoByAPI(newTestCreate.sequenceNo);\n      if (sequenceData == newTestCreate.sequenceNo || sequenceData < newTestCreate.sequenceNo) {\n        setError(\"Sequence No. already used\");\n        setLoading(false);\n        return;\n      }\n      let barcode = makeBarcode(newTestObj.employee_demographics.idNumber, newTestCreate.sequenceNo);\n      newTestObj = { ...newTestObj, barcode };\n    }\n\n    // if create new test allocate the new sequenec no\n    let newSequenceNo;\n    if (!newTestCreate?.sequenceNo) {\n      // if bio lab then change the barcode format\n      if (CONFIG.isWhiteLabel) {\n        let dateOfTest = moment().format(\"YYMMDD\");\n        if (newTestObj.createdAt) {\n          dateOfTest = moment(newTestObj.createdAt).format(\"YYMMDD\");\n        }\n        newSequenceNo = await GQAPI.getLabTestAutoNumber(dateOfTest, newTestObj.labID);\n      } else {\n        newSequenceNo = await GQAPI.getTestAutoNumber();\n      }\n\n      const barcode = newSequenceNo.dailyCounter || newSequenceNo.counter;\n      newTestObj = { ...newTestObj, sequenceNo: newSequenceNo.counter, barcode };\n    }\n    // create test\n    let testData = {\n      ...newTestObj,\n      orderID: newTestObj.id,\n      submittedByName: appContext?.user?.name,\n      createdBy: appContext?.user?.sub,\n      tester_name: appContext?.user?.name,\n    };\n\n    // Lab Check barcode is active or not\n    const checkLab = labs?.find((item) => item.id === testData.labID && item.barCodeProvided);\n    if (checkLab && checkLab.id) {\n      let barcode = await api.getLabProvidedBarCode(checkLab.id);\n      if (barcode) {\n        testData = { ...testData, barcode };\n      }\n    }\n\n    let newTest = await GQAPI.createTest(testData);\n    if (JSON.stringify(order.employee_demographics) !== JSON.stringify(newTestCreate.employee_demographics)) {\n      await onHandleSave();\n    }\n    setLoading(false);\n    if (newTest) {\n      appContext.showSuccessMessage(\"Test created successfully\");\n      handleCloseCreateTest();\n    } else {\n      appContext.showErrorMessage(\"Test can't be created\");\n    }\n  };\n\n  const getProviderDetails = (obj) => {\n    const ref_id = obj.providerID || obj?.provider?.ref_id;\n\n    if (!ref_id) return null;\n\n    const ref_provider = providers.find((p) => p.id === ref_id);\n\n    if (ref_provider) {\n      const prevData = parseJSONObject(obj.provider);\n      return {\n        ...prevData,\n        ref_id: ref_id,\n        ref_npi: ref_provider.npi,\n        ref_name: ref_provider.label,\n        ref_firstName: ref_provider.firstName,\n        ref_lastName: ref_provider.lastName,\n      };\n    }\n\n    return obj.provider || null;\n  };\n  // delete Signatures\n  const deleteSignature = useCallback(({ consent, title }) => {\n    try {\n      api.deleteSignatureFile(consent);\n      switch (title) {\n        case \"Patient Consent\":\n          setTestCreate((prevTestCreate) => {\n            return {\n              ...prevTestCreate,\n              employee_demographics: {\n                ...prevTestCreate?.employee_demographics,\n                patientConsent: null,\n              },\n            };\n          });\n          break;\n        case \"Physician Consent\":\n          setTestCreate((prevTestCreate) => {\n            return {\n              ...prevTestCreate,\n              employee_demographics: {\n                ...prevTestCreate?.employee_demographics,\n                physicianConsent: null,\n              },\n            };\n          });\n          break;\n        default:\n      }\n    } catch (err) {\n      appContext.showErrorMessage(\"Failed to delete the file\");\n    }\n  }, []);\n  // trimmed signatures\n  const setMatchedConsent = (title, consent) => {\n    switch (title) {\n      case \"Patient Consent\":\n        setTestCreate((prevTestCreate) => {\n          return {\n            ...prevTestCreate,\n            employee_demographics: {\n              ...prevTestCreate?.employee_demographics,\n              patientConsent: consent,\n            },\n          };\n        });\n        break;\n      case \"Physician Consent\":\n        setTestCreate((prevTestCreate) => {\n          return {\n            ...prevTestCreate,\n            employee_demographics: {\n              ...prevTestCreate?.employee_demographics,\n              physicianConsent: consent,\n            },\n          };\n        });\n        break;\n      default:\n    }\n  };\n\n  const getValidSignature = useCallback(({ signCanvas, title }) => {\n    if (signCanvas.current && !signCanvas.current.isEmpty()) {\n      try {\n        // Trim the canvas to remove empty space\n        const trimmedCanvas = signCanvas.current.getTrimmedCanvas();\n        // Convert the trimmed canvas to a Base64 PNG URL\n        const signatureURL = trimmedCanvas.toDataURL(\"image/png\");\n        const id = uuidv4();\n        const getSignatureFilePath = api.saveSignatureFile({ id, signatureURL });\n        // Update state with the cropped signature\n        setMatchedConsent(title, getSignatureFilePath);\n      } catch (err) {\n        appContext.showErrorMessage(\"Error in Signature Uploading\");\n      }\n    }\n  }, []);\n\n  const onHandleSave = async () => {\n    if (!newTestCreate.isNew && !permission[ORDER]?.archiveOrders) {\n      appContext.showErrorMessage(\"User has not permission to edit order\");\n      return;\n    }\n\n    let newTestObj = _.cloneDeep(newTestCreate);\n\n    const [ccCode, phoneNo, completePhone] = getPhoneNo(\n      newTestCreate?.employee_demographics?.phoneNumber,\n      newTestCreate?.employee_demographics?.countryCode\n    );\n    const { employee_demographics: emp } = newTestCreate;\n\n    const diagData = getDiagListFromOrderTest(orderIcdData);\n\n    let testList = getTestListFromOrderTest(orderIcdData, defaultConfig.isTestCreationFromEmployee);\n\n    if (testList?.error) {\n      setError(testList?.error);\n      return;\n    }\n\n    const isAnyIctEmpty = testList?.some((item) => item.ictCodes.length === 0);\n    if (isAnyIctEmpty && !defaultConfig.isTestCreationFromEmployee) {\n      setError(\"Fill diagnosis in all test fields.\");\n      return;\n    }\n\n    const missingRequiredAnswers =\n      additionalQuestion?.filter(\n        (item) => item?.required && (item.selectedValue === null || item.selectedValue === undefined)\n      ) ?? [];\n\n    if (missingRequiredAnswers?.length > 0) {\n      const message =\n        missingRequiredAnswers?.length === 1\n          ? \"Answer the required additional screening question\"\n          : \"Answer all required additional screening questions\";\n      setActiveTabIndex(1); // Switch to \"Additional Screening Information\" tab\n      appContext.showErrorMessage(message);\n      return;\n    }\n\n    testList = testList.map((item) => ({\n      ...item,\n      targetRanges: [],\n      answerAdditionalQuestion: additionalQuestion.filter((answerItem) => answerItem?.testId === item?.id),\n    }));\n    newTestObj = { ...newTestObj, ...diagData };\n\n    if (!newTestObj.testsToDo) {\n      newTestObj.testsToDo = {};\n    }\n\n    newTestObj.testsToDo[\"test\"] = testList;\n\n    if (!newTestCreate?.providerID) {\n      setError(\"Provider is required\");\n\n      return;\n    }\n\n    if (Array.isArray(getProviderOption) && getProviderOption.length > 0 && !newTestObj.providerID) {\n      const provObject = getProviderOption[0];\n      newTestObj.providerID = provObject.id;\n      newTestObj.providerName = provObject.name;\n    }\n\n    const selectedProvider = getProviderOption?.find((p) => p.id === newTestObj.providerID);\n    const siteObject = getSiteOptions?.find((s) => s.value === selectedProvider?.associatedClient);\n\n    if (siteObject && !newTestObj.siteID) {\n      newTestObj.siteID = siteObject.value;\n      newTestObj.site_name = siteObject.label;\n    } else if (!siteObject && !newTestObj.siteID) {\n      setError(\"Client is required\");\n      return;\n    }\n\n    if (!emp?.firstName) {\n      setError(\"First name is required\");\n      return;\n    }\n    if (!isValidName(emp.firstName)) {\n      setError(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n    if (!emp.lastName) {\n      setError(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(emp.lastName)) {\n      setError(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n\n    if (CONFIG.clientID !== ALTA_NEW_ID) {\n      // if (!emp.email) {\n      //   setError(\"Email is required\");\n      //   return;\n      // }\n\n      if (emp?.email && !isValidEmail(emp.email)) {\n        setError(\"Invalid Email\");\n        return;\n      }\n    }\n\n    if (!emp.dob) {\n      setError(\"Date of birth is required\");\n      return;\n    }\n\n    if (!emp.phoneNumber) {\n      setError(\"Phone number is required\");\n      return;\n    }\n    if (!isValidPhoneWithCode(emp.phoneNumber)) {\n      setError(\"Phone number is invalid\");\n      return;\n    }\n\n    if (!emp?.sex) {\n      setError(\"Gender is required\");\n      return;\n    }\n\n    if (!emp?.street?.trim()) {\n      setError(\"Address is required\");\n      return;\n    }\n    if (!emp?.country) {\n      setError(\"Country is Required\");\n      return;\n    }\n    if (emp?.zip === null || !emp?.zip) {\n      setError(\"Zipcode is required\");\n      return;\n    }\n\n    // if (!zipCodeValidationUS(emp?.zip)) {\n    //   setError(\"Invalid Postal Code\");\n    //   return;\n    // }\n\n    if (!emp?.state?.trim()) {\n      setError(\"State is required\");\n      return;\n    }\n\n    if (!newTestObj.clientID) {\n      setError(\"Client is required\");\n      return;\n    }\n    if (!newTestObj?.siteID) {\n      setError(`${stringConstant.site} is required`);\n      return;\n    }\n\n    if (!newTestObj.providerName) {\n      setError(\"Ordering Physician is requried\");\n      return;\n    }\n\n    if (!emp.dob) {\n      setError(\"Date of birth is required\");\n      return;\n    }\n\n    if (!newTestObj.testsToDo?.test?.length) {\n      setError(\"Please select the test source\");\n      return;\n    }\n\n    if (!newTestObj.orderDate) {\n      setError(\"Order Date is required\");\n      return;\n    }\n\n    if (moment(newTestObj.createdAt).isAfter(moment())) {\n      setError(\"Order date and time should not be greater than the current date and time\");\n      return false;\n    }\n\n    if (moment(newTestObj.collectionDate).isBefore(moment(newTestObj.createdAt))) {\n      setError(\"Collection Date cannot be earlier than Order Date\");\n      return false;\n    }\n\n    if (moment(newTestObj.labReceiveDate).isBefore(moment(newTestObj.createdAt))) {\n      setError(\"Received Date cannot be earlier than Order Date\");\n      return false;\n    }\n\n    // if (moment(newTestObj.orderDate, \"YYYY-MM-DD\").isBefore(moment(newTestObj.createdAt, \"YYYY-MM-DD\"))) {\n    //   setError(\"Test Date cannot be earlier than Order Date\");\n    //   return false;\n    // }\n\n    if (!hasAtLeastOneDiagnosis(newTestObj) && defaultConfig.isTestCreationFromEmployee === false) {\n      setError(\"All diagnoses are null.\");\n      return false;\n    }\n    // if (!emp.insuranceCompanyCode) {\n    //   setError(\"Payer information is required.\");\n    //   return;\n    // }\n    // if (\n    //   emp.insuranceCompanyCode &&\n    //   !IGNORE_INS.includes(emp.insuranceCompanyCode) &&\n    //   (!emp.insurance_number || !emp.insurance_number.trim())\n    // ) {\n    //   setError(`Insurance Number required for ${emp.insurance_name} Insurance`);\n    //   return;\n    // }\n\n    newTestObj.testerPhone = appContext.user.phone_number;\n    newTestObj.phoneNumber = phoneNo;\n    newTestObj.employee_demographics.phoneNumber = phoneNo;\n    newTestObj.employee_demographics.countryCode = ccCode;\n    newTestObj.employee_demographics.idNumber = \"000000000\";\n    newTestObj.provider = getProviderDetails(newTestObj);\n\n    newTestCreate.providerID = !newTestCreate?.providerID ? getProviderOption?.[0]?.id : newTestCreate?.providerID;\n\n    setLoading(true);\n\n    const compareObjValues = !order.isNew ? compareAndReturnNewValues(newTestCreate, order) : null;\n\n    if (compareObjValues) {\n      const newOrderObj = getUpdatedFields(compareObjValues);\n\n      let orderTestRes = await api.ordertestUpdate({ orderID: order.id, data: newOrderObj });\n    }\n\n    try {\n      // save employee data using proxy contact api\n      let record = await api.proxyContant({\n        ...newTestObj,\n        employee_demographics: {\n          ...newTestObj.employee_demographics,\n          ...(!newTestObj.employeeID && {\n            referringPyhsician: newTestObj.providerName,\n            referringProvider: newTestObj.providerID,\n          }),\n          dob: moment(newTestObj.employee_demographics.dob).format(\"MMDDYYYY\"),\n        },\n        updatedBy: appContext.user.sub,\n        updatedByName: appContext.user.name,\n        clientID: newTestObj.clientID,\n      });\n      if (!record || record?.message) {\n        setError(record?.message || \"Fail to save the Employee Record\");\n        setLoading(false);\n        return;\n      }\n\n      if (record && record?.eligibilityStatus) {\n        record.eligibilityStatus = parseJSONObject(record.eligibilityStatus);\n      }\n\n      if (\n        newTestObj &&\n        newTestObj.employeeID &&\n        record?.eligibilityStatus?.message !== \"Eligibile\" &&\n        !IGNORE_INS.includes(newTestObj.insuranceCompanyCode) &&\n        userClientData?.setting?.eligibility\n      ) {\n        // Check Eligibility When employee exist but eligibility not checked\n        const EligRes = await api.checkEligibility({\n          ...newTestObj.employee_demographics,\n          mdID: record.id,\n          updatedBy: appContext.user.sub,\n          updatedByName: appContext.user.name,\n        });\n\n        if (EligRes) {\n          newTestObj.eligibilityStatus = {\n            message: EligRes.message,\n            apiData: EligRes.apiData,\n            createdAt: moment().toISOString(),\n          };\n        }\n      } else if (!newTestObj.eligibilityStatus) {\n        newTestObj.eligibilityStatus = record.eligibilityStatus;\n      }\n\n      if (record?.id || newTestObj.employeeID) {\n        const orderList = await api.getOrderListThroughEmpID(record?.id || newTestObj.employeeID);\n\n        const otherOrders = orderList?.filter((f) => f.id !== newTestObj.id);\n\n        if (orderComparison(newTestObj, otherOrders)) {\n          setError(\"An order for this patient for this date of service already exists\");\n          setLoading(false);\n          return;\n        }\n      }\n\n      // set the newly assigned employee id at test level and in demographics\n      if (record?.id) {\n        newTestObj.employeeID = record.id;\n      }\n\n      newTestObj.orderDate = moment(newTestObj.orderDate).toISOString();\n      newTestObj.createdAt = moment(newTestObj.createdAt).toISOString();\n      newTestObj.collectionDate = newTestObj.collectionDate ? moment(newTestObj.collectionDate).toISOString() : null;\n      newTestObj.labReceiveDate = newTestObj.labReceiveDate ? moment(newTestObj.labReceiveDate).toISOString() : null;\n      newTestObj.chartID = record?.externalID;\n      if (newTestObj.isNew) {\n        newTestObj.createdBy = appContext.user.sub;\n        newTestObj.createdByName = appContext.user.name;\n\n        if (isSiteUser) {\n          newTestObj.collectedBy = appContext.user.sub;\n          newTestObj.collectedByName = appContext.user.name;\n        }\n\n        if (CUSTOM_INS.includes(newTestObj.insuranceCompanyCode)) {\n          newTestObj.eligibilityStatus = { message: \"Eligibile\" };\n        }\n      }\n\n      // if create new test allocate the new sequenec no\n\n      let orderData;\n\n      if (newTestObj.isNew) {\n        orderData = await GQAPI.createOrderAPI(newTestObj);\n\n        if (!orderData) {\n          setLoading(false);\n          appContext.showSuccessMessage(\"Order Creation Failed\");\n          return;\n        }\n\n        if (newTestObj.requestID) {\n          await api.updateUploadRequest(newTestObj.requestID, {});\n        }\n        if (typeof orderData?.testsToDo === \"string\") {\n          const parsedTestsToDo = JSON.parse(orderData.testsToDo);\n\n          // Return the modified order object with parsed testsToDo\n          orderData = {\n            ...orderData,\n            testsToDo: parsedTestsToDo,\n          };\n        }\n        setOrderData(formatOrder(orderData));\n\n        if (appContext?.user?.isSite()) {\n          appContext.showSuccessMessage(\"Order Created Successfully\");\n          handleCloseCreateTest();\n        } else {\n          setShowConfirmation(true);\n        }\n\n        setLoading(false);\n      } else {\n        newTestObj.updatedBy = appContext.user.sub;\n        newTestObj.updatedByName = appContext.user.name;\n        orderData = await GQAPI.updateOrderAPI(newTestObj);\n\n        //TODO::Need to Fixed this code\n        //  if (newTestObj.testID) await api.updateTestFromOrder(newTestObj);\n        if (orderData) appContext.showSuccessMessage(\"Order Updated Successfully\");\n        handleCloseCreateTest();\n      }\n    } catch (err) {\n      setLoading(false);\n      console.log(err);\n      appContext.showSuccessMessage(\"Order Creation Failed\");\n    }\n  };\n\n  const updateTestsToDo = (currentSelection, newSelection) => {\n    // Convert the current testsToDo array to a map for easier lookup\n    const currentMap = new Map(currentSelection.map((item) => [item.value, item]));\n\n    // Iterate over newSelection and add items that are not in currentMap\n    newSelection.forEach((item) => {\n      if (!currentMap.has(item.value)) {\n        currentMap.set(item.value, item);\n      }\n    });\n\n    // Convert the map back to an array\n    return Array.from(currentMap.values());\n  };\n\n  const handleTestType = (e) => {\n    setTestCreate({\n      ...newTestCreate,\n      testsToDo: { test: updateTestsToDo(newTestCreate.testsToDo?.test || [], e) },\n    });\n  };\n\n  const handleItemChange = (index, updatedItem) => {\n    const updatedTests = newTestCreate.testsToDo.test.map((item, i) =>\n      i === index ? { ...item, ...updatedItem } : item\n    );\n\n    setTestCreate({\n      ...newTestCreate,\n      testsToDo: { ...newTestCreate.testsToDo, test: updatedTests },\n    });\n  };\n\n  const handleRemoveItem = (indexToRemove) => {\n    const updatedTests = newTestCreate.testsToDo.test.filter((_, index) => index !== indexToRemove);\n    setTestCreate({\n      ...newTestCreate,\n      testsToDo: { ...newTestCreate.testsToDo, test: updatedTests },\n    });\n  };\n  const handleEditTest = (item, index) => {\n    setIctList(item.ictCodes);\n    setEditIndexIct(index);\n  };\n\n  const showSelectedTests = () => {\n    if (!newTestCreate?.testsToDo?.test) {\n      return \"\";\n    }\n    return (\n      <div className=\"\">\n        <div className=\"form-group-wrapper\" style={{ width: \"40%\" }}>\n          <label className=\"modalLineHeaders\">Tests </label>\n          <Select\n            className=\"w-100 siteSelector\"\n            options={testOptions}\n            blurInputOnSelect={true}\n            defaultValue={null}\n            menuPlacement=\"auto\"\n            placeholder=\"Select Tests\"\n            isMulti\n            value={null}\n            onChange={(e) => handleTestType(e)}\n          />\n        </div>\n\n        <table className=\"custom-separate-border-tr table w-100\">\n          <thead>\n            <OrderTestHeader />\n          </thead>\n          <tbody>\n            {newTestCreate.testsToDo?.test?.map((c, index) => (\n              <OrderTestItem\n                key={index}\n                item={c}\n                index={index}\n                onItemChange={handleItemChange}\n                showSelection={false}\n                onItemRemove={handleRemoveItem}\n                handleEditTest={handleEditTest}\n                appContext={appContext}\n              />\n            ))}\n          </tbody>\n        </table>\n      </div>\n    );\n  };\n\n  const saveDiagnosisCodes = (item) => {\n    const copyTestCreate = customCloneDeep(newTestCreate);\n\n    if (\n      copyTestCreate &&\n      copyTestCreate.testsToDo &&\n      copyTestCreate.testsToDo.test &&\n      copyTestCreate.testsToDo.test[editIndexIct]\n    ) {\n      copyTestCreate.testsToDo.test[editIndexIct].ictCodes = item;\n    }\n\n    setTestCreate(copyTestCreate);\n    setIctList(null);\n    setEditIndexIct(null);\n  };\n\n  const handelChangeReferringProvider = (event) => {\n    const { id = \"\", label = \"\", associatedClient, linkedClient } = event || {};\n\n    let siteID = \"\";\n    let site_name = \"\";\n\n    const allowedSites = getConfigSites();\n\n    const linkedClientsArray = [\n      ...(associatedClient ? [associatedClient] : []),\n      ...(linkedClient ? linkedClient.split(\",\").map((value) => value.trim()) : []),\n    ];\n\n    let uniqueClientsArray = Array.from(new Set(linkedClientsArray));\n    if (allowedSites) {\n      uniqueClientsArray = uniqueClientsArray.filter((site) => allowedSites.includes(site));\n    }\n\n    if (uniqueClientsArray.length === 1) {\n      const singleSite = getSiteOptions.find((item) => item.value === uniqueClientsArray[0]);\n      if (singleSite) {\n        siteID = singleSite.value;\n        site_name = singleSite.label;\n      }\n    }\n\n    if (\n      !siteID &&\n      newTestCreate?.siteID &&\n      (uniqueClientsArray.includes(newTestCreate?.siteID) || (newTestCreate?.siteID && uniqueClientsArray.length === 0))\n    ) {\n      siteID = newTestCreate?.siteID || \"\";\n      site_name = newTestCreate?.site_name || \"\";\n    }\n\n    setTestCreate((prevState) => ({\n      ...prevState,\n      providerName: label,\n      providerID: id,\n      siteID: siteID,\n      site_name: site_name,\n    }));\n  };\n\n  const handelChangeCliaNumber = (event) => {\n    const { label, value } = event;\n\n    setTestCreate({\n      ...newTestCreate,\n      location: value,\n    });\n  };\n\n  const handelShowSourceSiteModal = (tableIndex, rowIndex) => {\n    const sourceSiteIndexObj = {\n      tableIndex,\n      rowIndex,\n    };\n    setSourceSiteIndex(sourceSiteIndexObj);\n    setShowSourceSite(true);\n  };\n\n  const isSiteUser = useMemo(() => {\n    return getConfigSites().length > 0;\n  }, [appContext]);\n\n  const tabOptions = [\n    {\n      title: defaultConfig.isTestCreationFromEmployee ? \"Details\" : \"Diagnosis\",\n      component: (\n        <OrderDiagnosisView\n          orderIcdData={orderIcdData}\n          setOrderIcdData={(value) => setOrderIcdData(value)}\n          appContext={appContext}\n          showSourceSiteModal={handelShowSourceSiteModal}\n          labClientTest={labClientTest}\n          isSiteUser={isSiteUser}\n          defaultConfig={defaultConfig}\n          additionalQuestion={additionalQuestion}\n          setAdditionalQuestions={(questionList) => setAdditionalQuestion(questionList)}\n        />\n      ),\n    },\n    {\n      title: \"Additional Screening Information\",\n      component: (\n        <OrderAdditionalQuestionView\n          additionalQuestion={additionalQuestion}\n          setAdditionalQuestions={(questionList) => setAdditionalQuestion(questionList)}\n        />\n      ),\n    },\n  ];\n\n  const handleTestViewChange = (view) => {\n    if (view.title === \"Tests\") {\n      let newTestObj = _.cloneDeep(newTestCreate);\n      const diagData = getDiagListFromOrderTest(orderIcdData);\n      const testList = getTestListFromOrderTest(orderIcdData, defaultConfig.isTestCreationFromEmployee);\n      newTestObj = { ...newTestObj, ...diagData };\n      if (!newTestObj.testsToDo) {\n        newTestObj.testsToDo = {};\n      }\n      newTestObj.testsToDo[\"test\"] = testList;\n\n      setTestCreate(newTestObj);\n    } else {\n      console.log(\"Call Function convert test todo to diag\");\n    }\n  };\n\n  const createTestNow = async (order) => {\n    try {\n      const { testCreatedAt, testDate } = getTestDates(order);\n\n      const { eligibilityStatus } = order;\n\n      const { user = {}, userLabName } = appContext;\n\n      let isCreatedByLab = \"provider\";\n\n      let tests = order.testsToDo.test.map((t) => ({ ...t, isSelected: true }));\n\n      const params = {\n        labName: userLabName,\n        order: {\n          ...order,\n          testsToDo: { test: tests },\n          employee_demographics: {\n            ...order.employee_demographics,\n            dob: moment(order.employee_demographics.dob).format(\"MMDDYYYY\"),\n            worker: \"\",\n            possibleexposure: \"\",\n            confirmedexposure: \"\",\n            relatedsymptoms: \"\",\n            symptoms: \"\",\n            othercomment: \"\",\n            comment: \"\",\n            docUploaded: false,\n            isReview: false,\n            venipuncture: false,\n            distance: 0,\n            isEligible: eligibilityStatus?.status?.toLowerCase() === \"eligibile\",\n            stat: false,\n          },\n          labID: CONFIG.whiteLabelID,\n          labName: userLabName,\n          createSource: \"portal\",\n          timezone: SYSTEM_TIME_ZONE,\n          createdByPhone: user?.phone_number,\n          testCreatedAt,\n          testDate,\n          createdBy: user?.sub,\n          createdByName: user?.name,\n          tester_name: user?.name,\n          isCreatedByLab: isCreatedByLab,\n          ...(CONFIG.clientID === SEROCLINIX_ID ||\n            (CONFIG.clientID === SEROCLINIX_TEST && {\n              submittedBy: user?.sub,\n              submittedByName: user?.name,\n              sentToLabDate: moment().toISOString(),\n            })),\n        },\n      };\n\n      setLoading(true);\n\n      const res = await api.createMulipleTests(params);\n\n      const testForPrinting = tests.map((test) => {\n        const processedTest = res[test.label].test;\n        return {\n          ...test,\n          ...processedTest,\n          dob: order.dob,\n          testStatus: test.testStatus || processedTest.status,\n          testTypeID: test.id,\n          testDate: order.orderDate,\n          collectedDate: processedTest.createdAt,\n          orderDate: order.createdAt,\n        };\n      });\n\n      setLoading(false);\n\n      // // Print barcodes for newly processed tests\n      testForPrinting.forEach((test) => {\n        if (test.barcode) {\n          appContext.printBarcode(test);\n        }\n      });\n    } catch (ex) {\n      console.log(\"createTestNow\", ex);\n    }\n    setLoading(false);\n  };\n  const handleNonBillableConfirmation = async (isConfirm) => {\n    if (!isConfirm) {\n      setShowModal(false);\n      // handleCloseCreateTest();\n      return;\n    }\n    onHandleSave();\n    setShowModal(false);\n  };\n  const handleConfirmation = async (isConfirm) => {\n    setShowConfirmation(false);\n    if (!isConfirm) {\n      handleCloseCreateTest();\n      return;\n    }\n\n    const paramObject = {\n      ...orderData,\n      isComingFromOrderCreation: true,\n      orderDate: moment(orderData.orderDate).format(\"YYYY-MM-DDTHH:mm\"),\n      ...orderData.employee_demographics,\n      employee_demographics: {\n        ...orderData.employee_demographics,\n        phoneNumber: `${orderData?.employee_demographics?.countryCode || \"+1\"}${\n          orderData?.employee_demographics?.phoneNumber\n        }`,\n      },\n    };\n\n    if (CONFIG.clientID === SEROCLINIX_ID || CONFIG.clientID === SEROCLINIX_TEST) {\n      await createTestNow(paramObject);\n    } else {\n      appContext.openPatientTestViewModal({\n        order: paramObject,\n        type: \"order\",\n        uiType: \"testManagmentUi\",\n      });\n    }\n\n    handleCloseCreateTest();\n  };\n\n  const handleAddSourceSite = (value) => {\n    const { tableIndex, rowIndex } = sourceSiteIndex;\n\n    let cloneOrderIcd = customCloneDeep(orderIcdData);\n    cloneOrderIcd[tableIndex].orderData[rowIndex][\"sourceSite\"] = value;\n\n    setOrderIcdData(cloneOrderIcd);\n\n    setShowSourceSite(false);\n  };\n  return (\n    <>\n      {ictList && (\n        <DiagnosisAccordionView\n          handleClose={() => setIctList(null)}\n          handelSaveDiagnosisPanel={saveDiagnosisCodes}\n          ictList={ictList}\n          setIctList={setIctList}\n          isNew={false}\n        />\n      )}\n\n      {showSourceSite && (\n        <SourceSiteModal\n          handleClose={() => setShowSourceSite(false)}\n          clients={getSiteOptions}\n          rowData={\n            orderIcdData[0]?.orderData?.[sourceSiteIndex.rowIndex]?.sourceSite ||\n            orderIcdData[0]?.orderData?.[sourceSiteIndex.rowIndex]?.test?.sourceSite\n          }\n          handleAddSourceSite={handleAddSourceSite}\n        />\n      )}\n\n      <Modal\n        show\n        animation={true}\n        onHide={handleCloseCreateTest}\n        size=\"3xl\"\n        style={{ paddingLeft: \"0\" }}\n        centered\n        keyboard={false}\n        className=\"seperateModal\"\n        backdrop=\"static\"\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {!newTestCreate.isNew ? \"Update Order\" : \"Create Order\"}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"tset-clent-edit createClientsWrapper\">\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">First Name: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"First Name\"\n                style={{\n                  width: \"100%\",\n                  flexShrink: \"initial\",\n                }}\n                value={newTestCreate?.employee_demographics?.firstName}\n                onChange={(e) => {\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      firstName: makeAlphabetInput(e.target.value),\n                    },\n                  });\n                }}\n              />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.firstName, \"FirstName\")}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Last Name: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"Last Name\"\n                style={{\n                  width: \"100%\",\n                  flexShrink: \"initial\",\n                }}\n                value={newTestCreate?.employee_demographics?.lastName}\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      lastName: makeAlphabetInput(e.target.value),\n                    },\n                  })\n                }\n              />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.lastName, \"LastName\")}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Email: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"Email\"\n                style={{\n                  width: \"100%\",\n                  flexShrink: \"initial\",\n                }}\n                value={newTestCreate?.employee_demographics?.email}\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      email: convertToLower(e.target.value),\n                    },\n                    email: convertToLower(e.target.value),\n                  })\n                }\n              />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.email, \"Email\")}\n              />\n            </div>\n            <div className=\"form-group-wrapper dateWrapper\">\n              <label className=\"modalLineHeaders\">DoB: </label>\n              <input\n                className=\"modalInput\"\n                type=\"date\"\n                style={{\n                  width: \"100%\",\n                  flexShrink: \"initial\",\n                }}\n                value={newTestCreate.employee_demographics?.dob}\n                placeholder=\"Date Of Birth\"\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      dob: moment(e.target.value).format(\"YYYY-MM-DD\"),\n                    },\n                  })\n                }\n                min={moment(\"1900-01-01\").format(\"YYYY-MM-DD\")}\n                max={moment().format(\"YYYY-MM-DD\")}\n              />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.dob, \"DOB\")}\n              />\n              {/* <SingleDatePicker\n                onApply={(event, picker) => {\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      dob: moment(picker.startDate).format(\"MMDDYYYY\"),\n                    },\n                  });\n                }}\n                value={formatDateOfBirthDOB(newTestCreate.employee_demographics?.dob)}\n                startDate={formatDateOfBirthDOB(newTestCreate.employee_demographics?.dob)}\n                currentDate={true}\n              /> */}\n            </div>\n            <div className=\"form-group-wrapper phoneInput\">\n              <label className=\"modalLineHeaders\">Phone #: </label>\n              <PhoneNoInput handleChange={handlePhoneNo} value={newTestCreate?.employee_demographics?.phoneNumber} />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.phoneNumber, \"Phone\")}\n              />\n            </div>\n            <div className=\"form-group-wrapper phoneInput\">\n              <label className=\"modalLineHeaders\">Gender</label>\n              <div className=\"d-flex justify-content-between w-100 flex-wrap row-gap-10\">\n                <RadioButton\n                  name=\"sex\"\n                  id={`male${Math.random()}`}\n                  label=\"Male\"\n                  checked={newTestCreate?.employee_demographics?.sex == \"M\"}\n                  handleRadioButtonChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        sex: e.target.checked && \"M\",\n                      },\n                    })\n                  }\n                />\n                <RadioButton\n                  name=\"sex\"\n                  id={`female${Math.random()}`}\n                  checked={newTestCreate?.employee_demographics?.sex == \"F\"}\n                  label=\"Female\"\n                  handleRadioButtonChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        sex: e.target.checked && \"F\",\n                      },\n                    })\n                  }\n                />\n                <RadioButton\n                  id={`other${Math.random()}`}\n                  checked={newTestCreate?.employee_demographics?.sex == \"X\"}\n                  name=\"sex\"\n                  label=\"Not Specified\"\n                  handleRadioButtonChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        sex: e.target.checked && \"X\",\n                      },\n                    })\n                  }\n                />\n                <RadioButton\n                  id={`other${Math.random()}`}\n                  checked={newTestCreate?.employee_demographics?.sex == \"N\"}\n                  name=\"sex\"\n                  label=\"Not Binary\"\n                  handleRadioButtonChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        sex: e.target.checked && \"N\",\n                      },\n                    })\n                  }\n                />\n              </div>\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">DL/Passport #: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"License/Passport\"\n                style={{\n                  width: \"100%\",\n                  flexShrink: \"initial\",\n                }}\n                maxLength={16}\n                value={newTestCreate?.employee_demographics?.idNumber}\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      idNumber: e.target.value,\n                    },\n                  })\n                }\n              />\n              <i\n                ref={childNode}\n                className=\"fas fa-search cursor-pointer\"\n                style={{ cursor: \"pointer\" }}\n                onClick={() => searchPreReg(newTestCreate?.employee_demographics?.idNumber, \"License\")}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Address: </label>\n              <AutoCompleteAddress\n                value={newTestCreate?.employee_demographics?.street}\n                cssClass={\"modalInput\"}\n                handleChange={handleUpdateAddress}\n              />\n              {/* <input\n                ref={ref}\n                value={newTestCreate?.employee_demographics?.street}\n                placeholder=\"Enter Address\"\n                className=\"modalInput\"\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      street: validSpace(e.target.value),\n                    },\n                  })\n                }\n              /> */}\n            </div>\n            {defaultConfig.isShowRoom && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">{defaultConfig.roomno} : </label>\n                <input\n                  className=\"modalInput\"\n                  placeholder={defaultConfig.roomno}\n                  value={newTestCreate?.employee_demographics?.street2}\n                  onChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        street2: validSpace(e.target.value),\n                      },\n                    })\n                  }\n                />\n              </div>\n            )}\n            {defaultConfig.isShowFloor && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Floor No:</label>\n                <input\n                  className=\"modalInput\"\n                  placeholder=\"Floor No\"\n                  value={newTestCreate?.floorNo}\n                  onChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      floorNo: validSpace(e.target.value),\n                    })\n                  }\n                />\n              </div>\n            )}\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">City: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"City \"\n                value={newTestCreate?.employee_demographics?.city}\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      city: validSpace(e.target.value),\n                    },\n                  })\n                }\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Zip: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"Zip\"\n                maxLength={10}\n                value={newTestCreate?.employee_demographics?.zip}\n                onChange={(e) => {\n                  let val = e.target.value;\n                  if (val) val = val.toUpperCase();\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      zip: newTestCreate.employee_demographics.isoCode === \"US\" ? formatZip(val) : validSpace(val),\n                    },\n                  });\n                }}\n              />\n            </div>\n            {loading && <Loader />}\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">State: </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"State\"\n                maxLength={35}\n                value={newTestCreate?.employee_demographics?.state}\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      state: e.target.value.toUpperCase(),\n                    },\n                  })\n                }\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders \">Country: </label>\n              <Select\n                options={countriesOption}\n                blurInputOnSelect={true}\n                defaultValue={{ label: \"United States\", value: \"United States\" }}\n                menuPlacement=\"auto\"\n                className=\"w-100 siteSelector\"\n                placeholder=\"Select Country\"\n                value={\n                  newTestCreate.employee_demographics.country\n                    ? {\n                        label: newTestCreate.employee_demographics.country,\n                        value: newTestCreate.employee_demographics.country,\n                      }\n                    : null\n                }\n                onChange={(e) => {\n                  const country = countryListAllIsoData.find((f) => f.name === e.value) || {\n                    code: newTestCreate.employee_demographics.isoCode || \"US\",\n                  };\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      country: e.value,\n                      isoCode: country.code,\n                    },\n                  });\n                }}\n              />\n            </div>\n            {clients.length > 1 && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Client </label>\n                <Select\n                  className=\"w-100 siteSelector\"\n                  options={clients.map((l) => {\n                    return { value: l.id, label: l.name };\n                  })}\n                  blurInputOnSelect={true}\n                  defaultValue={null}\n                  menuPlacement=\"auto\"\n                  value={\n                    newTestCreate.clientID\n                      ? {\n                          label: newTestCreate.clientName,\n                          value: newTestCreate.clientID,\n                        }\n                      : null\n                  }\n                  placeholder=\"Select Client\"\n                  onChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      clientID: e.value,\n                      clientName: e.label,\n                      siteID: null,\n                      site_name: null,\n                    })\n                  }\n                />\n              </div>\n            )}\n\n            <InputField\n              type=\"dropDown\"\n              inputStyle=\"referring-provider-select w-100\"\n              labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n              label=\"Ordering Physician\"\n              options={getProviderOption}\n              value={\n                newTestCreate?.providerID ? providers?.find((item) => item.id === newTestCreate?.providerID) : null // Explicitly set to null to show the placeholder\n              }\n              index=\"referringProvider\"\n              placeholder=\"Select Ordering Physician\"\n              isClearable={true}\n              handleChange={(selectedOption) => {\n                if (!selectedOption) {\n                  // Handle when the value is cleared\n                  handleClearProvider();\n                } else {\n                  handelChangeReferringProvider(selectedOption);\n                }\n              }}\n              required={true}\n            />\n            {getLinkedClientsOption?.length > 1 && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">\n                  {stringConstant.site}\n                  <span className=\"fw-bold fs-6 maroon\"> *</span>\n                </label>\n                <Select\n                  className=\"w-100 siteSelector\"\n                  options={getLinkedClientsOption}\n                  blurInputOnSelect={true}\n                  // isDisabled={newTestCreate.employeeID}\n                  menuPlacement=\"auto\"\n                  placeholder={`Select Client`}\n                  value={newTestCreate.siteID ? getSiteOptions.find((f) => f.value === newTestCreate.siteID) : null}\n                  onChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      siteID: e.value,\n                      site_name: e.label,\n                    })\n                  }\n                />\n              </div>\n            )}\n            {labs.length > 1 && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Lab </label>\n                <Select\n                  className=\"w-100 siteSelector\"\n                  options={labs?.map((l) => {\n                    return { value: l.id, label: l.name };\n                  })}\n                  blurInputOnSelect={true}\n                  defaultValue={null}\n                  menuPlacement=\"auto\"\n                  placeholder=\"Select Lab\"\n                  value={\n                    newTestCreate.labID\n                      ? {\n                          label: newTestCreate.labName,\n                          value: newTestCreate.labID,\n                        }\n                      : null\n                  }\n                  onChange={(e) => setTestCreate({ ...newTestCreate, labID: e.value, labName: e.label })}\n                />\n              </div>\n            )}\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Payer Information: </label>\n              <Select\n                className=\"w-100 siteSelector\"\n                options={clientInsurances}\n                blurInputOnSelect={true}\n                defaultValue={null}\n                menuPlacement=\"auto\"\n                value={\n                  newTestCreate.employee_demographics?.insurance_name\n                    ? {\n                        label: newTestCreate.employee_demographics?.insurance_name,\n                        value: newTestCreate.employee_demographics?.insurance_number,\n                      }\n                    : \"\"\n                }\n                placeholder=\"Select Payer\"\n                onChange={(e) =>\n                  setTestCreate({\n                    ...newTestCreate,\n                    employee_demographics: {\n                      ...newTestCreate.employee_demographics,\n                      insurance_name: e.label,\n                      insuranceCompanyCode: e.value,\n                    },\n                  })\n                }\n              />\n            </div>\n            <div className=\"form-group-wrapper w-100\">\n              <label className=\"modalLineHeaders\">Instructions: </label>\n              <div className=\"d-flex justify-content-between align-items-center w-100 borderless-checkbox\">\n                <FilledCheckbox\n                  label={\"STAT\"}\n                  id={\"stat\"}\n                  isChecked={newTestCreate.employee_demographics?.stat}\n                  handleChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        stat: e.target.checked,\n                      },\n                    })\n                  }\n                />\n                <FilledCheckbox\n                  label={\"FAX\"}\n                  id={\"fax\"}\n                  isChecked={newTestCreate.employee_demographics?.fax}\n                  handleChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        fax: e.target.checked,\n                      },\n                    })\n                  }\n                />\n                <FilledCheckbox\n                  label={\"CALL\"}\n                  id={\"call\"}\n                  isChecked={newTestCreate.employee_demographics?.call}\n                  handleChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        call: e.target.checked,\n                      },\n                    })\n                  }\n                />\n                <FilledCheckbox\n                  label={\"FASTING\"}\n                  id={\"fasting\"}\n                  isChecked={newTestCreate.employee_demographics?.fasting}\n                  handleChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        fasting: e.target.checked,\n                      },\n                    })\n                  }\n                />\n                <FilledCheckbox\n                  label={\"RANDOM\"}\n                  id={\"random\"}\n                  isChecked={newTestCreate.employee_demographics?.random}\n                  handleChange={(e) =>\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        random: e.target.checked,\n                      },\n                    })\n                  }\n                />\n              </div>\n            </div>\n            {!CUSTOM_INS.includes(newTestCreate?.employee_demographics?.insuranceCompanyCode) && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Member ID: </label>\n                <input\n                  className=\"modalInput\"\n                  placeholder=\"Member ID\"\n                  value={newTestCreate?.employee_demographics?.insurance_number}\n                  onChange={(e) => {\n                    let val = e.target.value;\n                    setTestCreate({\n                      ...newTestCreate,\n                      employee_demographics: {\n                        ...newTestCreate.employee_demographics,\n                        insurance_number: convertToUpper(val),\n                      },\n                    });\n                  }}\n                />\n              </div>\n            )}\n            {!isSiteUser && (\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">External Reference ID: </label>\n                <input\n                  className=\"modalInput\"\n                  placeholder=\"External Reference ID\"\n                  value={newTestCreate?.externalID}\n                  onChange={(e) => setTestCreate({ ...newTestCreate, externalID: e.target.value })}\n                />\n              </div>\n            )}\n            {/* {!appContext?.user?.isSite() && getCliaNumber.length > 1 && (\n              <InputField\n                type=\"dropDown\"\n                inputStyle=\"referring-provider-select w-100\"\n                labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n                label=\"location\"\n                options={getCliaNumber}\n                value={\n                  newTestCreate?.location ? getCliaNumber.find((item) => item.value === newTestCreate?.location) : null\n                }\n                index=\"location\"\n                placeholder=\"Select location\"\n                isClearable={true}\n                handleChange={handelChangeCliaNumber}\n              />\n            )} */}\n            <InputField\n              type=\"text\"\n              inputStyle=\"referring-provider-select w-100\"\n              labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n              label=\"Clinical Comments\"\n              index=\"clinical_comments\"\n              placeholder=\"Enter clinical comments\"\n              value={newTestCreate.clincialComments}\n              isClearable={true}\n              handleChange={(e) =>\n                setTestCreate({\n                  ...newTestCreate,\n                  clincialComments: e.target.value,\n                })\n              }\n            />\n            <InputField\n              type=\"text\"\n              inputStyle=\"referring-provider-select w-100\"\n              labelStyle=\"mt-0 modalLineHeaders text-capitalize\"\n              label=\"Lab Comments\"\n              index=\"cancelledReason\"\n              placeholder=\"Enter Lab comments\"\n              value={newTestCreate.cancelledReason}\n              isClearable={true}\n              handleChange={(e) =>\n                setTestCreate({\n                  ...newTestCreate,\n                  cancelledReason: e.target.value,\n                })\n              }\n            />\n            {showPopOver && recordData.length > 1 && (\n              <EmployeeSearchRecord\n                data={recordData}\n                handleSelect={populate}\n                handleClose={() => {\n                  setShowPopOver(false), setSelectSearchData(null);\n                }}\n                setSelectSearchData={setSelectSearchData}\n                selectSearchdata={selectSearchdata}\n              />\n            )}\n          </div>\n\n          {/* <div className={isSiteUser ? \"create-order-3-item\" : \"create-order-4th-item\"}> */}\n          <div className=\"tset-clent-edit createClientsWrapper\">\n            <div className=\"form-group-wrapper dateWrapper\">\n              <label className=\"modalLineHeaders\">Order Date: </label>\n\n              <input\n                className=\"modalInput\"\n                type=\"datetime-local\"\n                value={\n                  newTestCreate?.createdAt\n                    ? moment(newTestCreate?.createdAt).format(\"YYYY-MM-DDTHH:mm\")\n                    : moment().format(\"YYYY-MM-DDTHH:mm\")\n                }\n                style={{ width: \"100%\", marginBottom: \"10px\" }}\n                max={moment().format(\"YYYY-MM-DDTHH:mm\")}\n                onChange={(e) => setTestCreate({ ...newTestCreate, createdAt: e.target.value })}\n              />\n            </div>\n\n            <div className=\"form-group-wrapper dateWrapper\">\n              <label className=\"modalLineHeaders\">Collection Date: </label>\n\n              <input\n                className=\"modalInput\"\n                type=\"datetime-local\"\n                value={\n                  newTestCreate?.collectionDate\n                    ? moment(newTestCreate?.collectionDate).format(\"YYYY-MM-DDTHH:mm\")\n                    : null\n                }\n                max={moment().format(\"YYYY-MM-DDTHH:mm\")}\n                style={{ width: \"100%\", marginBottom: \"10px\" }}\n                onChange={(e) => setTestCreate({ ...newTestCreate, collectionDate: e.target.value })}\n              />\n            </div>\n\n            {!isSiteUser && (\n              <div className=\"form-group-wrapper dateWrapper\">\n                <label className=\"modalLineHeaders\">Received Date: </label>\n                <input\n                  className=\"modalInput\"\n                  type=\"datetime-local\"\n                  value={\n                    newTestCreate?.labReceiveDate\n                      ? moment(newTestCreate?.labReceiveDate).format(\"YYYY-MM-DDTHH:mm\")\n                      : null\n                  }\n                  style={{ width: \"100%\", marginBottom: \"10px\" }}\n                  max={moment().format(\"YYYY-MM-DDTHH:mm\")}\n                  onChange={(e) => setTestCreate({ ...newTestCreate, labReceiveDate: e.target.value })}\n                />\n              </div>\n            )}\n            {!isSiteUser && (\n              <div className=\"form-group-wrapper dateWrapper\">\n                <label className=\"modalLineHeaders\">Collected By: </label>\n                <Select\n                  className=\"w-100 siteSelector\"\n                  options={collectorList}\n                  blurInputOnSelect={true}\n                  isClearable={true}\n                  menuPlacement=\"auto\"\n                  value={\n                    newTestCreate?.collectedBy\n                      ? collectorList.find((item) => item.value === newTestCreate?.collectedBy)\n                      : null\n                  }\n                  placeholder=\"Collected By\"\n                  onChange={(selectedOption) => {\n                    setTestCreate((prev) => ({\n                      ...prev,\n                      collectedBy: selectedOption ? selectedOption.value : null,\n                      collectedByName: selectedOption ? selectedOption.label : \"\",\n                    }));\n                  }}\n                />\n              </div>\n            )}\n            {/* <div className=\"form-group-wrapper dateWrapper\">\n              <label className=\"modalLineHeaders\">Future Test Date: </label>\n\n              <input\n                className=\"modalInput\"\n                type=\"date\"\n                value={newTestCreate?.orderDate ? moment(newTestCreate?.orderDate).format(\"YYYY-MM-DD\") : null}\n                min={moment(newTestCreate?.createdAt).format(\"YYYY-MM-DD\")}\n                style={{ width: \"100%\", marginBottom: \"10px\" }}\n                onChange={(e) => setTestCreate({ ...newTestCreate, orderDate: e.target.value })}\n              />\n            </div> */}\n          </div>\n\n          <div style={{ border: \"1px solid #EAEAEA\", padding: \"15px\", borderRadius: \"10px\" }}>\n            <TabPills\n              tabs={tabOptions}\n              handleTabClick={handleTestViewChange}\n              activeIndex={activeTabIndex}\n              setActiveIndex={setActiveTabIndex}\n            />\n          </div>\n\n          {/* {showSelectedTests()} */}\n        </Modal.Body>\n        <div className=\"px-4\" style={{ height: \"3vh\" }}>\n          {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n        </div>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleCloseCreateTest();\n            }}\n          >\n            Close\n          </Button>\n          {/* {rows?.length > 0 && (\n            <Button\n              onClick={() => dispatch(setShowQuestionaireTable({ showQuestionaireTable: true }))}\n              style={{ marginBottom: 10 }}\n              variant=\"secondary\"\n              className=\"modalButtons\"\n            >\n              Additional Questions\n            </Button>\n          )} */}\n          {/* <Button style={{ marginBottom: 10 }} variant=\"secondary\" className=\"modalButtons\" onClick={handeTestFormat}>\n            Test\n          </Button> */}\n          <div>\n            {/* {!newTestCreate.isNew && newTestCreate.status === \"Pending\" && (\n              <Button\n                style={{ marginBottom: 10 }}\n                variant=\"primary\"\n                disabled={loading}\n                className=\"modalButtons mx-2\"\n                onClick={() => createTest(newTestCreate)}\n              >\n                Create Test\n              </Button>\n            )} */}\n\n            <SignaturePad\n              appContext={appContext}\n              title=\"Patient Consent\"\n              consent={newTestCreate?.employee_demographics?.patientConsent}\n              getValidSignature={getValidSignature}\n              deleteSignature={deleteSignature}\n            />\n\n            <SignaturePad\n              appContext={appContext}\n              title=\"Physician Consent\"\n              consent={newTestCreate?.employee_demographics?.physicianConsent}\n              getValidSignature={getValidSignature}\n              deleteSignature={deleteSignature}\n            />\n            <Button\n              style={{ marginBottom: 10 }}\n              variant=\"primary\"\n              disabled={loading}\n              className=\"modalButtons\"\n              onClick={\n                orderIcdData?.some((item) => item?.description?.isBillable === false)\n                  ? () => setShowModal(true)\n                  : onHandleSave\n              }\n            >\n              {!newTestCreate.isNew ? \"Update\" : \"Create\"}\n            </Button>\n          </div>\n          {showConfirmation && (\n            <ConfirmationModal\n              show={showConfirmation}\n              title=\"Confirmation\"\n              message={\n                CONFIG.clientID === SEROCLINIX_ID || CONFIG.clientID === SEROCLINIX_TEST\n                  ? \"Do you want to create the tests now and print labels?\"\n                  : \"Do you also want to accession the associated tests now?\"\n              }\n              handleConfirm={handleConfirmation}\n              cssClass=\"seperateModal\"\n              isPreRegister\n            />\n          )}\n          {showModal && (\n            <ConfirmationModal\n              show={showModal}\n              title=\"Confirmation\"\n              message={`Do you want to ${!newTestCreate.isNew ? \"update\" : \"create\"} the order with non-billable ICD?`}\n              handleConfirm={handleNonBillableConfirmation}\n              cssClass=\"seperateModal\"\n              isPreRegister\n            />\n          )}\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default OrderTestModal;\n","import React, { useState, useEffect, useMemo, useContext } from \"react\";\nimport { Button, Form, Modal } from \"react-bootstrap\";\nimport { externalTypesOptions } from \"constant\";\nimport Select from \"react-select\";\nimport { parseBooleanValue } from \"utils\";\nimport ViewOnlyCheckBox from \"components/CheckBox/ViewOnlyCheckBox\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport API from \"api\";\nimport { setSelectedEmployeeForTest } from \"store/features/employees/employeesSlice\";\nimport { CONFIG } from \"../../constant\";\nimport { SYSTEM_TIME_ZONE } from \"../../utils\";\nimport moment from \"moment\";\nimport { selectLab, selectClient } from \"store/features/authentication/authenticationSelectors\";\nimport { showConfirmationModal } from \"store/features/general/generalAction\";\nimport { selectedDeviceSelector } from \"store/features/general/generalSelectors\";\nimport { AppContext } from \"context/app-context\";\nimport Loader from \"components/Loader/Loader\";\n\nconst TestSelectionModal = (props) => {\n  const { employeeForTests } = props;\n  const dispatch = useDispatch();\n  const [loading, setLoading] = useState(false);\n\n  const labObject = useSelector(selectLab);\n  const clientObject = useSelector(selectClient);\n  const appContext = useContext(AppContext);\n\n  const [error, setError] = useState(\"\");\n  const [testList, setTestList] = useState([]);\n  const [selectedTest, setSelectedTest] = useState([]);\n  const selectedDevice = useSelector(selectedDeviceSelector);\n\n  const getTestList = async (filtersData) => {\n    const apiData = await API.getTestTypes(filtersData);\n\n    setTestList(apiData);\n  };\n\n  useEffect(() => {\n    getTestList();\n  }, []);\n\n  const closeModal = () => {\n    dispatch(\n      showConfirmationModal({\n        showModal: false,\n        message: \"\",\n        title: \"\",\n        onConfirm: null,\n        onClose: null,\n      })\n    );\n  }\n\n  const createTests = async (isPrint) => {\n    closeModal();\n    setLoading(true);\n    const params = {\n      tests: selectedTest.map((t) => {\n        const tmp = { ...t };\n        delete tmp.targetRanges;\n        delete tmp._deleted;\n        delete tmp._lastChangedAt;\n        delete tmp._version;\n        delete tmp.totalTime;\n        delete tmp.createdByName;\n        delete tmp.firstAlert;\n        delete tmp.hrCounter;\n        delete tmp.secondAlert;\n        const baseSource = tmp.sources.slice(0, 1);\n        return {\n          ...tmp,\n          sources: baseSource,\n          selectedSource: baseSource.label,\n        };\n      }),\n      employees: employeeForTests.map((e) => {\n        return {\n          id: e.mdID,\n          provider: {\n            prov_id: e.referringProvider,\n            prov_name: e.referringPyhsician,\n            prov_npi: \"\",\n          },\n          siteID: e.siteID,\n          site_name: e.site_name,\n        };\n      }),\n      info: {\n        clientID: clientObject.id,\n        clientName: clientObject.name,\n        labID: CONFIG.whiteLabelID,\n        labName: labObject.name,\n        timezone: SYSTEM_TIME_ZONE,\n        orderDate: moment().toISOString(),\n        testOrderDate: moment().format(\"YYMMDD\"),\n        testDate: moment().toISOString(),\n        createSource: \"portal\",\n        shipped: isPrint\n      },\n    };\n\n    const employeeData = await API.createEmployeeTests(params);\n\n    if (isPrint) {\n      employeeData?.forEach((testData) => {\n        testData?.tests?.forEach((test) => {\n          if (selectedDevice) {\n            if (test.barcode) {\n              appContext.printBarcode(test);\n            }\n          }\n        });\n      });\n    }\n    setLoading(false);\n    handleClose();\n  };\n\n  const onHandleSave = async () => {\n    try {\n      if (selectedTest.length === 0) return;\n      const confirmationModalData = {\n        showModal: true,\n        onConfirm: () => createTests(true),\n        onClose: () => closeModal(),\n        title: \"Confirmation\",\n        isPreRegister: true,\n        message: \"Would you like to create the test ordered and print label?\",\n      };\n      dispatch(showConfirmationModal(confirmationModalData));\n    } catch (ex) {\n      console.log(\"Ex\", ex);\n    }\n  };\n\n  const handleClose = () => {\n    dispatch(setSelectedEmployeeForTest([]));\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        size=\"md\"\n        animation={true}\n        className=\"selectedTestsModal\"\n        onHide={() => {\n          handleClose();\n        }}\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Select Tests\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          {loading && <Loader />}\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Select Test </label>\n            <Select\n              className=\"w-100 siteSelector\"\n              options={testList.map((l) => {\n                return { value: l.id, label: l.name, ...l };\n              })}\n              isMulti\n              blurInputOnSelect={true}\n              defaultValue={null}\n              menuPlacement=\"auto\"\n              placeholder=\"Select Test\"\n              onChange={(e) => setSelectedTest(e)}\n            />\n          </div>\n\n          {error.length > 0 && <strong style={{ color: \"Red\" }}>{error}</strong>}\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n          <Button\n            disabled={selectedTest.length === 0}\n            style={{ marginBottom: 10 }}\n            variant=\"primary\"\n            className=\"modalButtons\"\n            onClick={onHandleSave}\n          >\n            Save\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default TestSelectionModal;\n","import React from \"react\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\n\nconst ShowAlertMessage = (props) => {\n  const { message, handleClose, info, error, success, cssClass, title = \"\" } = props;\n  return (\n    <div className=\"tcMatrix-custom-notification-wrapper\">\n      <SweetAlert\n        show={true}\n        info={info}\n        error={error}\n        success={success}\n        onConfirm={handleClose}\n        style={{ margin: \"0\" }}\n        title={title}\n        showConfirm={false}\n        hideOverlay\n        customClass={`${(success || error) && \"toast\"} ${info && \"infoToast\"}`}\n        timeout={2000}\n      >\n        {message}\n      </SweetAlert>\n    </div>\n  );\n};\n\nexport default ShowAlertMessage;\n","import api from \"api\";\nimport Loader from \"components/Loader/Loader\";\nimport MainTable from \"components/Table/MainTable\";\nimport { RESULT_SETTINGS_OPT_QUALITATIVE, CONFIG, UN_RESULT } from \"constant\";\nimport { SHOW_TEST_PERSONALIZE } from \"constants/personalization\";\nimport { AppContext } from \"context/app-context\";\nimport React, { useEffect, useState, useCallback, useRef, memo } from \"react\";\nimport { useContext } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport Select from \"react-select\";\nimport { customIsJsonString } from \"util/customLodash\";\nimport { customIsObject } from \"util/customLodash\";\nimport { generateRefInterval } from \"utils\";\nimport { parseTestUnit } from \"utils\";\nimport { parseTestResult, sortByAlphaOrder } from \"utils\";\n\nconst TestResultInput = memo(({ row, onUpdateTestResult }) => {\n  const inputRef = useRef(null);\n\n  const handleBlur = (event) => {\n    onUpdateTestResult(event.target.value, row.id);\n  };\n  return (\n    <td>\n      {row?.possibleValues && row?.possibleValues === \"Qualitative\" ? (\n        <Select\n          className=\"w-100 siteSelector\"\n          options={RESULT_SETTINGS_OPT_QUALITATIVE}\n          // options={resultTypes || RESULT_SETTINGS_OPT_QUALITATIVE}\n          blurInputOnSelect={true}\n          defaultValue={null}\n          menuPlacement=\"auto\"\n          value={customIsJsonString(row?.testResult) && JSON.parse(row?.testResult)}\n          placeholder=\"Select Result\"\n          onChange={(e) => onUpdateTestResult(e, row.id)}\n        />\n      ) : (\n        <input\n          className=\"w-100\"\n          ref={inputRef}\n          defaultValue={row?.testResult || \"\"}\n          onBlur={handleBlur}\n          onFocus={() => inputRef.current && inputRef.current.select()}\n          key={row?.id}\n        />\n      )}\n    </td>\n  );\n});\n\nconst ResultMarkInput = memo(({ row, onUpdateResultMark, disabled }) => {\n  const inputRef = useRef(null);\n\n  const handleBlur = (event) => {\n    onUpdateResultMark(event.target.value, row.id);\n  };\n\n  return (\n    <td>\n      <input\n        className=\"w-100 modalInput\"\n        ref={inputRef}\n        defaultValue={row?.resultValue || \"\"}\n        onBlur={handleBlur}\n        onFocus={() => inputRef.current && inputRef.current.select()}\n        key={row?.id}\n        disabled={disabled}\n        type=\"number\"\n        // placeholder=\"CT Value\"\n      />\n    </td>\n  );\n});\n\nconst AssignResultsTestModal = ({ handleClose, selectedTest, testTypeResult }) => {\n  const [resultsData, setResultsData] = useState([]);\n  const [isLoading, setIsLoading] = useState(false);\n  const [resultTypes, setResultTypes] = useState([]);\n  const [personalisation, setPersonalization] = useState(SHOW_TEST_PERSONALIZE);\n\n  const updatePersonalization = () => {\n    const testType = selectedTest?.typeOfTest || \"\";\n\n    if (testType === \"Quantitative\") {\n      const updatedPersonalization = SHOW_TEST_PERSONALIZE.filter((item) => item.itemKey !== \"testResultMarks\");\n\n      const updatedPersonalizationWithCtScore = updatedPersonalization.map((item) => {\n        if (item.itemKey === \"testResult\") {\n          return { ...item, title: \"Ct Value\" };\n        }\n        return item;\n      });\n      setPersonalization(updatedPersonalizationWithCtScore);\n      return;\n    }\n    setPersonalization(SHOW_TEST_PERSONALIZE);\n    return;\n  };\n\n  useEffect(() => {\n    updatePersonalization();\n  }, [selectedTest]);\n\n  const appContext = useContext(AppContext);\n\n  const getResultTypes = () => {\n    if (appContext?.clients?.length > 0) {\n      const client = appContext.clients.find((f) => f.id === CONFIG.clientID);\n      if (client && client.resultTypes) {\n        const results = sortByAlphaOrder(\n          client.resultTypes.results.map((m) => ({ value: m, label: m })),\n          \"label\"\n        );\n        // if (processed) {\n        //   results.unshift({ value: UN_RESULT, label: UN_RESULT });\n        // }\n\n        setResultTypes(results);\n      }\n    }\n  };\n\n  useEffect(() => {\n    getResultTypes();\n  }, [appContext.clients]);\n\n  const compareTestResults = (array1, array2) => {\n    if (!array1 || !array2) return true;\n    return (\n      array1.length !== array2.length ||\n      array1.some(\n        (item, index) =>\n          item?.testResult !== array2[index]?.testResult || item?.resultValue !== array2[index]?.resultValue\n      )\n    );\n  };\n\n  const formatSelectedTestResultDetails = (selectedTest) => {\n    const resDetail = selectedTest.resultDetails;\n\n    return resDetail.map((item) => {\n      const refInterval = generateRefInterval({ ranges: item?.ranges?.[0] ?? null });\n      return {\n        ...item,\n        refInterval,\n      };\n    });\n  };\n\n  useEffect(() => {\n    const resultRows = selectedTest?.resultDetails ? formatSelectedTestResultDetails(selectedTest) : testTypeResult;\n    // const resultRows = selectedTest?.resultDetails ? selectedTest?.resultDetails : testTypeResult;\n\n    setResultsData(resultRows.filter(Boolean));\n  }, [testTypeResult, selectedTest]);\n\n  const handleUpdateTestResult = useCallback((value, id) => {\n    setResultsData((currentResultsData) => {\n      const index = currentResultsData.findIndex((item) => item.id === id);\n      if (index !== -1) {\n        const newData = [...currentResultsData];\n        const resultTest = parseTestResult(newData[index].testResult);\n\n        newData[index] = {\n          ...newData[index],\n          resultValue: value.value === \"Detected\" ? newData[index]?.resultValue : \"\",\n          testResult: customIsObject(value) ? JSON.stringify(value) : value,\n        };\n\n        return newData;\n      }\n      return currentResultsData;\n    });\n  }, []);\n\n  const handleUpdateResultMark = useCallback((value, id) => {\n    setResultsData((currentResultsData) => {\n      const index = currentResultsData.findIndex((item) => item.id === id);\n      if (index !== -1) {\n        const newData = [...currentResultsData];\n        newData[index] = { ...newData[index], resultValue: value };\n        return newData;\n      }\n      return currentResultsData;\n    });\n  }, []);\n\n  const handleSave = async () => {\n    setIsLoading(true);\n    try {\n      const isEdit = compareTestResults(resultsData, selectedTest.resultDetails);\n      if (isEdit) {\n        const updatedObj = { id: selectedTest.id, resultDetails: resultsData };\n        await api.assingTestResult(updatedObj);\n      }\n      handleClose();\n      appContext.showSuccessMessage(`${selectedTest.name} result marked.`);\n    } catch (error) {\n      console.log(\"Error\", error);\n      appContext.showErrorMessage(`Error in ${selectedTest.name} result.`);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"testResult\") {\n      return <TestResultInput row={row} onUpdateTestResult={handleUpdateTestResult} resultTypes={resultTypes} />;\n    }\n    if (item.itemKey === \"unit\") {\n      return (\n        <td key={`unit_${item.id}`} style={{ textAlign: \"center\" }}>\n          {parseTestUnit(row.units)}\n        </td>\n      );\n    }\n    if (item.itemKey === \"testResultMarks\") {\n      const resultTest = parseTestResult(row.testResult);\n\n      return (\n        <ResultMarkInput row={row} onUpdateResultMark={handleUpdateResultMark} disabled={resultTest !== \"Detected\"} />\n      );\n\n      return <td key={`resultTest_${item.id}`}></td>;\n    }\n  };\n\n  return (\n    <Modal\n      show\n      animation={true}\n      onHide={() => {\n        handleClose();\n      }}\n      style={{ paddingLeft: \"0\" }}\n      centered\n      size=\"2xl\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Result for: {selectedTest.test_type}-{selectedTest.barcode}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body\n        style={{\n          paddingTop: 0,\n        }}\n      >\n        {isLoading && <Loader />}\n\n        <div style={{ background: \"#f2f0f0\", paddingLeft: \"4px\", paddingRight: \"4px\" }}>\n          <MainTable\n            cssClass=\"table-noresponsive\"\n            trDataWrapperHeader={\"trDataWrapperHeader\"}\n            customColumnCellRenderer={customRenderTD}\n            columns={personalisation}\n            rows={resultsData}\n          />\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button\n          style={{ marginBottom: 10 }}\n          variant=\"secondary\"\n          className=\"modalButtons\"\n          onClick={() => {\n            handleClose();\n          }}\n        >\n          Close\n        </Button>\n        <Button style={{ marginBottom: 10 }} variant=\"primary\" className=\"modalButtons\" onClick={handleSave}>\n          Save\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default AssignResultsTestModal;\n","import React, { useEffect, useState, useMemo } from \"react\";\nimport { Document, Page, Text, View, Image, StyleSheet, Font } from \"@react-pdf/renderer\";\nimport { formatDateOfBirthDOB, formatDateMDY, formatAddress } from \"utils\";\nimport ArialRegular from \"assets/fonts/arial.ttf\";\nimport ArialBold from \"assets/fonts/arial_bold.ttf\";\nimport tickIcon from \"assets/img/tick-icon.png\";\nimport { SYMPTOMS, logoImage } from \"constant\";\nimport { getAMPM } from \"utils\";\nimport { formatPhone, formatTimeFromDate, isLabImageExist } from \"utils\";\nimport { PROFILE_REQUESTED, CYTOLOGY, BIOPSY, PRESUMPTIVE_ELIGIBILITY } from \"biolabRequisitionFormConstant\";\nimport { PHY_SIGN } from \"constant\";\nimport { capitalizeLetter } from \"utils\";\nimport { patientInsuranceType } from \"utils\";\nimport api from \"api\";\nimport { isTestCodeMatch } from \"utils\";\nimport { getTestName } from \"utils\";\nimport moment from \"moment\";\nimport { formatReportDate } from \"utils\";\n\nFont.register({\n  family: \"Arial\",\n  fonts: [\n    { src: ArialRegular, fontWeight: \"normal\" },\n    { src: ArialBold, fontWeight: \"bold\" },\n  ],\n});\nconst BioLabBiologicalPDF = ({\n  test,\n  testNames,\n  lab,\n  signature,\n  demographics,\n  parseSrNoObjectRecviedDate,\n  site,\n  barcode,\n}) => {\n  const [labInfo, setLabInfo] = useState();\n\n  // console.log(\"Test\", test);\n\n  const { MICROBIOLOGY, INDIVIDUAL_REQUESTED } = testNames;\n\n  const testReceivedDate = useMemo(() => {\n    return formatReportDate(parseSrNoObjectRecviedDate(test));\n  }, [test]);\n\n  const [testCode, setTestCode] = useState(\"\");\n\n  const [hasImage, setHasImage] = useState(false);\n\n  const insuranceType = useMemo(() => {\n    return patientInsuranceType(test);\n  }, [demographics]);\n\n  const getTestCode = async () => {\n    try {\n      const response = await api.getTestTypesByID(test?.employee_demographics?.testTypeID);\n      setTestCode(response?.code);\n    } catch (error) {\n      console.log(\"Error\", error);\n    }\n  };\n\n  useEffect(() => {\n    getTestCode();\n  }, [test]);\n\n  const getDiagonosisCode = useMemo(() => {\n    const defaultDiagnosis = test?.test_type === \"PCR\" ? \"Z20822\" : \"\";\n    if (!test?.order) {\n      return defaultDiagnosis;\n    }\n\n    const { testsToDo: testDone } = test.order;\n\n    if (!testDone) return defaultDiagnosis;\n\n    let testsToDo = typeof testDone === \"string\" ? JSON.parse(testDone) : testDone;\n\n    const isArray = testsToDo && Array.isArray(testsToDo);\n    const testList = isArray ? testsToDo : testsToDo?.test;\n\n    const orderTestObj = testList.find(\n      (t) => t.label === test.test_type || t.id === test?.employee_demographics?.testTypeID\n    );\n\n    if (orderTestObj?.ictCodes) {\n      return orderTestObj.ictCodes.map((item) => item.code).join(\",\");\n    }\n    return defaultDiagnosis;\n  }, [test]);\n\n  const data = {\n    maintainAspectRatio: false,\n    responsive: false,\n    labels: [\"a\", \"b\", \"c\", \"d\"],\n    datasets: [\n      {\n        data: [300, 50, 100, 50],\n        backgroundColor: [\"red\", \"white\"],\n        hoverBackgroundColor: [\"red\", \"white\"],\n      },\n    ],\n  };\n\n  useEffect(() => {\n    if (signature) {\n      fetch(signature)\n        .then((response) => {\n          // Check if the response status is OK (200)\n          if (response.status === 200) {\n            setHasImage(true);\n          } else {\n            setHasImage(false);\n          }\n        })\n        .catch((error) => {\n          console.error(\"Error checking image:\", error);\n          setHasImage(false);\n        });\n    } else {\n      setHasImage(false);\n    }\n  }, [signature]);\n\n  useEffect(() => {\n    setLabInfo(test.lab);\n  }, [test]);\n\n  const today = new Date();\n\n  const time =\n    today.getHours() > 12\n      ? `${today.getHours() - 12}:${today.getMinutes()} PM`\n      : `${today.getHours()}:${today.getMinutes()} AM`;\n\n  const formatIDNumber = () => {\n    const val = demographics?.idNumber || demographics?.id_number || \"00000\";\n    return /^[0]+$/.test(val) ? \"\" : val;\n  };\n\n  const testsName = useMemo(() => getTestName(test), [test]);\n\n  return (\n    <Document title={`${demographics?.firstName} ${demographics?.lastName}`}>\n      <Page size=\"A4\" style={styles.page}>\n        <Text\n          style={{\n            textAlign: \"center\",\n            fontSize: 12,\n            fontWeight: \"bold\",\n          }}\n        >\n          General Lab Test Requisition\n        </Text>\n        <Image style={{ maxWidth: \"150px\", height: \"25px\", position: \"absolute\", top: 5, left: 50 }} src={barcode} />\n        <View style={{ flexDirection: \"row\" }}>\n          <View style={{ flex: 0.1, fontSize: 8, fontWeight: \"bold\", color: \"#566696\" }}>\n            <Text>C</Text>\n            <Text>L</Text>\n            <Text>I</Text>\n            <Text>E</Text>\n            <Text>N</Text>\n            <Text>T</Text>\n          </View>\n          <View style={{ flex: 1.5 }}>\n            <View style={{ flex: 5, flexDirection: \"row\", alignItems: \"center\" }}>\n              <View style={{ ...styles.infoCol }}>\n                <Text style={{ ...styles.label, fontSize: 9, margin: \"0px 2px\" }}>\n                  CLIENT #{site?.practiceID || \"\"} - {site?.name}\n                </Text>\n                <Text style={{ fontSize: 9, margin: \"2px 2px\" }}>\n                  {site.street}, {formatAddress(site)}\n                </Text>\n                <Text style={{ fontSize: 9, margin: \"0px 2px\" }}>\n                  Phone: {formatPhone(site.phone_number)} | Fax: {formatPhone(site.fax)}\n                </Text>\n                <Text style={{ fontSize: 9, marginTop: \"2px\", marginLeft: \"2px\" }}>\n                  PHYSICIAN: {site?.setting?.lab_director || labInfo?.lab_director}\n                </Text>\n              </View>\n            </View>\n          </View>\n          <View style={{ flex: 2, textAlign: \"right\", padding: \"2px 5px 5px 5px\", width: \"100%\" }}>\n            <Image\n              style={{\n                width: \"150px\",\n                marginLeft: \"auto\",\n                height: \"40px\",\n                objectFit: \"contain\",\n                textAlign: \"right\",\n              }}\n              src={isLabImageExist(labInfo) ? require(`assets/img/${labInfo?.id}.png`).default : logoImage}\n            />\n            <Text style={{ fontSize: 10, margin: \"2px 2px\" }}>{`${labInfo?.street || \"\"}, ${\n              labInfo?.city_state_zip || \"\"\n            }`}</Text>\n            <Text style={{ fontSize: 10, margin: \"0px 2px\" }}>\n              {`Phone: ${formatPhone(labInfo?.phone_number)} | Fax ${formatPhone(labInfo?.fax_number)}`}\n            </Text>\n          </View>\n        </View>\n\n        <View style={{ flexDirection: \"row\", width: \"100%\", backgroundColor: \"#566696\" }}>\n          <Text\n            style={{\n              color: \"white\",\n              textAlign: \"center\",\n              fontSize: 12,\n              fontWeight: \"bold\",\n              width: \"100%\",\n            }}\n          >\n            PATIENT'S INFORMATION\n          </Text>\n        </View>\n        <View\n          style={{\n            flexDirection: \"row\",\n            borderWidth: 1,\n            padding: 0,\n            borderBottomLeftRadius: \"5px\",\n            borderBottomRightRadius: \"5px\",\n          }}\n        >\n          <View style={{ flex: 1 }}>\n            <View>\n              <View style={{ flexDirection: \"row\", borderBottom: 1, justifyContent: \"space-between\", padding: \"2px\" }}>\n                <View>\n                  <Text style={{ ...styles.label }}>Last Name</Text>\n                  <Text style={{ ...styles.field }}>{demographics?.lastName}</Text>\n                </View>\n                <View>\n                  <Text style={{ ...styles.label }}>First Name</Text>\n                  <Text style={{ ...styles.field }}>{demographics?.firstName}</Text>\n                </View>\n                <View>\n                  <Text style={{ ...styles.label }}>Middle Initial</Text>\n                  <Text style={{ ...styles.field }}>{demographics?.middleName || \"\"}</Text>\n                </View>\n              </View>\n              <View style={{ padding: \"2px\", borderBottom: 1 }}>\n                <Text style={{ ...styles.label }}>Address</Text>\n                <Text style={{ ...styles.field }}>{demographics?.street || \"\"}</Text>\n              </View>\n              <View style={{ flexDirection: \"row\", borderBottom: 1, padding: \"2px\", justifyContent: \"space-between\" }}>\n                <View style={{ width: \"55%\" }}>\n                  <Text style={{ ...styles.label }}>City</Text>\n                  <Text style={{ ...styles.field }}>{demographics?.city || \"\"}</Text>\n                </View>\n                <View style={{ width: \"50px\" }}>\n                  <Text style={{ ...styles.label }}>State</Text>\n                  <Text style={{ ...styles.field }}>{demographics?.state || \"\"}</Text>\n                </View>\n                <View style={{ width: \"50px\" }}>\n                  <Text style={{ ...styles.label }}>Zip</Text>\n                  <Text style={{ ...styles.field }}>{demographics?.zip || \"\"}</Text>\n                </View>\n              </View>\n            </View>\n            <View\n              style={{\n                backgroundColor: \"#566696\",\n                width: \"100%\",\n                padding: 2,\n                flexDirection: \"row\",\n                maxHeight: \"40px\",\n              }}\n            >\n              <Text style={{ color: \"white\", textAlign: \"center\", ...styles.label }}>\n                BILLING INFORMATION. If bill is not complete & legible: client/doctor will be billed.\n              </Text>\n            </View>\n            <View style={{ flexDirection: \"row\", flex: 4.5 }}>\n              <View style={{ flex: 1, borderRightWidth: 1 }}>\n                <View style={{ flex: 1, padding: \"0px 10px\", textAlign: \"center\" }}>\n                  <View style={{ ...styles.billingList, marginBottom: \"3px\" }}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.CASH && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>CASH/CHECK</Text>\n                  </View>\n                  <View style={{ ...styles.billingList, marginBottom: \"3px\" }}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.CLIENT && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>DOCTOR</Text>\n                  </View>\n                  <View style={{ ...styles.billingList, marginBottom: \"3px\" }}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.INSURANCE && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>INSURANCE</Text>\n                  </View>\n                  <View style={{ ...styles.billingList, marginBottom: \"3px\" }}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }} />\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>IPA GROUP</Text>\n                  </View>\n                  <View style={{ ...styles.billingList, marginBottom: \"3px\" }}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.MEDICARE && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>MEDICARE</Text>\n                  </View>\n                  <View style={{ ...styles.billingList, marginBottom: \"3px\" }}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.MEDICADE && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>MEDI-CAL/CAID</Text>\n                  </View>\n                  <View style={{ ...styles.billingList, marginBottom: \"3px\" }}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {insuranceType?.PATIENT && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ fontSize: 8, paddingLeft: \"5px\" }}>PATIENT</Text>\n                  </View>\n                </View>\n              </View>\n              <View style={{ flex: 2 }}>\n                <View style={{ borderBottomWidth: 1, flex: 1, padding: \"2px\" }}>\n                  <Text style={{ ...styles.label, fontWeight: \"bold\", fontSize: 7 }}>INSURANCE COMPANY</Text>\n                  <Text style={{ fontSize: 7 }}>{demographics?.insurance_name || \"\"}</Text>\n                </View>\n                <View style={{ borderBottomWidth: 1, flex: 1, padding: \"2px\" }}>\n                  <Text style={{ ...styles.label, fontWeight: \"bold\", fontSize: 7 }}>ADDRESS</Text>\n                  <Text style={{ fontSize: 7 }} />\n                </View>\n                <View style={{ borderBottomWidth: 1, flex: 1, padding: \"2px\" }}>\n                  <Text style={{ ...styles.label, fontWeight: \"bold\", fontSize: 7 }}>CITY/STATE/ZIP</Text>\n                  <Text style={{ fontSize: 7 }} />\n                </View>\n                <View\n                  style={{\n                    borderBottomWidth: 1,\n                    flex: 1,\n                    padding: \"2px\",\n                    justifyContent: \"space-between\",\n                    flexDirection: \"row\",\n                    fontSize: 7,\n                  }}\n                >\n                  <View style={{}}>\n                    <Text style={{ ...styles.label, fontWeight: \"bold\", fontSize: 7 }}>SUBSCRIBER #</Text>\n                    <Text style={{ fontSize: 7 }}>{insuranceType.INSURANCE}</Text>\n                  </View>\n                  <View>\n                    <Text style={{ ...styles.label, fontWeight: \"bold\", fontSize: 7 }}>GROUP No.</Text>\n                    <Text style={{ fontSize: 7 }} />\n                  </View>\n                </View>\n                <View style={{ borderBottomWidth: 1, flex: 1, padding: \"2px\" }}>\n                  <Text style={{ ...styles.label, fontWeight: \"bold\", fontSize: 7 }}>MEDI-CAL No.</Text>\n                  <Text style={{ fontSize: 7 }}>{insuranceType.MEDICADE}</Text>\n                </View>\n                <View style={{ flex: 1, padding: \"2px\" }}>\n                  <Text style={{ ...styles.label, fontWeight: \"bold\", fontSize: 7 }}>MEDICARE No.</Text>\n                  <Text style={{ fontSize: 7 }}>{insuranceType.MEDICARE}</Text>\n                </View>\n              </View>\n            </View>\n            <View style={{ flexDirection: \"column\", flex: 1.2 }}>\n              <View style={{ width: \"100%\", backgroundColor: \"#566696\", flex: 0.5, paddingTop: \"3px\" }}>\n                <Text style={{ color: \"white\", ...styles.label, textAlign: \"center\" }}>\n                  ICD-10 CODE(S) / DX SYMPTOMS\n                </Text>\n              </View>\n              <View style={{ flexDirection: \"row\", flex: 1, backgroundColor: \"white\" }}>\n                <View style={{ flex: 1, padding: \"2px\", justifyContent: \"center\" }}>\n                  <Text style={{ ...styles.label, textAlign: \"center\" }}>{getDiagonosisCode}</Text>\n                </View>\n                <View style={{ borderLeft: 1, flex: 1, padding: \"2px\" }}>\n                  <Text style={{ ...styles.label }}></Text>\n                </View>\n                <View style={{ borderLeft: 1, flex: 1, padding: \"2px\" }}>\n                  <Text style={{ ...styles.label }}></Text>\n                </View>\n              </View>\n            </View>\n          </View>\n\n          <View style={{ flex: 1, borderLeft: 1 }}>\n            <View style={{ flexDirection: \"row\", padding: \"2px\" }}>\n              <View style={{ flex: 0.9 }}>\n                <Text style={{ ...styles.label }}>Date of Birth</Text>\n                <Text style={{ ...styles.field }}>{formatDateOfBirthDOB(demographics?.dob)}</Text>\n              </View>\n              <View style={{ flex: 0.6 }}>\n                <View style={{ alignItems: \"center\", flexDirection: \"row\" }}>\n                  <Text style={{ ...styles.label, marginRight: \"2px\" }}>Sex</Text>\n                  <View style={{ flexDirection: \"row\", marginLeft: \"6px\" }}>\n                    <View>\n                      <Text style={{ ...styles.label }}>M</Text>\n                      <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                        {demographics?.sex === \"M\" && (\n                          <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                    </View>\n                    <View style={{ marginLeft: \"6px\" }}>\n                      <Text style={{ ...styles.label }}>F</Text>\n                      <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                        {\" \"}\n                        {demographics?.sex === \"F\" && (\n                          <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                    </View>\n                    <View style={{ marginLeft: \"6px\" }}>\n                      <Text style={{ ...styles.label }}>X</Text>\n                      <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                        {\" \"}\n                        {demographics?.sex === \"X\" && (\n                          <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                    </View>\n                  </View>\n                </View>\n              </View>\n              <View style={{ flex: 1.1, marginLeft: \"10px\" }}>\n                <Text style={{ ...styles.label }}>Date Collected</Text>\n                <Text style={{ ...styles.field }}>{formatDateMDY(test.createdAt)}</Text>\n              </View>\n              <View style={{ flex: 1.6, flexDirection: \"row\", justifyContent: \"space-between\" }}>\n                <View>\n                  <Text style={{ ...styles.label }}>Time Collected</Text>\n                  <Text style={{ ...styles.field }}>{formatTimeFromDate(test?.createdAt)}</Text>\n                </View>\n                <View>\n                  <View style={{ flexDirection: \"row\", marginLeft: \"5px\", alignItems: \"center\" }}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {getAMPM(test?.createdAt) === \"AM\" && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ ...styles.label, textAlign: \"center\" }}>AM</Text>\n                  </View>\n                  <View style={{ flexDirection: \"row\", marginLeft: \"5px\", alignItems: \"center\" }}>\n                    <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                      {getAMPM(test?.createdAt) === \"PM\" && (\n                        <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                      )}\n                    </View>\n                    <Text style={{ ...styles.label, textAlign: \"center\" }}>PM</Text>\n                  </View>\n                </View>\n              </View>\n            </View>\n\n            <View style={{ flexDirection: \"row\", borderTop: 1 }}>\n              <View style={{ flex: 1, padding: \"2px\", flexDirection: \"row\" }}>\n                <Text style={{ ...styles.label, flex: 1 }}>{\"PATIENT \\n I.D.\"}</Text>\n                <Text style={{ ...styles.field, flex: 1 }}>{demographics.idNumber || test.empID || \"\"}</Text>\n              </View>\n              <View style={{ flex: 1, borderLeft: 1, padding: \"2px\", flexDirection: \"row\" }}>\n                <Text style={{ ...styles.label, flex: 1 }}>{\"COLLECTED By\"}</Text>\n                {/* <Text style={{ ...styles.field, flex: 1 }}>{test.tester_name || \"\"}</Text> */}\n                <Text style={{ ...styles.field, flex: 1 }}>Kwan Tse</Text>\n              </View>\n              <View style={{ flex: 1, borderLeft: 1, padding: \"2px\" }}>\n                <View style={{ flexDirection: \"row\", flex: 1 }}>\n                  <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }} />\n                  <Text style={{ ...styles.label, marginLeft: \"5px\" }}>TRAVEL</Text>\n                </View>\n                <View style={{ flexDirection: \"row\", flex: 1 }}>\n                  <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }} />\n                  <Text style={{ ...styles.label, marginLeft: \"5px\" }}>VENIPUNCTURE</Text>\n                </View>\n              </View>\n            </View>\n            <View style={{ flexDirection: \"row\", borderTop: 1 }}>\n              <View style={{ flex: 1, padding: \"2px\", flexDirection: \"row\" }}>\n                <Text style={{ ...styles.label, flex: 1 }}>{\"PATIENT'S PHONE NO.\"}</Text>\n                <Text style={{ ...styles.field, flex: 1 }}>{formatPhone(test.phoneNumber)}</Text>\n              </View>\n              <View style={{ flex: 1, borderLeft: 1, padding: \"2px\" }}>\n                <Text style={{ ...styles.label }}>FAX/ CALL RESULTS TO:</Text>\n              </View>\n              <View style={{ flex: 1, borderLeft: 1, padding: \"2px\" }}>\n                <View style={{ flexDirection: \"row\", flex: 1 }}>\n                  <Text style={{ ...styles.label }}>MILES TRAVELED:</Text>\n                </View>\n              </View>\n            </View>\n            <View style={{ flexDirection: \"row\", borderTop: 1 }}>\n              <View style={{ flex: 1, padding: \"2px\", flexDirection: \"row\" }}>\n                <Text style={{ ...styles.label, color: \"red\", flex: 1 }}>{\"PHYSICIAN \\n NAME\"}</Text>\n                <Text style={{ ...styles.field, flex: 1 }}>{labInfo?.lab_director || \"\"}</Text>\n              </View>\n              <View\n                style={{ flex: 1, flexDirection: \"row\", justifyContent: \"space-around\", borderLeft: 1, padding: \"2px\" }}\n              >\n                <View style={{ flexDirection: \"column\", alignItems: \"center\" }}>\n                  <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                    {demographics?.stat && (\n                      <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                    )}\n                  </View>\n                  <Text style={{ ...styles.label }}>STAT</Text>\n                </View>\n                <View style={{ flexDirection: \"column\", alignItems: \"center\" }}>\n                  <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                    {demographics?.stat && (\n                      <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                    )}\n                  </View>\n                  <Text style={{ ...styles.label }}>FAX</Text>\n                </View>\n                <View style={{ flexDirection: \"column\", alignItems: \"center\" }}>\n                  <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                    {demographics?.fax && <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />}\n                  </View>\n                  <Text style={{ ...styles.label }}>CALL</Text>\n                </View>\n                <View style={{ flexDirection: \"column\", alignItems: \"center\" }}>\n                  <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                    {demographics?.call && (\n                      <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                    )}\n                  </View>\n                  <Text style={{ ...styles.label }}>FASTING</Text>\n                </View>\n                <View style={{ flexDirection: \"column\", alignItems: \"center\" }}>\n                  <View style={{ borderWidth: 1, height: 8, width: 8, ...styles.label }}>\n                    {demographics?.fasting && (\n                      <Image src={tickIcon} style={{ height: 7, width: 7, textAlign: \"center\" }} />\n                    )}\n                  </View>\n                  <Text style={{ ...styles.label }}>RANDOM</Text>\n                </View>\n              </View>\n            </View>\n            <View style={{ flexDirection: \"row\", borderTop: 1 }}>\n              <View style={{ flex: 0.7, padding: \"2px\" }}>\n                <Text style={{ ...styles.label, color: \"red\" }}>{\"NPI\"}</Text>\n                <Text style={{ ...styles.field }}>1003876038</Text>\n              </View>\n              <View\n                style={{\n                  flex: 1.3,\n                  flexDirection: \"row\",\n                  borderLeft: 1,\n                  padding: \"2px\",\n                }}\n              >\n                <Text style={{ ...styles.label, flex: 1, color: \"red\" }}>{\"PHYSICIAN \\n SIGNATURE\"} </Text>\n\n                {/* <Image\n                  style={{\n                    textAlign: \"center\",\n                    marginHorizontal: 10,\n                    flex: 1,\n                    height: 20,\n                  }}\n                  src={PHY_SIGN}\n                /> */}\n              </View>\n            </View>\n            <View style={{ borderTop: 1, flexDirection: \"column\", padding: \"2px\" }}>\n              <View>\n                <Text style={{ ...styles.label, fontSize: 5.5 }}>\n                  <Text style={{ ...styles.label, color: \"red\", fontSize: 6 }}>ADVANCE BENEFICIARY NOTICE:</Text>\n                  if the medicare does not pay for{\" \"}\n                  <Text style={{ ...styles.label, fontSize: 6, borderBottom: 1, width: \"10px\" }}></Text> you may have to\n                  pay. Medicare does not pay for everything, even some care that you or your health care provider have\n                  good reason to think you need. We expect Medicare may not pay for the{\" \"}\n                  <Text style={{ borderBottom: 1 }}></Text>\n                </Text>\n              </View>\n              <View>\n                <Text style={{ ...styles.label, fontSize: 5.5 }}>\n                  <Text style={{ ...styles.label, color: \"red\", fontSize: 6 }}>ASSIGNMENT OF BENEFITS:</Text>\n                  it is a long established fact that a reader will be distracted by the readable content of a page when\n                  looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal\n                  distribution of letters, as opposed to using 'Content here, content here', making it look like\n                  readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their\n                  default model text,\n                </Text>\n              </View>\n              <View>\n                <Text style={{ ...styles.label, fontSize: 5.5 }}>\n                  <Text style={{ ...styles.label, color: \"red\", fontSize: 6 }}>APPEAL AUTHORIZATION:</Text>\n                  it is a long established fact that a reader will be distracted by the readable content of a page when\n                  looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal\n                  distribution of letters, as opposed to using 'Content here, content here', making it look like\n                  readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their\n                  default model text,\n                </Text>\n              </View>\n              <View style={{ borderBottom: 1, flexDirection: \"row\", justifyContent: \"space-between\" }}>\n                <Text style={{ ...styles.label, color: \"red\" }}>PATIENT SIGNATURE:</Text>\n                {hasImage && (\n                  <Image\n                    style={{\n                      height: 25,\n                      textAlign: \"center\",\n                      marginHorizontal: 10,\n                    }}\n                    src={signature}\n                  />\n                )}\n              </View>\n            </View>\n          </View>\n        </View>\n\n        <View style={{ flexDirection: \"row\", border: 1, borderRadius: \"5px\" }}>\n          <View style={{ flex: 2.5, borderBottom: 1 }}>\n            <View style={{ backgroundColor: \"#DE6262\", borderTopLeftRadius: \"5px\" }}>\n              <Text style={{ color: \"white\", ...styles.label, textAlign: \"center\" }}>\n                MARK <Image src={tickIcon} style={{ height: 7, width: 7 }} /> FOR PROFILE REQUESTED (See back for\n                components)\n              </Text>\n            </View>\n            <View style={{ flexDirection: \"row\" }}>\n              <View style={{ flex: 1 }}>\n                {PROFILE_REQUESTED[0].map((m, prIndex) => (\n                  <View\n                    style={{\n                      flexDirection: \"row\",\n                      borderBottom: 1,\n                      backgroundColor: isTestCodeMatch(test, m) ? \"yellow\" : \"white\",\n                    }}\n                    key={`pr0_${prIndex}`}\n                  >\n                    <View style={{ flex: 0.3, flexDirection: \"row\", padding: 2.3 }}>\n                      <View\n                        style={{\n                          borderWidth: 1,\n                          height: 6,\n                          width: 6,\n                        }}\n                      >\n                        {isTestCodeMatch(test, m) && (\n                          <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.internalCode}</Text>\n                    </View>\n                    <View\n                      style={{\n                        flex: 1,\n                        flexDirection: \"row\",\n                        justifyContent: \"space-between\",\n                        borderLeft: 1,\n                        padding: 2.3,\n                      }}\n                    >\n                      <Text style={{ ...styles.listField }}>{m.title}</Text>\n                      <Text style={{ ...styles.listField }}>{m.type}</Text>\n                    </View>\n                  </View>\n                ))}\n              </View>\n              <View style={{ flex: 1 }}>\n                {PROFILE_REQUESTED[1].map((m, prIndex) => (\n                  <View\n                    style={{\n                      flexDirection: \"row\",\n                      borderBottom: 1,\n                      borderLeft: 1,\n                      backgroundColor: isTestCodeMatch(test, m) ? \"yellow\" : \"white\",\n                    }}\n                    key={`pr1_${prIndex}`}\n                  >\n                    <View style={{ flex: 0.3, flexDirection: \"row\", padding: 2.3 }}>\n                      <View\n                        style={{\n                          borderWidth: 1,\n                          height: 6,\n                          width: 6,\n                        }}\n                      >\n                        {isTestCodeMatch(test, m) && (\n                          <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.internalCode}</Text>\n                    </View>\n                    <View\n                      style={{\n                        flex: 1,\n                        flexDirection: \"row\",\n                        justifyContent: \"space-between\",\n                        borderLeft: 1,\n                        padding: 2.3,\n                      }}\n                    >\n                      <Text style={{ ...styles.listField }}>{m.title}</Text>\n                      <Text style={{ ...styles.listField }}>{m.type}</Text>\n                    </View>\n                  </View>\n                ))}\n              </View>\n              <View style={{ flex: 1 }}>\n                {PROFILE_REQUESTED[2].map((m, prIndex) => (\n                  <View\n                    style={{\n                      flexDirection: \"row\",\n                      borderBottom: 1,\n                      borderLeft: 1,\n                      backgroundColor: isTestCodeMatch(test, m) ? \"yellow\" : \"white\",\n                    }}\n                    key={`pr2_${prIndex}`}\n                  >\n                    <View style={{ flex: 0.3, flexDirection: \"row\", padding: 2.3 }}>\n                      <View\n                        style={{\n                          borderWidth: 1,\n                          height: 6,\n                          width: 6,\n                        }}\n                      >\n                        {isTestCodeMatch(test, m) && (\n                          <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.internalCode}</Text>\n                    </View>\n                    <View\n                      style={{\n                        flex: 1,\n                        flexDirection: \"row\",\n                        borderLeft: 1,\n                        justifyContent: \"space-between\",\n                        padding: 1.3,\n                      }}\n                    >\n                      <Text style={{ ...styles.listField }}>{m.title}</Text>\n                      <Text style={{ ...styles.listField }}>{m.type}</Text>\n                    </View>\n                  </View>\n                ))}\n              </View>\n            </View>\n\n            <View style={{ backgroundColor: \"#DE6262\" }}>\n              <Text style={{ color: \"white\", ...styles.label, textAlign: \"center\" }}>\n                MARK <Image src={tickIcon} style={{ height: 7, width: 7 }} /> FOR INDIVIDUAL TEST(S) REQUESTED\n              </Text>\n            </View>\n            <View style={{ flexDirection: \"row\" }}>\n              <View style={{ flex: 1 }}>\n                {INDIVIDUAL_REQUESTED[0].map((m, irIndex) => (\n                  <View\n                    style={{\n                      flexDirection: \"row\",\n                      borderBottom: 1,\n                      backgroundColor: isTestCodeMatch(test, m) ? \"yellow\" : \"white\",\n                    }}\n                    key={`ir0_${irIndex}`}\n                  >\n                    <View style={{ flex: 0.3, flexDirection: \"row\", padding: 2 }}>\n                      <View\n                        style={{\n                          borderWidth: 1,\n                          height: 6,\n                          width: 6,\n                        }}\n                      >\n                        {isTestCodeMatch(test, m) && (\n                          <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.internalCode}</Text>\n                    </View>\n\n                    <View\n                      style={{\n                        flex: 1.5,\n                        flexDirection: \"row\",\n                        justifyContent: \"space-between\",\n\n                        padding: 2,\n                      }}\n                    >\n                      <Text style={{ ...styles.listField }}>{m.title}</Text>\n                      {m.sub && (\n                        <View style={{ flexDirection: \"row\" }}>\n                          <View style={{ borderWidth: 1, height: 6, width: 6, ...styles.label }} />\n                          <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.sub.internalCode}</Text>\n                          <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.sub.title}</Text>\n                        </View>\n                      )}\n                      <Text style={{ ...styles.listField }}>{m.type}</Text>\n                    </View>\n                  </View>\n                ))}\n              </View>\n\n              <View style={{ flex: 1 }}>\n                {INDIVIDUAL_REQUESTED[1].map((m, irIndex) => (\n                  <View\n                    style={{\n                      flexDirection: \"row\",\n                      borderBottom: 1,\n                      borderLeft: 1,\n                      backgroundColor: isTestCodeMatch(test, m) ? \"yellow\" : \"white\",\n                    }}\n                    key={`ir1_${irIndex}`}\n                  >\n                    <View style={{ flex: 0.3, flexDirection: \"row\", padding: 2 }}>\n                      <View\n                        style={{\n                          borderWidth: 1,\n                          height: 6,\n                          width: 6,\n                        }}\n                      >\n                        {isTestCodeMatch(test, m) && (\n                          <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.internalCode}</Text>\n                    </View>\n\n                    <View\n                      style={{\n                        flex: 1.5,\n                        flexDirection: \"row\",\n                        justifyContent: \"space-between\",\n\n                        padding: 2,\n                      }}\n                    >\n                      <Text style={{ ...styles.listField }}>{m.title}</Text>\n                      {m.sub && (\n                        <View style={{ flexDirection: \"row\" }}>\n                          <View style={{ borderWidth: 1, height: 6, width: 6, ...styles.label }} />\n                          <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.sub.internalCode}</Text>\n                          <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.sub.title}</Text>\n                        </View>\n                      )}\n                      <Text style={{ ...styles.listField }}>{m.type}</Text>\n                    </View>\n                  </View>\n                ))}\n              </View>\n              <View style={{ flex: 1 }}>\n                {INDIVIDUAL_REQUESTED[2].map((m, irIndex) => (\n                  <View\n                    style={{\n                      flexDirection: \"row\",\n                      borderBottom: 1,\n                      borderLeft: 1,\n                      backgroundColor: isTestCodeMatch(test, m) ? \"yellow\" : \"white\",\n                    }}\n                    key={`ir2_${irIndex}`}\n                  >\n                    <View style={{ flex: 0.3, flexDirection: \"row\", padding: 2.2 }}>\n                      <View style={{ borderWidth: 1, height: 6, width: 6 }}>\n                        {isTestCodeMatch(test, m) && (\n                          <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.internalCode}</Text>\n                    </View>\n                    <View\n                      style={{\n                        flex: 1.5,\n                        flexDirection: \"row\",\n                        justifyContent: \"space-between\",\n                        backgroundColor: m.internalCode === testCode ? \"black\" : \"\",\n                        padding: 2.2,\n                      }}\n                    >\n                      <Text style={{ ...styles.listField }}>{m.title}</Text>\n                      {m.sub && (\n                        <View style={{ flexDirection: \"row\" }}>\n                          <View style={{ borderWidth: 1, height: 6, width: 6, ...styles.label }} />\n                          <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.sub.internalCode}</Text>\n                          <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.sub.title}</Text>\n                        </View>\n                      )}\n                      <Text style={{ ...styles.listField }}>{m.type}</Text>\n                    </View>\n                  </View>\n                ))}\n              </View>\n            </View>\n          </View>\n\n          <View style={{ flex: 1, borderLeft: 1 }}>\n            <Text style={{ color: \"red\", textAlign: \"center\", ...styles.label, fontSize: 6, padding: 1 }}>\n              MICROBIOLOGY (CULTURES & SENSITIVITY){\" \"}\n            </Text>\n            <Text style={{ ...styles.label, fontSize: \"5\", padding: 1 }}>\n              SENSITIVITIES & IDS WILL BE PERFORMED IF INDICATED SOURCE:\n            </Text>\n            {MICROBIOLOGY.map((m, micIndex) => (\n              <View\n                style={{\n                  flexDirection: \"row\",\n                  borderBottom: 1,\n                  paddingLeft: 1,\n                  paddingRight: 1,\n                  backgroundColor: isTestCodeMatch(test, m) ? \"yellow\" : \"white\",\n                }}\n                key={`mic_${micIndex}`}\n              >\n                <View style={{ flex: 0.3, flexDirection: \"row\" }}>\n                  <View\n                    style={{\n                      borderWidth: 1,\n                      height: 6,\n                      width: 6,\n                      marginLeft: 1,\n                    }}\n                  >\n                    {isTestCodeMatch(test, m) && (\n                      <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                    )}\n                  </View>\n                  <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.internalCode}</Text>\n                </View>\n                <View style={{ flex: 1, flexDirection: \"row\", justifyContent: \"space-between\" }}>\n                  <Text style={{ ...styles.listField }}>{m.title}</Text>\n                  <Text style={{ ...styles.listField }}>{m.type}</Text>\n                </View>\n              </View>\n            ))}\n\n            <View>\n              <Text style={{ color: \"red\", textAlign: \"center\", ...styles.label, fontSize: 6 }}>CYTOLOGY</Text>\n              {CYTOLOGY[0].map((m, cytIndex) => (\n                <View\n                  style={{\n                    flexDirection: \"row\",\n                    paddingLeft: 1,\n                    paddingRight: 1,\n                  }}\n                  key={`cyt0_${cytIndex}`}\n                >\n                  {m.hasOwnProperty(\"internalCode\") && (\n                    <View style={{ flex: 0.3, flexDirection: \"row\" }}>\n                      <View\n                        style={{\n                          borderWidth: 1,\n                          height: 6,\n                          width: 6,\n                        }}\n                      >\n                        {isTestCodeMatch(test, m) && (\n                          <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                        )}\n                      </View>\n                      <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.internalCode}</Text>\n                    </View>\n                  )}\n                  <View\n                    style={{\n                      flex: 1,\n                      flexDirection: \"row\",\n                      justifyContent: \"space-between\",\n                    }}\n                  >\n                    <Text style={{ ...styles.listField }}>{m.title}</Text>\n                    <Text style={{ ...styles.listField, borderBottom: 1, flex: 0.6 }}></Text>\n                  </View>\n                </View>\n              ))}\n              <View style={{ flexDirection: \"row\", paddingLeft: 1, paddingRight: 1 }}>\n                <View style={{ flex: 1.2 }}>\n                  {CYTOLOGY[1].map((m, cytIndex) => (\n                    <View style={{ flexDirection: \"row\" }} key={`cyt1_${cytIndex}`}>\n                      <View style={{ borderWidth: 1, height: 6, width: 6, ...styles.label }} />\n\n                      <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.title}</Text>\n                    </View>\n                  ))}\n                </View>\n                <View style={{ flex: 1.5 }}>\n                  {CYTOLOGY[2].map((m, cytIndex) => (\n                    <View style={{ flexDirection: \"row\", marginLeft: \"2px\" }} key={`cyt2_${cytIndex}`}>\n                      <View style={{ borderWidth: 1, height: 6, width: 6, ...styles.label }} />\n\n                      <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.title}</Text>\n                    </View>\n                  ))}\n                </View>\n                <View style={{ flex: 1 }}>\n                  {CYTOLOGY[3].map((m, cytIndex) => (\n                    <View style={{ flexDirection: \"row\", marginLeft: \"4px\" }} key={`cyt3_${cytIndex}`}>\n                      <View style={{ borderWidth: 1, height: 6, width: 6, ...styles.label }} />\n\n                      <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.title}</Text>\n                    </View>\n                  ))}\n                </View>\n              </View>\n            </View>\n            <View\n              style={{\n                color: \"red\",\n                flexDirection: \"row\",\n                justifyContent: \"center\",\n                borderTop: 1,\n                alignItems: \"center\",\n              }}\n            >\n              <View style={{ borderWidth: 1, height: 7, width: 7, ...styles.label, padding: 1, borderColor: \"red\" }} />\n              <Text style={{ ...styles.label, fontSize: 6, padding: 1 }}>805 B I O P S Y </Text>\n            </View>\n            {BIOPSY.map((m, biIndex) => (\n              <View\n                style={{\n                  flexDirection: \"row\",\n                  justifyContent: \"space-between\",\n                  paddingLeft: 1,\n                  paddingRight: 1,\n                }}\n                key={`bi_${biIndex}`}\n              >\n                <Text style={{ ...styles.listField }}>{m.title}</Text>\n                <Text style={{ ...styles.listField, borderBottom: 1, flex: 0.6 }}></Text>\n              </View>\n            ))}\n            <Text style={{ color: \"red\", borderTop: 1, textAlign: \"center\", ...styles.label, fontSize: 6, padding: 1 }}>\n              PE (PRESUMPTIVE ELIGIBILITY)\n            </Text>\n            {PRESUMPTIVE_ELIGIBILITY.map((m, PEIndex) => (\n              <View\n                style={{\n                  flexDirection: \"row\",\n                  borderBottom: 1,\n                  paddingLeft: 1,\n                  paddingRight: 1,\n                  backgroundColor: isTestCodeMatch(test, m) ? \"yellow\" : \"white\",\n                }}\n                key={`PE_${PEIndex}`}\n              >\n                <View style={{ flex: 0.3, flexDirection: \"row\" }}>\n                  <View\n                    style={{\n                      borderWidth: 1,\n                      height: 6,\n                      width: 6,\n                      marginLeft: 1,\n                    }}\n                  >\n                    {isTestCodeMatch(test, m) && (\n                      <Image src={tickIcon} style={{ height: 6, width: 6, textAlign: \"center\" }} />\n                    )}\n                  </View>\n                  <Text style={{ ...styles.listField, marginLeft: \"2px\" }}>{m.internalCode}</Text>\n                </View>\n                <View style={{ flex: 1, flexDirection: \"row\", justifyContent: \"space-between\" }}>\n                  <Text style={{ ...styles.listField }}>{m.title}</Text>\n                  <Text style={{ ...styles.listField }}>{m.type}</Text>\n                </View>\n              </View>\n            ))}\n          </View>\n        </View>\n\n        <View style={{ border: 1, borderRadius: \"5px\", flex: 1, padding: 1, position: \"relative\" }}>\n          <View style={{ flexDirection: \"row\" }}>\n            <View style={{ flex: 4 }}>\n              <Text style={{ textTransform: \"uppercase\", ...styles.label }}>\n                special diagnosis and additional test requests | comments instructions\n              </Text>\n              <Text style={{ ...styles.label }}>Source: {capitalizeLetter(demographics?.swabtype)}</Text>\n              <Text style={{ ...styles.label }}>Lab Comments: {demographics?.comment}</Text>\n              <Text style={{ ...styles.label }}>clinical Comments: {demographics?.clinicalcomment}</Text>\n              {/* <Text style={{ ...styles.label }}>Tests: {testsName}</Text> */}\n            </View>\n            <View style={{ flex: 1.5 }}>\n              <Text style={{ ...styles.label, fontSize: 8 }}>Received Date: </Text>\n              <Text style={{ fontSize: 9 }}>\n                {/* {`${new Date(parseSrNoObjectRecviedDate(test, \"dateOnly\")).toDateString()} ${new Date(\n                  parseSrNoObjectRecviedDate(test, \"dateOnly\")\n                ).toLocaleString(\"en-US\", {\n                  hour: \"2-digit\",\n                  minute: \"2-digit\",\n                  hour12: true,\n                })}`} */}\n                {testReceivedDate}\n              </Text>\n              <Text style={{ ...styles.label, fontSize: 8 }}>Received By:</Text>\n              <Text style={{ fontSize: 9 }}>{test?.scanByLabUserName}</Text>\n            </View>\n          </View>\n\n          <Text\n            style={{\n              ...styles.label,\n              position: \"absolute\",\n              fontWeight: \"normal\",\n              bottom: \"0\",\n              paddingLeft: 2,\n              paddingRight: 2,\n              fontSize: 7,\n            }}\n          >\n            For any patient of any major insurance (including medical and medicare), only test that are MEDICALLY\n            NECESSARY for the DIAGNOSIS or TREATEMENT of the PATIENT.\n          </Text>\n        </View>\n\n        <View style={{ flexDirection: \"row\", marginTop: 2 }}>\n          <View>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                SST\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>\n              Serium SEP\n            </Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                LV\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>\n              lavender\n            </Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                GR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>gray</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                BL\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>BLUE</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                UR\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>urine</Text>\n          </View>\n          <View style={{ marginLeft: 2 }}>\n            <View style={{ flexDirection: \"row\", border: 1, alignItems: \"center\" }}>\n              <View style={{ borderRightWidth: 1, marginLeft: 2, height: 8, width: 8, ...styles.label }} />\n              <Text style={{ ...styles.label, marginLeft: \"2px\", fontSize: 6, paddingLeft: 2, paddingRight: 2 }}>\n                OTHERS.\n              </Text>\n            </View>\n            <Text style={{ textTransform: \"uppercase\", ...styles.label, fontSize: 6, textAlign: \"center\" }}>\n              OTHERS\n            </Text>\n          </View>\n        </View>\n      </Page>\n    </Document>\n  );\n};\n\nconst styles = StyleSheet.create({\n  page: {\n    flex: 1,\n    backgroundColor: \"white\",\n    paddingVertical: 10,\n    paddingHorizontal: 10,\n    fontFamily: \"Arial\", // Use the Arial font for the entire document\n  },\n  infoText: {\n    fontSize: 10,\n  },\n  patientInfo: {\n    flexDirection: \"row\",\n    justifyContent: \"space-around\",\n  },\n  infoCol: {\n    flexDirection: \"column\",\n    justifyContent: \"space-evenly\",\n  },\n  hr: {\n    borderLeftColor: \"black\",\n    borderLeftWidth: 1,\n    // width: \"100%\",\n  },\n  address: {\n    marginLeft: 50,\n    marginVertical: 20,\n  },\n  label: {\n    fontSize: 7,\n    fontWeight: \"bold\",\n  },\n  field: {\n    fontSize: 7,\n  },\n  listField: {\n    fontSize: 5.5,\n    fontWeight: \"bold\",\n  },\n  billingList: {\n    flex: 1,\n    flexDirection: \"row\",\n    alignItems: \"center\",\n  },\n});\n\nexport default BioLabBiologicalPDF;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport LabBarCode from \"components/BarCode/LabBarCode\";\nimport { PDFViewer } from \"@react-pdf/renderer\";\nimport html2canvas from \"html2canvas\";\nimport { getRecviedDateFromSrNo, getDemoGraphics, loadReqFormTest } from \"utils\";\nimport API from \"api\";\nimport BioLabBiologicalPDF from \"components/BioLabBiologicalPDF\";\nimport BioLabRequisitionPDF from \"components/BioLabRequisitionPDF\";\nimport { Storage } from \"aws-amplify\";\nimport { ALTA_NEW_ID } from \"constant\";\n\nconst RequisitionFormViewModal = ({ handleClose, requisitionView }) => {\n  const [isLoading, setIsLoading] = useState(true);\n  const [requisitionData, setRequisitionData] = useState(null);\n  const [barcodeImage, setBarcodeImage] = useState(\"\");\n  const [signature, setSignature] = useState();\n\n  const barcodeRef = useRef(null);\n\n  useEffect(() => {\n    async function fetchData() {\n      if (requisitionView.testID) {\n        try {\n          const data = await API.getTestByID(requisitionView.testID, \"test\");\n          const testNames = await loadReqFormTest({ clientID: data.clientID, getTestTypes: API.getTestTypes });\n          setRequisitionData({ test: data, testNames });\n          const siteID = data.baseSiteID || data.siteID;\n          const fileName = `${siteID}&&${data.employeeID}&&sig.png`;\n          const sigt = await Storage.get(fileName);\n          setSignature(sigt);\n        } catch (error) {\n          console.error(\"Failed to fetch or process data:\", error);\n        }\n      } else {\n        setRequisitionData(requisitionView);\n        setBarcodeImage(requisitionView.barcodeBase64);\n        setSignature(requisitionView.signature);\n      }\n      setIsLoading(false);\n    }\n    fetchData();\n  }, [requisitionView]);\n\n  useEffect(() => {\n    if (!isLoading && barcodeRef.current) {\n      html2canvas(barcodeRef.current)\n        .then((canvas) => {\n          const base64String = canvas.toDataURL();\n          setBarcodeImage(base64String);\n        })\n        .catch((error) => {\n          console.error(\"Error generating barcode image:\", error);\n        });\n    }\n  }, [isLoading]);\n\n  const showRequisitionForm = () => {\n    if (isLoading || !requisitionData) return <p>Loading...</p>;\n    const { test, testNames } = requisitionData;\n    const { lab, site } = test;\n    console.log(\"site\", site);\n    console.log(\"Lab\", lab);\n    const demographics = getDemoGraphics(test);\n    const renderProps = {\n      testNames,\n      barcode: barcodeImage,\n      test,\n      lab,\n      site,\n      signature,\n      demographics,\n      parseSrNoObjectRecviedDate: getRecviedDateFromSrNo,\n    };\n\n    const FormComponent = site && site.resultTemplate === \"covid\" ? BioLabRequisitionPDF : BioLabBiologicalPDF;\n\n    return (\n      <PDFViewer className=\"pdfWrapper\">\n        <FormComponent {...renderProps} />\n      </PDFViewer>\n    );\n  };\n\n  return (\n    <Modal show={true} onHide={handleClose} size={\"2x2\"} scrollable>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Requisition Form - {requisitionData?.test?.barcode}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body>\n        <div style={{ position: \"absolute\", left: \"-10000px\" }} ref={barcodeRef}>\n          <LabBarCode code={requisitionData?.test?.barcode} />\n        </div>\n        {showRequisitionForm()}\n      </Modal.Body>\n    </Modal>\n  );\n};\n\nexport default RequisitionFormViewModal;\n","import API from \"api\";\n\nexport const printPdfDocuments = async (pdfUrls) => {\n  try {\n    // Chain promises to print each PDF sequentially\n    await pdfUrls.reduce(async (previousPromise, url) => {\n      await previousPromise; // Wait for the previous PDF to be printed\n      // Fetch PDF blob\n      const eligData = await API.getFileExternalBlob(url);\n      const responseUrl = URL.createObjectURL(eligData);\n      // Print PDF document\n      await printPdf(responseUrl);\n      // Clean up\n      URL.revokeObjectURL(responseUrl);\n    }, Promise.resolve());\n  } catch (error) {\n    console.error(\"Error printing PDF documents:\", error);\n  }\n};\n\nexport const printPdf = (url) => {\n  return new Promise((resolve) => {\n    const iframe = document.createElement(\"iframe\");\n    iframe.style.position = \"absolute\";\n    iframe.style.width = \"0px\";\n    iframe.style.height = \"0px\";\n    iframe.style.border = \"none\";\n    iframe.src = url;\n\n    iframe.onload = () => {\n      try {\n        iframe.contentWindow.focus();\n        iframe.contentWindow.print();\n        resolve();\n      } catch (error) {\n        console.error(\"Error during print:\", error);\n      }\n    };\n\n    document.body.appendChild(iframe);\n  });\n};\n","import React, { useState } from \"react\";\nimport { Button, Modal, Card, Row, Col } from \"react-bootstrap\";\nimport { printPdfDocuments } from \"../../../src/util/printPdf\";\nimport { CONFIG } from \"constant\";\n\nconst ShowPrintOptions = (props) => {\n  const { tests, handleClose, printBarcode } = props;\n  const [selectedOption, setSelectedOption] = useState(\"\");\n  const options = [\n    { label: \"Label\", value: \"Label\" },\n    { label: \"Result\", value: \"Result\" },\n    { label: \"Requisition Form\", value: \"PDF\" },\n    { label: \"All\", value: \"All\" },\n  ];\n\n  const onChangeSelection = (option) => {\n    setSelectedOption(option);\n  };\n\n  const onHandlePrint = () => {\n    const urls = [];\n    const env = process.env.REACT_APP_ENV === \"dev\" ? \"test\" : \"live\";\n    const { clientID } = CONFIG;\n\n    tests?.forEach((test) => {\n      switch (selectedOption.label) {\n        case \"All\":\n          urls.push(\n            `results/${env}/${clientID}/${test.barcode}.pdf`,\n            `req_form/${env}/${clientID}/${test.barcode}.pdf`\n            // Add more URLs as needed\n          );\n          break;\n        case \"Result\":\n          urls.push(`results/${env}/${clientID}/${test.barcode}.pdf`);\n          break;\n        case \"Label\":\n          printBarcode(test);\n          break;\n        case \"Requisition Form\":\n          urls.push(`req_form/${env}/${clientID}/${test.barcode}.pdf`);\n          break;\n        default:\n          return; // Handle cases where no valid option is selected\n      }\n    });\n\n    if (urls.length > 0) {\n      printPdfDocuments(urls);\n      handleClose();\n    }\n  };\n\n  return (\n    <>\n      <Modal\n        onHide={() => {\n          handleClose();\n        }}\n        show\n        animation={true}\n        size={\"md\"}\n        className=\"printoptionsModalWidth  second-modal\"\n        scrollable\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Select Print Options\n          </Modal.Title>\n        </Modal.Header>\n\n        <Modal.Body className=\"marginTop0\">\n          <>\n            <div className=\"shows-screen-parent\">\n              <Row className=\"mx-0\">\n                <Col md=\"12\">\n                  <Card className=\"striped-tabled-with-hover bg-transparent\">\n                    <Card.Body className=\"table-full-width px-0 desktop-noScroll mt-0 pt-0\">\n                      <div className=\"custom-radio-btn-wrapper\">\n                        {options.map((option, index) => {\n                          return (\n                            <div key={index}>\n                              <input\n                                id={index}\n                                className=\"radio-custom\"\n                                name=\"radio-group\"\n                                type=\"radio\"\n                                value={option.value}\n                                onChange={() => onChangeSelection(option)}\n                              />\n                              <label htmlFor={index} className=\"radio-custom-label\">\n                                <div className=\"d-inline-flex flex-column align-items-start\">\n                                  <span className=\"fw-bold\">{option.label}</span>\n                                </div>\n                              </label>\n                            </div>\n                          );\n                        })}\n                      </div>\n                    </Card.Body>\n                  </Card>\n                </Col>\n              </Row>\n            </div>\n          </>\n        </Modal.Body>\n\n        <Modal.Footer className=\"flex-row-reverse\">\n          <Button className=\"modalButtons\" variant=\"primary\" onClick={onHandlePrint}>\n            Print\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default ShowPrintOptions;\n","import InputField from \"components/InputField/InputField\";\nimport Loader from \"components/Loader/Loader\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport { MESSAGE_MODES, MESSAGE_TEMPLATE_CATGORY } from \"constant\";\nimport { useEffect, useRef, useState, useMemo } from \"react\";\nimport { Button, Form, Modal } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Select from \"react-select\";\nimport { selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport { setMessage } from \"store/features/general/generalAction\";\nimport { createNewMessageTemplate, updateMessageTemplate } from \"store/features/messageTemplate/messageTemplateAction\";\nimport { selectedMessageTemplateSelector } from \"store/features/messageTemplate/messageTemplateSelectors\";\nimport {\n  setSelectedMessageTemplate,\n  setShowMessageTemplateModal,\n} from \"store/features/messageTemplate/messageTemplateSlice\";\n\nconst TEXT_FIELD_OPTIONS = [\n  { label: \"Client Name\", value: \"{client_name}\" },\n  { label: \"CPT Code\", value: \"{cpt_code}\" },\n  { label: \"ICD Code\", value: \"{icd_code}\" },\n  { label: \"Lab Address\", value: \"{lab_address}\" },\n  { label: \"Patient First Name\", value: \"{patient_first_name}\" },\n  { label: \"Patient Last Name\", value: \"{patient_last_name}\" },\n  { label: \"Password\", value: \"{password}\" },\n  { label: \"Payer Address\", value: \"{payer_address}\" },\n  { label: \"Payer Name\", value: \"{payer_name}\" },\n  { label: \"Provider Name\", value: \"{provider_name}\" },\n  { label: \"User Name\", value: \"{user_name}\" },\n];\n\nconst DEFAULT_MESSAGE_TEMPLATE = {\n  name: \"\",\n  subject: \"\",\n  category: \"\",\n  message: \"\",\n  isNew: true,\n};\n\nconst MessageTemplateModal = (props) => {\n  const { selectItem, cssClass } = props;\n\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const loginUser = useSelector(selectLoginUser);\n  const selectedMessageTemplate = useSelector(selectedMessageTemplateSelector);\n\n  const dispatch = useDispatch();\n  const textAreaRef = useRef();\n\n  const getObject = () => {\n    return {\n      ...(selectItem || DEFAULT_MESSAGE_TEMPLATE),\n    };\n  };\n\n  const [item, setItem] = useState(getObject());\n\n  useEffect(() => {\n    if (selectItem) setItem({ ...selectItem, ...item });\n  }, [selectItem]);\n\n  const insertAtCursor = (dropDownValue) => {\n    textAreaRef.current.focus;\n    if (textAreaRef.current) {\n      let startPos = textAreaRef.current.selectionStart;\n      let endPos = textAreaRef.current.selectionEnd;\n      textAreaRef.current.value =\n        textAreaRef.current.value.substring(0, startPos) +\n        dropDownValue +\n        textAreaRef.current.value.substring(endPos, textAreaRef.current.value.length);\n      const newPos = endPos + dropDownValue.length;\n      textAreaRef.current.setSelectionRange(newPos, newPos);\n      textAreaRef.current.focus();\n      setItem({ ...item, message: textAreaRef.current.value });\n    }\n  };\n  const fromDisclaimerModal = useMemo(\n    () => selectedMessageTemplate?.fromDisclaimer || selectedMessageTemplate?.fromDisclaimer === true,\n    [selectedMessageTemplate]\n  );\n\n  const handleSaveChange = async () => {\n    if (!item.name || !item.name.trim()) {\n      setError(\"Name is required\");\n      return;\n    }\n\n    if (!fromDisclaimerModal && (!item.category || !item.category.trim())) {\n      setError(\"Category is required\");\n      return;\n    }\n\n    if (!fromDisclaimerModal && (!item.subject || !item.subject.trim())) {\n      setError(\"Subject is required\");\n      return;\n    }\n\n    if (!item.message || !item.message.trim()) {\n      setError(\"Message is required\");\n      return;\n    }\n\n    setLoading(true);\n    let updated = false;\n    delete item[\"isNew\"];\n    delete item[\"fromDisclaimer\"];\n\n    const itemWithDefaultValues = {\n      ...item,\n      category: item.category ? item.category : \"invoices\",\n      subject: item.subject ? item.subject : item.name,\n    };\n\n    if (selectItem.isNew) {\n      dispatch(createNewMessageTemplate(itemWithDefaultValues));\n      updated = true;\n    } else {\n      dispatch(updateMessageTemplate(itemWithDefaultValues));\n      updated = true;\n    }\n\n    if (updated) {\n      dispatch(setMessage(\"Record save sucessfully\", MESSAGE_MODES.success));\n    } else {\n      dispatch(setMessage(\"Fail to save the Record\", MESSAGE_MODES.error));\n    }\n    setLoading(false);\n    dispatch(setSelectedMessageTemplate(null));\n    dispatch(setShowMessageTemplateModal(false));\n  };\n\n  const handleClose = () => {\n    dispatch(setSelectedMessageTemplate(null));\n    dispatch(setShowMessageTemplateModal(false));\n  };\n\n  return (\n    <Modal\n      show\n      backdrop=\"static\"\n      className={cssClass}\n      animation={true}\n      centered\n      size={\"lg\"}\n      onHide={() => {\n        handleClose();\n      }}\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {item.isNew ? \" New Message Template\" : \"Edit Message Template\"}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"createClientsWrapper\">\n          {/* <div className=\"leftSide\"> */}\n\n          <div className=\"row mb-3 w-100\">\n            <InputField\n              type=\"text\"\n              inputStyle=\"modalInput\"\n              labelStyle=\"text-capitalize\"\n              label=\"Name\"\n              value={item.name}\n              index=\"name\"\n              placeholder=\"Name\"\n              handleChange={(e) =>\n                setItem({\n                  ...item,\n                  name: e.target.value,\n                })\n              }\n            />\n            {!fromDisclaimerModal && (\n              <>\n                <Form.Group className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders mt-0 text-capitalize\">Category</label>\n                  <Select\n                    options={MESSAGE_TEMPLATE_CATGORY}\n                    className=\"w-100\"\n                    value={MESSAGE_TEMPLATE_CATGORY.find((opts) => opts.value === item.category)}\n                    menuPlacement=\"auto\"\n                    autoComplete=\"none\"\n                    onChange={(e) => setItem({ ...item, category: e.value })}\n                  />\n                </Form.Group>\n\n                <InputField\n                  type=\"text\"\n                  inputStyle=\"modalInput\"\n                  labelStyle=\"text-capitalize\"\n                  value={item.subject}\n                  index=\"subject\"\n                  placeholder=\"Enter Subject\"\n                  label=\"subject\"\n                  handleChange={(e) => {\n                    setItem({\n                      ...item,\n                      subject: e.target.value,\n                    });\n                  }}\n                />\n\n                <Form.Group className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders mt-0 text-capitalize\">Insert Field</label>\n                  <Select\n                    options={TEXT_FIELD_OPTIONS}\n                    className=\"w-100\"\n                    value={{ label: \"Insert field\", value: \"none\" }}\n                    menuPlacement=\"auto\"\n                    autoComplete=\"none\"\n                    onChange={(e) => insertAtCursor(e.value)}\n                  />\n                </Form.Group>\n              </>\n            )}\n\n            <div className=\"form-group-wrapper\">\n              <textarea\n                className=\"MessageInput w-100\"\n                placeholder=\"Message\"\n                ref={textAreaRef}\n                value={item.message}\n                onChange={(e) => setItem({ ...item, message: e.target.value })}\n              />\n            </div>\n          </div>\n\n          {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n        </div>\n        {loading && <Loader />}\n      </Modal.Body>\n      <Modal.Footer>\n        <Button variant=\"primary\" className=\"headerButton btn-fill\" onClick={() => handleClose()}>\n          Close\n        </Button>\n        <div>\n          <Button variant=\"secondary\" className=\"headerButton btn-fill\" onClick={handleSaveChange} disabled={loading}>\n            {item.isNew ? \"Create\" : \"Update\"}\n          </Button>\n        </div>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default MessageTemplateModal;\n","import { useDispatch, useSelector } from \"react-redux\";\nimport { selectedHospiceDetailsSelector } from \"store/features/checkEligibility/checkEligibilitySelectors\";\nimport {\n  messageTemplateModalSelector,\n  selectedMessageTemplateSelector,\n} from \"store/features/messageTemplate/messageTemplateSelectors\";\nimport { salesPersonAssigningSelector } from \"store/features/salePerson/salePersonSelector\";\nimport MessageTemplateModal from \"views/MessageTemplate/MessageTemplateModal\";\nimport ConfirmationModal from \"./Modal/ConfirmationModal\";\nimport { confirmationModalSelector } from \"store/features/general/generalSelectors\";\nimport { showConfirmationModal } from \"store/features/general/generalAction\";\n\nconst GlobalActionsComponent = () => {\n  const salesPersonAssigningDetails = useSelector(salesPersonAssigningSelector);\n  const selectedHospiceDetails = useSelector(selectedHospiceDetailsSelector);\n  const messageTemplateModal = useSelector(messageTemplateModalSelector);\n  const selectedMessageTemplate = useSelector(selectedMessageTemplateSelector);\n  const confirmationModal = useSelector(confirmationModalSelector);\n  \n  const dispatch = useDispatch();\n\n  const handleCloseModal = () => {\n    dispatch(\n      showConfirmationModal({\n        showModal: false,\n        message: \"\",\n        title: \"\",\n        onConfirm: null,\n      })\n    );\n  };\n  return (\n    <>\n      {/* {salesPersonAssigningDetails.showAssignModal && <AssignSalesPerson />} */}\n      {}\n      {selectedHospiceDetails?.showModal && <HospiceDetailsModal cssClass=\"seperateModal\" />}\n      {confirmationModal?.showModal && (\n        <ConfirmationModal\n          show={confirmationModal?.showModal}\n          title={confirmationModal.title}\n          message={confirmationModal.message}\n          handleConfirm={(confirm) => {\n            if (confirm) {\n              confirmationModal.onConfirm();\n            } else {\n              handleCloseModal();\n              if(confirmationModal?.onClose){\n                confirmationModal?.onClose();\n              }\n            }\n          }}\n          isPreRegister={confirmationModal?.isPreRegister}\n          handleClose={handleCloseModal}\n        />\n      )}\n\n      {messageTemplateModal && <MessageTemplateModal cssClass=\"seperateModal\" selectItem={selectedMessageTemplate} />}\n    </>\n  );\n};\n\nexport default GlobalActionsComponent;\n","import MainTable from \"components/Table/MainTable\";\nimport React, { useEffect, useState } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { ASSOCIATED_PANEL_PERSONALIZE } from \"constants/personalization\";\nimport { renderSourcesCell } from \"utils\";\nimport { customUniqBy } from \"util/customLodash\";\nimport Status from \"components/Status/Status\";\nimport { ORDER_STATUS } from \"constant\";\n\nconst TestAssociatedViewModal = ({ handleClose, associatedPanels, title }) => {\n  const [uniqueSources, setUniqueSources] = useState([]);\n\n  const [selectedSource, setSelectedSource] = useState(\"\");\n\n  const handelSourceSelect = (e) => {\n    const targetValue = e.target.value;\n    setSelectedSource(targetValue);\n  };\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"sources\") {\n      return renderSourcesCell(item, row);\n    }\n    if (item.itemKey === \"unit\") {\n      return <td key={`unit_${item.id}`}>{row?.units ? row?.units?.label : \"\"}</td>;\n    }\n    if (item.itemKey === \"status\") {\n      const testStatus = row[item.itemKey];\n      return (\n        <div className=\"star-icon-wrapper cursor-pointer text-center\">\n          <Status type=\"circle\" size=\"md\" title={testStatus} color={ORDER_STATUS[testStatus]} crossIcon={testStatus} />\n        </div>\n      );\n    }\n  };\n\n  const getUniqueSources = (data) => {\n    let allSources = data.flatMap((obj) => obj.sources);\n    return customUniqBy(allSources, \"label\");\n  };\n\n  useEffect(() => {\n    const uniqueData = getUniqueSources(associatedPanels);\n    setUniqueSources(uniqueData);\n  }, [associatedPanels]);\n\n  return (\n    <Modal\n      show\n      animation={true}\n      size=\"xl\"\n      onHide={() => {\n        handleClose();\n      }}\n      style={{ padding: \"0px\" }}\n      backdrop=\"static\"\n      centered\n      scrollable\n      className=\"second-modal\"\n    >\n      <Modal.Header closeButton style={{ marginBottom: \"0px\" }}>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {title}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ background: \"#F2F2F2\" }}>\n        <div>\n          {/* <RadioInput\n            options={uniqueSources}\n            handleRadioButtonChange={(e) => handelSourceSelect()}\n            input={selectedSource}\n          /> */}\n\n          {/* <p className=\"modalLineHeaders\">Sources</p>\n          <Select\n            className=\"w-100 siteSelector\"\n            options={uniqueSources}\n            blurInputOnSelect={true}\n            defaultValue={null}\n            menuPlacement=\"auto\"\n            placeholder=\"Select Source\"\n            onChange={handelSourceSelect}\n          /> */}\n        </div>\n\n        <p className=\"font-bold\" style={{ fontSize: \"18px\", marginBottom: \"5px\" }}>\n          Associated Panels\n        </p>\n\n        <MainTable\n          columns={ASSOCIATED_PANEL_PERSONALIZE}\n          rows={associatedPanels}\n          customColumnCellRenderer={customRenderTD}\n          trDataWrapperHeader={\"trDataWrapperHeader\"}\n          // widthToSkip={155}\n        />\n      </Modal.Body>\n    </Modal>\n  );\n};\n\nexport default TestAssociatedViewModal;\n","import api from \"api\";\nimport MainTable from \"components/Table/MainTable\";\nimport { CREATE_TEST_PANEL_PERSONALIZE } from \"constants/personalization\";\nimport { AppContext } from \"context/app-context\";\n\nimport React, { useContext } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { useDispatch } from \"react-redux\";\nimport { setGenericModalData, setGenericPathogenModalData } from \"store/features/genericTestsView/genericModalSlice\";\n\nconst GenericPanelTestView = ({ data }) => {\n  const TYPE_TO_SHOW = {\n    mainTest: \"Test\",\n    subTest: \"Patagen\",\n    panel: \"Panel\",\n  };\n\n  const context = useContext(AppContext);\n  const dispatch = useDispatch();\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"type\") {\n      return <td key={`type_${item.id}`}>{TYPE_TO_SHOW[row?.testType || row.type]}</td>;\n    }\n    if (item.itemKey === \"name\") {\n      return (\n        <td key={`name_${item.id}`} onClick={() => showPathogen(row)} style={{ cursor: \"pointer\" }}>\n          {row.name}\n        </td>\n      );\n    }\n  };\n\n  const handleClose = () => {\n    dispatch(setGenericModalData({ showGenericPanelModal: false }));\n  };\n\n  const showPathogen = async (row) => {\n    if (row.type === \"mainTest\") {\n      const panelData = await api.getTestTypesByID(row.id);\n\n      if (panelData.isAssociatedPanel) {\n        const objToDispatch = {\n          showGenericPathogenModal: true,\n          genericPathogenData: panelData.targetRanges,\n        };\n        dispatch(setGenericPathogenModalData(objToDispatch));\n      } else {\n        context.showErrorMessage(\"This test has not any pathogen..\");\n      }\n    }\n  };\n\n  return (\n    <Modal\n      show\n      // style={{ transform: \"translate(0, -30%)\" }}\n      animation={true}\n      onHide={handleClose}\n      centered\n      size={\"xl\"}\n      backdrop=\"static\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 h4\" id=\"contained-modal-title-vcenter\">\n          Panels / Test Details\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0, lineHeight: 0 }}></Modal.Body>\n\n      <div style={{ padding: \"20px\" }}>\n        <div style={{ background: \"#f2f0f0\", paddingLeft: \"4px\", paddingRight: \"4px\", marginTop: \"10px\" }}>\n          <MainTable\n            columns={CREATE_TEST_PANEL_PERSONALIZE}\n            rows={data}\n            customColumnCellRenderer={customRenderTD}\n            widthToSkip={155}\n          />\n        </div>\n      </div>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"modalButtons\" onClick={() => handleClose()}>\n          Close\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default GenericPanelTestView;\n","export const genericModalViewSelector = (state) => state.genericModal;\n","import MainTable from \"components/Table/MainTable\";\nimport { CREATE_TEST_GENERIC_PERSONALIZE } from \"constants/personalization\";\nimport React from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { useDispatch } from \"react-redux\";\nimport { setGenericPathogenModalData } from \"store/features/genericTestsView/genericModalSlice\";\nimport { renderSourcesCell } from \"utils\";\n\nconst GenericPathogenView = ({ data }) => {\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"sources\") {\n      return renderSourcesCell(item, row);\n    }\n  };\n  const dispatch = useDispatch();\n\n  const handleClose = () => {\n    dispatch(\n      setGenericPathogenModalData({\n        showGenericPathogenModal: false,\n        genericPathogenData: [],\n      })\n    );\n  };\n\n  return (\n    <Modal\n      show\n      // style={{ transform: \"translate(0, -30%)\" }}\n      animation={true}\n      onHide={() => handleClose()}\n      centered\n      size={\"xl\"}\n      backdrop=\"static\"\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0 h4\" id=\"contained-modal-title-vcenter\">\n          Pathogen Details\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ paddingTop: 0, lineHeight: 0 }}></Modal.Body>\n\n      <div style={{ padding: \"20px\" }}>\n        <div style={{ background: \"#f2f0f0\", paddingLeft: \"4px\", paddingRight: \"4px\", marginTop: \"10px\" }}>\n          <MainTable\n            columns={CREATE_TEST_GENERIC_PERSONALIZE}\n            rows={data}\n            customColumnCellRenderer={customRenderTD}\n            widthToSkip={155}\n          />\n        </div>\n      </div>\n\n      <Modal.Footer>\n        <Button variant=\"secondary\" className=\"modalButtons\" onClick={() => handleClose()}>\n          Close\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default GenericPathogenView;\n","import React, { useEffect, useState, useCallback, useRef, memo, useContext } from \"react\";\nimport Loader from \"components/Loader/Loader\";\nimport MainTable from \"components/Table/MainTable\";\nimport Select from \"react-select\";\nimport api from \"api\";\nimport { Button, Modal, Form } from \"react-bootstrap\";\nimport { PANEL_RESULT_TEST_PERSONALIZE } from \"constants/personalization\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { resetStateResultState } from \"store/features/resultsTests/resultsTestSlice\";\nimport { parseTestUnit } from \"utils\";\nimport { customIsJsonString } from \"util/customLodash\";\nimport { RESULT_SETTINGS_OPT_QUALITATIVE } from \"constant\";\nimport { TYPE_OF_TEST } from \"constant\";\nimport { customIsObject } from \"util/customLodash\";\nimport { AppContext } from \"context/app-context\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport {\n  getSpecificResultPersonalize,\n  getRangeByAgeOrGender,\n  getRowResultColor,\n  getOverallTestResultColor,\n  isJSONString,\n  toTitleCase,\n  generateSimpleRefIntervalFromRanges,\n} from \"utils\";\nimport { TEST_PANEL_TYPES } from \"constant\";\nimport { locationsSelectors } from \"store/features/locations/locationsSelectors\";\n\nimport { ANTIBIOTIC_RESISTANCE_TYPE } from \"constant\";\nimport InputField from \"components/InputField/InputField\";\n\nconst TestResultInput = memo(({ row, onUpdateTestResult }) => {\n  const inputRef = useRef(null);\n  const handleBlur = (event) => {\n    onUpdateTestResult(event.target.value, row.uniqueId);\n  };\n\n  const isQualitative = row?.possibleValues === TYPE_OF_TEST.QUALITATIVE;\n  const isAdditionalResistance = row.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ADDITIONAL;\n\n  return (\n    <td>\n      {isAdditionalResistance || !isQualitative ? (\n        <input\n          className=\"w-100 modalInput\"\n          ref={inputRef}\n          defaultValue={row?.testResult || \"\"}\n          onBlur={handleBlur}\n          onFocus={() => inputRef.current && inputRef.current.select()}\n          key={row?.id}\n          placeholder=\"Enter Result\"\n        />\n      ) : (\n        <Select\n          className=\"w-100 siteSelector\"\n          options={RESULT_SETTINGS_OPT_QUALITATIVE}\n          blurInputOnSelect={true}\n          defaultValue={null}\n          menuPlacement=\"auto\"\n          value={customIsJsonString(row?.testResult) && JSON.parse(row?.testResult)}\n          placeholder=\"Select Result\"\n          onChange={(e) => onUpdateTestResult(e, row.uniqueId)}\n        />\n      )}\n    </td>\n  );\n});\n\nconst ResultMarkInput = memo(({ row, onUpdateResultMark }) => {\n  const resultInputRef = useRef(null);\n  const handleBlur = (event) => {\n    onUpdateResultMark(event.target.value, row.uniqueId);\n  };\n\n  const isDisable = (testData) => {\n    if (!testData.testResult) {\n      return true;\n    }\n    if (isJSONString(testData.testResult)) {\n      const { value } = JSON.parse(testData.testResult);\n      return value !== \"Detected\";\n    }\n    return true;\n  };\n\n  return (\n    <td>\n      <input\n        className=\"w-100 modalInput\"\n        ref={resultInputRef}\n        defaultValue={row?.resultValue || \"\"}\n        onBlur={handleBlur}\n        onFocus={() => resultInputRef.current && resultInputRef.current.select()}\n        key={row?.id}\n        //disabled={row.typeOfTest === TYPE_OF_TEST.QUANTITATIVE || isDisable(row)}\n        type=\"number\"\n        placeholder=\"CT Value\"\n      />\n    </td>\n  );\n});\n\nconst PanelResultModal = ({ panelTests }) => {\n  const [isLoading, setIsLoading] = useState(false);\n\n  const [resultsData, setResultsData] = useState([]);\n\n  const [restatedNote, setRestatedNote] = useState(\"\");\n\n  const labLocations = useSelector(locationsSelectors);\n\n  const managePersonalization = (testData) => {\n    return getSpecificResultPersonalize(testData);\n  };\n\n  const appContext = useContext(AppContext);\n\n  const dispatch = useDispatch();\n\n  const addDefaultdResult = (list) => {\n    return list.map((item) => {\n      if (\n        item.typeOfTest === TYPE_OF_TEST.QUALITATIVE &&\n        item.antibioticResistanceType !== ANTIBIOTIC_RESISTANCE_TYPE.ADDITIONAL\n      ) {\n        return {\n          ...item,\n          testResult: JSON.stringify({ label: \"Not Detected\", value: \"Not Detected\" }),\n          resultColor: 'green'\n        };\n      }\n      return item;\n    });\n  };\n\n  const formatPanelTest = (panelData) => {\n    const { patientAge, patientGender } = panelData;\n\n    const formatedData = [];\n    formatedData.push({ panelName: panelData.panelName, showEmptyRow: true, uniqueId: uuidv4() });\n\n    panelData?.tests?.forEach((item) => {\n      if (\n        item.type === TEST_PANEL_TYPES.QUALITATIVE_WITH_PATHOGEN ||\n        item.type === TEST_PANEL_TYPES.QUANTITATIVE_WITH_PATHOGEN\n      ) {\n        let selectedRange = getRangeByAgeOrGender({\n          ranges: item.ranges,\n          gender: patientGender,\n          age: patientAge,\n        });\n\n        const reactiveTest = [\n          {\n            label: \"Resistance Genes\",\n            showEmptyRow: true,\n            antibioticDivider: true,\n          },\n        ];\n\n        const organismsTest = [\n          {\n            label: \"Bacteria/Organisms\",\n            showEmptyRow: true,\n            antibioticDivider: true,\n          },\n        ];\n\n        formatedData.push({\n          testName: item.name,\n          showEmptyRow: true,\n          uniqueId: uuidv4(),\n          type: item.type,\n          testTypeId: item.id,\n          code: item.code,\n        });\n\n        item.targetRanges.forEach((tItem) => {\n          const formattedTest = {\n            ...tItem,\n            uniqueId: uuidv4(),\n            mainTestTypeId: item.id,\n            refInterval: selectedRange\n              ? generateSimpleRefIntervalFromRanges({ ranges: selectedRange, testType: item.type })\n              : \"Not Detected\",\n            resultColor: \"green\",\n            ranges: selectedRange,\n          };\n\n          if (formattedTest.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ORGANISM) {\n            organismsTest.push(formattedTest);\n          }\n          if (formattedTest.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.RESISTANCE) {\n            reactiveTest.push(formattedTest);\n          }\n        });\n\n        if (organismsTest.length > 1) {\n          formatedData.push(...organismsTest);\n        }\n\n        if (reactiveTest.length > 1) {\n          formatedData.push(...reactiveTest);\n        }\n      } else if (\n        item.type === TEST_PANEL_TYPES.QUALITATIVE_WITHOUT_PATHOGEN ||\n        item.type === TEST_PANEL_TYPES.QUANTITATIVE_WITHOUT_PATHOGEN\n      ) {\n        const selectedRange = getRangeByAgeOrGender({\n          ranges: item.ranges,\n          gender: patientGender,\n          age: patientAge,\n        });\n\n        formatedData.push({\n          testName: item.name,\n          units: { label: item.units, value: item.units },\n          typeOfTest: item.typeOfTest,\n          id: item.id,\n          code: item.code,\n          uniqueId: uuidv4(),\n          refInterval: selectedRange\n            ? generateSimpleRefIntervalFromRanges({ ranges: selectedRange, testType: item.type })\n            : \"\",\n          type: item.type,\n          testTypeId: item.id,\n          ranges: [selectedRange],\n        });\n      }\n\n      if (item.type === TEST_PANEL_TYPES.PANEL) {\n        formatedData.push({ panelName: item.panelName, showEmptyRow: true, uniqueId: uuidv4() });\n\n        item.targetRanges.map((subItem) => {\n          if (\n            subItem.type === TEST_PANEL_TYPES.QUALITATIVE_WITH_PATHOGEN ||\n            subItem.type === TEST_PANEL_TYPES.QUANTITATIVE_WITH_PATHOGEN\n          ) {\n            formatedData.push({\n              testName: subItem.name,\n              code: subItem.code,\n              showEmptyRow: true,\n              uniqueId: uuidv4(),\n              type: subItem.type,\n              testTypeId: subItem.id,\n            });\n\n            const reactiveTestSub = [\n              {\n                label: \"Resistance Genes\",\n                showEmptyRow: true,\n                antibioticDivider: true,\n              },\n            ];\n\n            const organismsTestSub = [\n              {\n                label: \"Bacteria/Organisms\",\n                showEmptyRow: true,\n                antibioticDivider: true,\n              },\n            ];\n\n            subItem.targetRanges.forEach((item) => {\n              const formattedTest = {\n                ...item,\n                uniqueId: uuidv4(),\n                mainTestTypeId: subItem.id,\n                refInterval: selectedRange\n                  ? generateSimpleRefIntervalFromRanges({\n                      ranges: selectedRange,\n                      testType: item.type,\n                    })\n                  : \"Not Detected\",\n                resultColor: \"green\",\n                ranges: selectedRange,\n              };\n\n              if (formattedTest.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ORGANISM) {\n                organismsTestSub.push(formattedTest);\n              }\n              if (formattedTest.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.RESISTANCE) {\n                reactiveTestSub.push(formattedTest);\n              }\n            });\n\n            if (organismsTestSub.length > 1) {\n              formatedData.push(...organismsTestSub);\n            }\n\n            if (reactiveTestSub.length > 1) {\n              formatedData.push(...reactiveTestSub);\n            }\n          } else if (\n            subItem.type === TEST_PANEL_TYPES.QUALITATIVE_WITHOUT_PATHOGEN ||\n            subItem.type === TEST_PANEL_TYPES.QUANTITATIVE_WITHOUT_PATHOGEN\n          ) {\n            formatedData.push({\n              testName: subItem.name,\n              code: subItem.code,\n              uniqueId: uuidv4(),\n              units: { label: subItem.units, value: subItem.units },\n              typeOfTest: subItem.typeOfTest,\n              id: subItem.id,\n              type: subItem.type,\n              testTypeId: isubItemtem.id,\n            });\n          }\n        });\n      }\n    });\n\n    setResultsData(addDefaultdResult(formatedData.flat()));\n  };\n\n  const formatTestWithoutPanel = (panelData) => {\n    const { tests, ranges, patientAge, patientGender, type } = panelData;\n\n    const selectedRange = getRangeByAgeOrGender({ ranges, gender: patientGender, age: patientAge });\n\n    const formattedTest = { ...tests, uniqueId: uuidv4() };\n\n    if (selectedRange) {\n      const refInterval = generateSimpleRefIntervalFromRanges({\n        ranges: selectedRange,\n        testType: type,\n      });\n      formattedTest.ranges = [selectedRange];\n      formattedTest.refInterval = refInterval;\n    }\n\n    setResultsData(addDefaultdResult([formattedTest]));\n  };\n\n  const formatMainTestWithPanel = (panelData) => {\n    const { tests, ranges, patientAge, patientGender, type } = panelData;\n\n    let selectedRange = getRangeByAgeOrGender({ ranges, gender: patientGender, age: patientAge });\n\n    console.log(\"🚀 ~ formatMainTestWithPanel ~ selectedRange:\", selectedRange);\n    const formatedData = [];\n\n    formatedData.push({ panelName: panelData.testName, showEmptyRow: true, uniqueId: uuidv4() });\n\n    const reactiveTest = [\n      {\n        label: \"Resistance Genes\",\n        showEmptyRow: true,\n        antibioticDivider: true,\n      },\n    ];\n\n    const associatedTest = [];\n\n    const organismsTest = [\n      {\n        label: \"Bacteria/Organisms\",\n        showEmptyRow: true,\n        antibioticDivider: true,\n      },\n    ];\n\n    const additionalTest = [\n      {\n        label: \"Additional Test\",\n        showEmptyRow: true,\n        antibioticDivider: true,\n      },\n    ];\n\n    tests?.forEach((item) => {\n      const formattedTest = { ...item, uniqueId: uuidv4() };\n\n      selectedRange = item?.ranges\n        ? getRangeByAgeOrGender({ ranges: item.ranges, gender: patientGender, age: patientAge })\n        : selectedRange;\n\n      console.log(\"selectedRangeinloop\", selectedRange);\n\n      if (selectedRange) {\n        let refInterval = generateSimpleRefIntervalFromRanges({\n          ranges: selectedRange,\n          testType: type,\n          test: item,\n        });\n\n        refInterval = refInterval === \"0 - 0\" ? \"Not Estab.\" : refInterval;\n        formattedTest.ranges = [selectedRange];\n        formattedTest.refInterval = refInterval;\n      } else {\n        let refInterval =\n          item.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ADDITIONAL ||\n          item.possibleValues === TYPE_OF_TEST.QUANTITATIVE\n            ? \"Not Estab.\"\n            : \"Not Detected\";\n        formattedTest.refInterval = refInterval;\n      }\n\n      if (formattedTest.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ORGANISM) {\n        organismsTest.push(formattedTest);\n      }\n      if (formattedTest.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.RESISTANCE) {\n        reactiveTest.push(formattedTest);\n      }\n\n      if (formattedTest.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ADDITIONAL) {\n        additionalTest.push(formattedTest);\n      }\n\n      if (formattedTest.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ASSOCIATED) {\n        associatedTest.push(formattedTest);\n      }\n\n      // formatedData.push(formattedTest);\n    });\n\n    if (associatedTest.length > 0) {\n      formatedData.push(...associatedTest);\n    }\n    if (organismsTest.length > 1) {\n      formatedData.push(...organismsTest);\n    }\n\n    if (reactiveTest.length > 1) {\n      formatedData.push(...reactiveTest);\n    }\n    if (additionalTest.length > 1) {\n      formatedData.push(...additionalTest);\n    }\n    setResultsData(addDefaultdResult(formatedData));\n  };\n\n  useEffect(() => {\n    if (panelTests?.hasOwnProperty(\"resultDetails\")) {\n      const parsedJson = JSON.parse(panelTests.resultDetails);\n      setResultsData(parsedJson.map((item) => ({ ...item, uniqueId: uuidv4() })));\n\n      setRestatedNote(panelTests?.restatedNote || \"\");\n    } else if (panelTests.type === TEST_PANEL_TYPES.PANEL) {\n      formatPanelTest(panelTests);\n    } else if (\n      panelTests.type === TEST_PANEL_TYPES.QUALITATIVE_WITHOUT_PATHOGEN ||\n      panelTests.type === TEST_PANEL_TYPES.QUANTITATIVE_WITHOUT_PATHOGEN\n    ) {\n      formatTestWithoutPanel(panelTests);\n    } else if (\n      panelTests.type === TEST_PANEL_TYPES.QUALITATIVE_WITH_PATHOGEN ||\n      panelTests.type === TEST_PANEL_TYPES.QUANTITATIVE_WITH_PATHOGEN ||\n      panelTests.type === TEST_PANEL_TYPES.BOTH\n    ) {\n      formatMainTestWithPanel(panelTests);\n    }\n  }, [panelTests]);\n\n  const handleClose = () => {\n    dispatch(resetStateResultState());\n  };\n\n  const handleUpdateTestResult = useCallback((value, id) => {\n    setResultsData((currentResultsData) => {\n      const index = currentResultsData.findIndex((item) => item.uniqueId === id);\n\n      if (index !== -1) {\n        const newData = [...currentResultsData];\n\n        const color = getRowResultColor({ value, dataRow: newData[index] });\n        newData[index] = {\n          ...newData[index],\n          testResult: customIsObject(value) ? JSON.stringify(value) : value,\n          resultColor: color,\n          // resultValue: value.value === \"Detected\" ? newData[index]?.resultValue : \"\",\n        };\n\n        return newData;\n      }\n      return currentResultsData;\n    });\n  }, []);\n\n  const handleUpdateResultMark = useCallback((value, id) => {\n    setResultsData((currentResultsData) => {\n      const index = currentResultsData.findIndex((item) => item.uniqueId === id);\n\n      if (index !== -1) {\n        const newData = [...currentResultsData];\n        newData[index] = { ...newData[index], resultValue: value };\n        return newData;\n      }\n      return currentResultsData;\n    });\n  }, []);\n\n  const getResultValue = () => {\n    const isPathogenTest =\n      panelTests.type === TEST_PANEL_TYPES.QUALITATIVE_WITH_PATHOGEN ||\n      panelTests.type === TEST_PANEL_TYPES.QUANTITATIVE_WITH_PATHOGEN;\n\n    if (isPathogenTest) {\n      return \"Details\";\n    }\n\n    const resultValue = resultsData?.[0]?.testResult || null;\n\n    return customIsJsonString(resultValue) ? JSON.parse(resultValue).value : \"Details\";\n  };\n\n  const handleSaveResult = async () => {\n    const isAllResultMarked = resultsData.filter((r) => !r.showEmptyRow).every((t) => t.testResult);\n\n    if (!isAllResultMarked) {\n      appContext.showErrorMessage(`Please marked the complete result`);\n      return;\n    }\n\n    const resultColor = getOverallTestResultColor(resultsData);\n\n    // Get From App Context\n    const companyClient = appContext.clients[0];\n\n    const clientAutoRelease = !!companyClient?.setting?.autoRelease;\n\n    // Find From LabClinet\n    const show = labLocations.find((item) => item.id === panelTests.siteID);\n\n    const showAutoRelease = !!show?.setting?.autoRelease;\n\n    setIsLoading(true);\n    try {\n      let updatedObj = {\n        id: panelTests.id,\n        resultDetails: resultsData,\n        isAssociatedPanel: panelTests.isAssociatedPanel,\n        type: panelTests.type,\n        typeOfTest: panelTests.typeOfTest,\n        result: getResultValue(),\n        clientAutoRelease,\n        showAutoRelease,\n        resultColor,\n      };\n\n      if (panelTests?.hasOwnProperty(\"resultDetails\")) {\n        if (restatedNote.length === 0) {\n          appContext.showErrorMessage(`Add edit reasons.`);\n          setIsLoading(false);\n\n          return;\n        }\n        updatedObj[\"restatedNote\"] = restatedNote;\n      }\n\n      await api.assingTestResult(updatedObj);\n      setIsLoading(false);\n\n      handleClose();\n\n      appContext.showSuccessMessage(`Result marked.`);\n    } catch (error) {\n      console.log(\"error\", error);\n      appContext.showErrorMessage(`Error in result marking.`);\n    }\n  };\n\n  const customRenderTD = (item, row, index) => {\n    if (item.itemKey === \"testResult\") {\n      return row.showEmptyRow ? (\n        <td key={`empty_${item.id}`} style={{ textAlign: \"center\" }}></td>\n      ) : (\n        <TestResultInput row={row} onUpdateTestResult={handleUpdateTestResult} />\n      );\n    }\n\n    if (item.itemKey === \"unit\") {\n      return (\n        <td key={`unit_${item.id}`} style={{ textAlign: \"center\" }}>\n          {parseTestUnit(row?.units)}\n        </td>\n      );\n    }\n    if (item.itemKey === \"panelName\") {\n      return (\n        <td\n          key={`unit_${item.id}`}\n          style={{\n            fontWeight: row?.testName || row.hasOwnProperty(\"antibioticResistanceType\") ? \"600\" : \"700\",\n            paddingLeft: row?.testName || row.hasOwnProperty(\"antibioticResistanceType\") ? \"30px\" : \"10px\",\n            color: row?.testName || row.hasOwnProperty(\"antibioticResistanceType\") ? \"rgb(72 69 69)\" : \"black\",\n          }}\n        >\n          {row?.panelName || row?.name || row?.testName || \"\"}\n        </td>\n      );\n    }\n\n    if (item.itemKey === \"testResultMarks\") {\n      const isQualitative = row?.possibleValues === TYPE_OF_TEST.QUALITATIVE;\n      const isAdditionalResistance = row.antibioticResistanceType === ANTIBIOTIC_RESISTANCE_TYPE.ADDITIONAL;\n\n      if (row.showEmptyRow || isAdditionalResistance || !isQualitative) {\n        return <td key={`empty_${item.id}`} style={{ textAlign: \"center\" }}></td>;\n      }\n\n      return <ResultMarkInput row={row} onUpdateResultMark={handleUpdateResultMark} />;\n    }\n  };\n\n  const handeChangeEditReason = (e) => {\n    const { value } = e.target;\n    setRestatedNote(value);\n  };\n\n  return (\n    <Modal show animation={true} onHide={handleClose} style={{ paddingLeft: \"0\" }} centered size=\"3xl\">\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Result for - {panelTests?.barcode}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body\n        style={{\n          paddingTop: 0,\n        }}\n      >\n        {isLoading && <Loader />}\n\n        <div style={{ background: \"#f2f0f0\", paddingLeft: \"4px\", paddingRight: \"4px\" }}>\n          <MainTable\n            cssClass=\"table-noresponsive\"\n            trDataWrapperHeader={\"trDataWrapperHeader\"}\n            customColumnCellRenderer={customRenderTD}\n            columns={managePersonalization(resultsData)}\n            individualRowCssClass={(row) =>\n              row?.resultColor === \"red\" ? \"trDataWrapper isPositiveResult\" : \"trDataWrapper\"\n            }\n            // individualRowCssClass={(row) =>\n            //   customIsJsonString(row?.testResult) && JSON.parse(row?.testResult).label === \"Detected\"\n            //     ? \"trDataWrapper isPositiveResult\"\n            //     : \"trDataWrapper\"\n            // }\n            rows={resultsData}\n          />\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <div className=\"w-100\">\n          {panelTests?.hasOwnProperty(\"resultDetails\") && (\n            <div className=\"w-100 createClientsWrapper\">\n              <Form.Group className=\"form-group-wrapper w-100\">\n                <Form.Label className=\"mt-0 text-capitalize\">Edit Reason:</Form.Label>\n                <Form.Control\n                  className={`modalInput`}\n                  onChange={handeChangeEditReason}\n                  value={restatedNote}\n                  placeholder=\"Enter Edit Reason\"\n                  type=\"text\"\n                />\n              </Form.Group>\n            </div>\n          )}\n\n          <div className=\"d-flex justify-content-between mt-3\">\n            <Button\n              // style={{ marginBottom: 10 }}\n              variant=\"secondary\"\n              className=\"modalButtons\"\n              onClick={handleClose}\n            >\n              Close\n            </Button>\n\n            <Button\n              // style={{ marginBottom: 10 }}\n              variant=\"primary\"\n              className=\"modalButtons\"\n              onClick={handleSaveResult}\n            >\n              Save\n            </Button>\n          </div>\n        </div>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default PanelResultModal;\n","export const resultPdfSelector = (state) => state.resultPdf.pdfData;\n","import { Button, Card, Col, Modal, Row, Table } from \"react-bootstrap\";\nimport { useState, useEffect } from \"react\";\nimport { draggablePersonalizationLocalStorage, getValidName } from \"../../utils\";\nimport api from \"../../api\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setMessage } from \"store/features/general/generalAction\";\n\nimport FileInput from \"components/Input/FileInput\";\nimport ErrorMessage from \"components/Message/ErrorMessage\";\nimport Loader from \"components/Loader/Loader\";\nimport { authSelector, selectLoginUser } from \"store/features/authentication/authenticationSelectors\";\nimport { setTestForResult } from \"store/features/resultsTests/resultsTestSlice\";\nimport { MESSAGE_MODES } from \"../../constant\";\n\nconst ResultUploadModal = (props) => {\n  const { test, appContext } = props;\n  const [loading, setLoading] = useState(false);\n  const [file, setFile] = useState(\"\");\n  const [fileType, setFileType] = useState(\"\");\n  const [fileSize, setFileSize] = useState(\"\");\n  const [selectedFileName, setSelectedFileName] = useState(\"\");\n  const [error, setError] = useState(\"\");\n  const [externalID, setExternalID] = useState(test.referenceID || \"\");\n  \n  const dispatch = useDispatch();\n\n  const handleCancel = () => {\n    setFile(\"\");\n    setFileType(\"\");\n    setSelectedFileName(\"\");\n    setFileSize(\"\");\n  };\n\n\n  const handleUploadDocument = async () => {\n    try {\n\n      if(!file){\n        setError(\"Result file is required\");\n        return;\n      }\n\n      if(!externalID){\n        setError(\"External reference Id is required\");\n        return;\n      }\n\n      setLoading(true);\n      let fileName = `${test.sequenceNo}.pdf`;\n      if (file) {\n        fileName = await api.saveResultFile(fileName, file);\n      }\n\n      if (fileName) {\n        const resultObject = {\n          id: test.id,\n          referenceID: externalID.toUpperCase(),\n          resultPDF: fileName,\n        };\n        const response = await api.assingTestResult(resultObject);\n\n        setLoading(false);\n        if (response.status) {\n          dispatch(setMessage(\"Result Uploaded Successfully\", MESSAGE_MODES.success));\n          dispatch(setTestForResult(null));\n        } else {\n          dispatch(setMessage(\"Result upload fail\", MESSAGE_MODES.error));\n        }\n      } else {\n        dispatch(setMessage(\"Result upload fail\", MESSAGE_MODES.error));\n      }\n\n      return null;\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Error createDocumentAsync:-\", err);\n    }\n  };\n\n  const handleClose = () => {\n    dispatch(setTestForResult(null));\n  };\n\n  return (\n    <Modal show backdrop=\"static\" animation={true} onHide={() => handleClose()} centered size={\"md\"} keyboard={false}>\n      {loading && <Loader />}\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Result Upload: {`Barcode : ${test.barcode}`}\n        </Modal.Title>{\" \"}\n      </Modal.Header>\n\n      <Modal.Body className=\"table-full-width desktop-noScroll\">\n        <div className=\"row\">\n          <div className=\"col-sm-12 testAdmin createClientsWrapper\">\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">External Reference ID:  <span className=\"fw-bold fs-6 maroon\">*</span> </label>\n              <input\n                className=\"modalInput\"\n                placeholder=\"External Reference ID\"\n                value={externalID}\n                onChange={(e) => setExternalID(e.target.value)}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"modalLineHeaders\">Result File: <span className=\"fw-bold fs-6 maroon\">*</span>  </label>\n              <FileInput\n                setFileType={setFileType}\n                setFile={setFile}\n                setSelectedFileName={setSelectedFileName}\n                selectedFileName={selectedFileName}\n                setFileSize={setFileSize}\n              />\n            </div>\n          </div>\n        </div>\n      </Modal.Body>\n      <div className=\"px-4 my-2\" style={{ height: \"2vh\" }}>\n        {error && <ErrorMessage error={error} handleChange={() => setError(\"\")} />}\n      </div>\n      <Modal.Footer className=\"my-2 d-flex justify-content-between\">\n        <Button variant=\"primary\" className=\"modalButtons headerButton btn-fill\" onClick={() => handleClose()}>\n          Cancel\n        </Button>\n        <Button variant=\"secondary\" className=\"modalButtons headerButton btn-fill\" onClick={handleUploadDocument}>\n          Upload\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ResultUploadModal;\n","export const dymoSmallLabel = ({ name, dob, collectionDate, swabtypeStr, barcode, codeToRender }) => {\n  return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<DesktopLabel Version=\"1\">\n  <DYMOLabel Version=\"4\">\n    <Description>DYMO Label</Description>\n    <Orientation>Landscape</Orientation>\n    <LabelName>SmallS0929120</LabelName>\n    <InitialLength>0</InitialLength>\n    <BorderStyle>SolidLine</BorderStyle>\n    <DYMORect>\n      <DYMOPoint>\n        <X>0.1</X>\n        <Y>0.05666666</Y>\n      </DYMOPoint>\n      <Size>\n        <Width>0.84</Width>\n        <Height>0.9033334</Height>\n      </Size>\n    </DYMORect>\n    <BorderColor>\n      <SolidColorBrush>\n        <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n      </SolidColorBrush>\n    </BorderColor>\n    <BorderThickness>1</BorderThickness>\n    <Show_Border>False</Show_Border>\n    <HasFixedLength>False</HasFixedLength>\n    <FixedLengthValue>0</FixedLengthValue>\n    <DynamicLayoutManager>\n      <RotationBehavior>ClearObjects</RotationBehavior>\n      <LabelObjects>\n        <TextObject>\n          <Name>TextObject0</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Center</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Center</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${swabtypeStr}</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>5</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.1</X>\n              <Y>0.05677842</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.8203382</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <BarcodeObject>\n          <Name>BarcodeObject0</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"1\" G=\"1\" B=\"1\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <BarcodeFormat>Code39CS</BarcodeFormat>\n          <Data>\n            <DataString>${barcode}</DataString>\n          </Data>\n          <HorizontalAlignment>Center</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <Size>Large</Size>\n          <TextPosition>Bottom</TextPosition>\n          <FontInfo>\n            <FontName>Amiri</FontName>\n            <FontSize>10</FontSize>\n            <IsBold>False</IsBold>\n            <IsItalic>False</IsItalic>\n            <IsUnderline>False</IsUnderline>\n            <FontBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FontBrush>\n          </FontInfo>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.1007631</X>\n              <Y>0.6224202</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.8333951</Width>\n              <Height>0.3375799</Height>\n            </Size>\n          </ObjectLayout>\n        </BarcodeObject>\n        <TextObject>\n          <Name>TextObject1</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>CL:</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>5</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.1000108</X>\n              <Y>0.1492557</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.1267953</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject2</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${collectionDate}</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>5</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.2711418</X>\n              <Y>0.148281</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.6649425</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject3</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>DOB:</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>5</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.1005709</X>\n              <Y>0.2287352</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.2093095</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject4</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${dob}</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>5</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.31</X>\n              <Y>0.2287352</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.63</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject5</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Top</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Top</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${name}</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>5</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.1067692</X>\n              <Y>0.3363335</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.8332309</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject6</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${codeToRender?.label} ${codeToRender?.value}</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>5</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.10000001</X>\n              <Y>0.40925026</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.63</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n      </LabelObjects>\n    </DynamicLayoutManager>\n  </DYMOLabel>\n  <LabelApplication>Blank</LabelApplication>\n  <DataTable>\n    <Columns></Columns>\n    <Rows></Rows>\n  </DataTable>\n</DesktopLabel>`;\n};\n\nexport const dymoMediumLabel = ({ name, dob, collectionDate, swabtypeStr, barcode, codeToRender }) => {\n  return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<DesktopLabel Version=\"1\">\n  <DYMOLabel Version=\"4\">\n    <Description>DYMO Label</Description>\n    <Orientation>Landscape</Orientation>\n    <LabelName>Addresss0722370</LabelName>\n    <InitialLength>0</InitialLength>\n    <BorderStyle>SolidLine</BorderStyle>\n    <DYMORect>\n      <DYMOPoint>\n        <X>0.23</X>\n        <Y>0.06</Y>\n      </DYMOPoint>\n      <Size>\n        <Width>3.21</Width>\n        <Height>0.9966666</Height>\n      </Size>\n    </DYMORect>\n    <BorderColor>\n      <SolidColorBrush>\n        <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n      </SolidColorBrush>\n    </BorderColor>\n    <BorderThickness>1</BorderThickness>\n    <Show_Border>False</Show_Border>\n    <HasFixedLength>False</HasFixedLength>\n    <FixedLengthValue>0</FixedLengthValue>\n    <DynamicLayoutManager>\n      <RotationBehavior>ClearObjects</RotationBehavior>\n      <LabelObjects>\n        <TextObject>\n          <Name>TextObject6</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${name}</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.23</X>\n              <Y>0.06000737</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>1.1524637</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject1</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>DOB:</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.2305964</X>\n              <Y>0.2185764</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.3303662</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject2</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${dob}</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.617096</X>\n              <Y>0.2222113</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>1.283494</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject3</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>CL:</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.2300007</X>\n              <Y>0.3618811</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.2099537</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject4</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${collectionDate}</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.6176232</X>\n              <Y>0.3617603</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.9407026</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject5</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${swabtypeStr}</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>1.625603</X>\n              <Y>0.3617603</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>1.762156</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject47</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>-</Text>\n                <FontInfo>\n                  <FontName>Helvetica</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>1.481619</X>\n              <Y>0.3617603</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.125</Width>\n              <Height>0.125</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <BarcodeObject>\n          <Name>BarcodeObject0</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"1\" G=\"1\" B=\"1\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <BarcodeFormat>Code39CS</BarcodeFormat>\n          <Data>\n            <DataString>${barcode}</DataString>\n          </Data>\n          <HorizontalAlignment>Center</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <Size>Large</Size>\n          <TextPosition>Bottom</TextPosition>\n          <FontInfo>\n            <FontName>Amiri</FontName>\n            <FontSize>10</FontSize>\n            <IsBold>False</IsBold>\n            <IsItalic>False</IsItalic>\n            <IsUnderline>False</IsUnderline>\n            <FontBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FontBrush>\n          </FontInfo>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.23</X>\n              <Y>0.5352527</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>3.02382</Width>\n              <Height>0.4983334</Height>\n            </Size>\n          </ObjectLayout>\n        </BarcodeObject>\n        <TextObject>\n          <Name>TextObject0</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Center</HorizontalAlignment>\n          <VerticalAlignment>Top</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Center</HorizontalAlignment>\n            <VerticalAlignment>Top</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${codeToRender?.label} ${codeToRender?.value}</Text>\n                <FontInfo>\n                  <FontName>Segoe UI</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>False</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>2.4849064</X>\n              <Y>0.06000738</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.9030106</Width>\n              <Height>0.1496025</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n      </LabelObjects>\n    </DynamicLayoutManager>\n  </DYMOLabel>\n  <LabelApplication>Blank</LabelApplication>\n  <DataTable>\n    <Columns></Columns>\n    <Rows></Rows>\n  </DataTable>\n</DesktopLabel>`;\n};\n\nexport const dymo30336Label = ({ name, dob, collectionDate, swabtypeStr, barcode, codeToRender }) => {\n  return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<DesktopLabel Version=\"1\">\n  <DYMOLabel Version=\"4\">\n    <Description>DYMO Label</Description>\n    <Orientation>Landscape</Orientation>\n    <LabelName>ReturnAddressInt</LabelName>\n    <InitialLength>0</InitialLength>\n    <BorderStyle>SolidLine</BorderStyle>\n    <DYMORect>\n      <DYMOPoint>\n        <X>0.09</X>\n        <Y>0.056666665</Y>\n      </DYMOPoint>\n      <Size>\n        <Width>1.9766666</Width>\n        <Height>0.90333337</Height>\n      </Size>\n    </DYMORect>\n    <BorderColor>\n      <SolidColorBrush>\n        <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n      </SolidColorBrush>\n    </BorderColor>\n    <BorderThickness>1</BorderThickness>\n    <Show_Border>False</Show_Border>\n    <HasFixedLength>False</HasFixedLength>\n    <FixedLengthValue>0</FixedLengthValue>\n    <DynamicLayoutManager>\n      <RotationBehavior>ClearObjects</RotationBehavior>\n      <LabelObjects>\n        <TextObject>\n          <Name>TextObject0</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${name}</Text>\n                <FontInfo>\n                  <FontName>Segoe UI</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>True</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.09</X>\n              <Y>0.056666695</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>1.0590103</Width>\n              <Height>0.21555778</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject2</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>DOB: ${dob}</Text>\n                <FontInfo>\n                  <FontName>Segoe UI</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>True</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.09</X>\n              <Y>0.23041663</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>1.0126467</Width>\n              <Height>0.14958394</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <TextObject>\n          <Name>TextObject3</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>CL: ${collectionDate} - ${swabtypeStr}</Text>\n                <FontInfo>\n                  <FontName>Segoe UI</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>True</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.09000002</X>\n              <Y>0.32791734</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>1.9377794</Width>\n              <Height>0.19263886</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n        <BarcodeObject>\n          <Name>BarcodeObject0</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"1\" G=\"1\" B=\"1\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <BarcodeFormat>Code128Auto</BarcodeFormat>\n          <Data>\n            <DataString>${barcode}</DataString>\n          </Data>\n          <HorizontalAlignment>Center</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <Size>AutoFit</Size>\n          <TextPosition>Bottom</TextPosition>\n          <FontInfo>\n            <FontName>Arial</FontName>\n            <FontSize>8</FontSize>\n            <IsBold>False</IsBold>\n            <IsItalic>False</IsItalic>\n            <IsUnderline>False</IsUnderline>\n            <FontBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FontBrush>\n          </FontInfo>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>0.40000001</X>\n              <Y>0.50395834</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.80</Width>\n              <Height>0.45</Height>\n            </Size>\n          </ObjectLayout>\n        </BarcodeObject>\n        <TextObject>\n          <Name>TextObject04</Name>\n          <Brushes>\n            <BackgroundBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BackgroundBrush>\n            <BorderBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </BorderBrush>\n            <StrokeBrush>\n              <SolidColorBrush>\n                <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </StrokeBrush>\n            <FillBrush>\n              <SolidColorBrush>\n                <Color A=\"0\" R=\"0\" G=\"0\" B=\"0\"></Color>\n              </SolidColorBrush>\n            </FillBrush>\n          </Brushes>\n          <Rotation>Rotation0</Rotation>\n          <OutlineThickness>1</OutlineThickness>\n          <IsOutlined>False</IsOutlined>\n          <BorderStyle>SolidLine</BorderStyle>\n          <Margin>\n            <DYMOThickness Left=\"0\" Top=\"0\" Right=\"0\" Bottom=\"0\" />\n          </Margin>\n          <HorizontalAlignment>Left</HorizontalAlignment>\n          <VerticalAlignment>Middle</VerticalAlignment>\n          <FitMode>None</FitMode>\n          <IsVertical>False</IsVertical>\n          <FormattedText>\n            <FitMode>None</FitMode>\n            <HorizontalAlignment>Left</HorizontalAlignment>\n            <VerticalAlignment>Middle</VerticalAlignment>\n            <IsVertical>False</IsVertical>\n            <LineTextSpan>\n              <TextSpan>\n                <Text>${codeToRender?.label} ${codeToRender?.value}</Text>\n                <FontInfo>\n                  <FontName>Segoe UI</FontName>\n                  <FontSize>8</FontSize>\n                  <IsBold>True</IsBold>\n                  <IsItalic>False</IsItalic>\n                  <IsUnderline>False</IsUnderline>\n                  <FontBrush>\n                    <SolidColorBrush>\n                      <Color A=\"1\" R=\"0\" G=\"0\" B=\"0\"></Color>\n                    </SolidColorBrush>\n                  </FontBrush>\n                </FontInfo>\n              </TextSpan>\n            </LineTextSpan>\n          </FormattedText>\n          <ObjectLayout>\n            <DYMOPoint>\n              <X>1.295858</X>\n              <Y>0.07954371</Y>\n            </DYMOPoint>\n            <Size>\n              <Width>0.77080864</Width>\n              <Height>0.16980372</Height>\n            </Size>\n          </ObjectLayout>\n        </TextObject>\n      </LabelObjects>\n    </DynamicLayoutManager>\n  </DYMOLabel>\n  <LabelApplication>Blank</LabelApplication>\n  <DataTable>\n    <Columns></Columns>\n    <Rows></Rows>\n  </DataTable>\n</DesktopLabel>`\n};\n","import moment from \"moment\";\nimport { formatDateOfBirthDOB } from \"utils\";\nimport { default as api, default as localApi } from \"api\";\nimport { dymoMediumLabel, dymoSmallLabel, dymo30336Label } from \"./dymoXmls\";\n\nexport const getPatientName = (test) => {\n  const getDemographics = (demographics) => {\n    if (typeof demographics === \"string\") {\n      try {\n        return JSON.parse(demographics);\n      } catch (e) {\n        return {};\n      }\n    }\n    return demographics || {};\n  };\n\n  const employeeDemographics = getDemographics(test?.employee_demographics);\n  const orderEmployeeDemographics = getDemographics(test?.order?.employee_demographics);\n\n  const firstName = test?.firstName ?? employeeDemographics.firstName ?? orderEmployeeDemographics.firstName;\n  const lastName = test?.lastName ?? employeeDemographics.lastName ?? orderEmployeeDemographics.lastName;\n\n  return `${lastName || \"\"}, ${firstName || \"\"}`.trim();\n};\n\nexport const parseOrderLableXmls = async ({ test, selectedSize }) => {\n  const { barcode, chartID } = test;\n\n  let data;\n  if (typeof test?.employee_demographics === \"string\") {\n    data = JSON.parse(test?.employee_demographics);\n  } else if (typeof test?.employee_demographics === \"object\") {\n    data = test?.employee_demographics;\n  }\n\n  const dob = formatDateOfBirthDOB(data?.dob);\n\n  const swabTypeArray = data?.swabtype ? data?.swabtype?.split(\",\").map((type) => type.trim()) : [];\n\n  const swabtypeStr = swabTypeArray.join(\", \");\n\n  const name = getPatientName(test);\n\n  const collectionDate = moment(test?.createdAt).format(\"MM/DD/YY HH:mm\");\n\n  const testTypeResult = await api.getTestTypesByID(data?.testTypeID);\n\n  const code = testTypeResult?.code || \"\";\n  const codeToRender = chartID ? { label: \"C#\", value: chartID } : code ? { label: \"Code\", value: code } : {label :\"\", value : \"\"};\n  const dymoXmlObj = {\n    DymoSmall: dymoSmallLabel({ name, dob, collectionDate, swabtypeStr, barcode, codeToRender }),\n    DymoMedium: dymoMediumLabel({ name, dob, collectionDate, swabtypeStr, barcode, codeToRender }),\n    Dymo30336: dymo30336Label({ name, dob, collectionDate, swabtypeStr, barcode, codeToRender }),\n  };\n\n  return dymoXmlObj[selectedSize?.labelSize] || dymoXmlObj[\"DymoMedium\"];\n};\n","export const generateAndSendZpl = ({\n  nameString,\n  collectionSourceString,\n  dob,\n  srNo,\n  selectedDevice,\n  selectedSize,\n  testTypeResult,\n  errorCallback,\n  isSeroclinix,\n}) => {\n  const zplLabel = {\n    ZebraMedium: `\n    \u0010CT~~CD,~CC^~CT~\n    ^XA\n    ~TA000\n    ~JSN\n    ^LT0\n    ^MNW\n    ^MTT\n    ^PON\n    ^PMN\n    ^LH0,0\n    ^JMA\n    ^PR6,6\n    ~SD15\n    ^JUS\n    ^LRN\n    ^CI27\n    ^PA0,1,1,0\n    ^XZ\n    ^XA\n    ^MMT\n    ^PW345\n    ^LL244\n    ^LS0\n    ^FT27,38^A0N,17,18^FH\\^CI28^FD${nameString}^FS^CI27\n    ^FT0,37^A0N,17,18^FB317,1,4,R^FH\\^CI28^FD${testTypeResult?.code}^FS^CI27\n    ^FT27,57^A0N,17,18^FH\\^CI28^FD${dob}^FS^CI27\n    ^BY2,3,48^FT27,132^BCN,,Y,N\n    ^FH\\^FD>:${srNo}^FS\n    ^FT27,78^A0N,17,18^FH\\^CI28^FD${collectionSourceString}^FS^CI27\n    ^PQ1,0,1,Y\n    ^XZ\n    `,\n\n    ZebraLarge: `\n    \u0010CT~~CD,~CC^~CT~\n    ^XA\n    ~TA000\n    ~JSN\n    ^LT0\n    ^MNW\n    ^MTT\n    ^PON\n    ^PMN\n    ^LH0,0\n    ^JMA\n    ^PR6,6\n    ~SD15\n    ^JUS\n    ^LRN\n    ^CI27\n    ^PA0,1,1,0\n    ^XZ\n    ^XA\n    ^MMT\n    ^PW448\n    ^LL345\n    ^LS0\n    ^FT17,49^A0N,28,28^FH\\^CI28^FD${nameString}^FS^CI27\n    ^FT0,49^A0N,28,28^FB426,1,7,R^FH\\^CI28^FD${testTypeResult?.code}^FS^CI27\n    ^FT17,79^A0N,28,28^FH\\^CI28^FD${dob}^FS^CI27\n    ^BY3,3,61^FT6,184^BCN,,Y,N\n    ^FH\\^FD>:${srNo}^FS\n    ^FT17,112^A0N,28,28^FH\\^CI28^FD${collectionSourceString}^FS^CI27\n    ^PQ1,0,1,Y\n    ^XZ\n\n    `,\n  };\n\n  const zplSeroClinix = {\n    ZebraMedium: `\n    \u0010CT~~CD,~CC^~CT~\n    ^XA\n    ~TA000\n    ~JSN\n    ^LT0\n    ^MNW\n    ^MTT\n    ^PON\n    ^PMN\n    ^LH0,0\n    ^JMA\n    ^PR6,6\n    ~SD15\n    ^JUS\n    ^LRN\n    ^CI27\n    ^PA0,1,1,0\n    ^XZ\n    ^XA\n    ^MMT\n    ^PW345\n    ^LL244\n    ^LS0\n    ^FT27,38^A0N,17,18^FH\\^CI28^FD${nameString}^FS^CI27\n    ^FT0,37^A0N,17,18^FB317,1,4,R^FH\\^CI28^FD${testTypeResult?.code}^FS^CI27\n    ^FT27,57^A0N,17,18^FH\\^CI28^FD${dob}^FS^CI27\n    ^BY2,3,48^FT27,111^BCN,,Y,N\n    ^FH\\^FD>:${srNo}^FS\n    ^PQ1,0,1,Y\n    ^XZ\n    `,\n\n    ZebraLarge: `\n    \u0010CT~~CD,~CC^~CT~\n    ^XA\n    ~TA000\n    ~JSN\n    ^LT0\n    ^MNW\n    ^MTT\n    ^PON\n    ^PMN\n    ^LH0,0\n    ^JMA\n    ^PR6,6\n    ~SD15\n    ^JUS\n    ^LRN\n    ^CI27\n    ^PA0,1,1,0\n    ^XZ\n    ^XA\n    ^MMT\n    ^PW448\n    ^LL345\n    ^LS0\n    ^FT17,49^A0N,28,28^FH\\^CI28^FD${nameString}^FS^CI27\n    ^FT0,49^A0N,28,28^FB426,1,7,R^FH\\^CI28^FD${testTypeResult?.code}^FS^CI27\n    ^FT17,79^A0N,28,28^FH\\^CI28^FD${dob}^FS^CI27\n    ^BY3,3,61^FT6,148^BCN,,Y,N\n    ^FH\\^FD>:${srNo}^FS\n    ^PQ1,0,1,Y\n    ^XZ\n    `,\n  };\n\n  let zplCode = null;\n  if (isSeroclinix) {\n    zplCode = zplSeroClinix[selectedSize?.labelSize] || zplSeroClinix[\"ZebraLarge\"];\n  } else {\n    zplCode = zplLabel[selectedSize?.labelSize] || zplLabel[\"ZebraLarge\"];\n  }\n  if (!zplCode) {\n    errorCallback(\"Label size not correct.\");\n  }\n\n  selectedDevice?.send(zplCode, undefined, errorCallback);\n};\n\n","import React, { useMemo, useState, useEffect } from \"react\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport MainTable from \"components/Table/MainTable\";\nimport { ARCHIVE_STATUS } from \"constant\";\nimport Status from \"components/Status\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setArchivedList } from \"store/features/general/generalSlice\";\nimport { archivedListSelector } from \"store/features/general/generalSelectors\";\nconst ArchiveModal = () => {\n  const { personalization, archivedList, modalTitle } = useSelector(archivedListSelector);\n  const dispatch = useDispatch();\n  const [sortDescending, setSortDescending] = useState(true);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortedList, setSortedList] = useState(archivedList); // Derived state for sorted data\n  // Sorting logic\n  const handleClose = () => {\n    dispatch(\n      setArchivedList({\n        personalization: [],\n        archivedList: [],\n      })\n    );\n  };\n  const sortArchiveStatusList = (list, sortBy, sortDescending) => {\n    if (!sortBy) return list; // If no sort key is defined, return the original list.\n\n    return [...list].sort((a, b) => {\n      const valueA = a[sortBy] ?? \"\"; // Access the sorting key safely.\n      const valueB = b[sortBy] ?? \"\";\n\n      if (sortDescending) {\n        return valueB < valueA ? 1 : valueA < valueB ? -1 : 0;\n      } else {\n        return valueB > valueA ? 1 : valueA > valueB ? -1 : 0;\n      }\n    });\n  };\n\n  // Effect for handling sorting\n  useEffect(() => {\n    setSortedList(sortArchiveStatusList(archivedList, sortBy, sortDescending));\n  }, [archivedList, sortBy, sortDescending]);\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(!sortDescending);\n  };\n\n  return (\n    <Modal show animation={true} className=\"seperateModal\" size=\"xl\" centered onHide={() => handleClose()}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          {modalTitle}\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body style={{ backgroundColor: \"#f2f2f2\" }}>\n        <div\n          className=\"table-full-width px-1 desktop-noScroll mt-0 pt-0\"\n          style={{\n            maxHeight: \"300px\", // Adjust height as needed\n            maxWidth: \"100%\", // Adjust width as needed\n            overflowX: \"auto\", // Enable horizontal scrolling\n            overflowY: \"auto\", // Enable vertical scrolling\n            backgroundColor: \"#f2f2f2\",\n          }}\n        >\n          <MainTable\n            // widthToSkip={155}\n            trDataWrapperHeader=\"bg-white\"\n            columns={personalization}\n            rows={sortedList}\n            flipSort={flipSort}\n            sortBy={sortBy}\n            sortDescending={sortDescending}\n          />\n        </div>\n      </Modal.Body>\n      <Modal.Footer>\n        <Button\n          className=\"profileButton btn-fill createButtons\"\n          style={{\n            marginRight: 10,\n            marginTop: 10,\n          }}\n          variant=\"secondary\"\n          onClick={() => handleClose()}\n        >\n          Close\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ArchiveModal;\n","import RadioButton from \"components/RadioButton/RadioButton\";\nimport MainTable from \"components/Table/MainTable\";\nimport React, { useState,useMemo } from \"react\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setShowQuestionaireTable } from \"store/features/general/generalSlice\";\nimport { setAnswerAdditionalQuestion } from \"store/features/general/generalSlice\";\nconst formatSelectedOptions = (selectedOptions) => {\n  return {\n    answerAdditionalQuestion: Object.values(selectedOptions).map((row) => ({\n      questions: row.title,\n      options: [\n        { option: \"yes\", type: \"radio\" },\n        { option: \"no\", type: \"radio\" },\n      ],\n      answer: row.selectedValue,\n      id: row.id,\n      testId: row.testId,\n    })),\n  };\n};\n\nconst QuestionnaireTable = ({ rows, columns, modalTitle }) => {\n\n  const [option, setOption] = useState(false);\n  const dispatch = useDispatch();\n  const handleClose = () => {\n    dispatch(setShowQuestionaireTable(false));\n  };\n\n  const updatedAnswersOptions= useMemo(() => {\n    return rows.reduce((acc, item) => {\n        acc[item.id] = { ...item };\n        return acc;\n    }, {});\n}, [rows]);\n\n  const [selectedOptions, setSelectedOptions] = useState(updatedAnswersOptions || {});\n\n  const customRenderTD = (item, row, index, rowIndex) => {\n    if (row.type === \"radio\") {\n      // Har row ke liye selected object store karna\n      const selectedRow = selectedOptions[row.id] || { ...row, selectedValue: \"\" };\n\n      return (\n        <td key={row.id}>\n          <div className=\"d-flex justify-content-between w-50 flex-wrap\">\n            <RadioButton\n              name={`option-${row.id}`}\n              id={`yes-${row.id}`}\n              label=\"Yes\"\n              value=\"yes\"\n              checked={selectedRow.selectedValue === \"yes\"}\n              handleRadioButtonChange={(e) => {\n                setSelectedOptions((prev) => ({\n                  ...prev,\n                  [row.id]: { ...row, selectedValue: e.target.value },\n                }));\n              }}\n            />\n\n            <RadioButton\n              name={`option-${row.id}`}\n              id={`no-${row.id}`}\n              label=\"No\"\n              value=\"no\"\n              checked={selectedRow.selectedValue === \"no\"}\n              handleRadioButtonChange={(e) => {\n                setSelectedOptions((prev) => ({\n                  ...prev,\n                  [row.id]: { ...row, selectedValue: e.target.value },\n                }));\n              }}\n            />\n          </div>\n        </td>\n      );\n    }\n\n    return <td key={row.id}></td>;\n  };\n\n  const handleSave = () => {\n    const answerAdditionalQuestion = formatSelectedOptions(selectedOptions);\n\n    dispatch(setAnswerAdditionalQuestion(answerAdditionalQuestion));\n    dispatch(setShowQuestionaireTable(false));\n  };\n  return (\n    <>\n      <Modal show animation={true} className=\"seperateModal\" size=\"xl\" centered onHide={() => handleClose()}>\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            {modalTitle}\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body style={{ backgroundColor: \"#f2f2f2\" }}>\n          <MainTable\n            cssClass=\"table-noresponsive\"\n            trDataWrapperHeader={\"trDataWrapperHeader\"}\n            rows={rows || []}\n            columns={columns}\n            customColumnCellRenderer={customRenderTD}\n          />\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            className=\"profileButton btn-fill createButtons\"\n            style={{\n              marginRight: 10,\n              marginTop: 10,\n            }}\n            variant=\"secondary\"\n            onClick={() => handleClose()}\n          >\n            Close\n          </Button>\n          <Button\n            className=\"profileButton btn-fill createButtons\"\n            style={{\n              marginRight: 10,\n              marginTop: 10,\n            }}\n            variant=\"secondary\"\n            onClick={() => handleSave()}\n          >\n            Save\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default QuestionnaireTable;\n","import React, { useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { useHistory } from \"react-router-dom\";\n\nconst SupportView = () => {\n  const [showModal, setShowModal] = useState(true);\n  const history = useHistory();\n\n  const handleClose = () => {\n    setShowModal(false);\n    history.goBack();\n  };\n\n  return (\n    <Modal\n      animation={true}\n      onHide={handleClose}\n      show={showModal}\n      size={\"lg\"}\n      className=\"seperateModal\"\n      keyboard={true}\n      backdrop=\"static\"\n      centered\n    >\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Contact Us\n        </Modal.Title>\n      </Modal.Header>\n      <Modal.Body>\n      \n        <div\n          style={{\n            display: \"flex\",\n            flexWrap: \"wrap\",\n            justifyContent: \"center\",\n            backgroundColor: \"white\",\n            padding: \"0px 20px\",\n          }}\n        >\n          <div className=\"d-flex flex-column p-3 align-items-center justify-content-center\">\n            <div className=\"w-100\">\n              <p style={{ fontSize: \"20px\" }}>Please contact support via phone or email.</p>\n            </div>\n            <div className=\"w-100\">\n              <p style={{ fontSize: \"20px\" }}>\n                Email:{\" \"}\n                <a style={{ color: \"#5890ff\" }} href=\"mailto:support@thrive365labs.com\">\n                  support@thrive365labs.com\n                </a>\n              </p>\n            </div>\n            <div className=\"w-100\">\n              <p style={{ fontSize: \"20px\" }}>\n                Phone:{\" \"}\n                <a style={{ color: \"#5890ff\" }} href=\"tel:7707629269\">\n                  770-762-9269\n                </a>\n              </p>\n            </div>\n          </div>\n        </div>\n      </Modal.Body>\n      <Modal.Footer style={{ justifyContent: \"right\" }} className=\"d-flex w-100\">\n        <Button\n          className=\"profileButton btn-fill createButtons\"\n          style={{\n            marginTop: 10,\n          }}\n          variant=\"secondary\"\n          onClick={() => handleClose()}\n        >\n          Close\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default SupportView;\n","import { DataStore, syncExpression } from \"@aws-amplify/datastore\";\nimport { default as api, default as localApi } from \"api\";\nimport sidebarImage from \"assets/img/sidebar-3.jpg\";\nimport { API, Auth, graphqlOperation, Hub, Storage } from \"aws-amplify\";\nimport IdleModal from \"components/IdleModal\";\nimport Loader from \"components/Loader/Loader\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport EligibilityDetailsModal from \"components/Modal/Eligibility/EligibilityDetailsModal\";\nimport ImportFileStatusModal from \"components/Modal/ImportFileStatusModal\";\nimport PatientImportErrorModal from \"components/Modal/PatientImportErrorModal\";\nimport PatientProfileModal from \"components/Modal/PatientProfileModal\";\nimport TestLogsModal from \"components/Modal/TestLogsModal\";\nimport AdminNavbar from \"components/Navbars/AdminNavbar\";\nimport TestNoteModal from \"components/Notes/TestNoteModal\";\nimport TestDoneModal from \"components/Patient/TestDoneModal\";\nimport ResutlViewModal from \"components/Result/ResultViewModal\";\nimport Sidebar from \"components/Sidebar/Sidebar\";\nimport TestScheduleModal from \"components/TestSchedule/TestScheduleModal\";\nimport UpComingScheduleModal from \"components/TestSchedule/UpComingScheduleModal\";\nimport { UPLOAD_CSV_FILE, WHITE_LABEL_ROTUES, LIFE_CARE_ID } from \"constant\";\nimport { debounce } from \"debounce\";\nimport * as subscriptions from \"graphql/subscriptions\";\nimport moment from \"moment\";\nimport Papa from \"papaparse\";\nimport React, { useCallback, useEffect, useLayoutEffect, useRef, useState, useMemo } from \"react\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { useIdleTimer } from \"react-idle-timer\";\nimport { Route, Switch, useHistory, useLocation, Redirect } from \"react-router-dom\";\nimport adminRoutes from \"routes/adminRoutes\";\nimport siteRoutes from \"routes/HSRoutes\";\nimport labAdminRoutes from \"routes/labAdminRoutes\";\nimport labRoutes from \"routes/labRoutes\";\nimport LabTechRoutes from \"routes/LabTechRoutes\";\nimport whiteLabelLabRoutes from \"routes/WhiteLabellabRoutes\";\nimport useScanDetection from \"use-scan-detection\";\nimport { getListenerData, getCurrentUser } from \"../../src/store/features/authentication/authenticationActions\";\nimport { setPermission, setGlobalUser } from \"store/features/authentication/authenticationSlice\";\nimport TestDetails from \"views/TestDetails\";\nimport { questionTableModal } from \"store/features/general/generalSelectors\";\nimport { showQuestionaireTableSelector } from \"store/features/general/generalSelectors\";\nimport {\n  clientIDInLocalStorage,\n  connectedIDInLocalStorage,\n  downloadDataAsCSV,\n  formatExternalTest,\n  formatPhoneNumber,\n  formatTest,\n  isValidBarcodeNumber,\n  medFlowInLocalStorage,\n  processAndAddColumnsIntoCsvFiles,\n  roleInLocalStorage,\n  showsInSS,\n  SYSTEM_TIME_ZONE,\n  parseJSONObject,\n  getClientSpecificString,\n  env,\n  formatPatientIntoPgData,\n  printerLocalStorage\n} from \"utils\";\nimport AdminDashboard from \"views/DashboardCharts/AdminDashboard\";\nimport ClientsDashboard from \"views/DashboardCharts/ClientsDashboard\";\nimport LabDashboard from \"views/DashboardCharts/LabDashboard\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport CreateOrderTest from \"views/Order/CreateOrderTest\";\nimport LoadOrdersModal from \"views/Order/LoadOrdersModal\";\nimport OrderTestModal from \"views/Order/OrderTestModal\";\nimport TestListAdmin from \"views/Test/TestListAdmin\";\nimport OrdersView from \"views/Order/OrderView\";\nimport PatientView from \"views/GraphQL/PatientView\";\nimport UnprocessedTestsApi from \"views/GraphQL/UnprocessedTestsApi\";\nimport LabTestTypesSetting from \"views/TestTypeSetting/LabTestTypesSetting.js\";\nimport TestSelectionModal from \"components/Test/TestSelectionModal\";\nimport DeleteTestApi from \"views/GraphQL/DeleteTestApi\";\nimport {\n  AMAZON_CLIENT_RESULT,\n  BUCKET_EXTERNAL_IMAGES,\n  CONFIG,\n  CRUD_TYPE,\n  FILE_REPRESENT_TYPES_MAP,\n  HEALTH_AND_SAFTEY,\n  IGNORE_INS,\n  RECEIVED_BYLAB,\n  RESULT_CHECK,\n  RESULT_PDF,\n  ROUTES,\n  countryListAllIsoData,\n  BIO_LAB_ID,\n  LAB_ID,\n} from \"../constant\";\nimport { AppContext } from \"../context/app-context\";\nimport { insurnaceSelector } from \"store/features/insurances/insuranceSelectors\";\nimport { setOpenInsuranceModal, setSelectedInsurance, fetchPayerAsync } from \"store/features/insurances/insuranceSlice\";\nimport {\n  Client,\n  Employee,\n  EmployeeBarCodes,\n  ExternalTest,\n  Lab,\n  Order,\n  Site,\n  Test,\n  TestConsent,\n  UploadRequest,\n  UploadRequestMain,\n  Users,\n  GeneralSettingType,\n  Documents,\n  LencoBarcodes,\n} from \"../models\";\nimport { userGivenPermission } from \"store/features/authentication/authenticationSelectors\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport InsuranceModal from \"components/Insurances/InsuranceModal\";\nimport ShowAlertMessage from \"components/ShowAlertMessage\";\nimport { messageSelector, testToPrintView, loadingSelector } from \"store/features/general/generalSelectors\";\nimport { showMessage, setTestPrintView } from \"store/features/general/generalSlice\";\nimport TestListAdminApi from \"views/GraphQL/TestListCompletedTest/TestListAdminApi\";\nimport AssignResultsTestModal from \"components/Modal/AssignResultsTestModal\";\nimport { showResultTest } from \"store/features/resultsTests/resultsTestSelectors\";\nimport { resetStateResultState } from \"store/features/resultsTests/resultsTestSlice\";\nimport ChangeResultModal from \"components/Modal/ChangeResultModal\";\nimport { setTestIdsToRemove } from \"store/features/resultsTests/resultsTestSlice\";\nimport RequisitionFormViewModal from \"components/Modal/RequisitionForm/RequisitionFormViewModal\";\nimport ShowPrintOptions from \"components/Patient/ShowPrintOptions\";\nimport useLocalStorageState from \"util/useLocalStorageState\";\nimport { updateLocationOnSubscription } from \"store/features/locations/locationsSlice\";\nimport { selectedDeviceSelector } from \"store/features/general/generalSelectors\";\nimport { setSelectedDevice } from \"store/features/general/generalSlice\";\nimport GlobalActionsComponent from \"components/GlobalActionsComponent\";\nimport { associatedPanelSelector } from \"store/features/testDictionary/testDictionarySelectors\";\nimport TestAssociatedViewModal from \"views/Order/TestAssociatedViewModal\";\nimport { emptyAssociatedPanel } from \"store/features/testDictionary/testDictionarySlice\";\nimport GenericPanelTestView from \"views/TestTypeSetting/TestPanels/GenericPanelTestView\";\nimport { genericModalViewSelector } from \"store/features/genericTestsView/genericTestViewSelector\";\nimport GenericPathogenView from \"views/TestTypeSetting/TestPanels/GenericPathogenView\";\nimport { setGlobalLab } from \"store/features/authentication/authenticationSlice\";\nimport { setCountryCode } from \"store/features/authentication/authenticationSlice\";\nimport PanelResultModal from \"components/Modal/PanelResultModal\";\nimport { fetchCompanySetting } from \"store/features/companySetting/companySettingSlice\";\nimport { formatDateOfBirthDOB } from \"utils\";\nimport DocumentPreviewModal from \"components/Modal/DocumentPreviewModal\";\nimport { resultPdfSelector } from \"store/features/resultPdf/resultPdfSelector\";\nimport { hideResultPdf } from \"store/features/resultPdf/reslutPdfSlice\";\nimport OrderView from \"views/Order/OrderView\";\nimport { setClientData } from \"store/features/authentication/authenticationSlice\";\nimport ResultUploadModal from \"components/Result/ResultUploadModal\";\nimport { selectedEmployeeForTestSelector } from \"store/features/employees/employeesSelectors\";\nimport { fetchAllLocations } from \"store/features/locations/locationsSlice\";\nimport { addRouteIfNotExists, formatOrders } from \"utils\";\nimport { parseOrderLableXmls, getPatientName } from \"util/xmlParser\";\nimport { generateAndSendZpl } from \"util/printUtil\";\nimport { useIdleTimerHook } from \"../util/useIdleTimerHook\";\nimport { archivedListSelector } from \"store/features/general/generalSelectors\";\nimport ArchiveModal from \"views/Archive/ArchiveModal\";\nimport QuestionnaireTable from \"components/Modal/QuestionnaireTable\";\nimport { Button } from \"react-bootstrap\";\nimport { setShowQuestionaireTable } from \"store/features/general/generalSlice\";\nimport { setQuestionTableModal } from \"store/features/general/generalSlice\";\nimport SupportView from \"views/SupportView\";\nimport { callAmplifyAPI } from \"views/GraphQL/gqApi\";\nfunction AdminNew() {\n  const timeout = 18000000;\n\n  const idleTimeOut = 3600;\n  const showQuestionaireTable = useSelector(showQuestionaireTableSelector);\n  const [showIdleModal, setShowIdleModal] = useState(false);\n  const [remaining, setRemaining] = useState(timeout);\n  const [elapsed, setElapsed] = useState(0);\n  const [lastActive, setLastActive] = useState(+new Date());\n  const [lastEvent, setLastEvent] = useState(\"Events Emitted on Leader\");\n  const [leader, setLeader] = useState(true);\n  const [timedOut, setTimedOut] = useState(false);\n  const [showAlert, setShowAlert] = useState(false);\n  const [successMessageText, setSuccessMessageText] = useState(\"\");\n  const [successBottomMessageText, setSuccessBottomMessageText] = useState(\"\");\n  const [errorMessageText, setErrorMessageText] = useState(\"\");\n  const [pageState, setPageState] = useState(\"New\");\n  const [role, setRole] = useState(null);\n  const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(null);\n  const [scanBarcode, setScanBarcode] = useState();\n  const [uploadPatientResult, setUploadPatientResult] = useState([]);\n  const [uploadRequestData, setUploadRequestData] = useState([]);\n  const [notificationList, setNotificationList] = useState([]);\n  const [eligibilityDetail, setEligibilityDetail] = useState(null);\n  const [notifySubs, setNotifySubs] = useState(null);\n  const [uploadFileStatus, setUploadFileStatus] = useState(null);\n  const [showOrderModal, setShowOrderModal] = useState(null);\n  const [showOrderTestModal, setShowOrderTestModal] = useState(null);\n  const [isProcessing, setIsProcessing] = useState(false);\n  const userRef = useRef();\n  const [noteObject, setNoteObject] = useState(null);\n  const { openInsuranceModal } = useSelector(insurnaceSelector);\n  const permission = useSelector(userGivenPermission);\n  const messageObj = useSelector(messageSelector);\n  const selectedTestForPrint = useSelector(testToPrintView);\n  const isGlobalLoader = useSelector(loadingSelector);\n  const selectedDevice = useSelector(selectedDeviceSelector);\n\n  const associatedPanelData = useSelector(associatedPanelSelector);\n  const { archivedList } = useSelector(archivedListSelector);\n  const [isPreviewModalOpen, setIsPreviewModalOpen] = useState(false);\n  const [fileUrl, setFileUrl] = useState(\"\");\n  const [fileType, setFileType] = useState(\"\");\n  const [docName, setDocName] = useState();\n  const [dymoSDKLoaded, setDymoSDKLoaded] = useState(false);\n\n  const [printers, setPrinters] = useState([]);\n\n  const dispatch = useDispatch();\n\n  const {\n    simpleTestList,\n    detailTestList,\n    panelTests,\n    showDetailModal,\n    showSimpleModal,\n    showPanalModal,\n    testForResult,\n  } = useSelector(showResultTest);\n\n  const { showPdf, resultFileUrl, resultFileType, resultPdfTitle, isLoadingResultPdf, resultPdfError } =\n    useSelector(resultPdfSelector) || {};\n\n  const handleLogOut = async () => {\n    setShowIdleModal(false);\n    try {\n      await DataStore.clear();\n      await Auth.signOut();\n      medFlowInLocalStorage.clear();\n      // console.log(\"PAUSED\");\n      handlePause();\n      history.push(\"/login\");\n    } catch (error) {\n      console.log(\"Error signing out: \", error);\n    }\n  };\n\n  useIdleTimerHook({\n    timeout: idleTimeOut,\n    onIdle: handleLogOut,\n  });\n\n  const employeeForTests = useSelector(selectedEmployeeForTestSelector);\n  const { rows, columns, modalTitle } = useSelector(questionTableModal);\n  const { showGenericPathogenModal, showGenericModal, genericData, genericPathogenData } =\n    useSelector(genericModalViewSelector);\n\n  const history = useHistory();\n\n  useLayoutEffect(() => {\n    let userType = medFlowInLocalStorage.get();\n    if (!userType || userType === null) handleLogOut();\n  }, []);\n\n  useEffect(() => {\n    let roleSelected = roleInLocalStorage.get();\n    setRole(roleSelected);\n  }, []);\n\n  const userData = useLocalStorageState(\"userData\", null);\n\n  const childItemsProcessed = (prev, record) => {\n    const parentIndex = prev.findIndex((f) => f.id === record.id);\n\n    if (parentIndex === -1) {\n      prev.push(record);\n    } else {\n      prev.splice(parentIndex, 1, record);\n    }\n    return [...prev];\n  };\n\n  const getData = async () => {\n    return await localApi.getCurrentUser();\n  };\n\n  useEffect(() => {\n    if (notifySubs) {\n      const { record, opType, main } = notifySubs;\n\n      if (main) {\n        setNotificationList((prev) => {\n          const parentIndex = prev.findIndex((f) => f.id === record.id);\n          if (record && record.status === \"cancel\") {\n            return prev.filter((f) => f.id !== record.id);\n          }\n          if (parentIndex === -1) return [...prev]; // Return a copy even if no changes\n          prev.splice(parentIndex, 1, { ...record, Items: [] });\n          return [...prev];\n        });\n        if (uploadFileStatus && uploadFileStatus !== null) {\n          setUploadFileStatus(record);\n        }\n      } else {\n        setNotificationList((prev) => {\n          const parentIndex = prev.findIndex((f) => f.id === record.requestID);\n\n          if (parentIndex === -1) return [...prev]; // Return a copy even if no changes\n\n          const updatedPrev = [...prev];\n          const items = updatedPrev[parentIndex].Items || [];\n\n          const itemIndex = items.findIndex((f) => f.id === record.id);\n\n          // If it's an INSERT operation or the item doesn't exist yet, push the record\n          if (itemIndex === -1) {\n            items.push(record);\n          } else {\n            items.splice(itemIndex, 1, record);\n          }\n\n          updatedPrev[parentIndex].Items = items;\n          return updatedPrev;\n        });\n        if (uploadFileStatus) {\n          setUploadFileStatus((prev) => {\n            return { ...prev, Items: childItemsProcessed(prev.Items || [], record) };\n          });\n        }\n        if (uploadPatientResult && uploadPatientResult.length > 0) {\n          setUploadPatientResult((prev) => childItemsProcessed(prev, record));\n        }\n      }\n    }\n  }, [notifySubs]);\n\n  const handleCloseModal = () => {\n    setShowIdleModal(false);\n  };\n\n  const emptyUploadPatientResult = async () => {\n    try {\n      await api.emptySiteUpdateStatus();\n    } catch (err) {\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  const checkEligibilityDetails = async (item) => {\n    const patientInsurance = item.insuranceCompanyCode;\n\n    if (IGNORE_INS.includes(patientInsurance)) return;\n\n    if (item && item.apiData) {\n      const data = parseJSONObject(item.apiData);\n\n      if (data.fileName) {\n        try {\n          const eligData = await localApi.getEligibilityFile({\n            path: data.fileName,\n            employeeID: item.mdID || item.employeeID,\n          });\n          return setEligibilityDetail({\n            ...item,\n            ...eligData?.elig,\n            ...(eligData?.error && { error: eligData?.error }),\n          });\n        } catch (err) {\n          console.log(\"Error:-\", err.message);\n          return null;\n        }\n      } else {\n        return setEligibilityDetail({\n          ...item,\n          ...data?.elig,\n          // ...(employee && { payerId: employee.insuranceCompany, employee })\n        });\n      }\n    } else {\n      return setEligibilityDetail({\n        ...item,\n        // ...(employee && { payerId: employee.insuranceCompany, employee })\n      });\n    }\n  };\n\n  const getDevices = () => {\n    if (typeof BrowserPrint === \"undefined\") {\n      console.error(\"BrowserPrint is not defined. Ensure that the BrowserPrint library is properly included.\");\n      return;\n    }\n\n    if (document.readyState === \"complete\") {\n      if (BrowserPrint) {\n        BrowserPrint.getLocalDevices(\n          (device_list) => {\n            if (device_list.length === 0) {\n              console.warn(\"No devices found. Ensure the printer is connected and turned on.\");\n            } else {\n              console.log(\"Device list retrieved:\", device_list);\n              dispatch(setSelectedDevice(device_list[0]));\n            }\n          },\n          (error) => {\n            console.error(\"Error getting local devices:\", error);\n          },\n          \"printer\"\n        );\n      } else {\n        console.error(\"BrowserPrint is not available after document is loaded.\");\n      }\n    } else {\n      console.warn(\"Document is not fully loaded. Try again later.\");\n    }\n  };\n\n  const getLabClients = async () => {\n    try {\n      await dispatch(fetchAllLocations({ noShowLoader: true, siteType: \"lab\" }));\n    } catch (err) {\n      console.log(\"Error:-\", err);\n    }\n  };\n\n  useEffect(() => {\n    if (document.readyState === \"complete\") {\n      getDevices();\n    }\n    if (window.dymo && window.dymo.label && window.dymo.label.framework) {\n      setDymoSDKLoaded(true);\n    } else {\n      window.addEventListener(\"load\", getDevices);\n      return () => window.removeEventListener(\"load\", getDevices);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (dymoSDKLoaded) {\n      if (window.dymo && window.dymo.label && typeof window.dymo.label.framework.init === \"function\") {\n        window.dymo.label.framework.init(() => {\n          const printersList = window.dymo.label.framework.getPrinters();\n\n          console.log(\"printersList\", printersList);\n\n          if (!printersList || printersList.length === 0) {\n            console.log(\"No DYMO printers are installed.\");\n          } else {\n            const printerNames = [];\n            for (let i = 0; i < printersList.length; ++i) {\n              const printer = printersList[i];\n              if (printer.isConnected) {\n                printerNames.push(printer.name);\n              }\n            }\n            \n            if (printerNames.length > 0) {\n              dispatch(setSelectedDevice(printerNames[0]));\n              printerLocalStorage.save(printerNames[0]);\n            }\n            \n            setPrinters(printerNames);\n          }\n        });\n      } else {\n        console.error(\"DYMO SDK is loaded but methods are not available.\");\n      }\n    }\n  }, [dymoSDKLoaded]);\n\n  const printDymoLabel = async (test) => {\n    let message = \"\";\n\n    if (!window.dymo || !dymo.label || !dymo.label.framework) {\n      message = \"DYMO SDK not loaded.\";\n      console.log(message);\n      return { message, label: null, barcode: test?.barcode };\n    }\n\n    try {\n      const context = contextSwitch();\n      const isSiteUser = context?.user?.isSite();\n\n      const selectedSize = isSiteUser\n        ? context.sites\n            .find((item) => item.id === CONFIG.siteID)\n            ?.setting?.printerSetting?.find((item) => item.printer_name === \"Dymo\")\n        : context.clients\n            .find((item) => item.id === CONFIG.clientID)\n            ?.setting?.printerSetting?.find((item) => item.printer_name === \"Dymo\");\n\n      const labelXml = await parseOrderLableXmls({ test, selectedSize });\n\n      const label = dymo.label.framework.openLabelXml(labelXml);\n      if (!label) {\n        message = \"Failed to open label XML.\";\n        console.error(message);\n        return { message, label: null, barcode: test?.barcode };\n      }\n\n      let printerName = printers?.[0] || printerLocalStorage.get();\n      if (!printerName) {\n        message = \"No available printers found.\";\n        return { message, label: labelXml, barcode: test?.barcode };\n      }\n\n      label.print(printerName);\n      message = \"Label printed successfully.\";\n\n      return { message, label: labelXml, barcode: test?.barcode };\n    } catch (error) {\n      message = `Error printing label: ${error.message}`;\n      console.error(message);\n      return { message, label: null, barcode: test?.barcode };\n    }\n  };\n\n  const printZabraLabel = async (test) => {\n    if (!selectedDevice) {\n      setErrorMessageText(\"Printer Device not Connected\");\n      return;\n    }\n\n    const errorCallback = (errorMessage) => {\n      setErrorMessageText(\"Error: \" + errorMessage);\n    };\n\n    let data;\n    // Check if employee_demographics is a JSON string or an object\n    if (typeof test?.employee_demographics === \"string\") {\n      data = JSON.parse(test?.employee_demographics);\n    } else if (typeof test?.employee_demographics === \"object\") {\n      data = test?.employee_demographics;\n    }\n\n    // Ensure swabtype is valid before processing\n    const swabTypeArray = data?.swabtype ? data?.swabtype?.split(\",\").map((type) => type.trim()) : [];\n\n    const name = getPatientName(test);\n\n    const serial = test?.barcode;\n\n    const dob = formatDateOfBirthDOB(data?.dob);\n    const collectionDate = moment(test?.createdAt).format(\"MM/DD/YY HH:mm\");\n\n    if (!serial) {\n      setErrorMessageText(\"Test is not created\");\n      return;\n    }\n\n    const testTypeResult = await api.getTestTypesByID(data?.testTypeID);\n\n    const context = contextSwitch();\n\n    const userLab = context?.userLab?.id;\n\n    const isSiteUser = context?.user?.isSite();\n\n    let selectedSize = null;\n\n    if (isSiteUser) {\n      selectedSize = context.sites\n        .find((item) => item.id === CONFIG.siteID)\n        .setting?.printerSetting?.find((item) => item.printer_name === \"Zebra\");\n    } else {\n      selectedSize = context.clients\n        .find((item) => item.id === CONFIG.clientID)\n        .setting?.printerSetting?.find((item) => item?.printer_name === \"Zebra\");\n    }\n\n    // if (!selectedSize) {\n    //   context.showErrorMessage(\"Set Printer size for zebra printer.\");\n    //   return;\n    // }\n\n    if (userLab === LAB_ID.seroclinix || userLab === LAB_ID.seroclinix_test) {\n      generateAndSendZpl({\n        nameString: `${name}`,\n        collectionSourceString: `CL: ${collectionDate}`,\n        dob: `DOB: ${dob}`,\n        srNo: serial,\n        selectedDevice,\n        selectedSize,\n        testTypeResult,\n        errorCallback,\n        isSeroclinix: true,\n      });\n      return;\n    }\n\n    if (swabTypeArray && swabTypeArray.length > 0) {\n      for (const item of swabTypeArray) {\n        generateAndSendZpl({\n          nameString: `${name}`,\n          collectionSourceString: `CL: ${collectionDate} - ${item}`,\n          dob: `DOB: ${dob}`,\n          srNo: serial,\n          selectedDevice,\n          selectedSize,\n          testTypeResult,\n          errorCallback,\n        });\n      }\n    } else {\n      generateAndSendZpl({\n        nameString: `${name}`,\n        collectionSourceString: `CL: ${collectionDate}`,\n        dob: `DOB: ${dob}`,\n        srNo: serial,\n        selectedDevice,\n        selectedSize,\n        testTypeResult,\n        errorCallback,\n      });\n    }\n  };\n\n  const printBarcode = async (test) => {\n\n    if (printers && printers.length > 0) {\n      const response = await printDymoLabel(test);\n      // try {\n      //   const labelLogs = callAmplifyAPI(\"/labellogs\", response);\n      // } catch (err) {\n      //   console.log(\"🚀 ~ printBarcode ~ err:\", err);\n      // }\n    } else {\n      await printZabraLabel(test);\n    }\n  };\n\n  const handleOnIdle = (event) => {\n    setShowIdleModal(true);\n  };\n\n  const handleOnActive = (event) => {\n    setTimedOut(false);\n  };\n\n  const handleOnAction = (event) => {\n    setTimedOut(false);\n  };\n\n  const handleReset = () => reset();\n  const handlePause = () => pause();\n  const handleResume = () => resume();\n  const handleStart = () => start();\n\n  const {\n    getRemainingTime,\n    getLastActiveTime,\n    getElapsedTime,\n    getTotalIdleTime,\n    getLastIdleTime,\n    isIdle,\n    pause,\n    resume,\n    start,\n    isLeader,\n  } = useIdleTimer({\n    timeout,\n    onActive: handleOnActive,\n    onIdle: handleOnIdle,\n    onAction: handleOnAction,\n    debounce: 500,\n    crossTab: {\n      emitOnAllTabs: false,\n    },\n  });\n\n  // useEffect(() => {\n  //   setRemaining(getRemainingTime());\n  //   setLastActive(getLastActiveTime());\n  //   setElapsed(getElapsedTime());\n  //   setInterval(() => {\n  //     setRemaining(getRemainingTime());\n  //     setLastActive(getLastActiveTime());\n  //     setElapsed(getElapsedTime());\n  //   }, 1000);\n  // }, []);\n\n  const removeUserFromLC = (e) => {\n    e.preventDefault();\n    e.returnValue = \"\";\n    alert(\"Are you sure you want to close\");\n    return \"Not\";\n  };\n\n  useEffect(() => {\n    // window.addEventListener(\"beforeunload\", removeUserFromLC);\n    DataStore.stop();\n    // return () => {\n    //   window.removeEventListener(\"beforeunload\",removeUserFromLC);\n    // };\n  }, []);\n\n  useEffect(() => {\n    if (showIdleModal) {\n      const timeout = setTimeout(() => {\n        if (showIdleModal) {\n          handleLogOut();\n        }\n      }, 60000); // TODO: - This time is the extra time you want to see how long they're idle for until they get logged out 300000\n      return () => clearTimeout(timeout);\n    }\n  }, [showIdleModal]);\n\n  const [image, setImage] = React.useState(sidebarImage);\n  const [color, setColor] = React.useState(process.env.REACT_APP_COLOR);\n  const [hasImage, setHasImage] = React.useState(true);\n  const [userRoutes, setUserRoutes] = React.useState([]);\n  const [users, setUsers] = React.useState([]);\n  const [usersLoading, setUsersLoading] = React.useState(false);\n  const [clients, setClients] = React.useState([]);\n  const [sites, setSites] = React.useState([]);\n  const [labs, setLabs] = React.useState([]);\n  const [admins, setAdmins] = React.useState([]);\n  const [pendingTests, setPendingTests] = React.useState([]);\n  const [invalidTests, setInvalidTests] = React.useState([]);\n  const [completedTests, setCompletedTests] = React.useState([]);\n  const [unprocessedTests, setUnprocessedTests] = React.useState();\n  const [unSubmittedTests, setUnsubmittedTests] = React.useState();\n  const [externalTest, setExternalTest] = useState([]);\n  const [newTests, setNewTests] = React.useState([]);\n  const [totalTests, setTotalTests] = React.useState([]);\n  const [adminTotalTests, setAdminTotalTests] = React.useState([]);\n  const [userLab, setUserLab] = React.useState(null);\n  const [userLabName, setUserLabName] = React.useState(null);\n  const [userSiteName, setUserSiteName] = React.useState(null);\n  const [loading, setLoading] = React.useState(true);\n  const [testFilter, setTestFilter] = useState(null);\n  const [eventObject, setEventObject] = useState(0);\n  const [eventOrder, setEventOrder] = useState(null);\n\n  const [patientObject, setPatientObject] = useState(0);\n  const [testObject, setTestObject] = useState(0);\n  const [isShowUpdated, setIsShowUpdated] = useState(null);\n  const [showTestLogModal, setShowTestLogModal] = useState(null);\n  const [showPatientModal, setShowPatientModal] = useState(null);\n  const [testScheduleModal, setTestScheduleModal] = useState(null);\n  const [openTestScheduleModal, setOpenTestScheduleModal] = useState(\"\");\n  const [patientTestViewModal, setPatientTestViewModal] = useState(null);\n\n  const [resultView, setResultView] = useState(null);\n  const [requisitionView, setRequisitionView] = useState(null);\n  const [openUpComingSchedule, setOpenUpComingSchedule] = useState(false);\n  const [openLoadOrdersModal, setLoadOrderModal] = useState(false);\n  const [orderFiles, setOrderFiles] = useState({});\n  const [openConfirmation, setOpenConfirmation] = useState({ isShow: false });\n  const [downloadIndicator, setDownloadIndicator] = useState({ isShow: false });\n  const [locationObject, setLocationObject] = useState(0);\n  const [empId, setEmpId] = useState();\n\n  const location = useLocation();\n  const mainPanel = React.useRef(null);\n\n  useScanDetection({\n    onComplete: setScanBarcode,\n    minLength: 3,\n  });\n\n  //setTimeout(() => setScanBarcode(\"2409059001\"), 20000);\n  useEffect(() => {\n    if (scanBarcode && isValidBarcodeNumber(scanBarcode)) {\n      scanBarcodeFunction(scanBarcode);\n    }\n  }, [scanBarcode]);\n\n  const debouncedWriteFromAPI = useCallback(\n    debounce((files, user) => {\n      showUploadFile(files, user);\n    }, 500),\n    []\n  );\n\n  useEffect(() => {\n    debouncedWriteFromAPI(orderFiles, user);\n  }, [orderFiles]);\n\n  const showUploadFile = async (orderFiles, user) => {\n    const { files, uploadStatus, selectedSite } = orderFiles;\n    if (files?.length > 0) {\n      const pendingFiles = uploadStatus.filter((f) => f.status === \"pending\").length;\n\n      if (pendingFiles > 0) {\n        return;\n      }\n\n      const uploadedFileNames = uploadStatus[0]?.fileName;\n      let res = null;\n\n      const param = {\n        siteID: selectedSite?.value || \"\",\n        files: orderFiles.uploadStatus.filter((f) => f.status === \"done\").map((f) => f.fileName),\n        createdBy: user?.sub,\n        createdByName: user?.name,\n        uploadCallType: UPLOAD_CSV_FILE.test,\n        timezone: SYSTEM_TIME_ZONE,\n        test_date: moment(orderFiles.testDate).format(\"MMDDYY\"),\n        filesStatus: orderFiles.uploadStatus.map((f) => ({\n          status: f.status === \"done\" ? \"pending\" : f.status,\n          fileName: f.fileName,\n          id: f.id,\n          floorID: f.floorID,\n        })),\n        testTypeID: orderFiles.testTypeID,\n      };\n\n      res = await localApi.createUploadResult({\n        ...param,\n        status: \"pending\",\n        title: `Upload ${param.uploadCallType}`.toUpperCase(),\n        fileName: uploadedFileNames,\n        fileType: \"pdf\",\n      });\n\n      await localApi.saveOrdersFiles({\n        ...param,\n        orderDate: orderFiles.testDate,\n        requestID: res.id,\n        siteName: selectedSite?.label || \"\",\n      });\n\n      if (res) setNotificationList([{ ...res, Items: [] }]);\n\n      setOrderFiles({});\n    }\n  };\n\n  const parseSrNoObject = (sr_no, barcode, user) => {\n    const newObj = { accession_no: barcode, date: moment().toISOString(), name: user.name };\n    let arr = [];\n\n    if (sr_no == \"0\") {\n      arr.push(newObj);\n    } else {\n      try {\n        arr = typeof sr_no === \"string\" ? JSON.parse(sr_no) : sr_no;\n        arr[0] = newObj;\n      } catch (error) {\n        console.log(\"Parser Error:\", error);\n      }\n    }\n\n    return JSON.stringify(arr);\n  };\n\n  const updateOldScanning = async (barcode) => {\n    try {\n      const findTest = await api.fetchTestFromByClientID({\n        barcode: `${CONFIG.whiteLabelID}-${barcode}`,\n        clientID: CONFIG.clientID,\n      });\n\n      if (findTest) {\n        setLoading(true);\n        const { id, sequenceNo } = findTest;\n        const scanByLabUserID = user?.sub;\n        const scanByLabUserName = user?.name;\n        const sr_no = parseSrNoObject(findTest.sr_no, findTest.barcode, user);\n\n        if (!findTest.scanByLabUserID) {\n          await Promise.all([\n            api.updateTestRecord({\n              id,\n              scanByLabUserID,\n              scanByLabUserName,\n              pcrStatus: RECEIVED_BYLAB,\n              sr_no,\n              labelPrinted: 2,\n              _version: findTest._version,\n            }),\n            api.addLogs({\n              testID: id,\n              slug: \"Specimen Scanned In\",\n              newValue: \"Sample Received\",\n              sequenceNo,\n              userID: scanByLabUserID,\n              userName: scanByLabUserName,\n            }),\n          ]);\n        }\n        history.push(`/admin/test/${id}`);\n      }\n      setScanBarcode(\"\");\n      setLoading(false);\n    } catch (error) {\n      console.log(\"Error:\", error);\n      setLoading(false);\n    }\n  };\n\n  const updateNewScanning = async (barcode) => {\n    try {\n      const { data: findTest, testObject } = await api.fetchTestDetail({\n        id: `${CONFIG.whiteLabelID}-${barcode}`,\n      });\n     \n      if (findTest && !testObject.scanByLabUserName) {\n        setPatientTestViewModal({ order: findTest, type: \"order\", uiType: \"testManagmentUi\" });\n      } else if (testObject?.scanByLabUserName) {\n        const redirectPath = testObject.resultDateTime ? \"/admin/alltests\" : \"/admin/senttest\";\n        console.log(\"redirectPath Log\", redirectPath);\n        history.push(redirectPath, { term: \"barcode\", name: testObject.barcode });\n      }\n\n      setScanBarcode(\"\");\n    } catch (ex) {\n      console.log(\"Error:\", error);\n    }\n  };\n\n  const scanBarcodeFunction = async (barcode) => {\n    if (!barcode) return;\n\n    if (CONFIG.clientID === BIO_LAB_ID) {\n      updateOldScanning(barcode);\n    } else {\n      updateNewScanning(barcode);\n    }\n  };\n\n  //\n  const getRoutes = (routes) => {\n    return routes?.map((prop, key) => {\n      if (prop.layout === \"/admin\") {\n        return <Route path={prop.layout + prop.path} render={(props) => <prop.component {...props} />} key={key} />;\n      } else {\n        return null;\n      }\n    });\n  };\n\n  const fetchUserGroups = async () => {\n    const admins = await localApi.fetchAllUsersInGroup(\"Admins\");\n    const labs = await localApi.fetchAllUsersInGroup(\"Labs\");\n    const testers = await localApi.fetchAllUsersInGroup(\"Testers\");\n    const employers = await localApi.fetchAllUsersInGroup(\"Employers\");\n    const clients = await localApi.fetchAllUsersInGroup(\"Clients\");\n    return Promise.all([admins, labs, testers, employers, clients]).then((values) => [\n      admins,\n      labs,\n      testers,\n      employers,\n      clients,\n    ]);\n  };\n\n  const fetchUserFromLocalDB = async (id = CONFIG.whiteLabelID) => {\n    setUsersLoading(true);\n    const admins = await localApi.getUserFromLocalDB(id);\n\n    setUsers(\n      admins.sort((a, b) =>\n        a?.userRole?.toLowerCase() > b?.userRole?.toLowerCase()\n          ? 1\n          : a?.userRole?.toLowerCase() < b?.userRole?.toLowerCase()\n          ? -1\n          : 0\n      )\n    );\n    setUsersLoading(false);\n  };\n\n  const formatUserObject = (user, role) => {\n    const newUser = {};\n    const email = user.Attributes.find((attr) => {\n      return attr.Name === \"email\";\n    }).Value;\n    newUser.email = email;\n    const phone = user.Attributes.find((attr) => {\n      return attr.Name === \"phone_number\";\n    }).Value;\n    const firstName = user.Attributes.find((attr) => {\n      return attr.Name === \"custom:firstName\";\n    })?.Value;\n    const lastName = user.Attributes.find((attr) => {\n      return attr.Name === \"custom:lastName\";\n    })?.Value;\n\n    const note = user.Attributes.find((attr) => {\n      return attr.Name === \"custom:note\";\n    })?.Value;\n\n    const adRole = user.Attributes.find((attr) => {\n      return attr.Name === \"custom:adRole\";\n    })?.Value;\n\n    const clientID = user.Attributes.find((attr) => {\n      return attr.Name === \"custom:clientID\";\n    })?.Value;\n\n    const connectedID = user.Attributes.find((attr) => {\n      return attr.Name === \"custom:connectedID\";\n    })?.Value;\n\n    newUser.name = firstName && lastName ? `${firstName} ${lastName}` : \"-\";\n    newUser.phone_number = formatPhoneNumber(phone);\n    newUser.phone = phone;\n    newUser.username = user.Username;\n    newUser.firstName = firstName ? `${firstName}` : \"-\";\n    newUser.lastName = lastName ? `${lastName}` : \"-\";\n    newUser.status = user.UserStatus;\n    newUser.role = role === \"Employee\" ? \"Crew\" : role === \"Employer\" ? \"Health & Safety\" : role;\n    newUser.associated = adRole || note || \"N/A\";\n    newUser.clientID = clientID;\n    newUser.connectedID = connectedID;\n    const obj = Object.assign(\n      {\n        role: role === \"Employee\" ? \"Crew\" : role === \"Employer\" ? \"Health & Safety\" : role,\n      },\n      newUser\n    );\n    return { ...obj, label: `${firstName} ${lastName}`, value: user.Username };\n  };\n\n  const realTimeStatus = (record, opType, main = false) => {\n    setNotifySubs({ record, opType, main });\n  };\n\n  const handleSelect = async (results, event) => {\n    if (event) {\n      event.stopPropagation();\n      setUploadFileStatus(results);\n    } else {\n      setUploadPatientResult(results.Items);\n    }\n  };\n\n  const handleDeleteConfirm = async (isConfirm) => {\n    setOpenDeleteConfirmation(false);\n    if (!isConfirm) {\n      return;\n    }\n    setLoading(true);\n    const testList = [...(openDeleteConfirmation?.tests || [])];\n    let ttlTest = testList.length;\n    if (ttlTest === 0) {\n      return;\n    }\n\n    await deleteTests(testList);\n\n    setLoading(false);\n    openDeleteConfirmation.afterDeletedTest(testList);\n    setOpenDeleteConfirmation(null);\n  };\n\n  const fetchAdmins = async () => {\n    const list = [];\n    const admins = await localApi.fetchUsersInGroup(\"Admins\");\n    list.push(...admins.map((admin) => formatUserObject(admin, \"Admin\")));\n    setAdmins(list);\n    return admins;\n  };\n\n  const fetchClients = async () => {\n    const models = await localApi.getClients();\n    setClients(models);\n    if (models && models.length > 0) dispatch(setClientData(models[0]));\n  };\n\n  const formatFilters = (params, dateFilter) => {\n    const filterParam = params;\n\n    if (dateFilter) {\n      const { start, end } = dateFilter;\n      if (start)\n        Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n      if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n    }\n    return filterParam;\n  };\n\n  const downloadRequisition = async (params) => {\n    try {\n      const { filteredTests, allSelected, checkboxes, filter = {}, timeFilter, type } = params;\n      let items = [];\n      let isDownloadAll = false;\n\n      if (allSelected) {\n        setLoading(true);\n        const filterParam = formatFilters(filter, timeFilter);\n        items = await api.splitReqForm({ ...filterParam, reqForm: \"y\", type });\n        setLoading(false);\n        isDownloadAll = true;\n      } else if (checkboxes.length > 0) {\n        const selectedItemsData = filteredTests.filter((item) => checkboxes.includes(item.id));\n        let barcode = CONFIG.clientID === BIO_LAB_ID ? \"barcode\" : \"orderNo\";\n        if (type == \"re\") barcode = \"barcode\";\n\n        items = selectedItemsData.map((item) => `${item[barcode]}.pdf`);\n      }\n\n      if (items.length > 0) {\n        await downloadRequisitionFile({ items, isDownloadAll, type });\n      } else {\n        setErrorMessageText(\"No File to downlaod\");\n      }\n    } catch (error) {\n      setLoading(false);\n      console.log(\"error\", error);\n      setErrorMessageText(\"Fail to downlaod\");\n    }\n  };\n\n  const downloadRequisitionFile = async (paramObj) => {\n    try {\n      const { items, isDownloadAll, type } = paramObj;\n      const ttlRecord = isDownloadAll ? items.length : Math.ceil(items.length / 20);\n\n      setDownloadIndicator({ isShow: true, totalRecords: ttlRecord, processCount: 0 });\n      let resp = await processChunks(paramObj);\n      let totalFiles = resp.length;\n\n      let completedFiles = 0;\n\n      const downloadFileName = type === \"rq\" ? \"req_form.zip\" : \"results.zip\";\n\n      if (resp.length > 0) {\n        // Use Promise.allSettled to download the requisition files\n        await Promise.allSettled(\n          resp.map(async (file) => {\n            try {\n              await api.downloadRequisitionZip(file.fileName, downloadFileName, BUCKET_EXTERNAL_IMAGES);\n              completedFiles++;\n              setDownloadIndicator({ isShow: true, totalRecords: totalFiles, processCount: completedFiles });\n            } catch (downloadError) {\n              completedFiles++;\n              setDownloadIndicator({ isShow: true, totalRecords: totalFiles, processCount: completedFiles });\n            }\n          })\n        );\n      }\n      setDownloadIndicator({ isShow: false });\n    } catch (error) {\n      setDownloadIndicator({ isShow: false });\n    }\n  };\n\n  function chunkArray(array, chunkSize) {\n    const chunks = [];\n    for (let i = 0; i < array.length; i += chunkSize) {\n      chunks.push(array.slice(i, i + chunkSize));\n    }\n    return chunks;\n  }\n\n  const processChunks = async ({ items, isDownloadAll, type }) => {\n    try {\n      const dataToProcess = isDownloadAll ? items : chunkArray(items, 20);\n\n      const result = await Promise.allSettled(\n        dataToProcess.map((chunk) =>\n          api.downloadRequisitionForm(isDownloadAll ? { ...chunk, type } : { ids: chunk, type })\n        )\n      );\n\n      // Process the settled promises\n      const successfulResults = result\n        .filter((promiseResult) => promiseResult.status === \"fulfilled\")\n        .map((fulfilledResult) => fulfilledResult.value);\n\n      return successfulResults;\n    } catch (error) {\n      console.error(\"Error processing chunks:\", error);\n    }\n  };\n\n  const fetchSites = async (params) => {\n    const models = await localApi.getSites(params);\n    setSites(models?.filter((s) => !s.isArchive && s.siteType !== \"lab\"));\n  };\n\n  const fetchUploadRequest = async () => {\n    const models = await localApi.fetchUploadRequest(user);\n\n    setNotificationList(models);\n  };\n  const fetchSitesByUser = async (siteID) => {\n    const models = await localApi.getUserSiteData(siteID);\n    setUserSiteName(models[0]?.name);\n    return models;\n  };\n\n  const fetchSitesByClient = async (clientID) => {\n    const models = await localApi.getSitesByClient(clientID);\n    return models;\n  };\n\n  const findTotalTestsBySites = async (sites) => {\n    const passFailClients = await localApi.getResultClients();\n    const tests = [];\n    sites &&\n      sites?.forEach((site) => {\n        return site?.tests?.map((test) => {\n          return tests.push(formatTest(test, passFailClients));\n        });\n      });\n    setTotalTests(tests);\n\n    return tests;\n  };\n\n  const fetchExternalTests = async () => {\n    const models = await localApi.getExternalTest();\n\n    setExternalTest(models.map((t) => formatExternalTest(t)));\n  };\n\n  const updatedShow = (obj) => {\n    if (obj) {\n      setIsShowUpdated(obj);\n    } else {\n      setIsShowUpdated(null);\n    }\n  };\n\n  const getClientName = (id) => {\n    if (!id) return \"\";\n    if (clients) {\n      const client = clients.find((c) => c.id === id);\n      if (client) return client.name;\n    }\n    return \"\";\n  };\n\n  const parseResult = (test) => {\n    if (!test) return \"\";\n\n    //if (test.prevTestID) return \"View Detail\";\n    if (test.resultDetails) return \"View Detail\";\n    if (test.result === \"Details\") return \"View Detail\";\n    if (!test.result) return \"\";\n    if (clients) {\n      const client = clients.find((c) => c.id === test.clientID);\n      if (client && client.resultType === \"P/F\") {\n        return AMAZON_CLIENT_RESULT[test.result];\n      }\n    }\n\n    return test.result && test.result.charAt(0).toUpperCase() + test.result.slice(1);\n  };\n\n  const parseTestResultForPDF = (test) => {\n    if (!test) return \"\";\n\n    if (clients) {\n      const client = clients.find((c) => c.id === test.clientID);\n      if (client && client.resultType === \"P/F\") {\n        return AMAZON_CLIENT_RESULT[test.result];\n      }\n    }\n\n    if (test.result === \"Not Detected\") return test.result;\n    return test.result && RESULT_PDF[test.result.toLowerCase()];\n  };\n\n  const getEmployeeByID = async (id) => {\n    let emp = await localApi.getRecordById(id, \"employee\");\n    if (emp && emp.length > 0) {\n      if (CONFIG.isWhiteLabel && emp[0]?.mdID) {\n        return `BRM-002-${emp[0]?.mdID}` || id;\n      }\n      return emp[0]?.mdID || id;\n    }\n    return id;\n  };\n\n  const loadEmp = async () => {\n    let id = await getEmployeeByID(resultView.employeeID);\n    setEmpId(id);\n  };\n\n  useEffect(() => {\n    if (resultView) {\n      loadEmp();\n    }\n  }, [resultView]);\n\n  const showDocumentPreview = async () => {\n    setIsPreviewModalOpen(true);\n    const result = await Storage.get(`results/${env}/${resultView?.clientID}/${resultView?.barcode}.pdf`, {\n      bucket: \"employee-external-tests\",\n      download: false,\n      contentDisposition: \"inline\",\n      Bucket: \"employee-external-tests\",\n      contentType: \"application/pdf\",\n    });\n\n    setFileUrl(result);\n    setFileType(\"pdf\");\n  };\n\n  const fetchLabs = async () => {\n    const models = await localApi.getLabs();\n    setLabs(models);\n    const labData = models;\n\n    if (user.isLab() || user.isSite()) {\n      const lab = labData.length === 1 ? labData[0] : labData.find((l) => l.id === connectedIDInLocalStorage.get());\n\n      if (lab) {\n        dispatch(setGlobalLab(lab));\n        setUserLab(lab);\n        setUserLabName(lab.name);\n        dispatch(\n          setCountryCode(\n            countryListAllIsoData.find((item) => item.name === lab.country || item.code === lab.country)?.code\n          )\n        );\n      }\n    }\n  };\n\n  const fetchPendingTests = async (ids) => {\n    if (ids) {\n      const newList = pendingTests.filter((t) => ids.indexOf(t.id) === -1 && (t.invalidResultStatus || 0) === 0);\n      setPendingTests(newList);\n      return;\n    }\n    const params = { pendingRelease: \"Pending\" };\n    if (CONFIG.isWhiteLabel) {\n      Object.assign(params, { labID: connectedIDInLocalStorage.get() || \"A\" });\n    }\n    const models = await localApi.getTestListFromPG(params);\n\n    const tests = models.rows\n      .map((test) => {\n        return formatTest(test);\n      })\n      .filter((f) => (f.invalidResultStatus || 0) === 0);\n    setPendingTests(tests);\n  };\n\n  const fetchInvalidTests = async (ids) => {\n    if (ids) {\n      const newList = invalidTests.filter((t) => ids.indexOf(t.id) === -1 && (t.invalidResultStatus || 0) === 0);\n      setInvalidTests(newList);\n      return;\n    }\n    const models = await localApi.getTestListFromPG({ limit: 1000, page: 1, result: \"Invalid\" });\n    const tests = models.rows\n      .map((test) => {\n        return formatTest(test);\n      })\n      .filter((f) => (f.invalidResultStatus || 0) === 0);\n    setInvalidTests(tests);\n  };\n\n  const fetchAllAdminTests = async () => {\n    const passFailClients = await localApi.getResultClients();\n    const models = await localApi.getTotalAdminTests();\n    const tests = models.map((test) => {\n      return formatTest(test, passFailClients);\n    });\n    setAdminTotalTests(tests);\n  };\n\n  const fetchNewTests = async () => {\n    const models = await localApi.getCurrentLabUserTests();\n    setNewTests(models);\n    return models;\n  };\n\n  const onSubscriptionTrigger = debounce(() => refreshDataOnSubscribe(), 6000);\n\n  const refreshDataOnSubscribe = () => {\n    const userType = medFlowInLocalStorage.get() || \"A\";\n    if (userType === \"L\" || userType === \"LT\") {\n      fetchNewTests();\n    }\n  };\n  const [user, setUser] = useState();\n\n  const loadSiteData = async () => {\n    try {\n      const connectedID = connectedIDInLocalStorage.get() || \"A\";\n      if (\"A\" !== connectedID) {\n        const usites = await fetchSitesByUser(connectedID);\n        findTotalTestsBySites(usites);\n      }\n    } catch (ex) {\n      console.log(\"Error\", ex);\n    }\n  };\n\n  const setOrderObject = (event, obj) => {\n    if (!obj) return;\n\n    if (obj.clientID !== CONFIG.clientID) {\n      return;\n    }\n    setEventOrder({ opType: event, element: obj });\n\n    if (event === \"UPDATE\") {\n      const formatedOrderForUpdate = formatOrders(obj, user?.isSite());\n\n      setPatientTestViewModal((prevState) => {\n        if (prevState?.order?.id === formatedOrderForUpdate?.id) {\n          return {\n            ...prevState,\n            order: formatedOrderForUpdate,\n          };\n        }\n        return prevState;\n      });\n    }\n  };\n\n  useEffect(() => {\n    if (!testObject) return;\n    const eventType = testObject.opType;\n    const model = formatTest(testObject.element);\n    const result = model.result;\n\n    if (result && result.toLowerCase() === RESULT_CHECK[result.toLowerCase()]) {\n      const newList = [...pendingTests];\n      const index = pendingTests.findIndex((t) => t.id === model.id);\n\n      if (\n        (eventType === \"DELETE\" || (model.status === \"Processed\" && result.toLowerCase() === \"positive\")) &&\n        index !== -1\n      ) {\n        newList.splice(index, 1);\n      } else if (\n        (eventType === \"INSERT\" || eventType === \"UPDATE\") &&\n        index === -1 &&\n        (model.status === \"Pending\" || result.toLowerCase() === \"inconclusive\" || result.toLowerCase() === \"invalid\")\n      ) {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\" && index !== -1) {\n        newList.splice(index, 1, model);\n      }\n      setPendingTests(newList.filter((f) => (f.invalidResultStatus || 0) === 0));\n    }\n    // const newList = [...invalidTests];\n    // const index = invalidTests.findIndex((t) => t.id === model.id);\n    // if (eventType === \"DELETE\" && index !== -1) {\n    //   newList.splice(index, 1);\n    // } else if ((eventType === \"INSERT\" || eventType === \"UPDATE\") && index === -1) {\n    //   newList.unshift(model);\n    // } else if (eventType === \"UPDATE\" && index !== -1) {\n    //   newList.splice(index, 1, model);\n    // }\n    // setInvalidTests(newList.filter((f) => (f.invalidResultStatus || 0) == 0));\n  }, [testObject]);\n\n  const onSubscriptionUpdateTestData = (model, event) => {\n    try {\n      const noSubs = ROUTES.some((r) => window.location.href.includes(r));\n      if (noSubs) return;\n\n      const userType = medFlowInLocalStorage.get() || \"A\";\n      const connectedID = connectedIDInLocalStorage.get() || \"A\";\n\n      if (userType === \"A\" || CONFIG.isWhiteLabel) {\n        if (CONFIG.isWhiteLabel && (model.clientID !== CONFIG.clientID || model.labID !== CONFIG.whiteLabelID)) {\n          return;\n        }\n        setTestObject({ opType: event, element: model });\n      } else if (\n        ((userType === \"L\" || userType === \"LT\") && model.labID === connectedID) ||\n        (userType === \"E\" && (CONFIG.allowSites || []).includes(model.siteID))\n      ) {\n        setEventObject({ opType: event, element: model });\n      }\n    } catch (ex) {\n      console.log(\"[onSubscriptionUpdateTestData]\", ex);\n    }\n  };\n\n  const onSubscriptionUpdateEmployeeData = (modelObj, event) => {\n    try {\n      const model = formatPatientIntoPgData(modelObj);\n      const isOnPatientView = window.location.href.includes(\"patient\");\n      if (!isOnPatientView) return;\n\n      if (CONFIG.isWhiteLabel && model.clientID !== CONFIG.clientID) {\n        return;\n      }\n\n      const providerMatch = model.provider?.some((provider) => (CONFIG.allowSites || []).includes(provider.value));\n\n      if (event === \"INSERT\" && CONFIG.siteID && !providerMatch) {\n        return;\n      }\n\n      setPatientObject({ opType: event, element: model });\n    } catch (ex) {\n      console.log(\"[onSubscriptionUpdateEmployeeData]\", ex);\n    }\n  };\n\n  const onSubscriptionUpdateSites = (model, event) => {\n    try {\n      const isOnLocationView = window.location.href.includes(\"testtypes\");\n      if (!isOnLocationView) return;\n\n      if (CONFIG.isWhiteLabel && model.clientID !== CONFIG.clientID) {\n        return;\n      }\n      dispatch(updateLocationOnSubscription({ model, event }));\n\n      // setLocationObject({ opType: event, element: model });\n    } catch (ex) {\n      console.log(\"[onSubscriptionUpdateEmployeeData]\", ex);\n    }\n  };\n\n  const setRoutesWithSupport = (baseRoutes, setFunction) => {\n    const support = {\n      path: \"/support\",\n      name: \"Support\",\n      icon: \"far fa-question-circle\",\n      component: SupportView,\n      layout: \"/admin\",\n    };\n    \n    if (CONFIG.clientID === LIFE_CARE_ID) {\n      const updatedRoutes = [...baseRoutes]; \n      updatedRoutes.splice(4, 0, support); \n      setFunction(updatedRoutes);\n      return;\n    }\n    \n    setFunction(baseRoutes);\n  };\n  React.useEffect(() => {\n    let apiSubscription = null;\n    let showSubscription = null;\n    let showCreateSubscription = null;\n    let uploadRequestGQLSubscription = null;\n    let uploadRequestMainGQLSubscription = null;\n    let orderUpdateGQLSubscription = null;\n    let orderCreateGQLSubscription = null;\n    let createRequestGQLSubscription = null;\n    let patientSubscriptionUpdate = null;\n    let patientSubscriptionCreate = null;\n    let patientSubscriptionDelete = null;\n    let testUpdateSubscription = null;\n    let clientSubscription = null;\n    const userType = medFlowInLocalStorage.get() || \"A\";\n    if (userType === \"A\" && clientIDInLocalStorage.get() && connectedIDInLocalStorage.get()) {\n      setRoutesWithSupport(labAdminRoutes, setUserRoutes);\n    } else if (userType === \"A\") {\n      setRoutesWithSupport(adminRoutes, setUserRoutes);\n    } else if (userType === \"L\") {\n      setLabRoutes();\n    } else if (userType === \"LT\") {\n      setLabRoutes();\n    } else if (userType === \"E\") {\n      setRoutesWithSupport(siteRoutes, setUserRoutes);\n    }\n\n    const getUSer = async () => {\n      const days = 2;\n      const date = moment().subtract(days, \"days\").format(\"YYYY-MM-DD\");\n      const user = await localApi.getCurrentUser();\n      let getUserRoles = await localApi.getEmployeeRoles(user?.sub);\n\n      const isRoleIdExist = localStorage.getItem(\"roleID\");\n\n      try {\n        if (isRoleIdExist) {\n          const rolesData = getUserRoles?.[0];\n\n          const selectedRoles = JSON.parse(rolesData.roles);\n\n          const userPermissionsData = selectedRoles.find((item) => item.id === isRoleIdExist);\n\n          dispatch(setPermission(userPermissionsData?.permission || null));\n        } else {\n          const userPermission = getUserRoles?.[0]?.userPermission || null;\n          dispatch(setPermission(userPermission));\n        }\n      } catch (error) {\n        console.error(\"An error occurred while setting permissions:\", error);\n      }\n\n      dispatch(setGlobalUser(getUserRoles[0] || null));\n      if (getUserRoles[0]?.labAdmin) {\n        const currentUser = getUserRoles[0];\n        connectedIDInLocalStorage.save(currentUser.labAdmin);\n        const roles = typeof currentUser.roles === \"string\" ? JSON.parse(currentUser.roles) : currentUser.roles;\n        const clientRole = roles.find((f) => f.role === \"Client\");\n        if (clientRole) clientIDInLocalStorage.save(clientRole.relatedId);\n      }\n\n      let siteID = null;\n\n      if (CONFIG.isWhiteLabel) {\n        const currentUser = getUserRoles[0];\n        const roles = typeof currentUser.roles === \"string\" ? JSON.parse(currentUser.roles) : currentUser.roles;\n        const labRoles = roles.filter(\n          (f) =>\n            f.role === \"Lab\" ||\n            f.role === \"Labs\" ||\n            f.role.includes(\"LabTech\") ||\n            f.role === \"Employer\" ||\n            f.role === \"Employers\" ||\n            f.role === HEALTH_AND_SAFTEY ||\n            f.role.includes(\"Provider\")\n        );\n        let labRole = null;\n        if (labRoles.length === 1) {\n          labRole = labRoles[0];\n        } else if (labRoles.length > 1) {\n          labRole = labRoles.find((r) => r.relatedId === connectedIDInLocalStorage.get());\n        }\n        if (labRole) {\n          siteID = labRole.role.includes(\"Employer\") || labRole.role.includes(\"Provider\") ? labRole.relatedId : null;\n\n          let allowSites = currentUser.provider ? currentUser.provider.map((p) => p.value) : [];\n\n          if (siteID && !allowSites.includes(siteID)) {\n            allowSites.push(siteID);\n          }\n\n          CONFIG.whiteLabelID = labRole.labID;\n          CONFIG.clientID = labRole.clientID;\n          CONFIG.siteID = siteID;\n          CONFIG.basename = labRole.title;\n          CONFIG.allowSites = allowSites;\n        }\n      }\n\n      let syncExpressionsByUserType = [];\n      if (user) {\n        userRef.current = user;\n        if (user.isAdmin() || user.isLab() || user.isSite() || user.isClient()) {\n          syncExpressionsByUserType = [\n            syncExpression(TestConsent, () => {\n              return (test) => test.employeeID(\"eq\", \"123\");\n            }),\n            syncExpression(EmployeeBarCodes, () => {\n              return (emp) => emp.employeeID(\"eq\", \"123\");\n            }),\n            syncExpression(Users, () => {\n              return (emp) => emp.id(\"eq\", \"123\");\n            }),\n            syncExpression(Employee, () => {\n              return (test) => test.id(\"eq\", \"123\");\n            }),\n            syncExpression(ExternalTest, () => {\n              return (test) => test.id(\"eq\", \"000\");\n            }),\n            syncExpression(Order, () => {\n              return (test) => test.id(\"eq\", \"000\");\n            }),\n          ];\n          if (user.isAdmin()) {\n            syncExpressionsByUserType.push(\n              syncExpression(Test, () => {\n                return (test) => test.status(\"ne\", \"Processed\");\n              })\n            );\n          }\n          if (user.isAdmin() && connectedIDInLocalStorage.get() && clientIDInLocalStorage.get()) {\n            syncExpressionsByUserType.push(\n              syncExpression(Test, () => {\n                return (test) => test.labID(\"eq\", connectedIDInLocalStorage.get()); //get All Tests from Lab ID\n              })\n            );\n\n            syncExpressionsByUserType.push(\n              syncExpression(Lab, () => {\n                return (test) => test.id(\"eq\", connectedIDInLocalStorage.get()); //get All Labs from Lab ID\n              })\n            );\n\n            syncExpressionsByUserType.push(\n              syncExpression(Client, () => {\n                return (test) => test.id(\"eq\", clientIDInLocalStorage.get()); //get All Clients from Cleint ID\n              })\n            );\n            const siteCondition = siteID\n              ? syncExpressionsByUserType.push(\n                  syncExpression(Site, () => {\n                    return (test) => test.id(\"eq\", siteID); // If siteID is present, match by siteID\n                  })\n                )\n              : syncExpressionsByUserType.push(\n                  syncExpression(Site, () => {\n                    return (test) => test.clientID(\"eq\", clientIDInLocalStorage.get()); // Otherwise, match by clientID from local storage\n                  })\n                );\n          }\n\n          if (CONFIG.isWhiteLabel && CONFIG.clientID) {\n            syncExpressionsByUserType.push(\n              syncExpression(Lab, () => {\n                return (test) => test.id(\"eq\", CONFIG.whiteLabelID); //get All Labs from Lab ID\n              })\n            );\n            syncExpressionsByUserType.push(\n              syncExpression(GeneralSettingType, () => {\n                return (test) => test.clientID(\"eq\", clientIDInLocalStorage.get());\n              })\n            );\n            syncExpressionsByUserType.push(\n              syncExpression(Client, () => {\n                return (test) => test.id(\"eq\", CONFIG.clientID); //get All Clients from Client ID\n              })\n            );\n            syncExpressionsByUserType.push(\n              syncExpression(Site, () => {\n                return (test) => test.clientID(\"eq\", CONFIG.clientID); //get All Clients from Client ID\n              })\n            );\n            syncExpressionsByUserType.push(\n              syncExpression(UploadRequestMain, () => {\n                return (test) => test.and((test) => [test.createdBy(\"eq\", user?.sub)]); //get All  UploadRequestMain from user ID\n              })\n            );\n            syncExpressionsByUserType.push(\n              syncExpression(UploadRequest, () => {\n                return (test) => test.createdBy(\"eq\", user?.sub); //get All UploadRequest from User ID\n              })\n            );\n            syncExpressionsByUserType.push(\n              syncExpression(Documents, () => {\n                return (test) => test.clientID(\"eq\", clientIDInLocalStorage.get());\n              })\n            );\n            syncExpressionsByUserType.push(\n              syncExpression(LencoBarcodes, () => {\n                return (test) => test.clientID(\"eq\", clientIDInLocalStorage.get());\n              })\n            );\n          }\n\n          if (user.isLab()) {\n            let connectedIDValue = connectedIDInLocalStorage.get();\n            connectedIDValue = connectedIDValue || user[\"custom:connectedID\"];\n            syncExpressionsByUserType.push(\n              syncExpression(Test, () => {\n                return (test) => test.labID(\"eq\", connectedIDValue).test_type(\"eq\", \"PCR\").createdAt(\"ge\", date); //get All Tests from Lab ID\n              })\n            );\n          }\n          if (user.isSite()) {\n            let connectedIDValue = connectedIDInLocalStorage.get();\n            connectedIDValue = connectedIDValue || user[\"custom:connectedID\"];\n            syncExpressionsByUserType.push(\n              syncExpression(Test, () => {\n                return (test) => test.siteID(\"eq\", connectedIDValue).createdAt(\"ge\", date); //get All Tests from Lab ID\n              })\n            );\n            syncExpressionsByUserType.push(\n              syncExpression(LencoBarcodes, () => {\n                return (test) => test.id(\"eq\", \"123\");\n              })\n            );\n          }\n\n          DataStore.configure({\n            maxRecordsToSync: 90000,\n            syncPageSize: 2000,\n            syncExpressions: syncExpressionsByUserType,\n          });\n          DataStore.start();\n          dispatch(fetchCompanySetting({ noShowLoader: true }));\n          setUser(user);\n          handleStart();\n        } else {\n          setLoading(false);\n          setShowAlert(true);\n        }\n      } else {\n        setLoading(false);\n        console.log(\"push to login\");\n        history.push(\"/login\");\n      }\n    };\n    getUSer()\n      .then((res) => {\n        showSubscription = API.graphql(graphqlOperation(subscriptions.onUpdateSite)).subscribe({\n          next: ({\n            value: {\n              data: { onUpdateSite },\n            },\n            value,\n          }) => {\n            onSubscriptionUpdateSites(onUpdateSite, \"UPDATE\");\n          },\n          error: (error) => console.warn(error),\n        });\n\n        showCreateSubscription = API.graphql(graphqlOperation(subscriptions.onCreateSite)).subscribe({\n          next: ({\n            value: {\n              data: { onCreateSite },\n            },\n            value,\n          }) => {\n            onSubscriptionUpdateSites(onCreateSite, \"INSERT\");\n          },\n          error: (error) => console.warn(error),\n        });\n\n        if (CONFIG.clientID) {\n          uploadRequestMainGQLSubscription = API.graphql(\n            graphqlOperation(subscriptions.onUpdateUploadRequestMain)\n          ).subscribe({\n            next: ({\n              value: {\n                data: { onUpdateUploadRequestMain },\n              },\n              value,\n            }) => {\n              const { createdBy, clientID, siteID, filesStatus } = onUpdateUploadRequestMain;\n\n              if (!onUpdateUploadRequestMain || createdBy !== userRef.current?.sub) return;\n\n              const isValidClient = clientID === CONFIG.clientID || !CONFIG.clientID;\n              const isValidSite = siteID === CONFIG.siteID || !CONFIG.siteID;\n\n              if (!isValidClient || !isValidSite) return;\n\n              realTimeStatus(\n                { ...onUpdateUploadRequestMain, filesStatus: filesStatus ? JSON.parse(filesStatus) : null },\n                CRUD_TYPE.UPDATE,\n                true\n              );\n            },\n            error: (error) => console.warn(error),\n          });\n        }\n\n        uploadRequestGQLSubscription = API.graphql(graphqlOperation(subscriptions.onUpdateUploadRequest)).subscribe({\n          next: ({\n            value: {\n              data: { onUpdateUploadRequest },\n            },\n            value,\n          }) => {\n            if (!onUpdateUploadRequest && onUpdateUploadRequest.clientID !== CONFIG.clientID && !CONFIG.siteID) {\n              return;\n            }\n            if (!onUpdateUploadRequest && onUpdateUploadRequest.siteID !== CONFIG.siteID && !CONFIG.siteID) {\n              return;\n            }\n            if (onUpdateUploadRequest.createdBy === userRef.current?.sub)\n              realTimeStatus(\n                { ...onUpdateUploadRequest, data: JSON.parse(onUpdateUploadRequest.data) },\n                CRUD_TYPE.UPDATE\n              );\n          },\n          error: (error) => console.warn(error),\n        });\n        orderUpdateGQLSubscription = API.graphql(graphqlOperation(subscriptions.onUpdateOrder)).subscribe({\n          next: ({\n            value: {\n              data: { onUpdateOrder },\n            },\n            value,\n          }) => {\n            setOrderObject(\"UPDATE\", onUpdateOrder);\n          },\n          error: (error) => console.warn(error),\n        });\n        orderCreateGQLSubscription = API.graphql(graphqlOperation(subscriptions.onCreateOrder)).subscribe({\n          next: ({\n            value: {\n              data: { onCreateOrder },\n            },\n            value,\n          }) => {\n            setOrderObject(\"INSERT\", onCreateOrder);\n          },\n          error: (error) => console.warn(error),\n        });\n        createRequestGQLSubscription = API.graphql(graphqlOperation(subscriptions.onCreateUploadRequest)).subscribe({\n          next: ({\n            value: {\n              data: { onCreateUploadRequest },\n            },\n            value,\n          }) => {\n            if (!onCreateUploadRequest && onCreateUploadRequest.clientID !== CONFIG.clientID && !CONFIG.siteID) {\n              return;\n            }\n            if (!onCreateUploadRequest && onCreateUploadRequest.siteID !== CONFIG.siteID && !CONFIG.siteID) {\n              return;\n            }\n            if (onCreateUploadRequest.createdBy === userRef.current?.sub)\n              realTimeStatus(\n                { ...onCreateUploadRequest, data: JSON.parse(onCreateUploadRequest.data) },\n                CRUD_TYPE.INSERT\n              );\n          },\n          error: (error) => console.warn(error),\n        });\n        clientSubscription = API.graphql(graphqlOperation(subscriptions.onUpdateClient)).subscribe({\n          next: ({\n            value: {\n              data: { onUpdateClient: clientData },\n            },\n            value,\n          }) => {\n            const { uploadFileStatus } = clientData;\n            if (!uploadFileStatus) return;\n            const fileStatus = JSON.parse(uploadFileStatus);\n\n            if (\n              !(userRef.current.roles.includes(\"Employers\") && clientData.id === CONFIG.clientID) &&\n              fileStatus.createdBy !== userRef.current?.sub\n            ) {\n              return;\n            }\n\n            if (fileStatus && fileStatus.createdBy === userRef.current?.sub) {\n              // getPatientResultFromStorage(fileStatus);\n            }\n          },\n          error: (error) => console.warn(error),\n        });\n\n        testUpdateSubscription = API.graphql(graphqlOperation(subscriptions.onCreateTest)).subscribe({\n          next: ({\n            value: {\n              data: { onCreateTest },\n            },\n            value,\n          }) => {\n            console.log(\"[onCreateTest]\");\n            onSubscriptionUpdateTestData(onCreateTest, \"INSERT\");\n          },\n          error: (error) => console.warn(error),\n        });\n        apiSubscription = API.graphql(graphqlOperation(subscriptions.onUpdateTest)).subscribe({\n          next: ({ value: { data }, value }) => {\n            let model = data.onUpdateTest;\n            console.log(\"[onUpdateTest]\");\n            onSubscriptionUpdateTestData(model, \"UPDATE\");\n          },\n          error: (error) => console.warn(error),\n        });\n        patientSubscriptionUpdate = API.graphql(graphqlOperation(subscriptions.onUpdateEmployee)).subscribe({\n          next: ({ value: { data }, value }) => {\n            onSubscriptionUpdateEmployeeData(data.onUpdateEmployee, \"UPDATE\");\n          },\n          error: (error) => console.warn(error),\n        });\n        patientSubscriptionCreate = API.graphql(graphqlOperation(subscriptions.onCreateEmployee)).subscribe({\n          next: ({ value: { data }, value }) => {\n            onSubscriptionUpdateEmployeeData(data.onCreateEmployee, \"INSERT\");\n          },\n          error: (error) => console.warn(error),\n        });\n        patientSubscriptionDelete = API.graphql(graphqlOperation(subscriptions.onDeleteEmployee)).subscribe({\n          next: ({ value: { data }, value }) => {\n            onSubscriptionUpdateEmployeeData(data.onDeleteEmployee, \"DELETE\");\n          },\n          error: (error) => console.warn(error),\n        });\n      })\n      .catch((err) => {\n        console.log(\"Error:-\", err);\n      });\n    return () => {\n      if (apiSubscription) apiSubscription.unsubscribe();\n      if (patientSubscriptionDelete) patientSubscriptionDelete.unsubscribe();\n      if (patientSubscriptionCreate) patientSubscriptionCreate.unsubscribe();\n      if (patientSubscriptionUpdate) patientSubscriptionUpdate.unsubscribe();\n      if (showSubscription) showSubscription.unsubscribe();\n      if (showCreateSubscription) showCreateSubscription.unsubscribe();\n      if (clientSubscription) clientSubscription.unsubscribe();\n      if (orderUpdateGQLSubscription) orderUpdateGQLSubscription.unsubscribe();\n      if (orderCreateGQLSubscription) orderCreateGQLSubscription.unsubscribe();\n      if (uploadRequestGQLSubscription) uploadRequestGQLSubscription.unsubscribe();\n      if (createRequestGQLSubscription) createRequestGQLSubscription.unsubscribe();\n      if (uploadRequestMainGQLSubscription) uploadRequestMainGQLSubscription.unsubscribe();\n      if (testUpdateSubscription) testUpdateSubscription.unsubscribe();\n    };\n  }, []);\n\n  React.useEffect(() => {\n    document.documentElement.scrollTop = 0;\n    document.scrollingElement.scrollTop = 0;\n    // mainPanel.current.scrollTop = 0;\n    if (window.innerWidth < 993 && document.documentElement.className.indexOf(\"nav-open\") !== -1) {\n      document.documentElement.classList.toggle(\"nav-open\");\n      var element = document.getElementById(\"bodyClick\");\n      element.parentNode.removeChild(element);\n    }\n  }, [location]);\n\n  const contextSwitch = (role) => {\n    const generalObj = {\n      user,\n      labs,\n      sites,\n      clients,\n      totalTests,\n      eventOrder,\n      locationObject,\n      userLabName,\n      setIsProcessing: (val) => setIsProcessing(val),\n      reCallClient:()=>fetchClients(),\n      showEligibilityDetails: (obj) => checkEligibilityDetails(obj),\n      setNotificationList: (val) => setNotificationList((prev) => [...prev, val]),\n      printBarcode: (test) => printBarcode(test),\n      showLogs: (test) => setShowTestLogModal(test),\n      sendEmailToCrew: (tests) => sendResultOnEmail(tests),\n      showTestScheduleModal: (employees, isUploadCall) => {\n        setTestScheduleModal(employees);\n        setOpenTestScheduleModal(isUploadCall);\n      },\n      openPatientTestViewModal: (selectedRow) => setPatientTestViewModal(selectedRow),\n      showTestResult: (test) => setResultView(test),\n      showRequisitionForm: (form) => setRequisitionView(form),\n      showUpComingSchedule: () => setOpenUpComingSchedule(true),\n      showPatient: (emp) => setShowPatientModal(emp),\n      patientObject,\n      testFilter,\n      setTestFilter: (filter) => setTestFilter(filter),\n      showSuccessMessage: (message) => setSuccessMessageText(message),\n      showSuccessBottomMessage: (message) => setSuccessBottomMessageText(message),\n      showErrorMessage: (message) => setErrorMessageText(message),\n      getEmployeeID: (id) => getEmployeeByID(id),\n      parseResult: (test) => parseResult(test),\n      parseTestResultForPDF: (test) => parseTestResultForPDF(test),\n      getLab: (test) => getLab(test),\n      getLabName: (id) => getLabName(id),\n      getClientName: (id) => getClientName(id),\n      getSiteName: (id) => getSiteName(id),\n      openNoteModal: (obj) => setNoteObject(obj),\n      showLoadOrderModal: (obj) => setLoadOrderModal(true),\n      showOrderModal: (obj) => setShowOrderModal(obj),\n      createTestFromOrder: (obj) => setShowOrderTestModal(obj),\n      downloadRequisition: (obj) => downloadRequisition(obj),\n      sendToLab: (tests, checkboxes) => handleExportLabGen(tests, checkboxes),\n      resetSites: (params) => fetchSites(params),\n    };\n    const adminCommon = {\n      users,\n      usersLoading,\n      resetUsers: (id) => fetchUserFromLocalDB(id),\n      testObject,\n      openDeleteConfirmation: (tests, afterDeletedTest) => setOpenDeleteConfirmation({ tests, afterDeletedTest }),\n      resetLabs: () => fetchLabs(),\n      resetClients: () => fetchClients(),\n    };\n    if (user?.isAdmin()) {\n      return {\n        ...generalObj,\n        ...adminCommon,\n        isShowUpdated,\n        pendingTests,\n        invalidTests,\n        resetPendingTests: (ids) => fetchPendingTests(ids),\n        // resetInvalidTests: (ids) => fetchInvalidTests(ids),\n        completedTests,\n        unprocessedTests,\n        unSubmittedTests,\n        adminTotalTests,\n        externalTest,\n        isSuperAdmin: () => isSuperAdmin(),\n        resetUnprocessedTests: () => fetchUnprocessedTests(),\n        resetUnSubmittedTests: () => fetchUnSubmittedTests(),\n        resetAllTests: () => refreshDataOnSubscribe(),\n        resetTotalTest: () => fetchAllAdminTests(),\n        resetExternalTest: () => fetchExternalTests(),\n        getSiteTests: (id) => getSiteTests(id),\n        getLabTests: (id) => getLabTests(id),\n        getClientTests: (id) => getClientTests(id),\n        admins,\n        newTests,\n        deleteTests: (tests) => deleteTests(tests),\n      };\n    }\n\n    if (user?.isLab()) {\n      return {\n        ...generalObj,\n        ...adminCommon,\n        eventObject,\n        userLab,\n        userLabName,\n        admins,\n        newTests,\n        pendingTests,\n        resetPendingTests: (ids) => fetchPendingTests(ids),\n        resetNewTests: () => fetchNewTests(),\n      };\n    }\n\n    if (user?.isSite()) {\n      return {\n        ...generalObj,\n        eventObject,\n        externalTest,\n        userSiteName,\n        resetHSTests: () => fetchSiteTotalTest(),\n        resetExternalTest: () => fetchExternalTests(),\n      };\n    }\n\n    if (user?.isClient()) {\n      return {\n        ...generalObj,\n        sites,\n        labs,\n        clients,\n        resetHSTests: () => fetchClientTotalTest(),\n      };\n    }\n  };\n  const setLabRoutes = () => {\n    let filterRoutes;\n    try {\n      filterRoutes = whiteLabelLabRoutes.filter((f) => permission[WHITE_LABEL_ROTUES[f.path]]?.access);\n\n      if (permission?.completedTests?.access || permission?.pendingResults?.access) {\n        const testRoute = {\n          path: \"/test/:testId\",\n          name: \"Test\",\n          icon: \"nc-icon nc-circle-09\",\n          component: TestDetails, // Replace with your actual TestDetails component\n          layout: \"/admin\",\n          redirect: true,\n        };\n        // Check if it's already in filterRoutes to avoid duplicates\n        addRouteIfNotExists(testRoute, filterRoutes);\n      }\n    } catch (error) {\n      filterRoutes = whiteLabelLabRoutes; // Provide default filtered routes\n    }\n    if (!filterRoutes) {\n      filterRoutes = whiteLabelLabRoutes;\n    }\n    const type = medFlowInLocalStorage.get() || \"A\";\n    let routeList = labRoutes;\n    if (type === \"LT\") {\n      routeList = LabTechRoutes;\n    } else if (CONFIG.isWhiteLabel) {\n      if (user?.phone_number === \"+18888888888\") {\n        routeList = filterRoutes;\n      } else {\n        routeList = filterRoutes.filter((r) => r.name !== \"Archived Tests\" && r.name !== \"Archived Orders\");\n      }\n    }\n\n    setRoutesWithSupport(routeList, setUserRoutes);\n  };\n\n  const isSuperAdmin = () => {\n    if (user?.isAdmin()) {\n      return user?.phone_number === \"+18888888888\" || user?.phone_number === \"+12222222222\";\n    }\n    return false;\n  };\n\n  const getClientTests = (id) => {\n    const clientObj = adminTotalTests.filter((t) => t.clientID === id);\n    return clientObj.length;\n  };\n\n  const getSiteTests = (id) => {\n    const siteObj = adminTotalTests.filter((t) => t.siteID === id);\n    return siteObj.length;\n  };\n  const getLabTests = (id) => {\n    const labObj = adminTotalTests.filter((t) => t.labID === id);\n    return labObj.length;\n  };\n\n  const getSiteName = (id) => {\n    const siteObj = sites.find((site) => site.id === id);\n    return siteObj ? siteObj.name : \"NA\";\n  };\n\n  const getLabName = (id) => {\n    const labObj = labs.find((lab) => lab.id === id);\n    return labObj ? labObj.name : \"NA\";\n  };\n\n  const getLab = async (test) => {\n    let lab = labs.find((lab) => lab.id === test.labID);\n    if (!lab) {\n      lab = await localApi.getLabByID(test?.labID);\n    }\n\n    if (lab && \"logo\" in lab && lab.logo) {\n      const path = await Storage.get(lab.logo);\n      return { ...lab, logoSrc: path };\n    }\n    return lab;\n  };\n\n  const deleteTests = async (tests) => {\n    if (tests.length === 0) return;\n\n    await GQAPI.deleteWrongTest(tests.map((t) => t.id));\n\n    setSuccessMessageText(`${tests.length} test${tests.length === 1 ? \" was\" : \"s were\"} Archived!`);\n  };\n\n  const sendResultOnEmail = async (param, slug) => {\n    if (param.length === 0) return;\n    setLoading(true);\n    let ttlEmails = param.length;\n    try {\n      await GQAPI.sendEmailToPendingRelease(\n        param.map((p) => {\n          return { ...p, userID: user?.sub, userName: user?.name };\n        })\n      );\n      const params = { ids: param, userID: user?.sub, userName: user?.name, slug: \"Email\" };\n      // api.addTestLogs(params);\n\n      setLoading(false);\n      setSuccessMessageText(\n        `Email has been successfully sent to ${ttlEmails} ${CONFIG.isWhiteLabel ? \"Patient\" : \"Crew\"}`\n      );\n    } catch (error) {\n      console.log(\"error:-\", error.message);\n      setLoading(false);\n      setErrorMessageText(\"Fail to send the Email\");\n    }\n  };\n\n  const triggerFirebaseListener = async (updateSelectedTestResult, type) => {\n    let firestoreName = \"PCR\";\n    if (type === \"rapid pcr\") firestoreName = \"Other\";\n    else if (type === \"molecular\") firestoreName = \"Molecular\";\n\n    const tests = updateSelectedTestResult.filter((t) => t.test_type.toLowerCase() === type);\n    if (tests.length > 0) {\n      const testCollection = collection(db, firestoreName);\n      addDoc(testCollection, {\n        date: new Date().toISOString(),\n      });\n    }\n  };\n\n  const handleExportLabGen = async (filteredTests, checkboxes) => {\n    setLoading(true);\n    try {\n      const tests = filteredTests.filter((f) => checkboxes.includes(f.id));\n\n      if (tests.length === 0) {\n        setLoading(false);\n        setErrorMessageText(\"No record to be proceed\");\n        return;\n      }\n\n      const { testPushed, data } = await localApi.formatBiolabGenCSV(tests);\n      await localApi.saveFileSendToLab(\n        `${moment().format(\"DD_MM_YYYY_HH_mm_ss\")}_send_to_lab_${CONFIG.envType}.csv`,\n        tests.map((t) => {\n          return { ...t, status: \"Sent\", submittedBy: user?.sub, submittedByName: user?.name };\n        })\n      );\n      if (testPushed) {\n        setSuccessMessageText(`${tests.length} test${tests.length > 0 ? \"s\" : \"\"} send to lab`);\n      } else {\n        setErrorMessageText(`Fail to send to Lab`);\n      }\n      await downloadDataAsCSV(data, `labgen_orders_${moment().format(\"MM_DD_YYYY\")}.csv`);\n      setLoading(false);\n    } catch (ex) {\n      console.log(\"Ex\", ex);\n      setLoading(false);\n      setErrorMessageText(`Fail to send to Lab`);\n    }\n  };\n\n  const adminListener = () => {\n    const hubListener = Hub.listen(\"datastore\", (hubData) => {\n      const { event } = hubData.payload;\n      if (event === \"ready\") {\n        console.log(\"EVENT READY\");\n\n        // fetchPendingTests();\n        fetchAdmins();\n        // fetchInvalidTests();\n        fetchClients();\n        fetchSites();\n        fetchLabs();\n        getLabClients();\n        // fetchExternalTests();\n        Hub.remove(\"datastore\", hubListener);\n        setLoading(false);\n        dispatch(fetchPayerAsync());\n        fetchUserFromLocalDB();\n        if (mainPanel.current) mainPanel.current.scrollTop = 0;\n      }\n    });\n  };\n\n  const labListener = () => {\n    const hubListener = Hub.listen(\"datastore\", (hubData) => {\n      const { event } = hubData.payload;\n      if (event === \"ready\") {\n        setLabRoutes();\n\n        if (CONFIG.isWhiteLabel) {\n          fetchClients();\n          //  fetchPendingTests();\n          fetchUploadRequest();\n          fetchSites();\n          getLabClients();\n        }\n        fetchLabs();\n        fetchNewTests();\n        setLoading(false);\n        Hub.remove(\"datastore\", hubListener);\n        dispatch(fetchPayerAsync());\n        fetchUserFromLocalDB();\n      }\n    });\n  };\n\n  const siteListener = () => {\n    const hubListener = Hub.listen(\"datastore\", async (hubData) => {\n      const { event } = hubData.payload;\n\n      if (event === \"ready\") {\n        fetchLabs();\n        setSites(await fetchSitesByUser(connectedIDInLocalStorage.get()));\n        fetchClients();\n        // fetchExternalTests();\n        fetchUploadRequest();\n        getLabClients();\n        // mainPanel.current.scrollTop = 0;\n        Hub.remove(\"datastore\", hubListener);\n        setLoading(false);\n        dispatch(fetchPayerAsync());\n        fetchUserFromLocalDB();\n      }\n    });\n  };\n\n  const clientListener = () => {\n    const hubListener = Hub.listen(\"datastore\", async (hubData) => {\n      const { event } = hubData.payload;\n      if (event === \"ready\") {\n        fetchLabs();\n        setSites(await fetchSitesByClient(user.clientID));\n        fetchUploadRequest();\n        fetchClients();\n        fetchClientTotalTest();\n        setUserRoutes(siteRoutes);\n        setLoading(false);\n        // mainPanel.current.scrollTop = 0;\n        Hub.remove(\"datastore\", hubListener);\n        dispatch(fetchPayerAsync());\n        fetchUserFromLocalDB();\n      }\n    });\n  };\n\n  const fetchSiteTotalTest = () => {\n    if (user?.isSite() && sites.length > 0) {\n      findTotalTestsBySites(sites);\n    }\n  };\n\n  const fetchClientTotalTest = () => {\n    if (user?.isClient() && sites.length > 0) {\n      findTotalTestsBySites(sites);\n    }\n  };\n\n  React.useEffect(() => {\n    user?.isAdmin() && adminListener();\n    user?.isLab() && labListener();\n    user?.isSite() && siteListener();\n    user?.isClient() && clientListener();\n  }, [user]);\n\n  React.useEffect(() => {\n    user?.isClient() && fetchClientTotalTest();\n  }, [sites]);\n\n  const updateOrderFilesStatus = (index, status, respFile) => {\n    setOrderFiles((prev) => {\n      if (!prev || Object.keys(prev).length === 0) return {};\n      const updatedStatus = [...prev.uploadStatus];\n      updatedStatus[index] = { ...updatedStatus[index], status: status, fileName: respFile };\n      return { ...prev, uploadStatus: updatedStatus };\n    });\n  };\n\n  const pushFileOnServer = async (name, file, index) => {\n    try {\n      // await handleFileUpload(name, file);\n\n      const ext = FILE_REPRESENT_TYPES_MAP.get(file.type);\n      const respFile = await localApi.saveOrderFileIntoBucket({ name, fileContent: file, ext: ext });\n\n      if (respFile) {\n        updateOrderFilesStatus(index, \"done\", respFile);\n      }\n    } catch (err) {\n      updateOrderFilesStatus(index, \"fail\", null);\n    }\n  };\n\n  const handleOnSaveFiles = async (filesData) => {\n    setLoadOrderModal(false);\n    try {\n      const { files, selectedFileNames } = filesData;\n      selectedFileNames.forEach((f, index) => {\n        pushFileOnServer(f, files[index], index);\n      });\n    } catch (err) {\n      console.log(\"Error:-\", err);\n      setErrorMessageText(\"Fail to Upload the Files\");\n    }\n  };\n\n  const handleCancelUploadRequest = async (id) => {\n    try {\n      let requestID = id;\n      if (!orderFiles || Object.keys(orderFiles).length === 0) {\n        requestID = notificationList[0]?.id;\n      }\n\n      if (requestID) {\n        setNotificationList((prev) => prev.filter((f) => f.id !== requestID));\n      } else {\n        setOrderFiles({});\n        setUploadFileStatus(null);\n        return;\n      }\n      setUploadPatientResult([]);\n      setUploadFileStatus(null);\n      await api.deleteUploadRequest(requestID, user);\n    } catch (ex) {\n      console.log(\"Error-\", ex);\n    }\n  };\n  const onConfirmationModal = (isConfirm) => {\n    try {\n      setOpenConfirmation({ isShow: false });\n      if (!isConfirm) return;\n      handleCancelUploadRequest(openConfirmation.value || \"\");\n    } catch (error) {\n      console.log(\"Error:-\", error.message);\n    }\n  };\n\n  const isCompleteUploadRequest = (fileStatus) => {\n    if (!fileStatus || fileStatus.length === 0) return false;\n    const listFile = [...fileStatus];\n    return listFile.every((e) => e.status.includes(\"Parsed\"));\n  };\n\n  const handleCancelRequests = (data, e) => {\n    if (e) e.stopPropagation();\n    // If Status bar is Completed then no need to be show Confirmation\n    if (data && isCompleteUploadRequest(data.filesStatus)) {\n      handleCancelUploadRequest(data.id);\n      return;\n    }\n    setOpenConfirmation({\n      isShow: true,\n      message: `Are you sure, you want to cancel upload?`,\n      actionType: \"confirmation\",\n      title: \"Cancel Upload\",\n      value: data?.id,\n    });\n  };\n\n  const handleCloseResultModal = () => {\n    const testsList = showDetailModal ? [detailTestList[0]] : showSimpleModal ? simpleTestList : [];\n\n    dispatch(setTestIdsToRemove(testsList.map((item) => item.id)));\n\n    dispatch(resetStateResultState());\n  };\n\n  const getDefaultView = useMemo(() => {\n    if (permission?.orders?.access) return <OrdersView />;\n    if (permission?.employee?.access) return <PatientView />;\n    if (permission?.pendingResults?.access && !user?.isSite()) return <UnprocessedTestsApi />;\n    if (permission?.completedTests?.access && !user?.isSite()) return <TestListAdminApi />;\n    if (permission?.settings?.access && !user?.isSite()) return <LabTestTypesSetting />;\n    if (permission?.archiveTest && !user?.isSite()) return <DeleteTestApi />;\n    if (permission?.archivedOrders && !user?.isSite()) return <OrdersView />;\n    return null; // Return null if none of the conditions match\n  }, [permission]); // Dependency array ensures useMemo runs only when permissions change\n\n  useEffect(() => {\n    const checkPermissionAndRedirect = () => {\n      let currentPath = location.pathname;\n      // Remove '/admin' from the beginning of currentPath\n      if (currentPath.startsWith(\"/admin\")) {\n        currentPath = currentPath.substring(6); // Remove '/admin' prefix\n      }\n      const permissionKey = WHITE_LABEL_ROTUES[currentPath];\n      // Check if permission is defined and not an empty object\n      const isPermissionDefined = permission && Object.keys(permission).length > 0;\n      if (isPermissionDefined) {\n        // Check if permissionKey exists and user has access\n        if (permissionKey && !permission[permissionKey]?.access) {\n          history.push(\"/admin\");\n        }\n        // If permissionKey doesn't exist, redirect to admin\n        else if (!permissionKey) {\n          history.push(\"/admin\");\n        }\n      }\n    };\n\n    checkPermissionAndRedirect();\n  }, [permission]);\n\n  return (\n    <>\n      <div className=\"wrapper\">\n        {showAlert && (\n          <SweetAlert\n            show={showAlert}\n            error\n            title=\"Error\"\n            onConfirm={async () => {\n              await Auth.signOut();\n              window.location.reload();\n            }}\n          >\n            Your account does not have access to the Med Flow portal\n          </SweetAlert>\n        )}\n        {/* successBottomMessageText */}\n        {successMessageText && (\n          <SweetAlert\n            show={successMessageText ? true : false}\n            success\n            title=\"Success\"\n            onConfirm={() => setSuccessMessageText(\"\")}\n          >\n            {successMessageText}\n          </SweetAlert>\n        )}\n        {successBottomMessageText && (\n          <ShowAlertMessage\n            message={successBottomMessageText}\n            success\n            show={successBottomMessageText ? true : false}\n            handleClose={() => setSuccessBottomMessageText(\"\")}\n          />\n        )}\n        {errorMessageText && (\n          <ShowAlertMessage\n            message={errorMessageText}\n            error\n            show={errorMessageText ? true : false}\n            handleClose={() => setErrorMessageText(\"\")}\n          />\n        )}\n        {messageObj.text && (\n          <ShowAlertMessage\n            message={messageObj.text}\n            title={messageObj?.title}\n            handleClose={() => dispatch(showMessage())}\n            {...{ [messageObj.mode]: true }}\n          />\n        )}\n        <Sidebar\n          color={color}\n          image={\"\"}\n          routes={userRoutes}\n          user={user}\n          pendingTests={pendingTests}\n          invalidTests={invalidTests}\n          testFilter={testFilter}\n          setTestFilter={setTestFilter}\n        />\n        {/* comment back in to enable log out timer!!!!!!! */}\n        {/* <IdleTimer\n            crossTab={{\n              emitOnAllTabs: false,\n            }}\n            startOnMount={false}\n            startManually={true}\n          /> */}\n\n        {associatedPanelData && (\n          <TestAssociatedViewModal\n            handleClose={() => dispatch(emptyAssociatedPanel(null))}\n            associatedPanels={associatedPanelData?.targetRanges}\n            title={associatedPanelData?.name || \"\"}\n          />\n        )}\n\n        <div className=\"main-panel\" ref={mainPanel}>\n          <AdminNavbar\n            routes={userRoutes}\n            completedTests={completedTests}\n            pendingTests={pendingTests}\n            role={role || user?.roles[0]}\n            user={user}\n            userLabName={userLabName}\n            userSiteName={userSiteName}\n            isProcessing={isProcessing}\n            notificationList={notificationList}\n            orderFiles={orderFiles}\n            setNotificationList={setNotificationList}\n            onCancelRequest={handleCancelUploadRequest}\n            handleSelect={handleSelect}\n            setLoading={setLoading}\n            handleCancelRequests={handleCancelRequests}\n            downloadIndicator={downloadIndicator}\n          />\n          {!loading ? (\n            <div className=\"content content-body\">\n              <AppContext.Provider value={contextSwitch(user?.roles[0])}>\n                <Switch>{getRoutes(userRoutes)}</Switch>\n                {window.location.pathname === \"/admin\" && CONFIG.isWhiteLabel && user?.isSite() && (\n                  // <AdminHomeApi completedTests={adminTotalTests} />\n                  <OrderView />\n                )}\n                {\n                  window.location.pathname === \"/admin\" &&\n                    CONFIG.isWhiteLabel &&\n                    !user?.isSite() &&\n                    // <AdminHomeApi completedTests={adminTotalTests} />\n                    // <TestListAdminApi />\n                    getDefaultView\n                  // <OrdersView />\n                }\n                {window.location.pathname === \"/admin\" &&\n                  user?.isAdmin() &&\n                  !clientIDInLocalStorage.get() &&\n                  !CONFIG.isWhiteLabel && (\n                    // <AdminHomeApi completedTests={adminTotalTests} />\n                    <AdminDashboard />\n                  )}\n\n                {window.location.pathname === \"/admin\" && user?.isClient() && (\n                  //  <HealthAndSafetyHome sites={sites} />\n                  <ClientsDashboard sites={sites} />\n                )}\n                {window.location.pathname === \"/admin\" && user?.isLab() && !CONFIG.isWhiteLabel && (\n                  // <TableListApi />\n                  <LabDashboard lab={labs[0]} />\n                )}\n\n                {showDetailModal && (\n                  <AssignResultsTestModal\n                    handleClose={handleCloseResultModal}\n                    selectedTest={showDetailModal && detailTestList[0].detailTest}\n                    testTypeResult={showDetailModal && detailTestList[0].testResultTypeData}\n                  />\n                )}\n                {showPanalModal && <PanelResultModal panelTests={panelTests} />}\n\n                {/* {showSimpleModal && (\n                  <ChangeResultModal\n                    handleClose={handleCloseResultModal}\n                    title=\"Result Tests\"\n                    tests={simpleTestList}\n                    // appContext={contextSwitch(user?.roles[0])}\n                  />\n                )} */}\n                {testForResult && <ResultUploadModal test={testForResult} />}\n                {employeeForTests?.length > 0 && <TestSelectionModal employeeForTests={employeeForTests} />}\n              </AppContext.Provider>\n            </div>\n          ) : (\n            <Loader />\n          )}\n          {/* <Footer /> */}\n        </div>\n      </div>\n      <AppContext.Provider value={contextSwitch(user?.roles[0])}>\n        {openDeleteConfirmation && (\n          <ConfirmationModal\n            show={openDeleteConfirmation}\n            title=\"Archive Test\"\n            message={`Are you sure, you want to Archive the select Test${\n              openDeleteConfirmation.tests.length > 1 ? \"s\" : \"\"\n            }`}\n            handleConfirm={handleDeleteConfirm}\n          />\n        )}\n\n        {selectedTestForPrint && (\n          <ShowPrintOptions\n            printBarcode={printBarcode}\n            tests={selectedTestForPrint}\n            handleClose={() => dispatch(setTestPrintView(null))}\n          ></ShowPrintOptions>\n        )}\n\n        {showTestLogModal && (\n          <TestLogsModal\n            test={showTestLogModal}\n            setSuccessMessageText={setSuccessMessageText}\n            handleClose={() => {\n              setShowTestLogModal(null);\n            }}\n          ></TestLogsModal>\n        )}\n\n        {showPatientModal && (\n          <PatientProfileModal\n            patient={showPatientModal}\n            handleClose={(obj) => {\n              // if (obj && obj.requestID && uploadPatientResult.length > 0) {\n              //   setUploadPatientResult(\n              //     uploadPatientResult.map((m, i) => {\n              //       if (m.id === obj.requestID) {\n              //         return {\n              //           ...m,\n              //           status: \"pass\",\n              //           data: { ...m.data, patientCreated: \"pass\", orderCreated: \"pass\", empID: obj.id },\n              //         };\n              //       }\n              //       return { ...m };\n              //     })\n              //   );\n              // }\n              setShowPatientModal(null);\n            }}\n            appContext={contextSwitch(user?.roles[0])}\n          />\n        )}\n\n        {showOrderModal && (\n          <OrderTestModal\n            order={showOrderModal}\n            handleCloseCreateTest={() => {\n              dispatch(setShowQuestionaireTable(false));\n              dispatch(setQuestionTableModal({ rows: [], columns: [] }));\n              setShowOrderModal(null);\n            }}\n            clients={clients}\n            sites={sites}\n            labs={labs}\n            appContext={contextSwitch(user?.roles[0])}\n          />\n        )}\n\n        {showOrderTestModal && (\n          <CreateOrderTest\n            item={showOrderTestModal}\n            userLabName={userLabName}\n            handleCloseCreateTest={(message) => {\n              setShowOrderTestModal(null);\n              if (message) {\n                setSuccessBottomMessageText(message);\n              }\n            }}\n            appContext={contextSwitch(user?.roles[0])}\n          />\n        )}\n\n        {(openTestScheduleModal || testScheduleModal) && (\n          <TestScheduleModal\n            employees={testScheduleModal}\n            uploadCallType={openTestScheduleModal}\n            user={user}\n            showErrorMessage={setErrorMessageText}\n            showSuccessMessage={setSuccessMessageText}\n            appContext={contextSwitch(user?.roles[0])}\n            handleClose={(val) => {\n              if (val && val.id) {\n                setNotificationList((prev) => [...prev, val]);\n              }\n              setTestScheduleModal(null);\n              setOpenTestScheduleModal(null);\n            }}\n          ></TestScheduleModal>\n        )}\n\n        {uploadPatientResult.length > 0 && (\n          <PatientImportErrorModal\n            data={uploadPatientResult}\n            files={notificationList[0]}\n            onCompleteLoad={handleCancelUploadRequest}\n            handleClose={() => setUploadPatientResult([])}\n            appContext={contextSwitch(user?.roles[0])}\n            title={\"Test Scheduling Upload Management\"}\n          />\n        )}\n\n        {showQuestionaireTable && (\n          <QuestionnaireTable rows={rows} columns={columns} modalTitle=\"Additional Questions\" />\n        )}\n        {uploadFileStatus && uploadFileStatus !== null && (\n          <ImportFileStatusModal\n            data={uploadFileStatus}\n            handleClose={() => {\n              setUploadFileStatus(null);\n            }}\n            handleCancelAll={handleCancelUploadRequest}\n            handleCancelRequests={handleCancelRequests}\n          />\n        )}\n        {patientTestViewModal !== null && (\n          <TestDoneModal\n            patient={patientTestViewModal.patient}\n            order={patientTestViewModal.order}\n            uiType={patientTestViewModal?.uiType}\n            showResult={setResultView}\n            handleClose={() => setPatientTestViewModal(null)}\n          />\n        )}\n        {resultView !== null && empId && (\n          <ResutlViewModal\n            test={resultView}\n            appContextView={{ getLab: getLab }}\n            handleClose={() => setResultView(null)}\n            detailEmpId={empId}\n          />\n        )}\n\n        {requisitionView && (\n          <RequisitionFormViewModal requisitionView={requisitionView} handleClose={() => setRequisitionView(null)} />\n        )}\n\n        {openInsuranceModal && (\n          <InsuranceModal\n            cssClass=\"seperateModal\"\n            handleClose={() => {\n              dispatch(setOpenInsuranceModal(false));\n              dispatch(setSelectedInsurance(null));\n            }}\n          />\n        )}\n        {openUpComingSchedule && (\n          <UpComingScheduleModal\n            employees={testScheduleModal}\n            uploadCallType={openTestScheduleModal}\n            user={user}\n            showErrorMessage={setErrorMessageText}\n            showSuccessMessage={setSuccessMessageText}\n            handleClose={() => {\n              setOpenUpComingSchedule(false);\n            }}\n          />\n        )}\n        {noteObject && <TestNoteModal data={noteObject} handleClose={() => setNoteObject(null)} user={user} />}\n        {eligibilityDetail && eligibilityDetail !== null && (\n          <EligibilityDetailsModal\n            handleClose={() => setEligibilityDetail(null)}\n            data={eligibilityDetail}\n            cssClass=\"seperateModal\"\n          />\n        )}\n        {archivedList?.length > 1 && <ArchiveModal />}\n        {showGenericModal && <GenericPanelTestView data={genericData} />}\n\n        {showGenericPathogenModal && <GenericPathogenView data={genericPathogenData} />}\n\n        {openLoadOrdersModal && (\n          <LoadOrdersModal\n            setOrderFiles={setOrderFiles}\n            onSaveFile={handleOnSaveFiles}\n            handleClose={() => setLoadOrderModal(false)}\n            sites={sites}\n          />\n        )}\n\n        {/* <FixedPlugin\n        hasImage={hasImage}\n        setHasImage={() => setHasImage(!hasImage)}\n        color={color}\n        setColor={(color) => setColor(color)}\n        image={image}\n        setImage={(image) => setImage(image)}\n      /> */}\n\n        {/* {notificationList && notificationList.length > 0 && (\n        <NotificationModal notificationList={notificationList} handleSelect={handleSelect} />\n      )} */}\n        {isGlobalLoader && <Loader />}\n        {openConfirmation.isShow && (\n          <ConfirmationModal\n            show={openConfirmation.isShow}\n            actionType={openConfirmation.actionType}\n            title={openConfirmation.title}\n            message={openConfirmation.message}\n            handleConfirm={onConfirmationModal}\n            cssClass=\"seperateModal\"\n          />\n        )}\n        {showPdf && (\n          <DocumentPreviewModal\n            isModalOpen={showPdf}\n            setIsModalOpen={() => dispatch(hideResultPdf())}\n            fileUrl={resultFileUrl}\n            fileType={resultFileType}\n            title={resultPdfTitle}\n            isLoading={isLoadingResultPdf}\n            isError={resultPdfError}\n            // title={`Test Results - ${docName ? docName : \"\"}`}\n          />\n        )}\n        <GlobalActionsComponent />\n      </AppContext.Provider>\n      <IdleModal\n        showIdleModal={showIdleModal}\n        animation={true}\n        handleLogOut={handleLogOut}\n        handleCloseModal={handleCloseModal}\n      />\n    </>\n  );\n}\n\nexport default AdminNew;\n","import { useEffect, useRef } from 'react';\n\nexport const useIdleTimerHook = ({ timeout = 3600, onIdle }) => {\n  const timerRef = useRef(null);\n\n  const updateLastActive = () => {\n    localStorage.setItem('lastActiveTime', Date.now().toString());\n  };\n\n\n  const resetTimer = () => {\n    if (timerRef.current) {\n      clearTimeout(timerRef.current);\n    }\n\n    timerRef.current = setTimeout(() => {\n      onIdle();\n    }, timeout * 1000);\n  };\n\n  useEffect(() => {\n    const storedTimestamp = localStorage.getItem('lastActiveTime');\n    if (storedTimestamp) {\n      const lastActiveTime = parseInt(storedTimestamp, 10);\n      const now = Date.now();\n      const elapsedSeconds = (now - lastActiveTime) / 1000;\n\n      if (elapsedSeconds > timeout) {\n        onIdle();\n        return;\n      }\n    } else {\n      updateLastActive();\n    }\n\n\n    const activityEvents = [\n      'mousemove',\n      'keydown',\n      'wheel',\n      'touchstart',\n      'click',\n      'scroll',\n    ];\n\n    const handleActivity = () => {\n      updateLastActive(); \n      resetTimer();  \n    };\n\n    activityEvents.forEach((event) =>\n      window.addEventListener(event, handleActivity)\n    );\n\n    resetTimer();\n\n\n    return () => {\n      activityEvents.forEach((event) =>\n        window.removeEventListener(event, handleActivity)\n      );\n\n      if (timerRef.current) {\n        clearTimeout(timerRef.current);\n      }\n    };\n  }, [timeout, onIdle]);\n\n  return null;\n}\n","import React, { useState, useEffect, useRef } from \"react\";\nimport {\n  phoneFormatter,\n  setPhoneNo,\n  isValidPhone,\n  medFlowInLocalStorage,\n  formatZip,\n  checkValidity,\n  getValidName,\n  isValidName,\n  isValidIdNum,\n  isValidPhoneWithCode,\n  getPhoneNo,\n} from \"utils\";\nimport QrCodeDownloadIcon from \"../assets/img/qr-download.svg\";\nimport { useHistory, Link } from \"react-router-dom\";\nimport { newRegisterObj, logoImage } from \"constant\";\nimport { QRCode } from \"react-qrcode-logo\";\nimport logo from \"assets/img/logo.jpg\";\nimport whiteLabelLogo from \"assets/img/biolab_mobile_qr.png\";\nimport { Button } from \"react-bootstrap\";\nimport API from \"api\";\nimport html2canvas from \"html2canvas\";\nimport countriesOption from \"countries\";\nimport Select from \"react-select\";\nimport moment from \"moment\";\nimport { countryListAllIsoData } from \"constant\";\nimport Loader from \"components/Loader/Loader\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport { toTitleCase, convertToLower, isValidZipCode, validSpace } from \"utils\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport { isValidEmail } from \"utils\";\nimport { qrResponseJOSN } from \"utils\";\nimport { CONFIG } from \"constant\";\nimport { zipCodeValidationUS } from \"utils\";\n\nconst PreRegister = () => {\n  const [newUser, setNewUser] = useState(newRegisterObj);\n  const [registrationDone, setRegistrationDone] = useState(false);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const [barcode, setBarcode] = useState(\"\");\n  const [qrRes, setQrRes] = useState(\"\");\n  const [updateClass, setUpdateClass] = useState(false);\n  const [phoneError, setPhoneError] = useState(\"\");\n  const [messageError, setMessageError] = useState(\"\");\n  const history = useHistory();\n  const downloadRef = useRef();\n  const redirectToAdmin = () => {\n    if (history) history.push(\"/admin\");\n  };\n\n  const isLoggedIn = medFlowInLocalStorage.get();\n  if (isLoggedIn) redirectToAdmin();\n\n  const showErrorMessage = (message) => {\n    setError(message);\n    setTimeout(() => setError(\"\"), 2000);\n  };\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setNewUser({ ...newUser, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zipcode: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setNewUser({ ...newUser, ...addressObj });\n    }\n  };\n  const handleSubmit = async () => {\n    if (!newUser.first) {\n      showErrorMessage(\"First name is required\");\n      return;\n    }\n\n    if (!isValidName(newUser.first)) {\n      showErrorMessage(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n\n    if (!newUser.last) {\n      showErrorMessage(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(newUser.last)) {\n      showErrorMessage(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n\n    if (!newUser.email) {\n      showErrorMessage(\"Email is required\");\n      return;\n    }\n    if (!isValidEmail(newUser.email)) {\n      showErrorMessage(\"Invalid Email\");\n      return;\n    }\n\n    if (!newUser.phone_number) {\n      showErrorMessage(\"Phone Number is required\");\n      return;\n    }\n\n    if (!isValidPhoneWithCode(newUser.phone_number)) {\n      showErrorMessage(\"Invalid Phone Number\");\n      return;\n    }\n    if (!newUser.dob) {\n      showErrorMessage(\"Date of Birth is required\");\n      return;\n    }\n\n    if (!newUser.street.trim()) {\n      showErrorMessage(\"Address is required\");\n      return;\n    }\n    if (!newUser.city.trim()) {\n      showErrorMessage(\"City is required\");\n      return;\n    }\n\n    if (!newUser.state.trim()) {\n      showErrorMessage(\"State is required\");\n      return;\n    }\n    if (!newUser.country) {\n      showErrorMessage(\"Country is Required\");\n      return;\n    }\n    if (newUser.zipcode === null || !newUser.zipcode) {\n      showErrorMessage(\"Zipcode is required\");\n      return;\n    }\n\n    // if (!isValidZipCode(newUser.isoCode || \"US\", newUser.zipcode)) {\n    //   showErrorMessage(\"Invalid zipcode\");\n    //   return;\n    // }\n\n    if (!zipCodeValidationUS(newUser.zipcode)) {\n      showErrorMessage(\"Invalid zipcode\");\n      return;\n    }\n\n    if (!CONFIG.isWhiteLabel) {\n      if (!newUser.id_number) {\n        showErrorMessage(\"DL/Passport Number is required\");\n        return;\n      }\n      if (!isValidIdNum(newUser.id_number)) {\n        showErrorMessage(\"Invalid DL/Passport Number must contains at least 5 characters\");\n        return;\n      }\n    }\n\n    if (!newUser.sex) {\n      showErrorMessage(\"Gender is required\");\n      return;\n    }\n    if (!CONFIG.isWhiteLabel && newUser.isVaccinated === null) {\n      showErrorMessage(\"Vaccinated is required\");\n      return;\n    }\n    try {\n      setLoading(true);\n      const obj = { ...newUser };\n      const [countryCode, phoneNumber] = getPhoneNo(newUser.phone_number);\n      obj.phone_number = phoneNumber;\n      obj.countryCode = countryCode;\n      newUser.id_number = newUser.id_number ? checkValidity(newUser.id_number) : \"00000\";\n      setBarcode(JSON.parse(JSON.stringify(obj)));\n      const response = await API.preRegisterEmployee(\n        obj,\n        window.location.href.includes(\"medflow\") || CONFIG.isLive ? \"LIVE\" : \"DEV\"\n      );\n\n      if (response.body && response.body.item && Object.keys(response.body.item).length > 0) {\n        const newUSer = response.body.item;\n        setQrRes(qrResponseJOSN(obj, newUSer.id, \"PR\"));\n      } else {\n        setQrRes(qrResponseJOSN(obj, newUser.id, \"PR\"));\n      }\n      setLoading(false);\n      setRegistrationDone(true);\n    } catch (err) {\n      setLoading(false);\n      setMessageError(err.message);\n    }\n  };\n\n  const downloadQRCode = async () => {\n    const [countryCode, phoneNumber] = getPhoneNo(newUser.phone_number);\n    const element = downloadRef.current;\n    const canvas = await html2canvas(element);\n    const pngUrl = canvas.toDataURL(\"image/png\").replace(\"image/png\", \"image/octet-stream\");\n    let downloadLink = document.createElement(\"a\");\n    downloadLink.href = pngUrl;\n    downloadLink.download = `${phoneNumber}.png`;\n    document.body.appendChild(downloadLink);\n    downloadLink.click();\n    document.body.removeChild(downloadLink);\n  };\n\n  if (registrationDone) {\n    return (\n      <div className=\"codeScannerWrapper\">\n        <div className=\"registered-successful\">\n          <h3>Thank you for Registering</h3>\n          <p>\n            {CONFIG.isWhiteLabel\n              ? \"Please present this QR code when testing\"\n              : \"Please present this QR code at Event Check In\"}\n          </p>\n          <div className=\"justify-content-center align-items-center pt-4\">\n            <div className=\"qrCodeWrapper text-center\" ref={downloadRef}>\n              <div className=\"d-flex justify-content-center align-items-center\">\n                <QRCode\n                  ecLevel={\"H\"}\n                  className=\"text-center px-4\"\n                  value={JSON.stringify(qrRes)}\n                  enableCORS={true}\n                  logoImage={CONFIG.isWhiteLabel ? whiteLabelLogo : logo}\n                  size=\"250\"\n                  logoHeight={CONFIG.isWhiteLabel ? \"20\" : \"25\"}\n                  logoWidth={CONFIG.isWhiteLabel ? \"100\" : \"25\"}\n                  fgColor={\"#000\"}\n                  bgColor={\"#fff\"}\n                />\n              </div>\n              <div className=\"text-center fs-4 fw-bold qrSubdiv\">{`${toTitleCase(barcode.first)} ${toTitleCase(\n                barcode.last\n              )}`}</div>\n            </div>\n            <div className={`qrCodeWrapper printQrCode`} id={\"printableArea\"}>\n              <QRCode\n                ecLevel={\"H\"}\n                value={JSON.stringify(qrRes)}\n                enableCORS={true}\n                logoImage={CONFIG.isWhiteLabel ? whiteLabelLogo : logo}\n                size=\"250\"\n                logoHeight={CONFIG.isWhiteLabel ? \"20\" : \"70\"}\n                logoWidth={CONFIG.isWhiteLabel ? \"100\" : \"70\"}\n                fgColor={\"#000\"}\n                bgColor={\"#fff\"}\n              />\n              <div className=\"text-center fs-4 fw-bold qrSubdiv\">{`${toTitleCase(newUser.first)} ${toTitleCase(\n                newUser.last\n              )}`}</div>\n            </div>\n            <div className=\"downloadQrBtn\">\n              <div className=\"pt-3 d-flex align-items-center justify-content-evenly\">\n                {/* <Button className=\"w-50\" variant=\"secondary\" onClick={downloadQRCode}>\n                  Download QR Code\n                </Button> */}\n                <img\n                  src={QrCodeDownloadIcon}\n                  onClick={downloadQRCode}\n                  className=\"cursor-pointer\"\n                  alt=\"qr-code-download\"\n                  width=\"25\"\n                />\n                <Button\n                  href={`safecampmd://app/${barcode.first || \"\"}/${barcode.last || \"\"}/${barcode.email || \"\"}/${\n                    barcode.phone_number || \"\"\n                  }`}\n                  variant=\"secondary\"\n                >\n                  Add To Wallet\n                </Button>\n                <Button variant=\"secondary\" onClick={() => window.print()}>\n                  <i className=\"fas fa-print fs-4\" style={{ color: \"black\" }} />\n                </Button>\n              </div>\n            </div>\n            <div></div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div className=\"registerFormWrapper\">\n          <div className=\"registerWrapper\">\n            <div className=\"loginInner\">\n              <div className=\"text-center\">\n                <img src={logoImage} alt=\"logo\" className=\"logo-width\" />\n              </div>\n              <h4 className=\"w-100 text-center mt-4 fs-4 fw-bold\">Register your account</h4>\n              <div className=\"form-wrapper\">\n                <div className=\"form-group-wrapper mt-2\">\n                  <label className=\"mb-1\">First Name:</label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"First Name\"\n                    value={newUser.first}\n                    onChange={(e) => setNewUser({ ...newUser, first: getValidName(e.target.value) })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"mb-1\">Last Name:</label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"Last Name\"\n                    value={newUser.last}\n                    onChange={(e) => setNewUser({ ...newUser, last: getValidName(e.target.value) })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"mb-1\">Email:</label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"Email\"\n                    value={newUser.email}\n                    onChange={(e) => setNewUser({ ...newUser, email: convertToLower(e.target.value) })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"mb-1\">Phone Number:</label>\n                  <PhoneNoInput\n                    error={setPhoneError}\n                    handleChange={(e) => {\n                      setNewUser({\n                        ...newUser,\n                        phone_number: e,\n                      });\n                    }}\n                    value={newUser.phone_number}\n                  />\n                  {/* <input\n                    value={phoneFormatter(newUser.phone_number)}\n                    type=\"text\"\n                    maxLength={15}\n                    className=\"form-control\"\n                    placeholder=\"Phone Number\"\n                    onChange={(e) =>\n                      setNewUser({\n                        ...newUser,\n                        phone_number: setPhoneNo(phoneFormatter(e.target.value)),\n                      })\n                    }\n                  /> */}\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"modalLineHeaders\">DOB: </label>\n                  <SingleDatePicker\n                    onApply={(event, picker) => {\n                      setNewUser({ ...newUser, dob: moment(picker.startDate).format(\"YYYY-MM-DD\") });\n                    }}\n                    value={newUser.dob}\n                    currentDate={true}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"mb-1\">Address:</label>\n                  <AutoCompleteAddress value={newUser.street} handleChange={handleUpdateAddress} />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"mb-1\">City:</label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control\"\n                    value={newUser.city}\n                    placeholder=\"City\"\n                    onChange={(e) => setNewUser({ ...newUser, city: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"mb-1\">State:</label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control stateField\"\n                    placeholder=\"State Abbr: XX\"\n                    value={newUser.state}\n                    maxLength={35}\n                    onChange={(e) => {\n                      let val = e.target.value;\n                      if (val) val = val.toUpperCase();\n                      setNewUser({ ...newUser, state: validSpace(val) });\n                    }}\n                  />\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"mb-1\">Country:</label>\n                  <Select\n                    options={countriesOption}\n                    blurInputOnSelect={true}\n                    value={{ label: newUser.country, value: newUser.country }}\n                    menuPlacement=\"auto\"\n                    placeholder=\"Select Country\"\n                    className=\"w-100\"\n                    onChange={(e) => {\n                      const country = countryListAllIsoData.find((f) => f.name === e.value) || { code: \"US\" };\n                      setNewUser({\n                        ...newUser,\n                        country: e.value,\n                        isoCode: country.code,\n                      });\n                    }}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"mb-1\">Zip Code:</label>\n                  <input\n                    value={newUser.isoCode === \"US\" ? formatZip(newUser.zipcode) : newUser.zipcode}\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"Enter Zip Code\"\n                    maxLength={10}\n                    onChange={(e) => {\n                      let val = e.target.value;\n                      if (val) val = val.toUpperCase();\n                      setNewUser({\n                        ...newUser,\n                        zipcode: newUser.isoCode === \"US\" ? formatZip(val) : validSpace(val),\n                      });\n                    }}\n                  />\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"mb-1\">DL/Passport Number:</label>\n                  <input\n                    maxLength={16}\n                    type=\"text\"\n                    className=\"form-control\"\n                    value={newUser.id_number}\n                    placeholder=\"DL/Passport Number\"\n                    onChange={(e) => setNewUser({ ...newUser, id_number: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Gender: </label>\n                  <div>\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"sex\"\n                        onChange={(e) => setNewUser({ ...newUser, sex: e.target.checked ? \"M\" : \"\" })}\n                      />\n                      <span className=\"radioButton\">Male</span>\n                    </span>\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"sex\"\n                        onChange={(e) => setNewUser({ ...newUser, sex: e.target.checked ? \"F\" : \"\" })}\n                      />\n                      <span className=\"radioButton\">Female</span>\n                    </span>\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"sex\"\n                        onChange={(e) => setNewUser({ ...newUser, sex: e.target.checked ? \"X\" : \"\" })}\n                      />\n                      <span className=\"radioButton\">Not Specified</span>\n                    </span>\n                  </div>\n                </div>\n\n                {!CONFIG.isWhiteLabel && (\n                  <div className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders\">Vaccinated: </label>\n                    <div>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"isVaccinated\"\n                          onChange={(e) => setNewUser({ ...newUser, isVaccinated: e.target.checked && true })}\n                        />\n                        <span className=\"radioButton\">Yes</span>\n                      </span>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"isVaccinated\"\n                          onChange={(e) => setNewUser({ ...newUser, isVaccinated: e.target.checked && false })}\n                        />\n                        <span className=\"radioButton\">No</span>\n                      </span>\n                    </div>\n                  </div>\n                )}\n              </div>\n              {error && (\n                <div className=\"error-message\">\n                  <h6>{error}</h6>\n                </div>\n              )}\n              {messageError && (\n                <SweetAlert\n                  show={messageError ? true : false}\n                  error\n                  title=\"Error\"\n                  onConfirm={() => setMessageError(\"\")}\n                >\n                  {messageError}\n                </SweetAlert>\n              )}\n\n              <div className=\"mt-2\">\n                <button type=\"submit\" className=\"text-uppercase w-100 btn signup-btn\" onClick={handleSubmit}>\n                  Pre-register\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default PreRegister;\n","import React, { useRef, useEffect, useState } from \"react\";\nimport logoImage from \"assets/img/safecamp_BRAND.1-nobg.png\";\nimport html2canvas from \"html2canvas\";\nimport QRCode from \"qrcode.react\";\nimport Default_Profile from \"assets/img/default_profile.png\";\nimport { Storage } from \"aws-amplify\";\nimport { Button } from \"react-bootstrap\";\nimport Loader from \"components/Loader/Loader\";\nimport API from \"api\";\nimport QrCodeDownloadIcon from \"../assets/img/qr-download.svg\";\nimport { qrResponseJOSN } from \"utils\";\n\nconst QRLinkView = (props) => {\n  const [testId, setTestId] = useState(\"\");\n  const [phone, setPhone] = useState(\"\");\n  const [newUser, setNewUser] = useState({});\n  const [qrRes, setQrRes] = useState(\"\");\n  const [profileImage, setProfileImage] = useState(Default_Profile);\n  const [loading, setLoading] = useState(false);\n  console.log(\"props\", props);\n  useEffect(async () => {\n    if (props) {\n      setLoading(true);\n      const {\n        match: { params },\n      } = props;\n      const arr = params.testId.split(\"&phone=\");\n      console.log(\"arr\", arr);\n      setTestId(arr[0]);\n      setPhone(arr[1]);\n      await getFileFromStorage(`${arr[1]}-profile-image.png`);\n    }\n  }, [props]);\n  console.log(\"newUser\", newUser);\n  useEffect(async () => {\n    if (testId && phone) {\n      setLoading(true);\n      try {\n        const respose = await API.getPRRecordById(testId, phone);\n        console.log(\"testId\", respose);\n        setNewUser(respose);\n        setQrRes(qrResponseJOSN(respose, respose.id, \"PR\"));\n        setLoading(false);\n      } catch (err) {\n        console.log(err.message);\n        setLoading(false);\n      }\n    }\n  }, [testId, phone]);\n  console.log(\"profile Image\", profileImage);\n  const getFileFromStorage = async (file) => {\n    try {\n      const path = await Storage.get(file);\n      setProfileImage(path);\n      console.log(\"path\", path);\n    } catch {\n      console.log(\"Image loading fail\");\n    }\n  };\n\n  const downloadRef = useRef();\n  const downloadQRCode = async () => {\n    const element = downloadRef.current;\n    await html2canvas(element, { allowTaint: true, useCORS: true, logging: true }).then((canvas) => {\n      const imgData = canvas.toDataURL(\"image/png\");\n      const link = document.createElement(\"a\");\n      if (typeof link.download === \"string\") {\n        link.href = imgData;\n        link.download = \"image.jpg\";\n        document.body.appendChild(link);\n        link.click();\n        document.body.removeChild(link);\n      } else {\n        window.open(imgData);\n      }\n    });\n  };\n\n  console.log(\"res\", qrRes);\n\n  return (\n    <>\n      {!loading ? (\n        <div className=\"codeScannerWrapper\">\n          <div className=\"registered-successful\">\n            <p className=\"mb-0\">Please present this QR code at Event Check In</p>\n            <div className=\"registered-inner\" ref={downloadRef}>\n              <h4 className=\"my-0 card-name\">{`${newUser?.first} ${newUser?.last}`}</h4>\n              <div className=\"justify-content-center align-items-center\">\n                <div className=\"qrWrapper\">\n                  <img\n                    crossOrigin=\"true\"\n                    src={profileImage instanceof Object ? URL.createObjectURL(profileImage) : profileImage}\n                    onError={(event) => {\n                      event.target.src = Default_Profile;\n                    }}\n                    alt=\"Profile\"\n                    className=\"userIcon\"\n                  />\n                  <QRCode\n                    className=\"qrCode\"\n                    id=\"qr-gen\"\n                    value={JSON.stringify(qrRes)}\n                    size={270}\n                    level={\"L\"}\n                    fgColor=\"#008000\"\n                    includeMargin={true}\n                  />\n                </div>\n              </div>\n            </div>\n            <div className=\"d-flex align-items-center justify-content-between\">\n              {/* <Button\n                className=\"w-50 mx-auto rounded-pill btn btn-secondary\"\n                variant=\"secondary\"\n                onClick={downloadQRCode}\n              >\n                {\" \"}\n                Download QR Code\n              </Button> */}\n              <img src={QrCodeDownloadIcon} onClick={downloadQRCode} alt=\"qr-code-download\" width=\"25\" />\n              {/* <Button\n            className=\"w-25 me-2 rounded-pill btn btn-secondary\"\n            href={`safecampmd://app/${newUser.first || \"\"}/${newUser.last || \"\"}/${newUser.email || \"\"}/${\n              newUser.phone_number || \"\"\n            }`}\n            variant=\"secondary\"\n          >\n            Add to Wallet\n          </Button> */}\n            </div>\n          </div>\n        </div>\n      ) : (\n        <Loader />\n      )}\n    </>\n  );\n};\n\nexport default QRLinkView;\n","import React, { useState, useContext, useMemo, useRef, useCallback } from \"react\";\n\n// react-bootstrap components\nimport { Badge, Button, Card, Table, Container, Row, Col, Form } from \"react-bootstrap\";\nimport { DataStore } from \"@aws-amplify/datastore\";\nimport { Storage } from \"aws-amplify\";\nimport { Test } from \"models\";\nimport { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport API from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\n\nimport { Link } from \"react-router-dom\";\nimport { CSVLink } from \"react-csv\";\nimport { Importer, ImporterField } from \"react-csv-importer\";\nimport \"react-csv-importer/dist/index.css\";\nimport api from \"api\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { AppContext } from \"context/app-context\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport FilterSelect from \"components/FilterSelect\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport { PAGE_LIMIT, TEST_STATUS, RESULT_VALUE } from \"constant\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport moment from \"moment\";\nimport {\n  formatTest,\n  changeSort,\n  getDemoGraphics,\n  setPhoneNo,\n  formatPhoneNumber,\n  calculateTdWidth,\n  sortingFilterInLC,\n  formatUTCDate,\n  sortTestList,\n  connectedIDInLocalStorage,\n} from \"utils\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport { CSVReader, jsonToCSV } from \"react-papaparse\";\nimport { debounce } from \"debounce\";\nimport { useInitialRender } from \"components/useInitialRender\";\nimport Loader from \"../../components/Loader/Loader\";\nimport Icon from \"components/Icon\";\n\nfunction TableListApiNew(props) {\n  console.log('TableListApi_New')\n  const componentRef = useRef();\n  const mainWidth = useRef();\n  const [width, setWidth] = useState(0);\n  const [openConfirmation, setOpenConfirmation] = useState(false);\n\n\n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  useEffect(() => handleResize(), [mainWidth]);\n\n  const tdWidth = calculateTdWidth(width - 130, 10);\n  const importResult = [];\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [tests, setTests] = useState([]);\n  const [testDownloadModel, setTestDownloadModel] = useState([]);\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [adminsPhones, setAdminsPhones] = useState([]);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [importLength, setImportLength] = useState();\n  const [loading, setLoading] = useState(false);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [allSelected, setAllSelected] = useState(false);\n  const [pageNo, setPageNo] = useState(1);\n  const { filterDates } = TimeFilter;\n  const appContext = useContext(AppContext);\n  const location = useLocation();\n  const initialRender = useInitialRender();\n  \n\n  const isProcessingCall = location.pathname.includes(\"processing\") ? true : false;\n  const labID = window.location?.pathname?.split('/').pop();\n\n  const searchTerms = [\n    \"First Name\",\n    \"Last Name\",\n    \"Date of Birth\",\n    \"Email\",\n    \"Phone\",\n    \"Show\",\n    \"Tester\",\n    \"Accession No\",\n    \"isVaccinated\",\n    \"White Glove\",\n    \"Pattern\",\n    \"Capacity\",\n  ];\n  const selectedItem = [\n    \"createdAt\",\n    \"firstName\",\n    \"lastName\",\n    \"email\",\n    \"dob\",\n    \"phoneNumber\",\n    \"site_name\",\n    \"status\",\n    \"test_type\",\n    \"accession_no\",\n    \"tester_name\",\n    \"isVaccinated\",\n    \"employeeType\",\n    \"whiteGlove\",\n    \"patternTestAnswer\",\n  ];\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter) => {\n      loadTestFromPG(filter, timeFilter);\n    }, 800),\n    []\n  );\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  const formatTestAsPerLab = (items) => {\nconsole.log(\"formatTestAsPerLab\")\n    if (appContext.labs && items.length > 0) {\n      const lab = appContext.labs;\n      const [formattedTests] = API.formatTests(lab, items);\n      setTestDownloadModel(formattedTests);\n    }\n  };\n\n  const handleCheckboxChange = (e, id) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n    const filterTest = tests.filter((test) => filteredList?.includes(test.id));\n    formatTestAsPerLab(filterTest.length === 0 ? tests : filterTest);\n  };\n\n  const toggleCheckboxes = (val) => {\n    setCheckboxes(val ? filteredTests.map((t) => t.id) : []);\n    formatTestAsPerLab(filteredTests.length === 0 ? tests : filteredTests);\n  };\n\n  const updateTestResult = async (result) => {\n    const updateSelectedTestResult = filteredTests.filter((test) => checkboxes.includes(test.id));\n    const ttlTest = updateSelectedTestResult.length;\n    if (!ttlTest) return;\n    setLoading(true);\n    try {\n      const params = updateSelectedTestResult.map((t) => {\n        return {\n          id: t.id,\n          result: RESULT_VALUE[result.toLowerCase()],\n          status: result === \"positive\" ? \"Pending\" : \"Processed\",\n          timerStatus: result === \"positive\" ? \"Pending\" : \"Processed\",\n          resultDateTime: moment().utc().toISOString(),\n          resultDate: moment().utc().format(\"YYYY-MM-DD\"),\n          StampBy: appContext.user.sub,\n          StampByName: appContext.user.name,\n          sequenceNo: t.sequenceNo,\n        };\n      });\n      await GQAPI.updateTestResult(params);\n      appContext.showSuccessMessage(`${ttlTest} test${ttlTest === 1 ? \"\" : \"s\"} has been resulted ${result}`);\n      const newList = tests.filter((t) => !checkboxes.includes(t.id));\n      setTests(newList);\n      refreshTestList(newList);\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n    }\n    setCheckboxes([]);\n  };\n  const handleConfirm = async (isConfirm) => {\n    setOpenConfirmation(false);\n    if (!isConfirm) {\n      return;\n    }\n    updateTestResult(\"positive\");\n  };\n  const handleOnError = (err) => {\n    appContext.showErrorMessage(err.message);\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n  };\n\n  const handleCSVOnDrop = async (csvData) => {\n    try {\n      setLoading(true);\n      const fileName = `portal/${moment().utc().format(\"YYYY_MM_DD\")}_${appContext?.userLabName?.replace(\n        /(:|\\s+)/g,\n        \"_\"\n      )}_${appContext?.user?.name?.replace(/(:|\\s+)/g, \"_\")}.csv`;\n      const val = csvData.map((csv) => csv.data);\n      const csv = jsonToCSV(val);\n      await Storage.put(fileName, csv, { bucket: \"results-from-labs\" });\n\n      const updatedId = [];\n      const params = [];\n      let ttlRecord = csvData.length;\n      console.log(\"csv data\", csvData);\n      setModalShow(false);\n      for (let index = 0; index < ttlRecord; index++) {\n        const { data } = csvData[index];\n        const row = { ...data };\n        let id = row.id || row.accession_number || row.barcode;\n\n        if (id && updatedId.indexOf(id) === -1) {\n          const test = await api.findTestByBarcode(id);\n          console.log(\"Test\", test);\n          if (test && row.result) {\n            let result = row.result.toLowerCase();\n            if (\n              result === \"positive\" ||\n              result === \"negative\" ||\n              result === \"detected\" ||\n              result === \"not detected\" ||\n              result === \"notdetected\" ||\n              result === \"inconclusive\"\n            ) {\n              if (result === \"detected\") result = \"positive\";\n              else if (result === \"not detected\" || result === \"notdetected\") result = \"negative\";\n              updatedId.push(id);\n              try {\n                params.push({\n                  id: test.id,\n                  result: RESULT_VALUE[result],\n                  status: result === \"positive\" || result === \"fail\" ? \"Pending\" : \"Processed\",\n                  timerStatus: result === \"positive\" || result === \"fail\" ? \"Pending\" : \"Processed\",\n                  resultDateTime: moment().utc().toISOString(),\n                  resultDate: moment().utc().format(\"YYYY-MM-DD\"),\n                  StampBy: appContext.user.sub,\n                  StampByName: appContext.user.name,\n                  sequenceNo: test.sequenceNo,\n                });\n              } catch (err) {\n                console.log(err);\n              }\n            }\n          }\n        }\n      }\n      console.log(\"params\", params);\n      if (params.length > 0) {\n        await GQAPI.updateTestResult(params);\n      }\n\n      const ids = params.map((t) => t.id);\n      const newList = tests.filter((t) => ids.indexOf(t.id) === -1);\n      setTests(newList);\n      refreshTestList(newList);\n\n      if (ttlRecord > 0) {\n        setImportLength(updatedId.length);\n        setShowAlert(true);\n      }\n    } catch (err) {\n      console.log(\"Err\", err);\n      setLoading(false);\n    }\n    setLoading(false);\n  };\n\n  const filterTests = (searchTerm, searchInput) => {\n    let newTerm;\n    switch (searchTerm) {\n      case \"date_created\":\n        newTerm = \"createdAt\";\n        break;\n      case \"crew_id\":\n        newTerm = \"employeeID\";\n        break;\n      case \"show\":\n        newTerm = \"site_name\";\n        break;\n      default:\n        newTerm = searchTerm;\n    }\n    return setFilteredTests(tests.filter((test) => test[newTerm].includes(searchInput)));\n  };\n\n  useEffect(() => {\n    const savedFilters = appContext.testFilter;\n    if (\n      savedFilters &&\n      ((isProcessingCall && savedFilters.location === \"processing\") ||\n        (!isProcessingCall && savedFilters.location === \"tests\"))\n    ) {\n      if (Object.keys(savedFilters.filter).length > 0) {\n        setFilter(savedFilters.filter);\n        setShowFilter(true);\n      }\n    }\n    const sortingFilters = sortingFilterInLC.get();\n    if (isProcessingCall && sortingFilters.processing.sortBy) {\n      setSortDescending(sortingFilters.processing.sortDescending);\n      setSortBy(sortingFilters.processing.sortBy);\n    } else if (sortingFilters.tests.sortBy) {\n      setSortDescending(sortingFilters.tests.sortDescending);\n      setSortBy(sortingFilters.tests.sortBy);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (initialRender) return;\n    if (appContext.eventObject && appContext.eventObject !== 0) {\n      const eventType = appContext.eventObject.opType;\n      const model = formatTest(appContext.eventObject.element);\n      let isRelevantTest = false;\n\n      if (!isProcessingCall && model.status === TEST_STATUS.New) {\n        isRelevantTest = true;\n      } else if (isProcessingCall && (model.status === TEST_STATUS.processing || model.status === TEST_STATUS.Sent)) {\n        isRelevantTest = true;\n      }\n      const newList = [...filteredTests];\n      if (eventType === \"INSERT\" && isRelevantTest) {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        if (index !== -1) {\n          if (isRelevantTest) {\n            newList.splice(index, 1, model);\n          } else {\n            newList.splice(index, 1);\n          }\n        }\n      }\n      const testAfterFilter = filterDates(nestedFilter([...newList], filter), timeFilter);\n      if (filteredTests.length < testAfterFilter.length && eventType === \"INSERT\" && isRelevantTest) {\n        setTotalRecord(totalRecord + 1);\n      } else if (filteredTests.length > testAfterFilter.length) {\n        setTotalRecord(totalRecord - 1);\n      }\n      refreshTestList(testAfterFilter);\n    }\n  }, [appContext.eventObject]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[isProcessingCall ? \"processing\" : \"tests\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredTests.length === 0) return;\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredTests,\n      setFilteredTests,\n      appContext.getSiteName,\n      appContext.getLabName,\n      appContext.getClientName\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    fetchFromApi({ ...filter }, { ...timeFilter }, 1);\n  }, [filter, timeFilter]);\n\n  const loadTestFromPG = async (params, dateFilter) => {\n    setLoading(true);\n    const filterParam = params;\n\n    const connectedID = labID || 'L';\n    Object.assign(filterParam, { page: pageNo, limit: 2000, labID: labID , result: \"empty\", test_type: [\"PCR\"] });\n    \n    if (dateFilter) {\n      const { start, end } = dateFilter;\n      if (start)\n        Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n      if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n    }\n   \n    const pgList = await API.getTestListFromPG(filterParam);\n    setLoading(false);\n    const ttlTests = tests.concat(pgList.rows.map((t) => formatTest(t)));\n\n    const filterData = isProcessingCall\n      ? ttlTests.filter((t) => t.status === TEST_STATUS.Processing || t.status === TEST_STATUS.Sent)\n      : ttlTests.filter((t) => t.status === TEST_STATUS.New);\n\n    if (pageNo === 1) {\n      setTotalRecord(filterData);\n    }\n    setTests(filterData);\n    refreshTestList(filterData);\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n\n        if (key === \"Show\") {\n          return obj.site_name && obj.site_name.toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n        if (key === \"referenceID\") {\n          return obj[key] && obj[\"referenceID\"].toString().includes(filters[key]);\n        }\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n   \n    return models;\n  };\n\n  const refreshTestList = (list) => {\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredTests(list);\n    }\n  };\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filteredTests.length;\n    if (direction === \"next\" && page === totalPages && totalRecord > 0 && currentRecord < totalRecord) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  const handleSaveFilter = ( e, testItem) => {\n    appContext.setTestFilter({ location: isProcessingCall ? \"processing\" : \"tests\", filter, timeFilter });\n  };\n  function TableRow({ item }) {\n    return (\n      <tr>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\", width: \"50px\", maxWidth: \"50px\", minWidth: \"50px\" }}>\n          <Form.Check>\n            <Form.Check.Input\n              type=\"checkbox\"\n              value={item.id}\n              checked={checkboxes.indexOf(item.id) !== -1}\n              onChange={(e) => handleCheckboxChange(e, item.id)}\n            ></Form.Check.Input>\n          </Form.Check>\n        </td>\n        <td className=\"ellipsis\">{formatUTCDate(item.createdAt)}</td>\n        <td className=\"ellipsis\" title={item.firstName}>\n          {item.firstName}\n        </td>\n        <td className=\"ellipsis\" title={item.lastName}>\n          {item.lastName}\n        </td>\n        <td className=\"ellipsis\" title={item.dob}>\n          {item.dob}\n        </td>\n        <td\n          className=\"table-column ellipsis\"\n          style={{\n            textDecoration: \"underline\",\n            color: \"#A82632\",\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => test?.email && window.open(`mailto:${item.email}`)}\n          title={item.email}\n        >\n          {item.email}\n        </td>\n        <td\n          className=\"table-column ellipsis\"\n          style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => {\n            item.phoneNumber && window.open(`tel:${item.phoneNumber}`);\n          }}\n          title={item.phoneNumber && formatPhoneNumber(item.phoneNumber)}\n        >\n          {item.phoneNumber && formatPhoneNumber(item.phoneNumber)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={item.site_name}>\n          {item.site_name}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={item.status}>\n          {item.status}\n        </td>\n\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={item.test_type}>\n          {item.test_type}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={item.barcode}>\n          {item.barcode}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={item.tester_name}>\n          {item.tester_name}\n        </td>\n        <td>\n          <Link\n           style={{ color: \"#42cef5\" }}\n         \n            to={{ pathname: \"/lab/test/\" + labID + \"/\" + item.id, state: { labPortal: true , test: item} }}\n            onClick={(e) => handleSaveFilter(e , item)}\n            onContextMenu={(e) => handleSaveFilter(e , item)}\n          >\n            View\n          </Link>\n        </td>\n\n        {/* <td>\n          <DropdownButton id=\"dropdown-basic-button\" title=\"Update Result\">\n            <Dropdown.Item href=\"#/action-1\">Positive</Dropdown.Item>\n            <Dropdown.Item href=\"#/action-2\">Negative</Dropdown.Item>\n          </DropdownButton>\n        </td> */}\n      </tr>\n    );\n  }\n\n  const [showAlert, setShowAlert] = useState(false);\n  const hideAlert = () => {\n    setShowAlert(false);\n    if (importResult > 0) setTimeout(() => appContext.resetNewTests(), 1500);\n  };\n\n  const handleCSVClick = async () => {\n\n    console.log(\"handleCSVClick:\")\n    // if (testDownloadModel.length === 0) return;\n    // if (isProcessingCall) return;\n    try {\n      setLoading(true);\n      const testList = filteredTests.filter(\n        (test) => (test.status === \"Sent\" || test.status === \"New\") && checkboxes.includes(test.id)\n      );\n\n      const params = testList?.map((t) => {\n        return {\n          id: t.id,\n          status: \"Processing\",\n          sequenceNo: t.sequenceNo,\n        };\n      });\n\n      await GQAPI.updateStatusByLab(params);\n      setCheckboxes([]);\n      const newList = filteredTests.filter((test) => !checkboxes.includes(test.id));\n      setTests(newList);\n      // refreshTestList(newList);\n    } catch (error) {\n      appContext.showErrorMessage(\"Fail to download the tests\");\n      console.log(\"[LAB_UPDATE_STATUS] Fail to update the status\", error);\n    }\n    setLoading(false);\n  };\n\n\n  return (\n    <>\n      {!loading ? (\n        <Container fluid>\n          {importLength > 0 ? (\n            <SweetAlert\n              show={showAlert}\n              success\n              title=\"Success\"\n              onConfirm={() => {\n                hideAlert();\n              }}\n            >\n              Success! Uploaded {importLength} Test Result\n              {importLength > 1 && \"s\"}\n            </SweetAlert>\n          ) : (\n            <SweetAlert\n              show={showAlert}\n              error\n              title=\"Error\"\n              onConfirm={() => {\n                hideAlert();\n              }}\n            >\n              Fail to upload test result\n            </SweetAlert>\n          )}\n          {openConfirmation && (\n            <ConfirmationModal\n              show={openConfirmation}\n              title=\"Result Positive\"\n              message=\"Are you sure, to result positive ?\"\n              handleConfirm={handleConfirm}\n            />\n          )}\n          <div className=\"topHeaderButtons\">\n            <Col></Col>\n            <Col></Col>\n          </div>\n\n          <Row>\n            <Col md=\"12\">\n              {modalShow && (\n                <CSVReader\n                  onDrop={handleCSVOnDrop}\n                  onError={handleOnError}\n                  addRemoveButton\n                  config={{\n                    header: true,\n                    skipEmptyLines: true,\n                  }}\n                  onRemoveFile={handleOnRemoveFile}\n                >\n                  <span>Drop CSV file here or click to upload.</span>\n                </CSVReader>\n              )}\n            </Col>\n          </Row>\n          <Row>\n            <Col md=\"12\">\n              <Card className=\"strpied-tabled-with-hover\">\n                <Card.Header>\n                  <Card.Title\n                    as=\"h4\"\n                    style={{\n                      marginBottom: 10,\n                      fontWeight: \"bold\",\n                      color: \"#565656\",\n                    }}\n                  >\n                    {isProcessingCall ? \"Tests Processing\" : \"New Tests\"} ({filteredTests.length})\n                  </Card.Title>\n\n                  {!isProcessingCall && (\n                    <p className=\"card-category\" style={{ marginBottom: 15 }}>\n                      Download CSV file, Add a \"result\" column, then upload file to send results\n                    </p>\n                  )}\n                  <div className=\"buttonHeader\">\n                    {/* <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                      Filter\n                    </Button> */}\n                      <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n\n                      {/* Date Range */}\n                      <FilterSelect setTimeFilter={setTimeFilter} />\n                    {/* <Button\n                      className=\"headerButton\"\n                      onClick={() => {\n                        if (filteredTests.length > 0) {\n                          setAllSelected(!allSelected);\n                          toggleCheckboxes(!allSelected);\n                        }\n                      }}\n                    >\n                      {!allSelected ? \"Select All\" : \"Deselect All\"}\n                    </Button> */}\n                      <Icon\n                        handleClick={async () => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n                    {isProcessingCall && appContext.labs && (\n                      <></>\n                      // <Button className=\"headerButton labDownloadTest\" disabled={checkboxes.length === 0}>\n                      //   <CSVLink\n                      //     className=\"headerButton downloadTest\"\n                      //     onClick={handleCSVClick}\n                      //     filename={\"newBatch.csv\"}\n                      //     data={testDownloadModel}\n                      //   >\n                      //     Results File\n                      //   </CSVLink>\n                      // </Button>\n                    )}\n                    {!isProcessingCall ? (\n                      <>\n                        {/* <Button className=\"headerButton labDownloadTest\" disabled={checkboxes.length === 0}>\n                          <CSVLink\n                            className=\"headerButton downloadTest\"\n                            onClick={handleCSVClick}\n                            filename={\"newBatch.csv\"}\n                            data={testDownloadModel}\n                          >\n                            Download New Tests\n                          </CSVLink>\n                        </Button> */}\n                      </>\n                    ) : (\n                      <>\n                        {/* <Button\n                          className=\"headerButton\"\n                          onClick={() => {\n                            setModalShow(!modalShow);\n                            // props.history.push('/admin/processedtable')\n                          }}\n                        >\n                          Upload Results\n                        </Button> */}\n                        {/* <Button\n                          className=\"headerButton\"\n                          disabled={checkboxes.length === 0}\n                          onClick={() => setOpenConfirmation(true)}\n                        >\n                          Set Positive\n                        </Button> */}\n                        {/* <Button\n                          className=\"headerButton\"\n                          disabled={checkboxes.length === 0}\n                          onClick={() => updateTestResult(\"negative\")}\n                        >\n                          Set Negative\n                        </Button> */}\n                        {/* <Button\n                          className=\"headerButton\"\n                          disabled={checkboxes.length === 0}\n                          onClick={() => updateTestResult(\"inconclusive\")}\n                        >\n                          Set Inconclusive\n                        </Button> */}\n                         <Icon\n                            disabled={checkboxes.length === 0}\n                            handleClick={() => setOpenConfirmation(true)}\n                            title={\"Set Positive\"}\n                            label={\"Positive\"}\n                            iconType={\"acknowledgedPositiveIcon\"}\n                          />\n                          <Icon\n                            disabled={checkboxes.length === 0}\n                            handleClick={() => updateTestResult(\"negative\")}\n                            title={\"Set Negative\"}\n                            label={\"Negative\"}\n                            iconType={\"minusIcon\"}\n                          />\n                          <Icon\n                            disabled={checkboxes.length === 0}\n                            handleClick={() => updateTestResult(\"Inconclusive\")}\n                            title={\"Set Inconclusive\"}\n                            label={\"Inconclusive\"}\n                            iconType={\"checkEligibilityIcon\"}\n                          />\n\n                      </>\n                    )}\n\n                    {filteredTests.length > 0 && (\n                      <>\n                        <ExportToExcel\n                          items={filteredTests}\n                          appContext={appContext}\n                          selectedItem={selectedItem}\n                          //filter={filter}\n                          filter={{...filter, labID: labID , result: \"empty\", test_type: [\"PCR\"]}}\n                          timeFilter={timeFilter}\n                          title={isProcessingCall ? \"Tests Processing\" : \"New Tests\"}\n                          sortBy={sortBy}\n                        />\n                        <TestPDFLayout\n                          tests={filteredTests}\n                          filter={{...filter, labID: labID , result: \"empty\", test_type: [\"PCR\"]}}\n                          timeFilter={timeFilter}\n                          selectedItem={selectedItem}\n                          title={isProcessingCall ? \"Tests Processing\" : \"New Tests\"}\n                          appContext={appContext}\n                          sortBy={sortBy}\n                        />\n                      </>\n                    )}\n                  </div>\n\n                  {showFilter && (\n                    <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} isUsersTable={false} />\n                  )}\n\n                  <MFPagination\n                    timeFilter={timeFilter}\n                    currentPage={currentPage}\n                    handleChangePage={handleChangePage}\n                    totalPages={totalPages}\n                    showSelectedRecord\n                    totalSelected={checkboxes.length}\n                  />\n                </Card.Header>\n\n                <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                  <div className=\"table-responsive pendingReleaseTable\">\n                    <Table className=\"table-hover table-striped\">\n                      <thead ref={componentRef}>\n                        <tr>\n                          <th></th>\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"createdAt\"\n                            title=\"Date Collected\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"firstName\"\n                            title=\"First Name\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"lastName\"\n                            title=\"Last Name\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"dob\"\n                            title=\"DoB\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"email\"\n                            title=\"Email\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"phoneNumber\"\n                            title=\"Phone\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"site_name\"\n                            title=\"Show\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"status\"\n                            title=\"Status\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"test_type\"\n                            title=\"Test Type\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            showFilter={false}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"barcode\"\n                            title=\"Accession No\"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          <HeaderItem\n                            width={tdWidth}\n                            ItemKey=\"tester_name\"\n                            title=\"Tester \"\n                            flipSort={flipSort}\n                            sortBy={sortBy}\n                            sortDescending={sortDescending}\n                            aligned=\"centered\"\n                          />\n                          {\n                            <th\n                              className=\"border-0 text-grey\"\n                              style={{ fontWeight: \"bold\", width: \"80px\", maxWidth: \"80px\" }}\n                            >\n                              Actions\n                            </th>\n                          }\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {testsToMap &&\n                          testsToMap.map((test) => {\n                            return <TableRow key={test.id} item={test} />;\n                          })}\n                      </tbody>\n                    </Table>\n                  </div>\n                </Card.Body>\n              </Card>\n            </Col>\n          </Row>\n        </Container>\n      ) : (\n        <Loader />\n      )}\n    </>\n  );\n}\n\nexport default TableListApiNew;\n","import React, { useState, useMemo, useRef, useCallback } from \"react\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport { PAGE_LIMIT, MESSAGE_TYPE, RESULT_COLOR, RESULT_VALUE } from \"constant\";\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n  DropdownButton,\n  Dropdown,\n  Modal,\n  Form,\n} from \"react-bootstrap\";\nimport { DataStore } from \"@aws-amplify/datastore\";\nimport { Test } from \"models\";\nimport { useEffect, useContext } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { CSVLink } from \"react-csv\";\nimport { Importer, ImporterField } from \"react-csv-importer\";\nimport \"react-csv-importer/dist/index.css\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport FilterSelect from \"components/FilterSelect\";\nimport { Bounce } from \"react-activity\";\nimport \"react-activity/dist/Bounce.css\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport { AppContext } from \"context/app-context\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport {\n  changeSort,\n  getCrewsName,\n  formatTest,\n  setPhoneNo,\n  formatPhoneNumber,\n  calculateTdWidth,\n  sortingFilterInLC,\n  formatUTCDate,\n  sortTestList,\n  connectedIDInLocalStorage,\n} from \"utils\";\nimport ExportToExcelData from \"components/ExportToExcelData\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport ChangeResultModal from \"components/Modal/ChangeResultModal\";\nimport { debounce } from \"debounce\";\nimport moment from \"moment\";\nimport Loader from \"components/Loader/Loader\";\nimport Icon from \"components/Icon\";\n\nfunction ProcessedTestListApiNew() {\n\n\n  console.log('IN-ProcessedTestListApiNew' )\n  const componentRef = useRef();\n  const mainWidth = useRef();\n  const [width, setWidth] = useState(0);\n\n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  useEffect(() => handleResize(), [mainWidth]);\n\n  const tdWidth = calculateTdWidth(width - 130, 12);\n\n  const appContext = useContext(AppContext);\n  const importResult = [];\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [tests, setTests] = useState([]);\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const labID = window.location?.pathname?.split('/').pop(); \n  const [filter, setFilter] = useState({ status: \"Processed\", labID: labID || \"L\" });\n  const [loading, setLoading] = useState(false);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [showResultModal, setShowResultModal] = useState(false);\n  const [pageNo, setPageNo] = useState(1);\n  const searchTerms = [\n    \"First Name\",\n    \"Last Name\",\n    \"Date of Birth\",\n    \"Email\",\n    \"Phone\",\n    \"Show\",\n    \"Result\",\n    \"Test Type\",\n    \"Accession No\",\n    \"Tester\",\n    \"isVaccinated\",\n    \"White Glove\",\n    \"Pattern\",\n    \"Capacity\",\n  ];\n\n  const selectedItem = [\n    \"createdAt\",\n    \"updatedAt\",\n    \"firstName\",\n    \"lastName\",\n    \"dob\",\n    \"email\",\n    \"phoneNumber\",\n    \"site_name\",\n    \"status\",\n    \"result\",\n    \"test_type\",\n    \"referenceID\",\n    \"tester_name\",\n    \"isVaccinated\",\n    \"capacity\",\n    \"whiteGlove\",\n    \"patternTestAnswer\",\n  ];\n\n  const { filterDates } = TimeFilter;\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  const filterTests = (searchTerm, searchInput) => {\n    let newTerm;\n    switch (searchTerm) {\n      case \"date_created\":\n        newTerm = \"createdAt\";\n        break;\n      case \"date_updated\":\n        newTerm = \"updatedAt\";\n        break;\n      case \"crew_id\":\n        newTerm = \"employeeID\";\n        break;\n      case \"show\":\n        newTerm = \"site_name\";\n        break;\n      default:\n        newTerm = searchTerm;\n    }\n    return setFilteredTests(tests.filter((test) => test[newTerm].includes(searchInput)));\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n\n        if (key === \"Show\") {\n          return obj.site_name && obj.site_name.toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n        if (key === \"result\") {\n          return obj[key] && obj[\"viewedResult\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n        if (key === \"referenceID\") {\n          return obj[key] && obj[\"referenceID\"].toString().includes(filters[key]);\n        }\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    // console.log(\"FROM NESTED FILTER\", models);\n    return models;\n  };\n\n  useEffect(() => {\n    if (appContext.testFilter && appContext.testFilter.location === \"processedtests\") {\n      setFilter(appContext.testFilter.filter);\n      setShowFilter(true);\n    }\n    loadPrevSorting();\n    setLoading(true);\n  }, []);\n\n  useEffect(() => {\n    if (appContext.eventObject && appContext.eventObject !== 0) {\n      const eventType = appContext.eventObject.opType;\n      const model = formatTest(appContext.eventObject.element);\n\n      if (model.status !== \"Processed\" && model.test_type !== \"PCR\") return;\n      const newList = [...filteredTests];\n\n      if (eventType === \"INSERT\") {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        if (index !== -1) {\n          newList.splice(index, 1, model);\n        } else {\n          newList.unshift(model);\n        }\n      }\n      const testAfterFilter = filterDates(nestedFilter([...newList], filter), timeFilter);\n      if (filteredTests.length < testAfterFilter.length) {\n        setTotalRecord(totalRecord + 1);\n      }\n      refreshTestList(testAfterFilter);\n    }\n  }, [appContext?.eventObject]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"processedtests\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredTests.length === 0) return;\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    fetchFromApi({ ...filter }, { ...timeFilter }, 1, sortBy, sortDescending);\n  }, [filter, timeFilter, sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      loadTestFromPG(Object.keys(filter).length === 0 ? { id: 1 } : filter, timeFilter, pageNo, sortBy, sortDescending);\n    }\n  }, [pageNo]);\n\n  const loadPrevSorting = () => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.processedtests.sortBy) {\n      setSortDescending(sortingFilters.processedtests.sortDescending);\n      setSortBy(sortingFilters.processedtests.sortBy);\n    }\n  };\n\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter, page, sortBy, sortDescending) => {\n      loadTestFromPG(filter, timeFilter, page, sortBy, sortDescending);\n    }, 800),\n    []\n  );\n\n  const loadTestFromPG = async (params, dateFilter, page, orderBy, orderByDirection) => {\n    setLoading(true);\n    try {\n      const filterParam = params;\n      //const connectedID = labID || \"L\";\n      Object.assign(filterParam, { page: page, status: \"Processed\", labID: labID });\n\n      if (dateFilter) {\n        const { start, end } = dateFilter;\n        if (start)\n          Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n        if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n      }\n      if (orderBy) {\n        Object.assign(filterParam, { orderBy, orderByDirection });\n      }\n      const pgList = await GQAPI.getTestListFromPG(filterParam);\n      setLoading(false);\n      const ttlTests = tests.concat(pgList.rows.map((t) => formatTest(t)));\n      if (pageNo === 1) {\n        setTotalRecord(pgList.total);\n      }\n      setTests(ttlTests);\n      refreshTestList(ttlTests);\n    } catch (err) {\n      setLoading(false);\n    }\n  };\n\n  const refreshTestList = (list) => {\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredTests(list);\n    }\n  };\n\n  const displayPdf = async (test) => {\n    handleSaveFilter();\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getLab(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: \"processedtests\", filter, timeFilter });\n  };\n\n  const handleCheckboxChange = (e, id) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? filteredTests.map((t) => t.id) : []);\n\n  const handleSendEmail = async () => {\n    const selectedTest = filteredTests.filter((test) => checkboxes.includes(test.id));\n    if (!selectedTest.length) {\n      return;\n    }\n    const params = selectedTest.map((t) => {\n      return {\n        id: t.id,\n        sequenceNo: t.sequenceNo,\n      };\n    });\n    const ttlEmails = params.length;\n    appContext.showSuccessMessage(`Email has been successfully sent to ${ttlEmails} Patient ${ttlEmails > 1 ? \"s\" : \"\"}`);\n    setCheckboxes([]);\n    await GQAPI.sendEmailToPendingRelease(params);\n    \n  };\n\n  const updateTestResult = async (result) => {\n    console.log(\"result in updateTestResult::\" , result)\n    const updateSelectedTestResult = filteredTests.filter((test) => checkboxes.indexOf(test.id) !== -1);\n    console.log(\"Checkbox\", updateSelectedTestResult);\n    const ttlTest = updateSelectedTestResult.length;\n    if (!ttlTest) {\n      return;\n    }\n    setLoading(true);\n\n    try {\n      if (!loading) setLoading(true);\n\n      const params = updateSelectedTestResult.map((t) => {\n        return {\n          id: t.id,\n          result: RESULT_VALUE[result.toLowerCase()],\n          status: result === \"positive\" ? \"Pending\" : \"Processed\",\n          timerStatus: result === \"positive\" ? \"Pending\" : \"Processed\",\n          resultDateTime: moment().utc().toISOString(),\n          resultDate: moment().utc().format(\"YYYY-MM-DD\"),\n          StampBy: appContext.user.sub,\n          StampByName: appContext.user.name,\n          sequenceNo: t.sequenceNo,\n        };\n      });\n\n      await GQAPI.updateTestResult(params);\n      appContext.showSuccessMessage(`${ttlTest} test${ttlTest === 1 ? \"\" : \"s\"} has been resulted ${result}` , true);\n      setLoading(false);\n\n    } catch (err) {\n      setLoading(false);\n      console.log(\"Err\", err);\n    }\n   \n      \n    fetchFromApi({ ...filter }, { ...timeFilter }, 1, sortBy, sortDescending);\n    setCheckboxes([]);\n\n    \n  };\n\n  function TableRow({ test }) {\n    return (\n      <tr>\n        <td className=\"ellipsis\" style={{ textAlign: \"left\", width: \"50px\", maxWidth: \"50px\", mainWidth: \"50px\" }}>\n          <Form.Check>\n            <Form.Check.Input\n              type=\"checkbox\"\n              value={test.id}\n              checked={checkboxes.indexOf(test.id) !== -1}\n              onChange={(e) => handleCheckboxChange(e, test.id)}\n            ></Form.Check.Input>\n          </Form.Check>\n        </td>\n        <td className=\"ellipsis\">{formatUTCDate(test.createdAt)}</td>\n        <td className=\"ellipsis\">{formatUTCDate(test.updatedAt)}</td>\n        <td className=\"ellipsis\" title={test.firstName}>\n          {test.firstName}\n        </td>\n        <td className=\"ellipsis\" title={test.lastName}>\n          {test.lastName}\n        </td>\n        <td className=\"ellipsis\" title={test.dob}>\n          {test.dob}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{\n            textDecoration: \"underline\",\n            color: \"#A82632\",\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => test?.email && window.open(`mailto:${test.email}`)}\n          title={test.email}\n        >\n          {test.email}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => {\n            test.phoneNumber && window.open(`tel:${test.phoneNumber}`);\n          }}\n          title={test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        >\n          {test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.site_name}>\n          {test.site_name}\n        </td>\n        {/* <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.status}>\n          {test.status}\n        </td> */}\n\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={appContext.parseResult(test)}>\n          <span\n            onMouseOver={(e) => {\n              e.target.style.cursor = \"pointer\";\n              e.target.style.textDecoration = \"none\";\n            }}\n            onClick={() => displayPdf(test)}\n            style={{\n              color: RESULT_COLOR[test.result?.toLowerCase()],\n              textDecoration: \"underline\",\n            }}\n          >\n            {appContext.parseResult(test)}\n          </span>\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.test_type}>\n          {test.test_type}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.barcode}>\n          {test.barcode}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }} title={test.tester_name}>\n          {test.tester_name}\n        </td>\n        \n        <td>\n          <Link\n            onClick={handleSaveFilter}\n            to={{\n              pathname: \"/lab/test/\" + labID + \"/\" + test.id, state: { labPortal: true , test: test},\n            }}\n          >\n            View\n          </Link>\n        </td>\n      </tr>\n    );\n  }\n\n  const handleChangePage = (page) => setCurrentPage(page);\n\n  return showPdf ? (\n    <PDFLayout setShowPdf={setShowPdf} testPdf={testPdf} testsLab={testsLab} />\n  ) : (\n    <>\n      <Container fluid>\n        <Row>\n          <Col md=\"12\">\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Processed Tests ({totalRecord})\n                </Card.Title>\n\n                <p className=\"card-category mb-3\">History of Processed Tests</p>\n                <div className=\"buttonHeader\">\n                  {/* <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                    Filter\n                  </Button> */}\n                    <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                 {/* Date Range */}\n                 <FilterSelect setTimeFilter={setTimeFilter} />\n                    <Icon\n                        handleClick={async () => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n                  {/* <Button\n                    className=\"headerButton\"\n                    onClick={() => setShowResultModal(true)}\n                    disabled={checkboxes.length === 0}\n                  >\n                    Change Result\n                  </Button> */}\n                    <Icon\n                            handleClick={() => setShowResultModal(true)}\n                            title={\"Change Result\"}\n                            label={\"Change Result\"}\n                            iconType={\"resultsIcon\"}\n                            disabled={checkboxes.length === 0}\n                          />\n                  {/* <Button className=\"headerButton\" onClick={handleSendEmail} disabled={checkboxes.length === 0}>\n                    Send Email\n                  </Button> */}\n                    <Icon\n                          handleClick={handleSendEmail}\n                          disabled={checkboxes.length ? false : true}\n                          title={\"Email\"}\n                          label={\"Send Email\"}\n                          iconType={\"messageIcon\"}\n                        />\n                  {filteredTests.length > 0 && (\n                    <>\n                      <ExportToExcelData\n                        items={filteredTests}\n                        appContext={appContext}\n                        selectedItem={selectedItem}\n                        filter={{ ...filter, status: \"Processed\", labID: labID || \"L\" }}\n                        timeFilter={timeFilter}\n                        title=\"Processed Tests\"\n                        sortBy={sortBy}\n                        setLoading={setLoading}\n                      />\n                      <TestPDFLayout\n                        tests={filteredTests}\n                        filter={filter}\n                        selectedItem={selectedItem}\n                        timeFilter={timeFilter}\n                        title=\"Processed Tests\"\n                        appContext={appContext}\n                        sortBy={sortBy}\n                      />\n                    </>\n                  )}\n                </div>\n\n                {showFilter && (\n                  <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} isUsersTable={false} />\n                )}\n\n              <MFPagination \n               timeFilter={timeFilter}\n              currentPage={currentPage} \n              handleChangePage={handleChangePage} \n              totalPages={totalPages}\n              showSelectedRecord\n              totalSelected={checkboxes.length}\n              />\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable\">\n                  <Table className=\"table-hover table-striped\">\n                    <thead ref={componentRef}>\n                      <tr>\n                        <th></th>\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"createdAt\"\n                          title=\"Date Collected\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"updatedAt\"\n                          title=\"Date Processed\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"firstName\"\n                          title=\"First Name\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"lastName\"\n                          title=\"Last Name\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"dob\"\n                          title=\"DoB\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"email\"\n                          title=\"Email\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"phoneNumber\"\n                          title=\"Phone\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"siteID\"\n                          title=\"Show\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        {/* <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"status\"\n                          title=\"Status\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        /> */}\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"result\"\n                          title=\"Result\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"test_type\"\n                          title=\"Test Type\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"barcode\"\n                          title=\"Accession No\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"tester_name\"\n                          title=\"Tester\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <th\n                          className=\"border-0 left text-grey\"\n                          style={{ fontWeight: \"bold\", width: \"80px\", maxWidth: \"80px\" }}\n                        >\n                          Actions\n                        </th>\n                      </tr>\n                    </thead>\n                    <tbody>\n                      {testsToMap &&\n                        testsToMap.map((test) => {\n                          return <TableRow key={test.id} test={test} />;\n                        })}\n                    </tbody>\n                  </Table>\n                </div>\n                {!loading && tests.length === 0 && (\n                  <div style={{ textAlign: \"center\" }}>\n                    <h4>There are no tests Completed to View</h4>\n                  </div>\n                )}\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n        {showResultModal && (\n          <ChangeResultModal handleSave={updateTestResult} handleClose={() => setShowResultModal(false)} />\n        )}\n        {loading && <Loader />}\n      </Container>\n    </>\n  );\n}\n\nexport default ProcessedTestListApiNew;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\n\nimport Test from \"views/Test\";\nimport TableListApiNew from \"views/GraphQL/TableListApiNew\";\nimport ProcessedTestListApi from \"views/GraphQL/ProcessedTestListApi\";\nimport Typography from \"views/Typography.js\";\nimport Icons from \"views/Icons.js\";\nimport Maps from \"views/Maps.js\";\nimport Notifications from \"views/Notifications.js\";\nimport Upgrade from \"views/Upgrade.js\";\nimport Settings from \"views/Settings.js\";\nimport ProcessedTestListApiNew from \"views/GraphQL/ProcessedTestListApiNew\";\n\nconst labRoutesNew = [\n  {\n    path: \"/newtests/:labID\",\n    name: \"New Tests\",\n    icon: \"nc-icon nc-notes\",\n    component: TableListApiNew,\n    layout: \"/lab\",\n  },\n  {\n    path: \"/processing/:labID\",\n    name: \"Tests Processing\",\n    icon: \"nc-icon nc-notes\",\n    component: TableListApiNew,\n    layout: \"/lab\",\n  },\n  {\n    path: \"/processedtests/:labID\",\n    name: \"Processed Tests\",\n    icon: \"nc-icon nc-check-2\",\n    component: ProcessedTestListApiNew,\n    layout: \"/lab\",\n  },\n  \n  {\n    path: \"/test/:labID\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: Test,\n    layout: \"/lab\",\n    redirect: true,\n  },\n  \n];\n\nexport default labRoutesNew;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\nimport React, { Component, useEffect, useState, useLayoutEffect } from \"react\";\nimport { useLocation, NavLink } from \"react-router-dom\";\n\nimport { Nav } from \"react-bootstrap\";\nimport { logoImage, CONFIG } from \"constant\";\n\nimport logo from \"assets/img/reactlogo.png\";\nimport API from \"api\";\nimport { useRendersCount } from \"react-use\";\n\nfunction LabSidebarNew({ color, image, routes, user, pendingTests, labID, invalidTests, setTestFilter, testFilter }) {\n  const location = useLocation();\n  const [tests, setTests] = useState([]);\n\n  const activeRoute = (routeName) => {\n    return location.pathname.indexOf(routeName) > -1 ? \"active\" : \"\";\n  };\n\n  const isUserAllowed = (user, roles) => {\n    let allowed = false;\n    roles.forEach((role) => {\n      if (user?.[role]()) {\n        allowed = true;\n      }\n    });\n    return allowed;\n  };\n\n  useEffect(() => {\n    // console.log(pendingTests.length);\n  }, [pendingTests]);\n\n  const handleNavClick = () => {\n    if (testFilter) setTestFilter(null);\n  };\n\n  return (\n    <div className=\"sidebar\" data-image={image} data-color={color}>\n      <div\n        className=\"sidebar-background\"\n        style={{\n          backgroundImage: \"url(\" + image + \")\",\n        }}\n      />\n      <div className=\"sidebar-wrapper\">\n        <div className=\"logo d-flex align-items-center justify-content-start\">\n          {/* <a\n            href=\"https://www.creative-tim.com?ref=lbd-sidebar\"\n            className=\"simple-text logo-mini mx-1\"\n          >\n            <div className=\"logo-img\">\n              <img\n                src={require(\"assets/img/reactlogo.png\").default}\n                alt=\"...\"\n              />\n            </div>\n          </a> */}\n          {/* <a className=\"simple-text\" href={CONFIG.baseurl} target=\"_blank\">\n            <img src={logoImage} alt=\"...\" style={{ width: 240 }} />\n          </a> */}\n          <img src={logoImage} alt=\"...\" style={{ width: 240 }} />\n        </div>\n        <Nav>\n          {routes.map((prop, key) => {\n            if (!prop.redirect)\n              return (\n                <li className={prop.upgrade ? \"active active-pro\" : activeRoute(prop.layout + prop.path)} key={key}>\n                  <NavLink\n                    to={prop.layout + prop.path.replace(\":labID\", labID)}\n                    className=\"nav-link\"\n                    activeClassName=\"active\"\n                    onClick={handleNavClick}\n                  >\n                    <i className={prop.icon} />\n                    <p>\n                      {prop.name}{\" \"}\n                      {(prop.name === \"Pending Release\" || prop.name === \"Inconclusive\") &&\n                        (pendingTests.length > 0 || invalidTests.length > 0) && (\n                          <span className=\"sidebarListing-badge\">\n                            {prop.name === \"Pending Release\" ? pendingTests.length : invalidTests.length}\n                          </span>\n                        )}\n                    </p>\n                  </NavLink>\n                </li>\n              );\n            return null;\n          })}\n        </Nav>\n      </div>\n    </div>\n  );\n}\n\nexport default LabSidebarNew;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\nimport React, { Component, useState, useEffect, useLayoutEffect } from \"react\";\nimport { useLocation, Route, Switch } from \"react-router-dom\";\nimport AdminNavbar from \"components/Navbars/AdminNavbar\";\nimport Sidebar from \"components/Sidebar/Sidebar\";\nimport localApi from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { AppContext } from \"../context/app-context\";\nimport labRoutes from \"routes/labRoutes\";\nimport whiteLabelLabRoutes from \"routes/WhiteLabellabRoutes\";\nimport adminRoutes from \"routes/adminRoutes\";\nimport siteRoutes from \"routes/HSRoutes\";\nimport sidebarImage from \"assets/img/sidebar-3.jpg\";\nimport { Hub, Auth, Storage, API, graphqlOperation } from \"aws-amplify\";\nimport * as subscriptions from \"graphql/subscriptions\";\nimport { Test, Employee, TestConsent, EmployeeBarCodes, ExternalTest, Site } from \"../models\";\nimport { formatTest, medFlowInLocalStorage, formatExternalTest, roleInLocalStorage } from \"utils\";\nimport TableListApi from \"views/GraphQL/TableListApi\";\nimport api from \"api\";\nimport { useIdleTimer } from \"react-idle-timer\";\nimport IdleModal from \"components/IdleModal\";\nimport { useHistory } from \"react-router-dom\";\nimport { debounce } from \"debounce\";\nimport { AMAZON_CLIENT_RESULT, RESULT_PDF, RESULT_CHECK, ROUTES, CONFIG } from \"../constant\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { DataStore, syncExpression } from \"@aws-amplify/datastore\";\nimport moment from \"moment\";\nimport Loader from \"components/Loader/Loader\";\nimport { showsInSS } from \"utils\";\nimport labRoutesNew from \"routes/labRoutesNew\";\nimport LabSidebarNew from \"components/Sidebar/LabSidebarNew\";\nimport TableListApiNew from \"views/GraphQL/TableListApiNew\";\nimport { connectedIDByURL } from \"utils\";\nimport LabDashboard from \"views/DashboardCharts/LabDashboard\";\n\nfunction LabNew() {\n  const timeout = 1800000;\n  const [showIdleModal, setShowIdleModal] = useState(false);\n  const [remaining, setRemaining] = useState(timeout);\n  const [elapsed, setElapsed] = useState(0);\n  const [lastActive, setLastActive] = useState(+new Date());\n  const [lastEvent, setLastEvent] = useState(\"Events Emitted on Leader\");\n  const [leader, setLeader] = useState(true);\n  const [timedOut, setTimedOut] = useState(false);\n  const [showAlert, setShowAlert] = useState(false);\n  const [successMessageText, setSuccessMessageText] = useState(\"\");\n  const [errorMessageText, setErrorMessageText] = useState(\"\");\n  const [pageState, setPageState] = useState(\"New\");\n  const [role, setRole] = useState(null);\n\n  //const connectedID = window.location?.pathname?.split('/').pop();\n\n  let getConnectedID = connectedIDByURL(window.location.pathname);\n  console.log(\"connectedID getConnectedID: \", getConnectedID);\n  const connectedID = getConnectedID.connectedID;\n  console.log(\"connectedID: \", connectedID);\n\n  const [routingPathBasedMedFlow, setRoutingPathBasedMedFlow] = useState({\n    userType: \"L\",\n    connectedId: connectedID,\n    labID: connectedID,\n  });\n\n  useLayoutEffect(() => {\n    let userType = routingPathBasedMedFlow?.userType || medFlowInLocalStorage.get();\n    if (!userType || userType === null) handleLogOut();\n  }, []);\n\n  useEffect(() => {\n    let roleSelected = roleInLocalStorage.get();\n    setRole(roleSelected);\n  }, []);\n\n  let history = useHistory();\n\n  const handleCloseModal = () => {\n    setShowIdleModal(false);\n  };\n\n  const handleLogOut = async () => {\n    setShowIdleModal(false);\n    try {\n      await DataStore.clear();\n      await Auth.signOut();\n      medFlowInLocalStorage.clear();\n      // console.log(\"PAUSED\");\n      handlePause();\n      history.push(\"/login\");\n    } catch (error) {\n      console.log(\"Error signing out: \", error);\n    }\n  };\n\n  const handleOnIdle = (event) => {\n    setShowIdleModal(true);\n  };\n\n  const handleOnActive = (event) => {\n    setTimedOut(false);\n  };\n\n  const handleOnAction = (event) => {\n    setTimedOut(false);\n  };\n\n  const handleReset = () => reset();\n  const handlePause = () => pause();\n  const handleResume = () => resume();\n  const handleStart = () => start();\n\n  const { pause, resume, start } = useIdleTimer({\n    timeout,\n    onActive: handleOnActive,\n    onIdle: handleOnIdle,\n    onAction: handleOnAction,\n    debounce: 500,\n    crossTab: {\n      emitOnAllTabs: false,\n    },\n  });\n\n  useEffect(() => {\n    // window.addEventListener(\"beforeunload\", removeUserFromLC);\n    DataStore.stop();\n    // return () => {\n    //   window.removeEventListener(\"beforeunload\",removeUserFromLC);\n    // };\n  }, []);\n\n  useEffect(() => {\n    if (showIdleModal) {\n      const timeout = setTimeout(() => {\n        if (showIdleModal) {\n          handleLogOut();\n        }\n      }, 60000); // TODO: - This time is the extra time you want to see how long they're idle for until they get logged out 300000\n      return () => clearTimeout(timeout);\n    }\n  }, [showIdleModal]);\n\n  const [image, setImage] = React.useState(sidebarImage);\n  const [color, setColor] = React.useState(process.env.REACT_APP_COLOR);\n  const [hasImage, setHasImage] = React.useState(true);\n  const [userRoutes, setUserRoutes] = React.useState([]);\n  const [users, setUsers] = React.useState([]);\n  const [clients, setClients] = React.useState([]);\n  const [sites, setSites] = React.useState([]);\n  const [labs, setLabs] = React.useState([]);\n  const [admins, setAdmins] = React.useState([]);\n  const [pendingTests, setPendingTests] = React.useState([]);\n  const [invalidTests, setInvalidTests] = React.useState([]);\n  const [completedTests, setCompletedTests] = React.useState([]);\n  const [unprocessedTests, setUnprocessedTests] = React.useState();\n  const [unSubmittedTests, setUnsubmittedTests] = React.useState();\n  const [externalTest, setExternalTest] = useState([]);\n  const [newTests, setNewTests] = React.useState([]);\n  const [totalTests, setTotalTests] = React.useState([]);\n  const [adminTotalTests, setAdminTotalTests] = React.useState([]);\n  const [userLab, setUserLab] = React.useState(null);\n  const [userLabName, setUserLabName] = React.useState(null);\n  const [userSiteName, setUserSiteName] = React.useState(null);\n  const [loading, setLoading] = React.useState(true);\n  const [testFilter, setTestFilter] = useState(null);\n  const [eventObject, setEventObject] = useState(0);\n  const [testObject, setTestObject] = useState(0);\n  const [isShowUpdated, setIsShowUpdated] = useState(null);\n\n  const location = useLocation();\n  const mainPanel = React.useRef(null);\n\n  const getRoutes = (routes) => {\n    return routes.map((prop, key) => {\n      if (prop.layout === \"/lab\") {\n        return <Route path={prop.layout + prop.path} render={(props) => <prop.component {...props} />} key={key} />;\n      } else {\n        return null;\n      }\n    });\n  };\n\n  const fetchUserGroups = async () => {\n    const admins = await localApi.fetchAllUsersInGroup(\"Admins\");\n    const labs = await localApi.fetchAllUsersInGroup(\"Labs\");\n    const testers = await localApi.fetchAllUsersInGroup(\"Testers\");\n    const employers = await localApi.fetchAllUsersInGroup(\"Employers\");\n    const clients = await localApi.fetchAllUsersInGroup(\"Clients\");\n    return Promise.all([admins, labs, testers, employers, clients]).then((values) => [\n      admins,\n      labs,\n      testers,\n      employers,\n      clients,\n    ]);\n  };\n\n  const fetchAdmins = async () => {\n    const admins = await localApi.fetchUsersInGroup(\"Admins\");\n    return admins;\n  };\n\n  const fetchClients = async () => {\n    const models = await localApi.getClients();\n    setClients(models);\n  };\n\n  const fetchSites = async () => {\n    const models = await localApi.getSites();\n    // setSites(models.filter((s) => s.isArchive === false));\n    setSites(models);\n  };\n\n  const fetchSitesByUser = async (siteID) => {\n    const models = await localApi.getUserSiteData(siteID);\n    setUserSiteName(models[0].name);\n    return models;\n  };\n\n  const fetchSitesByClient = async (clientID) => {\n    const models = await localApi.getSitesByClient(clientID);\n    return models;\n  };\n\n  const findTotalTestsBySites = async (sites) => {\n    const passFailClients = await localApi.getResultClients();\n    const tests = [];\n    sites.forEach((site) => {\n      return site?.tests.map((test) => {\n        return tests.push(formatTest(test, passFailClients));\n      });\n    });\n    setTotalTests(tests);\n\n    return tests;\n  };\n\n  const fetchExternalTests = async () => {\n    console.log(\"fectExternalTest\");\n    const models = await localApi.getExternalTest();\n\n    setExternalTest(models.map((t) => formatExternalTest(t)));\n  };\n\n  const updatedShow = (obj) => {\n    if (obj) {\n      setIsShowUpdated(obj);\n    } else {\n      setIsShowUpdated(null);\n    }\n  };\n\n  const getClientName = (id) => {\n    if (!id) return \"\";\n    if (clients) {\n      const client = clients.find((c) => c.id === id);\n      if (client) return client.name;\n    }\n    return \"\";\n  };\n\n  const parseResult = (test) => {\n    if (!test) return \"\";\n    if (test.resultDetails !== null) return \"View Detail\";\n    if (!test.result) return \"\";\n    if (clients) {\n      const client = clients.find((c) => c.id === test.clientID);\n      if (client && client.resultType === \"P/F\") {\n        return AMAZON_CLIENT_RESULT[test.result];\n      }\n    }\n\n    return test.result && test.result.charAt(0).toUpperCase() + test.result.slice(1);\n  };\n\n  const parseTestResultForPDF = (test) => {\n    if (!test) return \"\";\n\n    if (clients) {\n      const client = clients.find((c) => c.id === test.clientID);\n      if (client && client.resultType === \"P/F\") {\n        return AMAZON_CLIENT_RESULT[test.result];\n      }\n    }\n\n    return test.result && RESULT_PDF[test.result.toLowerCase()];\n  };\n\n  const getEmployeeByID = async (id) => {\n    const emp = await localApi.getEmployeeByID(id);\n    return emp;\n  };\n\n  const fetchLabs = async () => {\n    const models = await localApi.getLabByID(connectedID);\n    setLabs(models);\n    const lab = models;\n    if (lab) {\n      setUserLab(lab);\n      setUserLabName(lab.name);\n    }\n  };\n\n  const fetchPendingTests = async (ids) => {\n    if (ids) {\n      const newList = pendingTests.filter((t) => ids.indexOf(t.id) === -1 && (t.invalidResultStatus || 0) === 0);\n      setPendingTests(newList);\n      return;\n    }\n    const params = { pendingRelease: \"Pending\" };\n    Object.assign(params, { labID: routingPathBasedMedFlow?.connectedId || \"L\" });\n    const models = await localApi.getTestListFromPG(params);\n\n    const tests = models.rows\n      .map((test) => {\n        return formatTest(test);\n      })\n      .filter((f) => (f.invalidResultStatus || 0) === 0);\n    setPendingTests(tests);\n  };\n\n  const fetchAllAdminTests = async () => {\n    console.log(\"fectchAdminTest\");\n    const passFailClients = await localApi.getResultClients();\n    const models = await localApi.getTotalAdminTests();\n    const tests = models.map((test) => {\n      return formatTest(test, passFailClients);\n    });\n    setAdminTotalTests(tests);\n  };\n\n  const fetchNewTests = async () => {\n    console.log(\"fectchNewTest\");\n    const models = await localApi.getCurrentLabUserTests();\n    setNewTests(models);\n    return models;\n  };\n\n  const onSubscriptionTrigger = debounce(() => refreshDataOnSubscribe(), 6000);\n\n  const refreshDataOnSubscribe = () => {\n    console.log(\"Refresh Data\");\n    const userType = routingPathBasedMedFlow?.userType || \"L\";\n    if (userType === \"L\") {\n      fetchNewTests();\n    }\n  };\n  const [user, setUser] = useState();\n\n  useEffect(() => {\n    if (!testObject) return;\n    const eventType = testObject.opType;\n    const model = formatTest(testObject.element);\n    const result = model.result;\n\n    if (result && result.toLowerCase() === RESULT_CHECK[result.toLowerCase()]) {\n      const newList = [...pendingTests];\n      const index = pendingTests.findIndex((t) => t.id === model.id);\n\n      if (\n        (eventType === \"DELETE\" || (model.status === \"Processed\" && result.toLowerCase() === \"positive\")) &&\n        index !== -1\n      ) {\n        newList.splice(index, 1);\n      } else if (\n        (eventType === \"INSERT\" || eventType === \"UPDATE\") &&\n        index === -1 &&\n        (model.status === \"Pending\" || result.toLowerCase() === \"inconclusive\" || result.toLowerCase() === \"invalid\")\n      ) {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\" && index !== -1) {\n        newList.splice(index, 1, model);\n      }\n      setPendingTests(newList.filter((f) => (f.invalidResultStatus || 0) === 0));\n    }\n  }, [testObject]);\n\n  React.useEffect(() => {\n    let subscription = null;\n    let apiSubscription = null;\n    let showSubscription = null;\n    const userType = routingPathBasedMedFlow?.userType || \"L\";\n\n    if (userType === \"L\") {\n      setUserRoutes(labRoutesNew);\n    }\n\n    const getUSer = async () => {\n      const days = 2;\n      const date = moment().subtract(days, \"days\").format(\"YYYY-MM-DD\");\n      const user = await localApi.getCurrentUser();\n      let syncExpressionsByUserType = [];\n      if (user) {\n        if (user.isAdmin() || user.isLab()) {\n          syncExpressionsByUserType = [\n            syncExpression(TestConsent, () => {\n              return (test) => test.employeeID(\"eq\", \"123\");\n            }),\n            syncExpression(EmployeeBarCodes, () => {\n              return (emp) => emp.employeeID(\"eq\", \"123\");\n            }),\n            syncExpression(Employee, () => {\n              return (test) => test.id(\"eq\", \"123\");\n            }),\n            syncExpression(ExternalTest, () => {\n              return (test) => test.id(\"eq\", \"000\");\n            }),\n          ];\n          if (user.isAdmin()) {\n            syncExpressionsByUserType.push(\n              syncExpression(Test, () => {\n                return (test) => test.status(\"ne\", \"Processed\");\n              })\n            );\n          }\n\n          DataStore.configure({\n            maxRecordsToSync: 90000,\n            syncPageSize: 2000,\n            syncExpressions: syncExpressionsByUserType,\n          });\n          DataStore.start();\n          setUser(user);\n          handleStart();\n        } else {\n          setLoading(false);\n          setShowAlert(true);\n        }\n      } else {\n        setLoading(false);\n        console.log(\"push to login\");\n        history.push(\"/login\");\n      }\n    };\n    getUSer().then((res) => {\n      subscription = DataStore.observe(Test).subscribe((msg) => {\n        const noSubs = ROUTES.some((r) => window.location.href.includes(r));\n        if (noSubs) return;\n        const userType = routingPathBasedMedFlow?.userType || \"L\";\n        const connectedID = routingPathBasedMedFlow?.labID || \"L\";\n        if (userType === \"L\" && msg.element.labID === connectedID) {\n          setEventObject(msg);\n        }\n        onSubscriptionTrigger();\n      });\n      showSubscription = DataStore.observe(Site).subscribe((msg) => {\n        updatedShow(msg.element);\n        fetchSites();\n      });\n      apiSubscription = API.graphql(graphqlOperation(subscriptions.onUpdateTest)).subscribe({\n        next: ({ value: { data }, value }) => {\n          console.log(\"Here are in event\");\n          const userType = routingPathBasedMedFlow?.userType || \"L\";\n          const connectedID = routingPathBasedMedFlow?.labID || \"L\";\n          let model = data.onUpdateTest;\n          if (userType === \"L\" && model.labID === connectedID) {\n            setEventObject({ opType: \"UPDATE\", element: model });\n          }\n        },\n        error: (error) => console.warn(error),\n      });\n    });\n    return () => {\n      if (subscription) subscription.unsubscribe();\n      if (apiSubscription) apiSubscription.unsubscribe();\n      if (showSubscription) showSubscription.unsubscribe();\n    };\n  }, []);\n\n  React.useEffect(() => {\n    document.documentElement.scrollTop = 0;\n    document.scrollingElement.scrollTop = 0;\n    // mainPanel.current.scrollTop = 0;\n    if (window.innerWidth < 993 && document.documentElement.className.indexOf(\"nav-open\") !== -1) {\n      document.documentElement.classList.toggle(\"nav-open\");\n      var element = document.getElementById(\"bodyClick\");\n      element.parentNode.removeChild(element);\n    }\n  }, [location]);\n\n  const contextSwitch = (role) => {\n    if (user?.isAdmin()) {\n      return {\n        testObject,\n        user,\n        users,\n        resetUsers: () => setUsers(fetchUserGroups()),\n        clients,\n        resetClients: () => fetchClients(),\n        sites,\n        resetSites: () => fetchSites(),\n        isShowUpdated,\n        labs,\n        resetLabs: () => fetchLabs(),\n        pendingTests,\n        invalidTests,\n        resetPendingTests: (ids) => fetchPendingTests(ids),\n        // resetInvalidTests: (ids) => fetchInvalidTests(ids),\n        completedTests,\n        unprocessedTests,\n        unSubmittedTests,\n        totalTests,\n        adminTotalTests,\n        externalTest,\n        isSuperAdmin: () => isSuperAdmin(),\n        sendEmailToCrew: (tests) => sendResultOnEmail(tests),\n        resetUnprocessedTests: () => fetchUnprocessedTests(),\n        resetUnSubmittedTests: () => fetchUnSubmittedTests(),\n        resetAllTests: () => refreshDataOnSubscribe(),\n        resetTotalTest: () => fetchAllAdminTests(),\n        resetExternalTest: () => fetchExternalTests(),\n        getSiteName: (id) => getSiteName(id),\n        getLabName: (id) => getLabName(id),\n        getLab: (test) => getLab(test),\n        getSiteTests: (id) => getSiteTests(id),\n        getLabTests: (id) => getLabTests(id),\n        getClientTests: (id) => getClientTests(id),\n        admins,\n        newTests,\n        parseResult: (test) => parseResult(test),\n        parseTestResultForPDF: (test) => parseTestResultForPDF(test),\n        getClientName: (id) => getClientName(id),\n        testFilter,\n        setTestFilter: (filter) => setTestFilter(filter),\n        deleteTests: (tests) => deleteTests(tests),\n        showSuccessMessage: (message) => setSuccessMessageText(message),\n        showErrorMessage: (message) => setErrorMessageText(message),\n        getEmployeeID: (id) => getEmployeeByID(id),\n      };\n    }\n  };\n\n  const isSuperAdmin = () => {\n    console.log(\"isSuperAdmin\", user?.isAdmin());\n    if (user?.isAdmin()) {\n      return user?.phone_number === \"+18888888888\" || user?.phone_number === \"+12222222222\";\n    }\n    return false;\n  };\n\n  const getClientTests = (id) => {\n    const clientObj = adminTotalTests.filter((t) => t.clientID === id);\n    return clientObj.length;\n  };\n\n  const getSiteTests = (id) => {\n    const siteObj = adminTotalTests.filter((t) => t.siteID === id);\n    return siteObj.length;\n  };\n  const getLabTests = (id) => {\n    const labObj = adminTotalTests.filter((t) => t.labID === id);\n    return labObj.length;\n  };\n\n  const getSiteName = (id) => {\n    const siteObj = sites.find((site) => site.id === id);\n    return siteObj ? siteObj.name : \"NA\";\n  };\n\n  const getLabName = (id) => {\n    const labObj = labs.find((lab) => lab.id === id);\n    return labObj ? labObj.name : \"NA\";\n  };\n\n  const getLab = async (test) => {\n    let lab = await localApi.getLabByID(connectedID);\n    if (lab && \"logo\" in lab && lab.logo) {\n      const path = await Storage.get(lab.logo);\n      return { ...lab, logoSrc: path };\n    }\n    return lab;\n  };\n\n  const deleteTests = async (tests) => {\n    if (tests.length === 0) return;\n\n    await GQAPI.deleteWrongTest(tests.map((t) => t.id));\n\n    setSuccessMessageText(`${tests.length} test${tests.length === 1 ? \"\" : \"s\"} were deleted!`);\n  };\n\n  const sendResultOnEmail = async (param, slug) => {\n    if (param.length === 0) return;\n    setLoading(true);\n    let ttlEmails = param.length;\n    try {\n      await GQAPI.sendEmailToPendingRelease(param);\n      const params = { ids: param, userID: user?.sub, userName: user?.name, slug };\n      api.addTestLogs(params);\n\n      setLoading(false);\n      setSuccessMessageText(`Email has been successfully sent to ${ttlEmails} Crew Member`);\n    } catch (error) {\n      console.log(\"error:-\", error.message);\n      setLoading(false);\n      setErrorMessageText(\"Fail to send the Email\");\n    }\n  };\n\n  const labListener = () => {\n    const hubListener = Hub.listen(\"datastore\", (hubData) => {\n      const { event } = hubData.payload;\n      if (event === \"ready\") {\n        setUserRoutes(labRoutesNew);\n\n        fetchLabs();\n        setLoading(false);\n        Hub.remove(\"datastore\", hubListener);\n      }\n    });\n  };\n\n  React.useEffect(() => {\n    //user?.isAdmin() && adminListener();\n    user?.isAdmin() && labListener();\n    user?.isLab() && labListener();\n  }, [user]);\n\n  return (\n    <>\n      <div className=\"wrapper\">\n        {showAlert && (\n          <SweetAlert\n            show={showAlert}\n            error\n            title=\"Error\"\n            onConfirm={async () => {\n              await Auth.signOut();\n              window.location.reload();\n            }}\n          >\n            Your account does not have access to the Med Flow portal\n          </SweetAlert>\n        )}\n        {successMessageText && (\n          <SweetAlert\n            show={successMessageText ? true : false}\n            success\n            title=\"Success\"\n            onConfirm={() => setSuccessMessageText(\"\")}\n          >\n            {successMessageText}\n          </SweetAlert>\n        )}\n        {errorMessageText && (\n          <SweetAlert\n            show={errorMessageText ? true : false}\n            error\n            title=\"Error\"\n            onConfirm={() => setErrorMessageText(\"\")}\n          >\n            {errorMessageText}\n          </SweetAlert>\n        )}\n        <LabSidebarNew\n          color={color}\n          image={\"\"}\n          routes={userRoutes}\n          user={user}\n          pendingTests={pendingTests}\n          invalidTests={invalidTests}\n          testFilter={testFilter}\n          setTestFilter={setTestFilter}\n          labID={connectedID}\n        />\n        <div className=\"main-panel\" ref={mainPanel}>\n          <AdminNavbar\n            routes={userRoutes}\n            completedTests={completedTests}\n            pendingTests={pendingTests}\n            role={role || user?.roles[0]}\n            userLabName={userLabName}\n            userSiteName={userSiteName}\n            labID={connectedID}\n            userType={\"L\"}\n          />\n          {!loading ? (\n            <div className=\"content\">\n              <AppContext.Provider value={contextSwitch(user?.roles[0])}>\n                <Switch>{getRoutes(userRoutes)}</Switch>\n                {window.location.pathname === \"/lab/tests/\" + connectedID && user?.isAdmin() && (\n                  // <TableListApiNew labID={connectedID} userType={'L'}  />\n                  <LabDashboard lab={userLab} labID={connectedID} userType={\"L\"} />\n                )}\n              </AppContext.Provider>\n            </div>\n          ) : (\n            <Loader />\n          )}\n          {/* <Footer /> */}\n        </div>\n      </div>\n\n      <IdleModal\n        showIdleModal={showIdleModal}\n        animation={true}\n        handleLogOut={handleLogOut}\n        handleCloseModal={handleCloseModal}\n      />\n    </>\n  );\n}\n\nexport default LabNew;\n","import React, { useState, useRef, useContext } from \"react\";\n\n// react-bootstrap components\nimport { Button, Card, Table, Row, Col, DropdownButton, Dropdown, Modal } from \"react-bootstrap\";\nimport { useEffect, useMemo } from \"react\";\nimport api from \"api\";\nimport \"react-activity/dist/Bounce.css\";\nimport { capitalizeLetter } from \"../utils\";\n\nimport { AppContext } from \"../context/app-context\";\nimport { PAGE_LIMIT } from \"constant\";\nimport QRCode from \"qrcode.react\";\nimport html2canvas from \"html2canvas\";\nimport { useLocation } from \"react-router-dom/cjs/react-router-dom.min\";\n\nconst CrewQRCode = (props) => {\n  const [crew, setCrew] = useState([]);\n  const [filter, setFilter] = useState({});\n\n  const appContext = useContext(AppContext);\n  const downloadRef = useRef();\n  const location = useLocation();\n\n  useEffect(() => {\n    if (location.state && location.state.data) {\n      setCrew(location.state.data);\n    }\n  }, []);\n\n  console.log(\"Historu\", location);\n  const sortCrewData = (list) =>\n    [...list].sort((a, b) => {\n      const testerB = b[\"lastName\"] ?? \"\";\n      const testerA = a[\"lastName\"] ?? \"\";\n      return testerB.toLowerCase() < testerA.toLowerCase() ? 1 : testerA.toLowerCase() < testerB.toLowerCase() ? -1 : 0;\n    });\n\n  const downloadQRCode = async () => {\n    const element = downloadRef.current;\n    await html2canvas(element, { allowTaint: true, useCORS: true, logging: true }).then((canvas) => {\n      const imgData = canvas.toDataURL(\"image/png\");\n      const link = document.createElement(\"a\");\n      if (typeof link.download === \"string\") {\n        link.href = imgData;\n        link.download = \"image.jpg\";\n        document.body.appendChild(link);\n        link.click();\n        document.body.removeChild(link);\n      } else {\n        window.open(imgData);\n      }\n    });\n  };\n\n  return (\n    <div>\n      <Button className=\"headerButton mb-3\" onClick={() => downloadQRCode()}>\n        Download\n      </Button>\n      <div className=\"d-flex align-items-center column-gap-15 row-gap-15 flex-wrap\" ref={downloadRef}>\n        {crew.map((user, index) => {\n          return (\n            <div className=\"scanner-wrapper\" key={index}>\n              <div className=\"mb-2\">\n                <QRCode\n                  className=\"qrCode\"\n                  id=\"qr-gen\"\n                  value={user.phoneNumber.replace(/\\D/g, \"\")}\n                  size={90}\n                  level={\"H\"}\n                  fgColor=\"#000\"\n                  includeMargin={true}\n                />\n              </div>\n              <p className=\"mb-0\">{`${capitalizeLetter(user.firstName)} ${capitalizeLetter(user.lastName)}`}</p>\n            </div>\n          );\n        })}\n      </div>\n    </div>\n  );\n};\n\nexport default CrewQRCode;\n","import React, { useState, useEffect } from \"react\";\nimport { Modal, Button, Table, Row, Col } from \"react-bootstrap\";\nimport { CSVReader } from \"react-papaparse\";\nimport ErrorMessage from \"components/Message/ErrorMessage\"\n\n\nconst ImportTestDoneModal = (props) => {\n  const [error, setError] = useState(\"\");\n  const { handleClose, handleImport,errorMessage } = props;\n  useEffect(()=>{\n    setError(errorMessage);\n  },[errorMessage])\n  const handleOnDrop = (data) => {\n    console.log(\"Data Drop\",data);\n     handleImport(data);\n  }\n  const handleOnError = (err) => {\n    console.log(err);\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\",data);\n  };\n\n  return (\n    <Modal show animation={true} onHide={() => handleClose()} centered size={\"lg\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Import Employee Data\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        <div className=\"form-group-wrapper d-block\">\n        <CSVReader\n        onDrop={handleOnDrop}\n        onError={handleOnError}\n        addRemoveButton\n        config={{\n          header: true,\n          skipEmptyLines: true\n        }}\n        onRemoveFile={handleOnRemoveFile}\n      >\n        <span>Drop CSV file here or click to upload.</span>\n      </CSVReader>\n      <div style={{marginTop:\"10px\"}}>\n        {error && (\n          <ErrorMessage error={error} handleChange={()=>setError('')}/>\n        )}\n        </div>\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer className=\"flex-row-reverse\">\n        <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleClose()}>\n          OK\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ImportTestDoneModal;\n","import React, { useState, useContext, useMemo, useRef, useCallback } from \"react\";\n\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n  DropdownButton,\n  Dropdown,\n  Modal,\n  InputGroup,\n  FormControl,\n} from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport { CSVLink } from \"react-csv\";\nimport { Importer, ImporterField } from \"react-csv-importer\";\nimport { Link } from \"react-router-dom\";\nimport { PDFViewer } from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport FilterSelect from \"components/FilterSelect\";\nimport { useLocation } from \"react-router-dom\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport PGPagination from \"components/Pagination/PGPagination\";\nimport { PAGE_LIMIT, RESULT_COLOR, TOTAL_TEST_HEADER } from \"constant\";\nimport {\n  changeSort,\n  getCrewsName,\n  formatPhoneNumber,\n  formatTest,\n  calculateTdWidth,\n  sortingFilterInLC,\n  sortTestList,\n  formatUTCDate,\n  isValidName,\n  isValidPhoneWithCode,\n  isValidDate,\n  isValidEmail,\n  setPhoneNo,\n  setDate,\n  connectedIDInLocalStorage,\n} from \"utils\";\nimport { AppContext } from \"context/app-context\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport ExportToExcelData from \"components/ExportToExcelData\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport Loader from \"components/Loader/Loader\";\nimport moment from \"moment\";\nimport ImportTestDoneModal from \"components/Modal/ImportTestDoneModal\";\nimport ImportErrorModal from \"components/Modal/ImportErrorModal\";\nimport { debounce } from \"debounce\";\nimport { useInitialRender } from \"components/useInitialRender\";\nimport { CostExplorer } from \"aws-sdk\";\nimport Icon from \"components/Icon\";\nimport { stringConstant } from \"constant\";\nconst siteID = window.location?.pathname?.split(\"/\").pop();\n\nconst TotalTestsApiNew = (props) => {\n  const componentRef = useRef();\n  const [width, setWidth] = useState(0);\n  const [errorMessage, setErrorMessage] = useState(\"\");\n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n  useEffect(() => {\n    setTimeout(() => {\n      setErrorMessage(\"\");\n    }, 4000);\n  }, [errorMessage]);\n\n  console.log(\"TotalTestApiNew:\");\n  const tdWidth = calculateTdWidth(width, 11);\n\n  const importResult = [];\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [tests, setTests] = useState([]);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [labs, setLabs] = useState([]);\n  const [sites, setSites] = useState([]);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [modalShow, setModalShow] = useState(false);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [triggerFilter, setTriggerFilter] = useState();\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [showImportModal, setShowImportModal] = useState(false);\n  const [showResultModal, setShowResultModal] = useState(false);\n  const [openErrModal, setOpenErrModal] = useState(false);\n  const [data, setData] = useState({});\n  const [pageNo, setPageNo] = useState(1);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const { filterDates } = TimeFilter;\n\n  const location = useLocation();\n  const initialRender = useInitialRender();\n  const appContext = useContext(AppContext);\n\n  const searchTerms = [\n    \"First Name\",\n    \"Last Name\",\n    \"Date of Birth\",\n    \"Phone\",\n    \"Email\",\n    \"Show\",\n    `${stringConstant.sequenceNo}`,\n    \"Status\",\n    \"Result\",\n    \"Test Type\",\n    \"isVaccinated\",\n    \"White Glove\",\n    \"Pattern\",\n    \"Capacity\",\n  ];\n\n  const selectedItem = [\n    \"createdAt\",\n    \"firstName\",\n    \"lastName\",\n    \"dob\",\n    \"phoneNumber\",\n    \"email\",\n    \"siteID\",\n    \"sequenceNo\",\n    \"status\",\n    \"result\",\n    \"test_type\",\n    \"isVaccinated\",\n    \"employeeType\",\n    \"whiteGlove\",\n    \"patternTestAnswer\",\n  ];\n\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter, page, sortBy, sortDescending) => {\n      loadTestFromPG(filter, timeFilter, page, sortBy, sortDescending);\n    }, 800),\n    []\n  );\n\n  const displayPdf = async (test) => {\n    handleSaveFilter();\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext?.getSite(test)?.then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n        if (key === \"Lab\") {\n          return obj.labID && appContext.getLabName(obj.labID).toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"Show\") {\n          const siteIds = appContext.sites\n            .filter((s) => s.name.toLowerCase().includes(filters[key].toLowerCase()))\n            .map((s) => s.id);\n          return siteIds.includes(obj.siteID);\n        }\n        if (key === \"ShowID\") {\n          return obj.siteID === filters[key];\n        }\n        if (key === \"Client\") {\n          return (\n            obj.clientID && appContext.getClientName(obj.clientID).toLowerCase().includes(filters[key].toLowerCase())\n          );\n        }\n        if (key === \"result\") {\n          return obj[key] && obj[\"viewedResult\"].toLowerCase().includes(filters[key]);\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n        if (key === \"emailSend\") {\n          return obj.emailSend !== null && obj.emailSend == filters[key];\n        }\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    return models;\n  };\n\n  const handleImportData = async (testData) => {\n    if (testData.length === 0) return;\n    const header = TOTAL_TEST_HEADER.every((c) => Object.keys(testData[0].data).includes(c));\n    if (!header) {\n      setErrorMessage(\"data not matched please check it column\");\n      return;\n    }\n    const arr = [];\n    const arrdata = [];\n    for (let index = 0; index < testData.length; index++) {\n      const { data } = testData[index];\n\n      const test = { ...data };\n      if (test.firstName?.length == 0 || test.phoneNumber?.length == 0) continue;\n      if (!isValidName(test.firstName) || !isValidName(test.lastName)) {\n        arr.push({ message: `First Name or Last Name must be Letters on row ${index + 2}` });\n        continue;\n      }\n      test.phoneNumber = setPhoneNo(test.phoneNumber);\n      if (!isValidPhoneWithCode(test.phoneNumber)) {\n        arr.push({ message: `phone number is not correct ${test.phoneNumber} on row ${index + 2}` });\n        continue;\n      }\n      if (!isValidDate(test?.createdAt)) {\n        arr.push({ message: `Invalid (${test.createdAt}) Date format is (DD/MM/YYYY)  on row ${index + 2}.` });\n        continue;\n      }\n      if (!isValidEmail(test.email)) {\n        arr.push({ message: `Invalid email ${test.email} on row ${index + 2}.` });\n        continue;\n      }\n      test.createdAt = setDate(test.createdAt);\n      arrdata.push(test);\n    }\n    console.log(arr, arrdata);\n    setData({ errData: arr, successData: arrdata });\n    setShowImportModal(false);\n    setOpenErrModal(true);\n  };\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  useEffect(() => {\n    if (\n      appContext.testFilter &&\n      appContext.testFilter.location === \"totaltest\" &&\n      Object.keys(appContext.testFilter.filter).length > 0\n    ) {\n      setFilter(appContext.testFilter.filter);\n      setShowFilter(true);\n    }\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.totaltest.sortBy) {\n      setSortDescending(sortingFilters.totaltest.sortDescending);\n      setSortBy(sortingFilters.totaltest.sortBy);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (initialRender) return;\n    if (appContext.eventObject && appContext.eventObject !== 0) {\n      const eventType = appContext.eventObject.opType;\n      const model = formatTest(appContext.eventObject.element);\n      const newList = [...filteredTests];\n\n      if (eventType === \"INSERT\") {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        if (index !== -1) {\n          newList.splice(index, 1, model);\n        }\n      }\n      const testAfterFilter = filterDates(nestedFilter([...newList], filter), timeFilter);\n      if (filteredTests.length < testAfterFilter.length && eventType === \"INSERT\") {\n        setTotalRecord(totalRecord + 1);\n      }\n      refreshTestList(testAfterFilter);\n    }\n  }, [appContext.eventObject]);\n\n  useEffect(() => {\n    setSites(appContext.sites);\n    setLabs(appContext.labs);\n  }, [appContext.sites, appContext.labs]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"totaltest\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    fetchFromApi({ ...filter }, { ...timeFilter }, 1, sortBy, sortDescending);\n  }, [filter, timeFilter, sortBy, sortDescending]);\n\n  useEffect(() => {}, [appContext.eventObject]);\n\n  useEffect(() => {\n    if (location.state) {\n      if (location.state.term === \"Lab\") setLabs(location.state.models);\n\n      setShowFilter(true);\n\n      let filterTerm = location.state.term;\n      let filterTermName = location.state.name;\n      let dobTerm = location.state.dobTerm || null;\n      let dobTermName = location.state.dob || null;\n      let showTerm = null;\n      let showTermName = null;\n      const filterObj = { ...filter };\n      if (filterTerm === \"Show\") {\n        const obj = appContext.sites.find((c) => c.name === filterTermName);\n        if (obj) {\n          filterTerm = \"ShowID\";\n          filterTermName = obj.id;\n        }\n      }\n      if (location.state.showId) {\n        showTerm = \"ShowID\";\n        showTermName = location.state.showId;\n      }\n\n      if (location.state.positiveTests) {\n        let resultValue = \"positive\";\n        if (filterTerm === \"Client\") {\n          const obj = location.state.models.find((c) => c.name === filterTermName);\n          if (obj && obj.resultType === \"P/F\") resultValue = \"fail\";\n        }\n        Object.assign(filterObj, {\n          result: resultValue,\n        });\n      } else if (location.state.negativeTests) {\n        let resultValue = \"negative\";\n        if (filterTerm === \"Client\") {\n          const obj = location.state.models.find((c) => c.name === filterTermName);\n          if (obj && obj.resultType === \"P/F\") resultValue = \"pass\";\n        }\n        Object.assign(filterObj, {\n          result: resultValue,\n        });\n      }\n      if (filterTermName) Object.assign(filterObj, { [filterTerm]: filterTermName });\n      if (showTermName) Object.assign(filterObj, { [showTerm]: showTermName });\n      if (dobTermName) Object.assign(filterObj, { [dobTerm]: dobTermName });\n      setFilter(filterObj);\n\n      setTriggerFilter(true);\n      setTimeout(() => setShowFilter(false), 1);\n    }\n  }, [location.state]);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      loadTestFromPG(Object.keys(filter).length === 0 ? { id: 1 } : filter, timeFilter, pageNo, sortBy, sortDescending);\n    }\n  }, [pageNo]);\n\n  const loadTestFromPG = async (params, dateFilter, page, orderBy, orderByDirection) => {\n    setLoading(true);\n    try {\n      const filterParam = Object.fromEntries(Object.entries({ ...params }).filter(([key]) => !key.includes(\"dob\")));\n      console.log(\"params\", filterParam);\n      Object.assign(filterParam, { page: page, siteID: siteID || \"E\" });\n\n      if (dateFilter) {\n        const { start, end } = dateFilter;\n        if (start)\n          Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n        if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n      }\n      if (orderBy) {\n        Object.assign(filterParam, { orderBy, orderByDirection });\n      }\n      const pgList = await API.getTestListFromPG(filterParam);\n      setLoading(false);\n      let ttlTests = tests.concat(pgList.rows.filter((f) => f.result !== \"Expired\").map((t) => formatTest(t)));\n      if (pageNo === 1) {\n        setTotalRecord(pgList.total);\n      }\n\n      const DobFilter = Object.fromEntries(Object.entries(params).filter(([key]) => key.includes(\"dob\")));\n      console.log(\"DobFilter\", DobFilter, filter);\n      if (Object.keys(DobFilter).length > 0 && ttlTests) {\n        ttlTests = nestedFilter(ttlTests, DobFilter);\n        setTotalRecord(ttlTests.length);\n      }\n      setTests(ttlTests);\n      refreshTestList(ttlTests);\n    } catch (err) {\n      setLoading(false);\n    }\n  };\n\n  const refreshTestList = (list) => {\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          //appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredTests(list);\n    }\n  };\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filteredTests.length;\n    if (direction === \"next\" && page === totalPages && totalRecord > 0 && currentRecord < totalRecord) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  const handleSaveFilter = (e, tests) => {\n    appContext.setTestFilter({ location: \"totaltests\", filter, timeFilter });\n  };\n\n  const updateTestResult = async (result) => {\n    const updateSelectedTestResult = filteredTests.filter((test) => checkboxes.includes(test.id));\n    const ttlTest = updateSelectedTestResult.length;\n    if (!ttlTest) {\n      return;\n    }\n    setLoading(true);\n    let ttlTestProcess = 0;\n    try {\n      for (let i = 0; i < updateSelectedTestResult.length; i++) {\n        try {\n          await API.updateTestResult(updateSelectedTestResult[i].id, result, appContext.user);\n          ttlTestProcess += 1;\n        } catch (err) {\n          console.log(\"Error\", err.message);\n        }\n      }\n      appContext.showSuccessMessage(`${ttlTestProcess} test${ttlTest === 1 ? \"\" : \"s\"} has been resulted ${result}`);\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n    }\n    setCheckboxes([]);\n  };\n\n  const TableRow = ({ test }) => {\n    return (\n      <tr>\n        <td className=\"ellipsis\" title={formatUTCDate(test.createdAt)}>\n          {formatUTCDate(test.createdAt)}\n        </td>\n        <td className=\"ellipsis\" title={test.firstName}>\n          {test.firstName}\n        </td>\n        <td className=\"ellipsis\" title={test.lastName}>\n          {test.lastName}\n        </td>\n        <td className=\"ellipsis\" title={test.dob}>\n          {test.dob}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => {\n            test.phoneNumber && window.open(`tel:${test.phoneNumber}`);\n          }}\n          title={test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        >\n          {test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{\n            textDecoration: \"underline\",\n            color: \"#A82632\",\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => test?.email && window.open(`mailto:${test.email}`)}\n          title={test?.email}\n        >\n          {test?.email}\n        </td>\n        <td style={{ textAlign: \"center\" }} className=\"ellipsis\">\n          {appContext.getSiteName(test.siteID)}\n        </td>\n\n        <td style={{ textAlign: \"center\" }} className=\"ellipsis\">\n          {test.status}\n        </td>\n        <td style={{ textAlign: \"center\" }}>\n          <span\n            onMouseOver={(e) => {\n              e.target.style.cursor = \"pointer\";\n              e.target.style.textDecoration = \"none\";\n            }}\n            onMouseLeave={(e) => {\n              e.target.style.textDecoration = \"underline\";\n            }}\n            onClick={() => displayPdf(test)}\n            style={{\n              color: RESULT_COLOR[test.result?.toLowerCase()],\n              textDecoration: \"underline\",\n            }}\n          >\n            {appContext.parseResult(test)}\n          </span>\n        </td>\n        <td style={{ textAlign: \"center\" }}>{test.sequenceNo}</td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          {test.test_type || \"-\"}\n        </td>\n        <td style={{ textAlign: \"center\" }}>\n          <Link\n            to={{\n              pathname: \"/site/test/\" + test.siteID + \"/\" + test.id,\n              state: { type: \"siteTotalTests\", test: test },\n            }}\n            onClick={(e) => handleSaveFilter(e, test)}\n            onContextMenu={(e) => handleSaveFilter(e, test)}\n          >\n            View\n          </Link>\n        </td>\n      </tr>\n    );\n  };\n\n  return showPdf ? (\n    <PDFLayout setShowPdf={setShowPdf} testPdf={testPdf} testsLab={testsLab} />\n  ) : (\n    <>\n      {showImportModal && (\n        <ImportTestDoneModal\n          handleClose={() => setShowImportModal(false)}\n          handleImport={handleImportData}\n          errorMessage={errorMessage}\n        />\n      )}\n      {openErrModal && <ImportErrorModal title=\"Total Test\" handleClose={() => setOpenErrModal(false)} data={data} />}\n      <Container fluid style={{ flex: 1 }}>\n        <Row>\n          <Col md=\"12\">\n            <Card className=\"striped-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Total Tests ({totalRecord})\n                </Card.Title>\n                <div className=\"buttonHeader\">\n                  {/* <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                    Filter\n                  </Button> */}\n                  <Icon\n                    handleClick={() => setShowFilter(!showFilter)}\n                    title={\"Filter\"}\n                    label={\"Filter\"}\n                    iconType={\"filter\"}\n                  />\n                  {/* Date Range */}\n                  <FilterSelect setTimeFilter={setTimeFilter} />\n                  {filteredTests.length > 0 && (\n                    <>\n                      <ExportToExcelData\n                        items={filteredTests}\n                        selectedItem={selectedItem}\n                        appContext={appContext}\n                        filter={{ ...filter, siteID: siteID || \"E\" }}\n                        timeFilter={timeFilter}\n                        title=\"Total Tests\"\n                        sortBy={sortBy}\n                        setLoading={setLoading}\n                      />\n                      {/*  <TestPDFLayout\n                        tests={filteredTests}\n                        selectedItem={selectedItem}\n                        filter={filter}\n                        timeFilter={timeFilter}\n                        title=\"Total Tests\"\n                        appContext={appContext}\n                        sortBy={sortBy}\n                      /> */}\n                    </>\n                  )}\n                  {/* <Button className=\"headerButton\" onClick={() => setShowImportModal(true)}>\n                    Import Tests\n                  </Button> */}\n                  <Icon\n                    handleClick={() => setShowImportModal(true)}\n                    title={\"Import Tests\"}\n                    label={\"Import Tests\"}\n                    iconType={\"importTests\"}\n                  />\n                </div>\n                {showFilter && (\n                  <Filter\n                    filterTerms={searchTerms}\n                    setFilter={setFilter}\n                    filter={filter}\n                    triggerFilter={triggerFilter}\n                    setTriggerFilter={setTriggerFilter}\n                  />\n                )}\n                <PGPagination\n                  timeFilter={timeFilter}\n                  currentPage={currentPage}\n                  handleChangePage={handleChangePage}\n                  totalPages={totalPages}\n                  totalRecord={totalRecord}\n                  currentRecord={filteredTests.length}\n                  showSelectedRecord\n                  totalSelected={checkboxes.length}\n                />\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable\">\n                  <Table className=\"table-hover table-striped\">\n                    <thead ref={componentRef}>\n                      <tr>\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"createdAt\"\n                          title=\"Date Tested\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"firstName\"\n                          title=\"First Name\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"lastName\"\n                          title=\"Last Name\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"dob\"\n                          title=\"DoB\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"phoneNumber\"\n                          title=\"Phone\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"email\"\n                          title=\"Email\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"siteID\"\n                          title=\"Show\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"status\"\n                          title=\"Status\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"result\"\n                          title=\"Result\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"sequenceNo\"\n                          title=\"Sequence\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"test_type\"\n                          title=\"Test Type\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n\n                        <th\n                          className=\"border-0 centered text-grey\"\n                          style={{ fontWeight: \"bold\", minWidth: tdWidth, width: tdWidth, maxWidth: tdWidth }}\n                        >\n                          Actions\n                        </th>\n                      </tr>\n                    </thead>\n                    <tbody>\n                      {testsToMap &&\n                        testsToMap.map((test) => {\n                          return <TableRow key={test.id} test={test} />;\n                        })}\n                    </tbody>\n                  </Table>\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n        </Row>\n      </Container>\n      {loading && <Loader />}\n    </>\n  );\n};\n\nexport default TotalTestsApiNew;\n","import React, { useState, useContext, useMemo, useRef, useCallback } from \"react\";\n\n// react-bootstrap components\nimport {\n  Badge,\n  Button,\n  Card,\n  Navbar,\n  Nav,\n  Table,\n  Container,\n  Row,\n  Col,\n  DropdownButton,\n  Dropdown,\n  Modal,\n  Form,\n} from \"react-bootstrap\";\nimport { useEffect } from \"react\";\nimport API from \"api\";\nimport { CSVLink } from \"react-csv\";\nimport { Importer, ImporterField } from \"react-csv-importer\";\nimport SortIcon from \"components/SortIcon\";\nimport { Link } from \"react-router-dom\";\nimport { PDFViewer } from \"@react-pdf/renderer\";\nimport PDF from \"components/PDF\";\nimport Filter from \"components/Filter\";\nimport TimeFilter from \"components/TimeFilter\";\nimport FilterSelect from \"components/FilterSelect\";\nimport { useLocation } from \"react-router-dom\";\nimport HeaderItem from \"components/Table/HeaderItem\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport { PAGE_LIMIT } from \"constant\";\nimport GQAPI from \"./gqApi\";\nimport api from \"api\";\nimport {\n  changeSort,\n  getCrewsName,\n  formatPhoneNumber,\n  formatTest,\n  sortingFilterInLC,\n  calculateTdWidth,\n  formatUTCDate,\n  parseBooleanValue,\n  connectedIDInLocalStorage,\n} from \"utils\";\nimport PDFLayout from \"components/PDF/PDFLayout\";\nimport { AppContext } from \"context/app-context\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport TestPDFLayout from \"components/PDF/TestPDFLayout\";\nimport QuarantineModal from \"components/Modal/QuarantineModal\";\nimport Loader from \"components/Loader/Loader\";\nimport moment from \"moment\";\nimport { debounce } from \"debounce\";\nimport graphQLApi from \"graphQLApi\";\nimport Icon from \"components/Icon\";\nimport { stringConstant } from \"constant\";\n\nconst PositiveTestsApiNew = () => {\n  const componentRef = useRef();\n  const [width, setWidth] = useState(0);\n  const siteID = window.location?.pathname?.split(\"/\").pop();\n\n  useEffect(() => {\n    if (componentRef && componentRef.current) {\n      setWidth(componentRef.current.offsetWidth);\n    }\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef && componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  const tdWidth = calculateTdWidth(width - 130, 10);\n\n  const importResult = [];\n  const [totalRecord, setTotalRecord] = useState(0);\n  const [tests, setTests] = useState([]);\n  const [filteredTests, setFilteredTests] = useState([]);\n  const [labs, setLabs] = useState([]);\n  const [sites, setSites] = useState([]);\n  const [moreInfo, setMoreInfo] = useState({});\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [testsLab, setTestsLab] = useState();\n  const [testPdf, setTestPdf] = useState();\n  const [showPdf, setShowPdf] = useState(false);\n  const [timeFilter, setTimeFilter] = useState({});\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [triggerFilter, setTriggerFilter] = useState();\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [openQuarantined, setOpenQuaratined] = useState(false);\n  const { filterDates } = TimeFilter;\n  const [selectedTest, setSelectedTest] = useState(\"\");\n  const [pageNo, setPageNo] = useState(1);\n  const [loading, setLoading] = useState(false);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const location = useLocation();\n\n  const appContext = useContext(AppContext);\n\n  const searchTerms = [\n    \"First Name\",\n    \"Last Name\",\n    \"Date of Birth\",\n    \"Phone\",\n    \"Email\",\n    \"Show\",\n    \"Status\",\n    \"Result\",\n    `${stringConstant.sequenceNo}`,\n    \"Test Type\",\n    \"False Positive\",\n    \"isVaccinated\",\n    \"White Glove\",\n    \"Pattern\",\n    \"Capacity\",\n  ];\n\n  const selectedItem = [\n    \"batch\",\n    \"firstName\",\n    \"lastName\",\n    \"dob\",\n    \"phoneNumber\",\n    \"email\",\n    \"siteID\",\n    \"status\",\n    \"result\",\n    \"sequenceNo\",\n    \"test_type\",\n    \"isFalsePositive\",\n  ];\n\n  //   useEffect(() => {\n  //     labs.length !== 0 && sites.length !== 0 && setTests(appContext.completedTests);\n  //   }, [sites, labs]);\n\n  const findPositiveTests = (tests) => {\n    return tests.filter((test) => test.result?.toLowerCase() === \"positive\" && test.status === \"Processed\");\n  };\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n        if (key === \"phoneNumber\") {\n          return obj[key] && obj[key].replace(/\\D/g, \"\").includes(filters[key].replace(/\\D/g, \"\"));\n        }\n        if (key === \"sequenceNo\") {\n          return obj[key] && obj[\"sequenceNo\"].toString().includes(filters[key]);\n        }\n        if (key === \"Show\") {\n          return obj.siteID && appContext.getSiteName(obj.siteID).toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"ShowID\") {\n          return obj.siteID === filters[key];\n        }\n        if (key === \"isFalsePositive\") {\n          return parseBooleanValue(obj[key]).toLowerCase().includes(filters[key]?.toLowerCase());\n        }\n\n        if (key === \"dob\") {\n          return obj[key] && obj[key] === filters[key];\n        }\n\n        if (key === \"test_type\" && filters[key] && filters[key].length > 0) {\n          return obj[key] && filters[key].indexOf(obj[key]) !== -1;\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n    return models;\n  };\n\n  const displayPdf = async (test) => {\n    handleSaveFilter();\n    const empID = await appContext.getEmployeeID(test.employeeID);\n    const t = test;\n    t.empID = empID;\n    appContext.getSite(test).then(async (resp) => {\n      setTestsLab(resp);\n      setShowPdf(true);\n    });\n    setTestPdf(formatTest(test));\n  };\n\n  const flipSort = (by) => {\n    setSortBy(by);\n    setSortDescending(sortBy === by ? !sortDescending : true);\n  };\n\n  const testsToMap = useMemo(() => {\n    const list = filteredTests ? [...filteredTests] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT || currentPage > ttlPages) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredTests, currentPage]);\n\n  useEffect(() => {\n    const savedFilters = appContext.testFilter;\n    if (savedFilters && savedFilters.location === \"positivetest\") {\n      if (Object.keys(savedFilters.filter).length > 0) {\n        setFilter(savedFilters.filter);\n        setShowFilter(true);\n      }\n    }\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.positivetest.sortBy) {\n      setSortDescending(sortingFilters.positivetest.sortDescending);\n      setSortBy(sortingFilters.positivetest.sortBy);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (appContext.eventObject && appContext.eventObject !== 0) {\n      const eventType = appContext.eventObject.opType;\n      const model = formatTest(appContext.eventObject.element);\n\n      if (model.status !== \"Processed\" || model.result.toLowerCase() !== \"positive\") return;\n      const newList = [...filteredTests];\n\n      if (eventType === \"INSERT\") {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\") {\n        const index = newList.findIndex((t) => t.id === model.id);\n        if (index !== -1) {\n          newList.splice(index, 1, model);\n        } else {\n          newList.unshift(model);\n        }\n      }\n      const testAfterFilter = filterDates(nestedFilter([...newList], filter), timeFilter);\n      if (filteredTests.length < testAfterFilter.length) {\n        setTotalRecord(totalRecord + 1);\n      }\n      refreshTestList(testAfterFilter);\n    }\n  }, [appContext.eventObject]);\n\n  useEffect(() => {\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"positivetest\"] = { filter, timeFilter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n    if (filteredTests.length === 0) return;\n    changeSort(\n      sortBy,\n      sortDescending,\n      filteredTests,\n      setFilteredTests,\n      appContext.getSiteName,\n      //appContext.getLabName,\n      appContext.getClientName,\n      appContext.parseResult\n    );\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    setSites(appContext.sites);\n    setLabs(appContext.labs);\n  }, [appContext.sites, appContext.labs]);\n\n  // useEffect(() => {\n  //   fetchFromApi({ ...filter }, { ...timeFilter }, 1);\n  // }, [filter, timeFilter]);\n\n  useEffect(() => {\n    fetchFromApi({ ...filter }, { ...timeFilter }, 1, sortBy, sortDescending);\n  }, [filter, timeFilter, sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (location.state) {\n      setShowFilter(true);\n      const filterObj = { ...filter };\n      if (location.state.term) Object.assign(filterObj, { [location.state.term]: location.state.name });\n      if (location.state.showId) Object.assign(filterObj, { [\"ShowID\"]: location.state.showId });\n\n      setFilter(filterObj);\n      setTriggerFilter(true);\n      setTimeout(() => setShowFilter(), 1);\n    }\n  }, [location.state]);\n\n  useEffect(() => {\n    if (pageNo > 1) {\n      loadTestFromPG(Object.keys(filter).length === 0 ? { id: 1 } : filter, timeFilter, pageNo);\n    }\n  }, [pageNo]);\n\n  // const fetchFromApi = useCallback(\n  //   debounce((filter, timeFilter, page) => {\n  //     loadTestFromPG(filter, timeFilter, page);\n  //   }, 800),\n  //   []\n  // );\n  const fetchFromApi = useCallback(\n    debounce((filter, timeFilter, page, sortBy, sortDescending) => {\n      loadTestFromPG(filter, timeFilter, page, sortBy, sortDescending);\n    }, 800),\n    []\n  );\n\n  const loadTestFromPG = async (params, dateFilter, page) => {\n    setLoading(true);\n    const filterParam = params;\n    Object.assign(filterParam, {\n      limit: 1000,\n      page: pageNo,\n      status: \"Processed\",\n      result: \"Positive\",\n      siteID: siteID || \"E\",\n    });\n\n    if (dateFilter) {\n      const { start, end } = dateFilter;\n      if (start)\n        Object.assign(filterParam, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n      if (end) Object.assign(filterParam, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n    }\n    const pgList = await API.getTestListFromPG(filterParam);\n    setLoading(false);\n    const ttlTests = tests.concat(pgList.rows.map((t) => formatTest(t)));\n    if (pageNo === 1) {\n      setTotalRecord(pgList.total);\n    }\n    setTests(ttlTests);\n    refreshTestList(ttlTests);\n  };\n\n  const refreshTestList = (list) => {\n    if (sortBy) {\n      setFilteredTests(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredTests(list);\n    }\n  };\n\n  const handleCheckboxChange = (e, test) => {\n    const filteredList = checkboxes.filter((c) => c !== test.id);\n    if (e.target.checked) {\n      filteredList.push(test.id);\n    }\n\n    setCheckboxes(filteredList);\n    setSelectedTest(test);\n  };\n\n  const handleChangePage = (page, direction) => {\n    setCurrentPage(page);\n    const currentRecord = filteredTests.length;\n    if (direction === \"next\" && page === totalPages && totalRecord > 0 && currentRecord < totalRecord) {\n      setPageNo(pageNo + 1);\n    }\n  };\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: \"positivetest\", filter, timeFilter });\n  };\n\n  const TableRow = ({ test }) => {\n    return (\n      <tr>\n        <td className=\"ellipsis\" style={{ textAlign: \"left\" }}>\n          {/* <Form.Check>\n            <Form.Check.Input\n              disabled={test.quarantinedStart}\n              type=\"checkbox\"\n              value={selectedTest.id}\n              checked={selectedTest.id === test.id}\n              onChange={(e) => (e.target.checked ? setSelectedTest(test) : setSelectedTest(\"\"))}\n            ></Form.Check.Input>\n          </Form.Check> */}\n          <Form.Check className=\"me-2\">\n            <Form.Check.Input\n              type=\"checkbox\"\n              value={test.id}\n              checked={checkboxes.indexOf(test.id) !== -1}\n              onChange={(e) => handleCheckboxChange(e, test)}\n            ></Form.Check.Input>\n          </Form.Check>\n        </td>\n        <td className=\"table-column ellipsis\" title={formatUTCDate(test.createdAt)}>\n          {formatUTCDate(test.createdAt)}\n        </td>\n        <td className=\"table-column ellipsis\" title={test.firstName}>\n          {test.firstName}\n        </td>\n        <td className=\"table-column ellipsis\" title={test.lastName}>\n          {test.lastName}\n        </td>\n        <td className=\"table-column ellipsis\" title={test.dob}>\n          {test.dob}\n        </td>\n\n        <td\n          className=\"table-column ellipsis\"\n          style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => {\n            test.phoneNumber && window.open(`tel:${test.phoneNumber}`);\n          }}\n          title={test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        >\n          {test.phoneNumber && formatPhoneNumber(test.phoneNumber)}\n        </td>\n        <td\n          className=\"table-column ellipsis\"\n          style={{\n            textDecoration: \"underline\",\n            color: \"#A82632\",\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => test?.email && window.open(`mailto:${test.email}`)}\n          title={test?.email}\n        >\n          {test?.email}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          {appContext.getSiteName(test.siteID)}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          {test.status}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          <span\n            onMouseOver={(e) => {\n              e.target.style.cursor = \"pointer\";\n              e.target.style.textDecoration = \"none\";\n            }}\n            onMouseLeave={(e) => {\n              e.target.style.textDecoration = \"underline\";\n            }}\n            onClick={() => displayPdf(test)}\n            style={{\n              color:\n                test.result?.toLowerCase() === \"negative\" || test.result?.toLowerCase() === \"pass\" ? \"green\" : \"red\",\n              textDecoration: \"underline\",\n            }}\n          >\n            {appContext.parseResult(test)}\n          </span>\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          {parseBooleanValue(test.isFalsePositive)}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }} title={test.sequenceNo}>\n          {test.sequenceNo}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          {test.test_type || \"-\"}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          <Link\n            style={{ color: \"#42cef5\" }}\n            to={{\n              pathname: \"/site/test/\" + test.siteID + \"/\" + test.id,\n              state: { type: \"siteTotalTests\", test: test },\n            }}\n            onClick={handleSaveFilter}\n          >\n            View\n          </Link>\n        </td>\n      </tr>\n    );\n  };\n\n  // const handleSaveQuarantine = async (obj) => {\n  //   try {\n  //     await API.updateQuarantineData(selectedTest.id, obj.startDate, obj.endDate);\n  //     appContext.showSuccessMessage(`Sequence ${selectedTest.sequenceNo} enabled quarantine successfully`);\n  //     window.location.reload();\n  //   } catch (err) {\n  //     appContext.showErrorMessage(err.message);\n  //   }\n  // };\n\n  const handleSaveQuarantine = async (obj) => {\n    try {\n      const model = await api.getRecordById(selectedTest.id, \"test\");\n\n      const params = [\n        {\n          id: selectedTest.id,\n          quarantinedStart: obj.startDate,\n          quarantinedEnd: obj.endDate,\n          _version: model[0]?._version,\n        },\n      ];\n      setTimeout(async () => {\n        await GQAPI.releaseTest(params);\n      }, 500);\n\n      appContext.showSuccessMessage(`Sequence ${selectedTest.sequenceNo} enabled quarantine successfully`);\n      // window.location.reload();\n    } catch (err) {\n      appContext.showErrorMessage(err.message);\n    }\n\n    setTimeout(async () => {\n      await API.updateQuarantineData(selectedTest.id, obj.startDate, obj.endDate);\n    }, 500);\n  };\n\n  return showPdf ? (\n    <PDFLayout setShowPdf={setShowPdf} testPdf={testPdf} testsLab={testsLab} />\n  ) : (\n    <>\n      <Container fluid style={{ flex: 1 }}>\n        <Row>\n          <Col md=\"12\">\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  Positive Tests ({filteredTests.length})\n                </Card.Title>\n                <div className=\"buttonHeader\">\n                  {/* <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                    Filter\n                  </Button> */}\n                  <Icon\n                    handleClick={() => setShowFilter(!showFilter)}\n                    title={\"Filter\"}\n                    label={\"Filter\"}\n                    iconType={\"filter\"}\n                  />\n                  {/* Date Range */}\n                  <FilterSelect setTimeFilter={setTimeFilter} />\n                  {/* <Icon\n                        handleClick={async () => {\n                          if (filteredTests && filteredTests.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      /> */}\n                  {showFilter && filter[0] != \"\" && (\n                    <>\n                      <ExportToExcel\n                        items={filteredTests}\n                        selectedItem={selectedItem}\n                        appContext={appContext}\n                        //filter={filter}\n                        filter={{ ...filter, result: \"Positive\", siteID: siteID }}\n                        timeFilter={timeFilter}\n                        title=\"Positive Tests\"\n                        sortBy={sortBy}\n                      />\n                      <TestPDFLayout\n                        tests={filteredTests}\n                        selectedItem={selectedItem}\n                        filter={filter}\n                        //filter={{ ...filter, result: \"Positive\", siteID: siteID , test_type:[\"PCR\"] }}\n                        timeFilter={timeFilter}\n                        title=\"Positive Tests\"\n                        appContext={appContext}\n                        sortBy={sortBy}\n                      />\n                    </>\n                  )}\n                  <Icon\n                    handleClick={() => setOpenQuaratined(true)}\n                    title={\"Enable Quarantined\"}\n                    label={\"Enable Quarantined\"}\n                    iconType={\"qr_Icon\"}\n                  />\n\n                  {/* <Button\n                    className=\"headerButton\"\n                    disabled={selectedTest ? false : true}\n                    onClick={() => setOpenQuaratined(true)}\n                  >\n                    Enable Quarantined\n                  </Button> */}\n                </div>\n                {showFilter && (\n                  <Filter\n                    filterTerms={searchTerms}\n                    setFilter={setFilter}\n                    filter={filter}\n                    triggerFilter={triggerFilter}\n                    setTriggerFilter={setTriggerFilter}\n                  />\n                )}\n                <MFPagination\n                  timeFilter={timeFilter}\n                  currentPage={currentPage}\n                  handleChangePage={handleChangePage}\n                  totalPages={totalPages}\n                  showSelectedRecord\n                  totalSelected={checkboxes.length}\n                />\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable\">\n                  <Table responsive className=\"table-hover table-striped\">\n                    <thead ref={componentRef}>\n                      <tr>\n                        <th></th>\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"createdAt\"\n                          title=\"Date Tested\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"firstName\"\n                          title=\"First Name\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"lastName\"\n                          title=\"Last Name\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"dob\"\n                          title=\"DoB\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"phoneNumber\"\n                          title=\"Phone\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"email\"\n                          title=\"Email\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"siteID\"\n                          title=\"Show\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"status\"\n                          title=\"Status\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"result\"\n                          title=\"Result\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"isFalsePositive\"\n                          title=\"False Positive\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"sequenceNo\"\n                          title=\"Sequence\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n\n                        <HeaderItem\n                          width={tdWidth}\n                          ItemKey=\"test_type\"\n                          title=\"Test Type\"\n                          flipSort={flipSort}\n                          sortBy={sortBy}\n                          sortDescending={sortDescending}\n                          aligned=\"centered\"\n                        />\n                        <th\n                          className=\"border-0 centered text-grey\"\n                          style={{ fontWeight: \"bold\", width: \"80px\", minWidth: \"80px\", maxWidth: \"80px\" }}\n                        >\n                          Actions\n                        </th>\n                      </tr>\n                    </thead>\n                    <tbody>\n                      {testsToMap &&\n                        testsToMap.map((test) => {\n                          return <TableRow key={test.id} test={test} />;\n                        })}\n                    </tbody>\n                  </Table>\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n          {openQuarantined && (\n            <QuarantineModal\n              test={selectedTest}\n              handleSave={handleSaveQuarantine}\n              handleClose={() => setOpenQuaratined(false)}\n            />\n          )}\n        </Row>\n      </Container>\n      {loading && <Loader />}\n    </>\n  );\n};\n\nexport default PositiveTestsApiNew;\n","import React from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { formatQuaratineDate } from \"../../utils\";\nimport moment from \"moment\";\nimport { EXPECTED_QUARANTINE_DAYS } from \"constant\";\n\nconst QuarantineDetailsModal = (props) => {\n  const { test, handleClose } = props;\n\n  const getQuarantineDays = (test) => {\n    const startDate = moment(test.quarantinedStart);\n    const currentDate = moment();\n    return currentDate.diff(startDate, \"days\");\n  };\n\n  return (\n    <>\n      <Modal\n        show\n        animation={true}\n        onHide={() => {\n          handleClose();\n        }}\n        style={{ paddingLeft: \"0\" }}\n        centered\n        size=\"lg\"\n      >\n        <Modal.Header closeButton>\n          <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n            Quarantine Details\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body\n          style={{\n            paddingTop: 0,\n          }}\n        >\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Start Date: </label>\n            <input\n              className=\"modalInput\"\n              type=\"date\"\n              value={formatQuaratineDate(test?.quarantinedStart)}\n              placeholder=\"Start Date\"\n              style={{ width: \"100%\", marginBottom: \"10px\" }}\n              disabled\n            />\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Expected End Date: </label>\n            <input\n              className=\"modalInput\"\n              type=\"Date\"\n              value={moment(test.quarantinedStart).add(EXPECTED_QUARANTINE_DAYS, \"days\").format(\"YYYY-MM-DD\")}\n              placeholder=\"End Date\"\n              style={{ width: \"100%\", marginBottom: \"10px\" }}\n              disabled\n            />\n          </div>\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Days in Quarantine:</label>\n            <input\n              className=\"modalInput\"\n              type=\"number\"\n              value={getQuarantineDays(test)}\n              style={{ width: \"100%\", marginBottom: \"10px\" }}\n              disabled\n            />\n          </div>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button\n            style={{ marginBottom: 10 }}\n            variant=\"secondary\"\n            className=\"modalButtons\"\n            onClick={() => {\n              handleClose();\n            }}\n          >\n            Close\n          </Button>\n        </Modal.Footer>\n      </Modal>\n    </>\n  );\n};\n\nexport default QuarantineDetailsModal;\n","import React, { useState, useContext, useRef } from \"react\";\n\n// react-bootstrap components\nimport { Button, Card, Table, Row, Col, Form } from \"react-bootstrap\";\nimport { useEffect, useMemo } from \"react\";\nimport SortIcon from \"../components/SortIcon\";\nimport \"react-activity/dist/Bounce.css\";\nimport Filter from \"../components/Filter\";\nimport {\n  formatPhoneNumber,\n  capitalizeLetter,\n  sortingFilterInLC,\n  calculateTdWidth,\n  formatDateOfBirthDOB,\n  formatTest,\n  sortTestList,\n  connectedIDInLocalStorage,\n} from \"../utils\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport { AppContext } from \"../context/app-context\";\nimport { PAGE_LIMIT } from \"constant\";\nimport moment from \"moment\";\nimport ExportToExcel from \"components/ExportToExcel\";\nimport ConfirmationModal from \"../components/Modal/ConfirmationModal\";\nimport API from \"api\";\nimport { EXPECTED_QUARANTINE_DAYS } from \"constant\";\nimport QuarantineDetailsModal from \"components/Modal/QuarantineDetailsModal\";\nimport Loader from \"components/Loader/Loader\";\nimport Icon from \"components/Icon\";\n\nconst QuarantineNew = (props) => {\n  const componentRef = useRef();\n  const [width, setWidth] = useState(0);\n  const connectedID =  connectedIDInLocalStorage.get();\n  const siteID = connectedID && connectedID !== 'undefined' ? connectedID : window.location?.pathname?.split(\"/\").pop();\n\n  \n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n\n  useEffect(() => {\n    handleResize();\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n  const tdWidth = calculateTdWidth(width - 45, 10);\n\n  const [crew, setCrew] = useState([]);\n  const [filteredCrew, setFilteredCrew] = useState([]);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [loading, setLoading] = useState(false);\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [openConfirmModal, setOpenConfirmModal] = useState(false);\n  const [openDetailsQuarantine, setOpenDetailsQuarantine] = useState(false);\n  const [selectedQuarantine, setSelectedQuarantine] = useState(\"\");\n  const [tests, setTests] = useState([]);\n  const [totalRecord, setTotalRecord] = useState(0);\n\n  const searchTerms = [\"First Name\", \"Last Name\", \"Date of Birth\", \"Email\", \"Phone\", \"Quarantined\", \"Show\"];\n\n  const appContext = useContext(AppContext);\n\n  const sortCrew = () => {\n    setFilteredCrew(\n      sortDescending\n        ? [...crew].sort((a, b) => (a[sortBy] < b[sortBy] ? 1 : b[sortBy] < a[sortBy] ? -1 : 0))\n        : [...crew].sort((a, b) => (b[sortBy] < a[sortBy] ? 1 : a[sortBy] < b[sortBy] ? -1 : 0))\n    );\n  };\n\n  const SetSortIcon = ({ sortName }) => {\n    return (\n      <SortIcon\n        sortName={sortName}\n        sortBy={sortBy}\n        setSortBy={setSortBy}\n        sortDescending={sortDescending}\n        setSortDescending={setSortDescending}\n      />\n    );\n  };\n\n  const exportTests = useMemo(() => {\n    return filteredCrew.map((test) => {\n      return {\n        firstName: test.firstName,\n        lastName: test.lastName,\n        email: test.email,\n        phoneNumber: formatPhoneNumber(test.phoneNumber),\n        site_name: test.site_name,\n        resultDates: test.resultDate\n          ? moment(test.resultDate).format(\"ddd MMM D YYYY\")\n          : moment(test.resultDate).format(\"ddd MMM D YYYY\"),\n        quarantinedStart: test.quarantinedStart,\n        isQuarantined: test.isQuarantined,\n        daysCount: test.daysCount,\n        hippaConsent: true,\n      };\n    });\n  }, [filteredCrew]);\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filter).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (key === \"First Name\") {\n          return obj.firstName && obj.firstName.toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"Last Name\") {\n          return obj.lastName && obj.lastName.toLowerCase().includes(filters[key].toLowerCase());\n        }\n        if (key === \"phoneNumber\") {\n          return obj.phoneNumber && obj.phoneNumber.replace(/\\D/g, \"\").includes(filters[key].toLowerCase());\n        }\n\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n\n    return models;\n  };\n\n  const handleChangePage = (page) => setCurrentPage(page);\n\n  const formatQuarantine = (test) => {\n    let expectedEndDate = moment(test.quarantinedStart).add(EXPECTED_QUARANTINE_DAYS, \"days\");\n    let daysCount = \"-\";\n\n    if (test.quarantinedEnd) {\n      expectedEndDate = moment(test.quarantinedEnd);\n    }\n\n    if (test.quarantinedEnd) {\n      daysCount = moment(test.quarantinedEnd).diff(moment(test.quarantinedStart), \"days\");\n    } else {\n      daysCount = moment().diff(moment(test.quarantinedStart), \"days\");\n    }\n\n    return {\n      ...test,\n      daysCount: daysCount,\n      expectedEndDate: expectedEndDate.format(\"ddd MMM D YYYY\"),\n      isQuarantined: !test.quarantinedEnd ? \"X\" : \"-\",\n    };\n  };\n\n  const loadTestFromPG = async (params, page) => {\n    setLoading(true);\n    const filterParam = params;\n    Object.assign(filterParam, {\n      limit: 1000,\n      page: page,\n      quarantine: \"Yes\",\n      siteID: siteID || \"E\",\n    });\n\n    const pgList = await API.getTestListFromPG(filterParam);\n    setLoading(false);\n    const ttlTests = tests.concat(pgList.rows.map((t) => formatQuarantine(formatTest(t))));\n    if (page === 1) {\n      setTotalRecord(pgList.total);\n    }\n    setTests(ttlTests);\n    refreshTestList(ttlTests);\n  };\n\n  useEffect(() => {\n    if (appContext.testFilter && appContext.testFilter.location === \"crewlisting\") {\n      setFilter(appContext.testFilter.filter);\n      setShowFilter(true);\n    }\n    loadPrevSorting();\n    loadTestFromPG(Object.keys(filter).length === 0 ? { id: 1 } : filter, 1);\n  }, []);\n\n  const refreshTestList = (list) => {\n    if (sortBy) {\n      setFilteredCrew(\n        sortTestList(\n          sortBy,\n          sortDescending,\n          list,\n          appContext.getSiteName,\n          appContext.getLabName,\n          appContext.getClientName,\n          appContext.parseResult\n        )\n      );\n    } else {\n      setFilteredCrew(list);\n    }\n  };\n\n  useEffect(() => {\n    crew.length > 0 && sortCrew();\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"quarantine\"] = { filter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (crew.length > 0) setFilteredCrew(nestedFilter(crew, filter));\n  }, [filter]);\n\n  const loadPrevSorting = () => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.quarantine.sortBy) {\n      setSortDescending(sortingFilters.quarantine.sortDescending);\n      setSortBy(sortingFilters.quarantine.sortBy);\n    }\n  };\n\n  const crewToMap = useMemo(() => {\n    const list = filteredCrew ? [...filteredCrew] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredCrew, currentPage]);\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: \"crewlisting\", filter });\n  };\n\n  const handleCheckboxChange = (e, id) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? filteredCrew.map((t) => t.testId) : []);\n\n  const handleEndQuarantine = async (isConfirm) => {\n    setOpenConfirmModal(false);\n    if (!isConfirm) return;\n    setLoading(true);\n    try {\n      await API.UpdateEndQuarantine(checkboxes);\n      appContext.showSuccessMessage(\"Quarantine End Successfully\");\n      appContext.resetHSTests();\n    } catch (err) {\n      appContext.showErrorMessage(err.message);\n    }\n    setLoading(false);\n  };\n\n  const handleOpenConfirmation = () => checkboxes.length > 0 && setOpenConfirmModal(true);\n\n  const TableRow = ({ user }) => {\n    return (\n      <tr key={user.username}>\n        <td className=\"ellipsis\" style={{ textAlign: \"left\", width: \"45px\", maxWidth: \"45px\" }}>\n          <Form.Check>\n            <Form.Check.Input\n              type=\"checkbox\"\n              value={user.testId}\n              checked={checkboxes.indexOf(user.testId) !== -1}\n              onChange={(e) => handleCheckboxChange(e, user.testId)}\n            ></Form.Check.Input>\n          </Form.Check>\n        </td>\n        <td className=\"table-column ellipsis\">{capitalizeLetter(user.firstName)}</td>\n        <td className=\"table-column ellipsis\">{capitalizeLetter(user.lastName)}</td>\n        <td className=\"ellipsis\" title={user.dob}>\n          {user.dob}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{\n            textDecoration: \"underline\",\n            color: \"#A82632\",\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => user?.email && window.open(`mailto:${user.email}`)}\n        >\n          {user.email}\n        </td>\n        <td\n          className=\"table-column ellipsis\"\n          style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => {\n            user.phoneNumber && window.open(`tel:+1${user.phoneNumber.replace(/\\D/g, \"\")}`);\n          }}\n        >\n          {user.phoneNumber}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          {user.site_name}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          {new Date(user.resultDate).toDateString()}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          {user.expectedEndDate}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\", color: \"red\" }}>\n          {user.isQuarantined}\n        </td>\n        <td\n          className=\"table-column ellipsis\"\n          style={{ textAlign: \"center\", textDecoration: \"underline\", color: \"#A82632\" }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => {\n            if (!user.quarantinedEnd) {\n              setSelectedQuarantine(user);\n              setOpenDetailsQuarantine(true);\n            }\n          }}\n        >\n          {user.daysCount}\n        </td>\n        <td className=\"table-column ellipsis\" style={{ textAlign: \"center\" }}>\n          True\n        </td>\n      </tr>\n    );\n  };\n\n  return (\n    <div style={{ flex: 1 }}>\n      {!loading ? (\n        <Row>\n          <Col md=\"12\">\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  {`Quarantine (${filteredCrew.length})`}\n                </Card.Title>\n                <div className=\"buttonHeader\">\n                  {/* <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                    Filter\n                  </Button> */}\n                    <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                  {/* <Button\n                    className=\"headerButton\"\n                    onClick={() => {\n                      if (filteredCrew && filteredCrew.length > 0) {\n                        setAllSelected(!allSelected);\n                        toggleCheckboxes(!allSelected);\n                      }\n                    }}\n                  >\n                    {!allSelected ? \"Select All\" : \"Deselect All\"}\n                  </Button> */}\n                     <Icon\n                        handleClick={async () => {\n                          if (filteredCrew && filteredCrew.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n                  {filteredCrew.length > 0 && (\n                    <ExportToExcel\n                      items={exportTests}\n                      appContext={appContext}\n                      filter={filter}\n                      title=\"Quarantine Tests\"\n                      sortBy={sortBy}\n                    />\n                  )}\n    <Icon\n                        handleClick={handleOpenConfirmation}\n                        title={\"End Quarantined\"}\n                        label={\"End Quarantined\"}\n                        iconType={\"qr_Icon\"}\n                      />\n                  {/* <Button className=\"headerButton\" disabled={checkboxes.length === 0} onClick={handleOpenConfirmation}>\n                    End Quarantine\n                  </Button> */}\n                </div>\n                {showFilter && <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} />}\n                <MFPagination\n                  currentPage={currentPage}\n                  handleChangePage={handleChangePage}\n                  totalPages={totalPages}\n                  // showSelectedRecord\n                  // totalSelected={checkboxes.length}\n                />\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable\">\n                  <Table className=\"table-hover table-striped\">\n                    <thead ref={componentRef}>\n                      <tr style={{ textAlign: \"center\" }}>\n                        <th></th>\n                        <th\n                          style={{\n                            color: sortBy === \"firstName\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0\"\n                          onClick={() => {\n                            setSortBy(\"firstName\");\n                            setSortDescending(!sortDescending);\n                          }}\n                        >\n                          <div>\n                            <span>First Name</span>\n                            <SetSortIcon sortName={\"firstName\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"lastName\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0\"\n                          onClick={() => {\n                            setSortBy(\"lastName\");\n                            setSortDescending(!sortDescending);\n                          }}\n                        >\n                          <div>\n                            <span>Last Name</span>\n                            <SetSortIcon sortName={\"lastName\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"lastName\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0\"\n                          onClick={() => {\n                            setSortBy(\"dob\");\n                            setSortDescending(!sortDescending);\n                          }}\n                        >\n                          <div>\n                            <span>DoB</span>\n                            <SetSortIcon sortName={\"dob\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"email\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0\"\n                          onClick={() => {\n                            setSortBy(\"email\");\n                            setSortDescending(!sortDescending);\n                          }}\n                        >\n                          <div>\n                            <span>Email</span>\n                            <SetSortIcon sortName={\"email\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"phoneNumber\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0\"\n                          onClick={() => {\n                            setSortBy(\"phoneNumber\");\n                            setSortDescending(!sortDescending);\n                          }}\n                        >\n                          <div>\n                            <span>Phone Number</span>\n                            <SetSortIcon sortName={\"phoneNumber\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"site_name\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"centered border-0 ellipsis\"\n                          onClick={() => {\n                            setSortBy(\"site_name\");\n                            setSortDescending(!sortDescending);\n                          }}\n                        >\n                          <div>\n                            <span>Show</span>\n                            <SetSortIcon sortName={\"site_name\"} />\n                          </div>\n                        </th>\n                        <th\n                          className=\"border-0 text-grey centered ellipsis\"\n                          style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n                        >\n                          Last Postive Test Date\n                        </th>\n                        <th\n                          className=\"border-0 text-grey centered ellipsis\"\n                          style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n                        >\n                          Expected End Date\n                        </th>\n                        <th\n                          className=\"centered text-grey ellipsis\"\n                          style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n                        >\n                          <span>Quarantined</span>\n                        </th>\n                        <th\n                          className=\"centered text-grey ellipsis\"\n                          style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n                        >\n                          <span>Days Count</span>\n                        </th>\n                        <th\n                          className=\"centered text-grey ellipsis\"\n                          style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n                        >\n                          <span>HIPAA Consent</span>\n                        </th>\n                      </tr>\n                    </thead>\n                    <tbody>{crewToMap && crewToMap.map((user) => <TableRow key={user.id} user={user} />)}</tbody>\n                  </Table>\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n          {openConfirmModal && (\n            <ConfirmationModal\n              title=\"End Qurantine\"\n              message=\"Do you want to end Quarantine?\"\n              handleConfirm={handleEndQuarantine}\n            />\n          )}\n          {openDetailsQuarantine && (\n            <QuarantineDetailsModal test={selectedQuarantine} handleClose={() => setOpenDetailsQuarantine(false)} />\n          )}\n        </Row>\n      ) : (\n        <Loader />\n      )}\n    </div>\n  );\n};\n\nexport default QuarantineNew;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { Modal, Button, Table, Row, Col } from \"react-bootstrap\";\nimport API from \"api\";\nimport { Bounce } from \"react-activity\";\nimport Select from \"react-select\";\nimport { isValidPhoneWithCode } from \"utils\";\nimport { AppContext } from \"context/app-context\";\nimport { CSVReader } from \"react-papaparse\";\nimport Loader from \"../Loader/Loader\";\n\nconst ImportCrewPhoneModal = (props) => {\n  const { user, sites, handleClose } = props;\n  const appContext = useContext(AppContext);\n  const getSelectedSite = () => {\n    if (sites.length === 1) return { label: sites[0].name, value: sites[0].id, id: sites[0].id, name: sites[0].name };\n    return {};\n  };\n  const [loading, setLoading] = useState(false);\n  const [selectedShow, setSelectedShow] = useState(getSelectedSite());\n\n  const handleOnDrop = async (crewData) => {\n    console.log(\"Imported Data \", crewData, user);\n    setLoading(true);\n    let ttlInvitations = 0;\n    const link = `${CONFIG.baseurl}pre-register`;\n    const emailMsg = `<p>Hello, ${user.name} has invited You to setup an account with ${CONFIG.basename}. Please click on the below link to create an account and receive your QR Code.<br><br>${link}<br><br>Best Regards, <br>${CONFIG.basename} Team</p>`;\n    const msg = `Hello, ${user.name} has invited You to setup an account with ${CONFIG.basename}. Please click on the below link to create an account and receive your QR Code.\\n\\n${link}`;\n    for (let i = 0; i < crewData.length; i++) {\n      let  val = crewData[i].data;\n      const key = Object.keys(val)\n      let phone= val[key[0]];\n      if (phone && !new RegExp(/[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,15}/g).test(phone)  && phone.substring(0, 1) !== \"+\") {\n        phone = `+${phone.replace(/\\D/g, \"\")}`;\n      }\n      console.log(\"phone\", phone, isValidPhoneWithCode(phone));\n\n      if (isValidPhoneWithCode(phone)) {\n        await API.sendSMSNotification(phone, msg);\n        ttlInvitations += 1;\n      } else {\n        const emailAddress = phone;\n        console.log(\"success\",emailAddress);\n        if (new RegExp(/[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,15}/g).test(emailAddress)) {\n          await API.sendInvitationEmail([\n            { email: emailAddress, subject: \"Pre-Registration Invitation\", msg: emailMsg },\n          ]);\n          ttlInvitations += 1;\n        }\n      }\n    }\n    if(ttlInvitations >0){\n    appContext.showSuccessMessage(`Success: Invitation has been sent to ${ttlInvitations} users.`);\n    }else{\n      appContext.showErrorMessage(`Failed data Load`);\n    }\n    setLoading(false);\n    handleClose();\n  };\n\n  const sendEmail = async (data) => {\n    console.log(\"Imported Data \", data, user);\n    setLoading(true);\n    let ttlInvitations = 0;\n    const link = `${CONFIG.baseurl}pre-register`;\n    const emailMsg = `<p>Hello,<br><br>you have been invited to ${selectedShow.label}. Please click on the below link to preregister to get your QR code.\\n${link}<br><br>Best Regards, <br>${CONFIG.basename} Team</p>`;\n    for (let i = 0; i < data.length; i++) {\n      if (new RegExp(/[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,15}/g).test(phone)) {\n        console.log(\"Valid Email \", email);\n        await API.sendInvitationEmail([{ email: phone, msg: emailMsg }]);\n      }\n    }\n    alert(`Success: Invitation has been sent to ${ttlInvitations} users.`);\n    setLoading(false);\n    handleClose();\n  };\n  const handleOnError = (err) => {\n    appContext.showErrorMessage(err.message);\n  };\n\n  const handleOnRemoveFile = (data) => {\n    console.log(\"Remove Data\", data);\n  };\n\n  return loading ? (\n      <Loader />\n  ) : (\n    <Modal show animation={true} onHide={() => handleClose()} centered size={\"md\"}>\n      <Modal.Header closeButton>\n        <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n          Pre-Load Crew\n        </Modal.Title>\n      </Modal.Header>\n\n      <Modal.Body style={{ paddingTop: 0 }}>\n        {sites.length > 1 && (\n          <div className=\"form-group-wrapper\">\n            <label className=\"modalLineHeaders\">Select Show:</label>\n            <Select\n              options={sites.map((site) => {\n                return { label: site.name, value: site.id, id: site.id, name: site.name };\n              })}\n              blurInputOnSelect={true}\n              defaultValue={null}\n              menuPlacement=\"auto\"\n              placeholder=\"Select a Show\"\n              value={selectedShow}\n              onChange={(e) => setSelectedShow(e)}\n              className=\"w-100 roleSelector\"\n            />\n          </div>\n        )}\n        <div className=\"form-group-wrapper d-block\">\n          {Object.keys(selectedShow).length > 0 && (\n            <CSVReader\n            onDrop={handleOnDrop}\n            onError={handleOnError}\n            addRemoveButton\n            config={{\n              header: true,\n              skipEmptyLines: true\n            }}\n            onRemoveFile={handleOnRemoveFile}\n          >\n            <span>Drop CSV file here or click to upload.</span>\n          </CSVReader>\n          )}\n        </div>\n      </Modal.Body>\n\n      <Modal.Footer>\n        <Button variant=\"primary\" onClick={() => handleClose()}>\n          Close\n        </Button>\n      </Modal.Footer>\n    </Modal>\n  );\n};\n\nexport default ImportCrewPhoneModal;\n","import React, { useEffect } from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport FileSaver from \"file-saver\";\nimport * as XLSX from \"xlsx-js-style\";\nimport { formatPhoneNumber } from \"utils\";\nimport moment from \"moment\";\nimport Icon from \"./Icon\";\nimport { CONFIG } from \"constant\";\n\nconst ExportCrewToExcel = (props) => {\n  const { items, selectedItem ,appContext} = props;\n\n  const exportData = () => {\n    if (!selectedItem) return items;\n    return items.map((item) => {\n      let obj = {};\n      selectedItem.forEach((c) => {\n        if (c === \"phoneNumber\") {\n          Object.assign(obj, { [c]: `${item[c].replace(/ /g, \"\")}` });\n        }else if (c === \"gender\") {\n          Object.assign(obj, { [c]: item['sex'] });\n        }else if (c === \"isVaccinated\") {\n          Object.assign(obj, { [c]: item['isVaccinated'] ? 'Yes' : 'No' });\n        } else {\n          Object.assign(obj, { [c]: item[c] });\n        }\n      });\n      return obj;\n    });\n  };\n  const handleExportToExcel = async () => {\n    if (items?.length > 0) {\n      const data = exportData();\n      const colLength = Object.keys(data[0]).length;\n      const rowLength = Object.keys(data).length;\n     \n      const fileName = `${CONFIG.basename}.xlsx`;\n      const fileType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\n      const ws = XLSX.utils.aoa_to_sheet([selectedItem], { origin: \"A1\" });\n      XLSX.utils.sheet_add_json(ws, data, { skipHeader: true, origin: -1 });\n      const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\n      const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\n      const fileContent = new Blob([excelBuffer], { type: fileType });\n      try {\n        await FileSaver.saveAs(fileContent, fileName);\n        appContext.showSuccessMessage(\"Excel file export successfully\");\n      } catch (err) {\n        appContext.showErrorMessage(\"file can't be expored\");\n      }\n    }\n  };\n\n  // return (\n  //   <Button className=\"headerButton\" onClick={handleExportToExcel}>\n  //     Export to Excel\n  //   </Button>\n  // );\n  return <Icon handleClick={handleExportToExcel} title={\"Export to Excel\"} label=\"Export\" iconType={\"XLSIcon\"} />;\n};\n\nexport default ExportCrewToExcel;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport { Button, Modal, Table } from \"react-bootstrap\";\nimport { AppContext } from \"context/app-context\";\nimport api from \"api\";\nimport { connectedIDInLocalStorage } from \"utils\";\nimport Loader from \"components/Loader/Loader\";\n\nconst EmployeeDemoChange = (props) => {\n  const { handleClose } = props;\n  const [employees, setEmployees] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const appContext = useContext(AppContext);\n\n  useEffect(() => {\n    loadData();\n  }, []);\n\n  const loadData = async () => {\n    const items = await api.getPGEmployeeData(connectedIDInLocalStorage.get());\n    console.log(\"items\", items);\n    setEmployees(items);\n  };\n\n  const handleOnClick = async (item) => {\n    console.log(\"item\", item);\n    const model = await api.getRecordById(item.employeeID, \"employee\");\n    const tests = await api.getTestByEmployee(item.employeeID);\n    console.log(\"Model\", model);\n  };\n\n  return (\n    <>\n      {!loading ? (\n        <Modal show animation={true} onHide={() => handleClose()} size=\"xl\">\n          <Modal.Header closeButton>\n            <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n              Employee Data\n            </Modal.Title>\n          </Modal.Header>\n\n          <Modal.Body style={{ paddingTop: 0 }}>\n            <div className=\"form-group-wrapper d-block\">\n              <div className=\"table-responsive\">\n                <Table className=\"table-hover table-striped\">\n                  <thead>\n                    <tr>\n                      <th\n                        className={`border-0`}\n                        style={{\n                          color: \"grey\",\n                          fontWeight: \"bold\",\n                        }}\n                      >\n                        <div>\n                          <span>Employee ID</span>\n                        </div>\n                      </th>\n                      <th\n                        className={`border-0  `}\n                        style={{\n                          color: \"grey\",\n                          fontWeight: \"bold\",\n                        }}\n                      >\n                        Demographics\n                      </th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    {employees.map((user, index) => {\n                      return (\n                        <tr>\n                          <td>{user.employeeID}</td>\n                          <td onClick={() => handleOnClick(user)}>\n                            <p style={{ width: \"30%\", overflowWrap: \"break-word\" }}>{user.employee_demographics}</p>\n                          </td>\n                        </tr>\n                      );\n                    })}\n                  </tbody>\n                </Table>\n              </div>\n            </div>\n          </Modal.Body>\n\n          <Modal.Footer className=\"flex-row-reverse\">\n            <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleClose()}>\n              OK\n            </Button>\n          </Modal.Footer>\n        </Modal>\n      ) : (\n        <Loader />\n      )}\n    </>\n  );\n};\n\nexport default EmployeeDemoChange;\n","import React, { useState, useContext, useRef } from \"react\";\n\n// react-bootstrap components\nimport { Button, Card, Table, Row, Col, DropdownButton, Dropdown, Modal, Form } from \"react-bootstrap\";\nimport { DataStore } from \"@aws-amplify/datastore\";\nimport { useEffect, useMemo } from \"react\";\nimport api from \"api\";\nimport { Auth } from \"aws-amplify\";\nimport SearchBar from \"components/SearchBar\";\nimport SortIcon from \"components/SortIcon\";\nimport parsePhoneNumber, { AsYouType } from \"libphonenumber-js\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport Filter from \"components/Filter\";\nimport {\n  changeSort,\n  getCrewsName,\n  formatPhoneNumber,\n  capitalizeLetter,\n  sortingFilterInLC,\n  calculateTdWidth,\n  formatDateOfBirthDOB,\n  connectedIDInLocalStorage,\n} from \"utils\";\nimport MFPagination from \"components/Pagination/MFPagination\";\nimport ImportCrewPhoneModal from \"components/Modal/ImportCrewPhoneModal\";\n\nimport { AppContext } from \"context/app-context\";\nimport { PAGE_LIMIT } from \"constant\";\nimport moment from \"moment\";\nimport QuarantineDetailsModal from \"components/Modal/QuarantineDetailsModal\";\nimport ExportCrewToExcel from \"components/ExportCrewToExcel\";\nimport { FormatAWSDate } from \"utils\";\nimport { getPhoneNo } from \"utils\";\nimport EmployeeDemoChange from \"components/Modal/EmployeeDemoChange\";\nimport Loader from \"components/Loader/Loader\";\nimport Icon from \"components/Icon\";\n\nconst HSCrewNew = (props) => {\n  const componentRef = useRef();\n  const mainWidth = useRef();\n  const [width, setWidth] = useState(0);\n  const history = useHistory();\n  const siteID = window.location?.pathname?.split('/').pop(); \n  useEffect(() => {\n    setWidth(componentRef.current.offsetWidth);\n  }, [componentRef]);\n\n  const handleResize = () => {\n    if (componentRef.current) setWidth(componentRef.current.offsetWidth);\n  };\n  useEffect(() => {\n    window.addEventListener(\"resize\", handleResize);\n    return () => {\n      window.removeEventListener(\"resize\", handleResize);\n    };\n  });\n\n  useEffect(() => handleResize(), [mainWidth]);\n\n  const tdWidth = calculateTdWidth(width - 45, 10);\n\n  // const [admins, setAdmins] = useState([]);\n  // const [labs, setLabs] = useState([]);\n  // const [testers, setTesters] = useState([]);\n  // const [employees, setEmployees] = useState([]);\n  const [crew, setCrew] = useState([]);\n  const [filteredCrew, setFilteredCrew] = useState([]);\n  const [sortBy, setSortBy] = useState(\"\");\n  const [sortDescending, setSortDescending] = useState(true);\n  const [searchInput, setSearchInput] = useState(\"\");\n  const [searchTerm, setSearchTerm] = useState(\"email\");\n  const [loading, setLoading] = useState(false);\n  const [showFilter, setShowFilter] = useState(false);\n  const [filter, setFilter] = useState({});\n  const [currentPage, setCurrentPage] = useState(1);\n  const [totalPages, setTotalPages] = useState(1);\n  const [openCreator, setOpenCreator] = useState(false);\n  const [selectedCrew, setSelectedCrew] = useState(false);\n  const [preLoadCrew, setPreLoadCrew] = useState(false);\n  const [openDetailsQuarantine, setOpenDetailsQuarantine] = useState(false);\n  const [selectedQuarantine, setSelectedQuarantine] = useState(\"\");\n  const [checkboxes, setCheckboxes] = useState([]);\n  const [allSelected, setAllSelected] = useState(false);\n  const [showDemo, setShowDemo] = useState(false);\n\n\n  const searchTerms = [\n    \"First Name\",\n    \"Last Name\",\n    \"Date of Birth\",\n    \"Email\",\n    \"Phone\",\n    \"Show\",\n    \"Total Tests\",\n    \"Quarantined\",\n  ];\n  const selectedItem = [\n    \"firstName\",\n    \"lastName\",\n    \"dob\",\n    \"email\",\n    \"isVaccinated\",\n    \"phoneNumber\",\n    \"gender\",\n    \"idNumber\",\n    \"street\",\n    \"street2\",\n    \"city\",\n    \"state\",\n    \"zip\",\n  ];\n  const appContext = useContext(AppContext);\n  const sortCrew = () => {\n    if (sortBy === \"lastTest\") {\n      setFilteredCrew(\n        sortDescending\n          ? [...crew].sort((a, b) => (a[sortBy].date < b[sortBy].date ? 1 : b[sortBy].date < a[sortBy].date ? -1 : 0))\n          : [...crew].sort((a, b) => (b[sortBy].date < a[sortBy].date ? 1 : a[sortBy].date < b[sortBy].date ? -1 : 0))\n      );\n    } else {\n      setFilteredCrew(\n        sortDescending\n          ? [...crew].sort((a, b) => (a[sortBy] < b[sortBy] ? 1 : b[sortBy] < a[sortBy] ? -1 : 0))\n          : [...crew].sort((a, b) => (b[sortBy] < a[sortBy] ? 1 : a[sortBy] < b[sortBy] ? -1 : 0))\n      );\n    }\n  };\n\n  const sortCrewData = (list) =>\n    sortDescending\n      ? [...list].sort((a, b) => (a[sortBy] < b[sortBy] ? 1 : b[sortBy] < a[sortBy] ? -1 : 0))\n      : [...list].sort((a, b) => (b[sortBy] < a[sortBy] ? 1 : a[sortBy] < b[sortBy] ? -1 : 0));\n\n  const SetSortIcon = ({ sortName }) => {\n    return (\n      <SortIcon\n        sortName={sortName}\n        sortBy={sortBy}\n        setSortBy={setSortBy}\n        sortDescending={sortDescending}\n        setSortDescending={setSortDescending}\n      />\n    );\n  };\n\n  const formatUserObject = (user, role) => {\n    const newUser = {};\n    const email = user.Attributes.find((attr) => {\n      return attr.Name === \"email\";\n    }).Value;\n    newUser.email = email;\n    const phone = user.Attributes.find((attr) => {\n      return attr.Name === \"phone_number\";\n    }).Value;\n    const firstName = user.Attributes.find((attr) => {\n      return attr.Name === \"custom:firstName\";\n    })?.Value;\n    const lastName = user.Attributes.find((attr) => {\n      return attr.Name === \"custom:lastName\";\n    })?.Value;\n\n    newUser.name = firstName && lastName ? `${firstName} ${lastName}` : \"-\";\n    newUser.phone_number = formatPhoneNumber(phone);\n    newUser.username = user.Username;\n    newUser.status = user.UserStatus;\n    const obj = Object.assign({ role: role }, newUser);\n    return obj;\n  };\n\n  const nestedFilter = (targetArray, filters) => {\n    if (Object.keys(filters).length === 0) return targetArray;\n    const filterKeys = Object.keys(filters);\n    //filters main array of objects\n    const models = targetArray.filter((obj) => {\n      //goes through each key being filtered for\n      return filterKeys.every((key) => {\n        if (!filters[key].length) {\n          return true;\n        }\n\n        if (key === \"First Name\") {\n          return obj.firstName && obj.firstName.toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"Last Name\") {\n          return obj.lastName && obj.lastName.toLowerCase().includes(filters[key].toLowerCase());\n        }\n\n        if (key === \"phoneNumber\") {\n          return obj.phoneNumber && obj.phoneNumber.replace(/\\D/g, \"\").includes(filters[key].toLowerCase());\n        }\n        return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n      });\n    });\n\n    return models;\n  };\n\n  const formatter = new AsYouType(\"US\");\n\n  const handleClose = () => {\n    setOpenCreator(false);\n  };\n  const handleSave = async () => {\n    const prevCrew = crew.find((c) => c.employeeID === selectedCrew.employeeID);\n    if (\n      prevCrew &&\n      (prevCrew.firstName !== selectedCrew.firstName ||\n        prevCrew.lastName !== selectedCrew.lastName ||\n        prevCrew.email !== selectedCrew.email)\n    ) {\n      try {\n        setLoading(true);\n        await api.updateCrewInfo(selectedCrew);\n        setTimeout(() => window.location.reload(), 4000);\n        setOpenCreator(false);\n        setSelectedCrew({});\n        appContext.showSuccessMessage(\"Crew updated successfully\");\n      } catch (err) {\n        setLoading(false);\n        appContext.showErrorMessage(err.message);\n      }\n    } else {\n      setOpenCreator(false);\n    }\n  };\n  const handleChangePage = (page) => setCurrentPage(page);\n\n  const getCrewMembers = (tests) => {\n    const allTests = tests.map((test) => {\n      if (typeof test.employee_demographics === \"string\") {\n        return {\n          ...JSON.parse(test.employee_demographics),\n          phoneNumber: formatPhoneNumber(test.phoneNumber, test.countryCode),\n          phone: test.phoneNumber,\n          email: test.email,\n          date: test.createdAt,\n          barcode: test.barcode,\n          dob: formatDateOfBirthDOB(test.dob),\n          employeeID: test.employeeID,\n          quarantinedStart: test.quarantinedStart,\n          quarantinedEnd: test.quarantinedEnd,\n          isQuarantined: test.quarantinedStart && !test.quarantinedEnd ? \"X\" : \"-\",\n          site_name: test.site_name,\n        };\n      }\n      return {\n        ...test.employee_demographics,\n        dob: formatDateOfBirthDOB(test.employee_demographics.dob),\n        phoneNumber: formatPhoneNumber(test.phoneNumber, test.countryCode),\n        phone: test.phoneNumber,\n        email: test.email,\n        date: test.createdAt,\n        barcode: test.barcode,\n        employeeID: test.employeeID,\n        quarantinedStart: test.quarantinedStart,\n        quarantinedEnd: test.quarantinedEnd,\n        isQuarantined: test.quarantinedStart && !test.quarantinedEnd ? \"X\" : \"-\",\n        site_name: test.site_name,\n      };\n    });\n\n    const dupes = [];\n    const dupeCount = {};\n    const lastTest = {};\n    const crew = allTests\n      .filter((el) => {\n        if (dupes.indexOf(`${el.phoneNumber}-${el.dob}`) === -1) {\n          dupes.push(`${el.phoneNumber}-${el.dob}`);\n          dupeCount[`${el.phoneNumber}-${el.dob}`] = 1;\n          lastTest[el.phoneNumber] = el;\n          return true;\n        }\n\n        dupeCount[`${el.phoneNumber}-${el.dob}`]++;\n        if (new Date(lastTest[el.phoneNumber].date) < new Date(el.date)) {\n          lastTest[el.phoneNumber] = el;\n        }\n        return false;\n      })\n      .map((crew) => {\n        return {\n          ...crew,\n          totalTests: dupeCount[`${crew.phoneNumber}-${crew.dob}`],\n          lastTest: lastTest[crew.phoneNumber],\n        };\n      });\n    console.log(\"dupeCount\", dupeCount);\n    console.log(\"Crew\", crew);\n    return crew;\n  };\n\n  useEffect(() => {\n    if (!appContext) return;\n    if (appContext.testFilter && appContext.testFilter.location === \"crewlisting\") {\n      setFilter(appContext.testFilter.filter);\n      setShowFilter(true);\n    }\n    loadPrevSorting();\n    loadTestFromPG();\n  }, []);\n\n  useEffect(() => {\n    crew.length > 0 && sortCrew();\n    const prevSortingState = sortingFilterInLC.get();\n    prevSortingState[\"crewhs\"] = { filter, sortBy, sortDescending };\n    sortingFilterInLC.save(prevSortingState);\n  }, [sortBy, sortDescending]);\n\n  useEffect(() => {\n    if (crew.length > 0) setFilteredCrew(nestedFilter(crew, filter));\n  }, [filter]);\n\n  const loadPrevSorting = () => {\n    const sortingFilters = sortingFilterInLC.get();\n    if (sortingFilters.crewhs.sortBy) {\n      setSortDescending(sortingFilters.crewhs.sortDescending);\n      setSortBy(sortingFilters.crewhs.sortBy);\n    }\n  };\n\n  const loadTestFromPG = async () => {\n    setLoading(true);\n   \n    const startDate = moment().subtract(6, \"days\").startOf(\"day\").utc().toISOString();\n    const endDate = moment().endOf(\"day\").utc().toISOString();\n    try {\n      const pgList = await api.getTestListFromPG({ siteID: siteID || \"E\", limit: 1000 });\n      console.log(\"pglist\", pgList);\n      const lists = sortCrewData(getCrewMembers(pgList.rows));\n      setCrew(lists);\n      setFilteredCrew(lists);\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      console.log(err.message);\n    }\n  };\n\n  const crewToMap = useMemo(() => {\n    const list = filteredCrew ? [...filteredCrew] : [];\n    const ttlPages = list.length > PAGE_LIMIT ? Math.ceil(list.length / PAGE_LIMIT) : 1;\n    setTotalPages(ttlPages);\n    if (list.length < PAGE_LIMIT) {\n      setCurrentPage(1);\n    }\n    if (ttlPages > 1) {\n      const indexOfLastUser = currentPage * PAGE_LIMIT;\n      const indexOfFirstUser = indexOfLastUser - PAGE_LIMIT;\n      return list.slice(indexOfFirstUser, indexOfLastUser);\n    }\n    return list;\n  }, [filteredCrew, currentPage]);\n\n  const handleEditCrew = (crew) => {\n    setSelectedCrew({ ...crew });\n    setOpenCreator(true);\n  };\n\n  const handleSaveFilter = () => {\n    appContext.setTestFilter({ location: \"crewlisting\", filter });\n  };\n\n  const getQuarantineDays = (test) => {\n    if (!test.quarantinedStart || (test.quarantinedStart && test.quarantinedEnd)) return \"-\";\n    const startDate = moment(test.quarantinedStart);\n    if (test.quarantinedEnd) {\n      const endDate = moment(test.quarantinedEnd);\n      const days = endDate.diff(startDate, \"days\");\n      return days;\n    }\n    const currentDate = moment();\n    return currentDate.diff(startDate, \"days\");\n  };\n\n  const pageTitle = () => `Crew Members ${filteredCrew.length}`;\n  const handleCheckboxChange = (e, id) => {\n    const filteredList = checkboxes.filter((c) => c !== id);\n    if (e.target.checked) {\n      filteredList.push(id);\n    }\n    setCheckboxes(filteredList);\n  };\n\n  const toggleCheckboxes = (val) => setCheckboxes(val ? filteredCrew.map((t) => t.employeeID) : []);\n\n  const TableRow = ({ user }) => {\n    return (\n      <tr>\n        <td className=\"icon\">\n          <div className=\"d-flex align-items-center w-100 column-gap-10\">\n            <Form.Check.Input\n              type=\"checkbox\"\n              value={user.employeeID}\n              checked={checkboxes.indexOf(user.employeeID) !== -1}\n              onChange={(e) => handleCheckboxChange(e, user.employeeID)}\n            ></Form.Check.Input>\n            <i\n              className=\"fas fa-edit\"\n              onMouseLeave={(e) => (e.target.style.color = \"black\")}\n              onMouseOver={(e) => {\n                e.target.style.color = \"blue\";\n                e.target.style.cursor = \"pointer\";\n              }}\n              aria-hidden=\"true\"\n              id={user.id}\n              onClick={(e) => handleEditCrew(user)}\n            />\n          </div>\n        </td>\n        <td className=\"ellipsis\">{capitalizeLetter(user.firstName)}</td>\n        <td className=\"ellipsis\">{capitalizeLetter(user.lastName)}</td>\n        <td className=\"ellipsis\" title={user.dob}>\n          {user.dob}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{\n            textDecoration: \"underline\",\n            color: \"#A82632\",\n          }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => user?.email && window.open(`mailto:${user.email}`)}\n        >\n          {user.email}\n        </td>\n        <td\n          className=\"ellipsis\"\n          style={{ textDecoration: \"underline\", color: \"#A82632\" }}\n          onMouseOver={(e) => {\n            e.target.style.cursor = \"pointer\";\n            e.target.style.textDecoration = \"none\";\n          }}\n          onMouseLeave={(e) => {\n            e.target.style.textDecoration = \"underline\";\n          }}\n          onClick={() => {\n            user.phoneNumber && window.open(`tel:+${user.phoneNumber.replace(/\\D/g, \"\")}`);\n          }}\n        >\n          {user.phoneNumber}\n        </td>\n        <td className=\"ellipsis\"\n          style={{ textAlign: \"center\" }}>{user.site_name}</td>\n        <td style={{ textAlign: \"center\" }} className=\"ellipsis\">\n          {user.totalTests !== 0 ? (\n            <Link\n              onClick={handleSaveFilter}\n              style={{ color: \"#42cef5\" }}\n              to={{\n                pathname: `/admin/totaltests`,\n                state: {\n                  name: user.phone?.replace(/[^A-Z0-9]/g, \"\"),\n                  term: \"phoneNumber\",\n                  dob: user.dob,\n                  dobTerm: \"dob\",\n                },\n              }}\n            >\n              {user.totalTests}\n            </Link>\n          ) : (\n            user.totalTests\n          )}\n        </td>\n        <td className=\"ellipsis\" style={{ textAlign: \"center\" }}>\n          <Link\n            onClick={handleSaveFilter}\n            style={{ color: \"#42cef5\" }}\n            to={{\n              pathname: `/admin/totaltests`,\n              state: { name: user.lastTest.barcode, term: \"barcode\" },\n            }}\n          >\n            {new Date(user.lastTest.date).toDateString()}\n          </Link>\n        </td>\n        {user.isQuarantined === \"X\" ? (\n          <td style={{ textAlign: \"center\", color: \"red\" }}>X</td>\n        ) : (\n          <td style={{ textAlign: \"center\" }}>-</td>\n        )}\n\n        <td style={{ textAlign: \"center\" }}>\n          {user.isQuarantined === \"X\" ? (\n            <div\n              style={{ textAlign: \"center\", textDecoration: \"underline\", color: \"#A82632\" }}\n              onMouseOver={(e) => {\n                e.target.style.cursor = \"pointer\";\n                e.target.style.textDecoration = \"none\";\n              }}\n              onMouseLeave={(e) => {\n                e.target.style.textDecoration = \"underline\";\n              }}\n              onClick={() => {\n                setSelectedQuarantine(user);\n                setOpenDetailsQuarantine(true);\n              }}\n            >\n              {getQuarantineDays(user)}\n            </div>\n          ) : (\n            \"-\"\n          )}\n        </td>\n        <td style={{ textAlign: \"center\" }}>True</td>\n      </tr>\n    );\n  };\n\n  return (\n    <div style={{ flex: 1 }}>\n      {!loading ? (\n        <Row>\n          <Col md=\"12\">\n            <Card className=\"strpied-tabled-with-hover\">\n              <Card.Header>\n                <Card.Title\n                  as=\"h4\"\n                  style={{\n                    marginBottom: 10,\n                    fontWeight: \"bold\",\n                    color: \"#565656\",\n                  }}\n                >\n                  {pageTitle()}\n                </Card.Title>\n                <div className=\"buttonHeader\">\n                  {/* <Button className=\"headerButton\" onClick={() => setShowFilter(!showFilter)}>\n                    Filter\n                  </Button> */}\n                    <Icon\n                        handleClick={() => setShowFilter(!showFilter)}\n                        title={\"Filter\"}\n                        label={\"Filter\"}\n                        iconType={\"filter\"}\n                      />\n                       <Icon\n                        \n                        handleClick={() => setPreLoadCrew(true)}\n                        title={\"Pre-Load\"}\n                        label={\"Pre-Load\"}\n                        iconType={\"preload\"}\n                      />\n                  {/* <Button className=\"headerButton\" onClick={() => setPreLoadCrew(true)}>\n                    Pre-Load\n                  </Button> */}\n                  {/* <Button\n                    className=\"headerButton\"\n                    onClick={() => {\n                      if (filteredCrew && filteredCrew.length > 0) {\n                        setAllSelected(!allSelected);\n                        toggleCheckboxes(!allSelected);\n                      }\n                    }}\n                  >\n                    {!allSelected ? \"Select All\" : \"Deselect All\"}\n                  </Button> */}\n                     <Icon\n                        handleClick={async () => {\n                          if (filteredCrew && filteredCrew.length > 0) {\n                            setAllSelected(!allSelected);\n                            toggleCheckboxes(!allSelected);\n                          }\n                        }}\n                        title={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        label={!allSelected ? \"Select All\" : \"Deselect All\"}\n                        iconType={\"selectAllIcon\"}\n                      />\n                  {/* {\n                    <Button\n                      className=\"headerButton\"\n                      onClick={() =>\n                        history.push({\n                          pathname: \"/admin/qrview\",\n                          state: { data: filteredCrew.filter((c) => checkboxes.includes(c.employeeID)) },\n                        })\n                      }\n                    >\n                      Show QR Code\n                    </Button>\n                  } */}\n                  {filteredCrew.length > 0 && (\n                     <ExportCrewToExcel\n                     items={filteredCrew.map((e) => {\n                       return {\n                         ...e,\n                         jobTitle: \"\",\n                         location: \"\",\n                         region: \"\",\n                         callTime: \"\",\n                         department: \"\",\n                         country: \"\",\n                         zone: \"\",\n                       };\n                     })}\n                     selectedItem={selectedItem}\n                     appContext={appContext}\n                     filter={filter}\n                     title=\"Crew User\"\n                     sortBy={sortBy}\n                   />\n                  )}\n                </div>\n                {showFilter && <Filter filterTerms={searchTerms} setFilter={setFilter} filter={filter} />}\n                <MFPagination\n                  currentPage={currentPage}\n                  handleChangePage={handleChangePage}\n                  totalPages={totalPages}\n                  // showSelectedRecord\n                  // totalSelected={checkboxes.length}\n                />\n              </Card.Header>\n\n              <Card.Body className=\"table-full-width px-0 desktop-noScroll\">\n                <div className=\"table-responsive pendingReleaseTable\">\n                  <Table className=\"table-hover table-striped\">\n                    <thead ref={componentRef}>\n                      <tr style={{ textAlign: \"center\" }}>\n                        <th></th>\n                        <th\n                          style={{\n                            color: sortBy === \"firstName\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0\"\n                          onClick={() => {\n                            setSortBy(\"firstName\");\n                            setSortDescending(!sortDescending);\n                          }}\n                        >\n                          <div>\n                            <span>First Name</span>\n                            <SetSortIcon sortName={\"firstName\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"lastName\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0\"\n                          onClick={() => {\n                            setSortBy(\"lastName\");\n                            setSortDescending(!sortDescending);\n                          }}\n                        >\n                          <div>\n                            <span>Last Name</span>\n                            <SetSortIcon sortName={\"lastName\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"lastName\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0\"\n                          onClick={() => {\n                            setSortBy(\"dob\");\n                            setSortDescending(!sortDescending);\n                          }}\n                        >\n                          <div>\n                            <span>DoB</span>\n                            <SetSortIcon sortName={\"dob\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"email\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0\"\n                          onClick={() => {\n                            setSortBy(\"email\");\n                            setSortDescending(!sortDescending);\n                          }}\n                        >\n                          <div>\n                            <span>Email</span>\n                            <SetSortIcon sortName={\"email\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"phoneNumber\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0\"\n                          onClick={() => {\n                            setSortBy(\"phoneNumber\");\n                            setSortDescending(!sortDescending);\n                            // setCrew(sortCrew(crew, sortBy));\n                          }}\n                        >\n                          <div>\n                            <span>Phone Number</span>\n                            <SetSortIcon sortName={\"phoneNumber\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"site_name\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0 centered\"\n                          onClick={() => {\n                            setSortBy(\"site_name\");\n                            setSortDescending(!sortDescending);\n                            // setCrew(sortCrew(crew, sortBy));\n                          }}\n                        >\n                          <div>\n                            <span>Show</span>\n                            <SetSortIcon sortName={\"site_name\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"totalTests\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0 centered\"\n                          onClick={() => {\n                            setSortBy(\"totalTests\");\n                            setSortDescending(!sortDescending);\n                            // setCrew(sortCrew(crew, sortBy));\n                          }}\n                        >\n                          <div>\n                            <span>Total Tests</span>\n                            <SetSortIcon sortName={\"totalTests\"} />\n                          </div>\n                        </th>\n                        <th\n                          style={{\n                            color: sortBy === \"lastTest\" ? \"#A72632\" : \"grey\",\n                            fontWeight: \"bold\",\n                            width: tdWidth,\n                            maxWidth: tdWidth,\n                          }}\n                          className=\"border-0 centered\"\n                          onClick={() => {\n                            setSortBy(\"lastTest\");\n                            setSortDescending(!sortDescending);\n                            // setCrew(sortCrew(crew, sortBy));\n                          }}\n                        >\n                          <div>\n                            <span>Last Test Date</span>\n                            <SetSortIcon sortName={\"lastTest\"} />\n                          </div>\n                        </th>\n                        <th\n                          className=\"centered text-grey ellipsis\"\n                          style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n                        >\n                          <span>Quarantined</span>\n                        </th>\n                        <th\n                          className=\"centered text-grey ellipsis\"\n                          style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n                        >\n                          <span>Days Count</span>\n                        </th>\n                        <th\n                          className=\"centered text-grey ellipsis\"\n                          style={{ fontWeight: \"bold\", width: tdWidth, maxWidth: tdWidth }}\n                        >\n                          <span>HIPAA Consent</span>\n                        </th>\n                      </tr>\n                    </thead>\n                    <tbody>\n                      {crewToMap.map((user, index) => {\n                        return <TableRow key={index} user={user} />;\n                      })}\n                    </tbody>\n                  </Table>\n                </div>\n              </Card.Body>\n            </Card>\n          </Col>\n          <Modal\n            show={openCreator}\n            // style={{ transform: \"translate(0, -30%)\" }}\n            animation={true}\n            onHide={() => {\n              setOpenCreator(false);\n            }}\n            centered\n            size={\"md\"}\n          >\n            <Modal.Header closeButton>\n              <Modal.Title className=\"my-0\" id=\"contained-modal-title-vcenter\">\n                Update Crew\n              </Modal.Title>\n            </Modal.Header>\n\n            <Modal.Body style={{ paddingTop: 0 }}>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">First Name: </label>\n                <input\n                  value={selectedCrew.firstName}\n                  className=\"modalInput\"\n                  placeholder=\"Client Name\"\n                  style={{ width: \"100%\" }}\n                  onChange={(e) => setSelectedCrew({ ...selectedCrew, firstName: e.target.value })}\n                />\n              </div>\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Last Name: </label>\n                <input\n                  value={selectedCrew.lastName}\n                  className=\"modalInput\"\n                  placeholder=\"Client Name\"\n                  style={{ width: \"100%\" }}\n                  onChange={(e) => setSelectedCrew({ ...selectedCrew, lastName: e.target.value })}\n                />\n              </div>\n\n              <div className=\"form-group-wrapper\">\n                <label className=\"modalLineHeaders\">Email: </label>\n                <input\n                  value={selectedCrew.email}\n                  className=\"modalInput\"\n                  placeholder=\"Email\"\n                  style={{ width: \"100%\" }}\n                  onChange={(e) => setSelectedCrew({ ...selectedCrew, email: e.target.value })}\n                />\n              </div>\n            </Modal.Body>\n\n            <Modal.Footer>\n              <Button\n                className=\"modalButtons\"\n                variant=\"secondary\"\n                onClick={() => {\n                  handleClose();\n                }}\n              >\n                Close\n              </Button>\n              <Button className=\"modalButtons\" variant=\"primary\" onClick={() => handleSave()}>\n                Update\n              </Button>\n            </Modal.Footer>\n          </Modal>\n\n          {preLoadCrew && (\n            <ImportCrewPhoneModal\n              sites={appContext?.sites}\n              user={appContext?.user}\n              handleClose={() => setPreLoadCrew(false)}\n            />\n          )}\n          {openDetailsQuarantine && (\n            <QuarantineDetailsModal test={selectedQuarantine} handleClose={() => setOpenDetailsQuarantine(false)} />\n          )}\n          {showDemo && <EmployeeDemoChange handleClose={() => setShowDemo(false)} />}\n        </Row>\n      ) : (\n        // <h3\n        //   style={{\n        //     display: \"block\",\n        //     marginLeft: \"auto\",\n        //     marginRight: \"auto\",\n        //     paddingTop: 50,\n        //     paddingBottom: 50,\n        //   }}\n        // >\n        //   Loading...\n        // </h3>\n        <Loader />\n      )}\n    </div>\n  );\n};\n\nexport default HSCrewNew;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\nimport Test from \"views/Test\";\nimport CrewQRCode from \"views/CrewQRCode\";\nimport Typography from \"views/Typography.js\";\nimport Icons from \"views/Icons.js\";\nimport Maps from \"views/Maps.js\";\nimport Notifications from \"views/Notifications.js\";\nimport Settings from \"views/Settings.js\";\nimport TotalTestsApiNew from \"views/GraphQL/TotalTestApiNew\";\nimport PositiveTestsApiNew from \"views/GraphQL/PositiveTestApiNew\";\nimport QuarantineNew from \"views/QuarantineNew\";\nimport HSCrewNew from \"views/GraphQL/HSCrewNew\";\n\nconst HSRoutesNew = [\n  {\n    path: \"/totaltests/:siteID\",\n    name: \"Total Tests\",\n    icon: \"nc-icon nc-notes\",\n    component: TotalTestsApiNew,\n    layout: \"/site\",\n  },\n  {\n    path: \"/positivetests/:siteID\",\n    name: \"Positive Tests\",\n    icon: \"nc-icon nc-notes\",\n    component: PositiveTestsApiNew,\n    layout: \"/site\",\n  },\n  {\n    path: \"/quarantine/:siteID\",\n    name: \"Quarantine\",\n    icon: \"nc-icon nc-notes\",\n    component: QuarantineNew,\n    layout: \"/site\",\n  },\n  /* {\n    path: \"/settings\",\n    name: \"Settings\",\n    icon: \"nc-icon nc-notes\",\n    component: Settings,\n    layout: \"/site\",\n  }, */\n  {\n    path: \"/crew/:siteID\",\n    name: \"Crew\",\n    icon: \"nc-icon nc-circle-09\",\n    component: HSCrewNew,\n    layout: \"/site\",\n  },\n  {\n    path: \"/qrview/:siteID\",\n    name: \"QRCode\",\n    icon: \"nc-icon nc-circle-09\",\n    component: CrewQRCode,\n    layout: \"/site\",\n    redirect: true,\n  },\n  {\n    path: \"/test/:siteID\",\n    name: \"Test\",\n    icon: \"nc-icon nc-circle-09\",\n    component: Test,\n    layout: \"/site\",\n    redirect: true,\n  }\n\n  // {\n  //   path: \"/icons\",\n  //   name: \"Icons\",\n  //   icon: \"nc-icon nc-atom\",\n  //   component: Icons,\n  //   layout: \"/site\",\n  // },\n  // {\n  //   path: \"/maps\",\n  //   name: \"Maps\",\n  //   icon: \"nc-icon nc-pin-3\",\n  //   component: Maps,\n  //   layout: \"/site\",\n  // },\n  // {\n  //   path: \"/notifications\",\n  //   name: \"Notifications\",\n  //   icon: \"nc-icon nc-bell-55\",\n  //   component: Notifications,\n  //   layout: \"/site\",\n  // },\n];\n\nexport default HSRoutesNew;\n","import React from \"react\";\nimport { Document, Page, Text, View, StyleSheet } from \"@react-pdf/renderer\";\n\nconst SitePDF = ({ site, client }) => {\n//   const getAge = (demos) => {\n//     let monthIndex =\n//       demos.dob.substring(0, 1) === \"0\"\n//         ? parseInt(demos.dob.substring(1, 2)) - 1\n//         : parseInt(demos.dob.substring(0, 2)) - 1;\n//     let today = new Date();\n//     let birthDate = new Date(\n//       demos.dob.substring(4),\n//       monthIndex,\n//       demos.dob.substring(2, 4)\n//     );\n//     let age = today.getFullYear() - birthDate.getFullYear();\n//     let m = today.getMonth() - birthDate.getMonth();\n//     if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n//       age = age - 1;\n//     }\n//     return age;\n//   };\n\nconst data = {\n    maintainAspectRatio: false,\n    responsive: false,\n    labels: [\"a\", \"b\", \"c\", \"d\"],\n    datasets: [\n      {\n        data: [300, 50, 100, 50],\n        backgroundColor: ['red', 'white'],\n        hoverBackgroundColor: ['red', 'white']\n      }\n    ]\n  };\n\n  const today = new Date();\n\n  const time =\n    today.getHours() > 12\n      ? `${today.getHours() - 12}:${today.getMinutes()} PM`\n      : `${today.getHours()}:${today.getMinutes()} AM`;\n\n  return (\n    <Document title={site.name}>\n      <Page size=\"A4\" style={styles.page}>\n        <Text style={{ fontSize: 28 }}>Show: {site.name}</Text>\n        <Text style={{ position: \"absolute\", top: \"10\", right: \"20\", fontSize: 28 }}>Client: {client.name}</Text>\n        {/* <Text style={{ fontSize: 16 }}>\n          Phone: ({testsLab.contact_phone.substring(0, 3)}){\" \"}\n          {testsLab.contact_phone.substring(3, 6)}-\n          {testsLab.contact_phone.substring(6)}\n        </Text> */}\n        <View style={{ ...styles.hr, marginTop: 10, marginBottom: 20 }} />\n        <Text style={{ fontSize: 16, borderBottomColor: 'black', borderBottomWidth: 1, textAlign: 'center', width: '25%', marginLeft: 'auto', marginRight: 'auto' }}>Date Show Started</Text>\n        <Text style={{ fontSize: 20, marginLeft: 'auto', marginRight: 'auto' }}>{new Date(site.createdAt).toString().substring(0, 15)}</Text>\n        <Text style={{ fontSize: 16, borderBottomColor: 'black', borderBottomWidth: 1, textAlign: 'center', width: '25%', marginLeft: 'auto', marginRight: 'auto', marginTop: '10' }}>Today's Date</Text>\n        <Text style={{ fontSize: 20, marginLeft: 'auto', marginRight: 'auto' }}>{new Date().toString().substring(0, 15)}</Text>\n        <View>\n        <Doughnut data={data} />\n        </View>\n        {/* <View style={styles.patientInfo}>\n          <View style={styles.infoCol}>\n            <Text style={styles.infoText}>Patient:</Text>\n            <Text style={styles.infoText}>Patient #:</Text>\n            <Text style={styles.infoText}>Doctor:</Text>\n            <Text style={styles.infoText}>Phone:</Text>\n          </View> */}\n          {/* <View style={styles.infoCol}>\n            <Text style={styles.infoText}>\n              {demos.lastName.substring(0, 1)}\n              {demos.lastName.substring(1).toLowerCase()},{\" \"}\n              {demos.firstName.substring(0, 1)}\n              {demos.firstName.substring(1).toLowerCase()}\n            </Text>\n            <Text style={styles.infoText}>NA</Text>\n            <Text style={styles.infoText}>{testsLab.lab_director}</Text>\n            <Text style={styles.infoText}>{test.phoneNumber}</Text>\n          </View> */}\n          {/* <View style={styles.infoCol}>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={styles.infoText}>Birth:</Text>\n            <Text style={styles.infoText}>Age:</Text>\n            <Text style={styles.infoText}>Gender:</Text>\n          </View> */}\n          {/* <View style={styles.infoCol}>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={styles.infoText}>\n              {demos.dob.substring(0, 2) +\n                \"/\" +\n                demos.dob.substring(2, 4) +\n                \"/\" +\n                demos.dob.substring(4)}\n            </Text>\n            <Text style={styles.infoText}>{getAge(demos)}</Text>\n            <Text style={styles.infoText}>\n              {demos.sex === \"F\" ? \"Female\" : \"Male\"}\n            </Text>\n          </View> */}\n          {/* <View style={styles.infoCol}>\n            <Text style={styles.infoText}>Accession:</Text>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={styles.infoText}>Collection Date:</Text>\n            <Text style={styles.infoText}>Received Date:</Text>\n          </View> */}\n          {/* <View style={styles.infoCol}>\n            <Text style={styles.infoText}>{test.barcode}</Text>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={styles.infoText}>\n              {test.createdAt.substring(5, 7) +\n                \"/\" +\n                test.createdAt.substring(8, 10) +\n                \"/\" +\n                test.createdAt.substring(0, 4)}\n            </Text>\n            <Text style={styles.infoText}>\n              {test.createdAt.substring(5, 7) +\n                \"/\" +\n                test.createdAt.substring(8, 10) +\n                \"/\" +\n                test.createdAt.substring(0, 4)}\n            </Text>\n          </View> */}\n        {/* </View> */}\n\n        {/* <View style={styles.address}>\n          <Text style={styles.infoText}>\n            {demos.lastName.substring(0, 1)}\n            {demos.lastName.substring(1).toLowerCase()},{\" \"}\n            {demos.firstName.substring(0, 1)}\n            {demos.firstName.substring(1).toLowerCase()}\n          </Text>\n          <Text style={styles.infoText}>\n            {demos.street2 ? demos.street + \" \" + demos.street2 : demos.street}\n          </Text>\n          <Text style={styles.infoText}>\n            {demos.city + \", \" + demos.state + \" \" + demos.zip.substring(0, 5)}\n          </Text>\n        </View> */}\n\n        {/* <View style={styles.hr} />\n        <View style={styles.patientInfo}>\n          <View style={styles.infoCol}>\n            <Text style={styles.infoText}>Test Name</Text>\n            <Text style={styles.infoText}>2019-nCoV rRT-PCR</Text>\n            <Text style={styles.infoText}>2019-nCoV</Text>\n          </View>\n          <View style={styles.infoCol}>\n            <Text style={styles.infoText}>Result</Text>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={styles.infoText}>\n              {test.result.toLowerCase() === \"positive\"\n                ? \"Detected\"\n                : \"Not Detected\"}\n            </Text>\n          </View>\n          <View style={styles.infoCol}>\n            <Text style={styles.infoText}>Units</Text>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n          </View>\n          <View style={styles.infoCol}>\n            <Text style={styles.infoText}>Flag</Text>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n          </View>\n          <View style={styles.infoCol}>\n            <Text style={styles.infoText}>Reference Range/Cutoff</Text>\n            <Text style={{ fontSize: 12, opacity: 0 }}>fake</Text>\n            <Text style={styles.infoText}>\n              {test.result.toLowerCase() === \"positive\"\n                ? \"Detected\"\n                : \"Not Detected\"}\n            </Text>\n          </View>\n        </View>\n        <View style={{ ...styles.hr, opacity: 0.75, marginBottom: 20 }} />\n        <View\n          style={{ ...styles.patientInfo, marginVertical: 0, width: \"90%\" }}\n        >\n          <Text\n            style={{ ...styles.infoText, fontWeight: \"200\", marginRight: 20 }}\n          >\n            Notes:\n          </Text>\n          <Text\n            style={{ ...styles.infoText, fontWeight: \"200\", marginRight: 10 }}\n          >\n            {testsLab.testing_notes}\n          </Text>\n        </View> */}\n        {/* <View\n          style={{\n            ...styles.infoCol,\n            alignSelf: \"center\",\n            alignItems: \"center\",\n            marginTop: 20,\n          }}\n        >\n          <Text style={{ ...styles.infoText, fontFamily: \"Times-Bold\" }}>\n            CLIA #{testsLab.clia_number}\n          </Text>\n          <Text style={{ ...styles.infoText, fontFamily: \"Times-Bold\" }}>\n            Laboratory Director: Dr. {testsLab.lab_director}\n          </Text>\n        </View> */}\n\n        {/* <View\n          style={{\n            position: \"absolute\",\n            bottom: \"75\",\n            left: \"20\",\n            width: \"100%\"\n          }}\n        >\n          <View style={{ ...styles.hr }} />\n          <View style={{ display: \"flex\", flexDirection: \"row\" }}>\n            <View style={{display: 'flex', flexDirection: 'column'}}>\n              <Text\n                style={{\n                  ...styles.infoText,\n                  fontWeight: \"200\",\n                  fontSize: 10,\n                  marginRight: 20,\n                }}\n              >\n                Originally Reported On:{\" \"}\n                {test.createdAt.substring(5, 7) +\n                  \"/\" +\n                  test.createdAt.substring(8, 10) +\n                  \"/\" +\n                  test.createdAt.substring(0, 4)}\n              </Text>\n              <Text\n                style={{\n                  ...styles.infoText,\n                  fontWeight: \"200\",\n                  fontSize: 10,\n                  marginRight: 20\n                }}\n              >\n                Printed:{\" \"}\n                {today.getMonth() +\n                  \"/\" +\n                  today.getDate() +\n                  \"/\" +\n                  today.getFullYear()}{\" \"}\n                {time}\n              </Text>\n              <Text\n                style={{\n                  ...styles.infoText,\n                  fontWeight: \"200\",\n                  marginRight: 20,\n                  fontSize: 10\n                }}\n              >\n                (UTC-08:00) Pacific Time (US & Canada)\n              </Text>\n            </View>\n            <View style={{display: 'flex', flexDirection: 'column', justifyContent: 'flex-end'}}>\n              <Text style={{ ...styles.infoText, fontSize: 10 }}>\n                STAT[S] Corrected [C] Amended [A]\n              </Text>\n            </View>\n            <View style={{display: 'flex', flexDirection: 'column', alignItems: 'flex-end'}}>\n                <Text style={{...styles.infoText, fontSize: 10 }}>Accession: {test.barcode}    Patient #: N/A</Text>\n                <Text style={{...styles.infoText, fontSize: 10 }}>Lab Results for: {demos.lastName}, {demos.firstName}</Text>\n                <Text style={{...styles.infoText, fontSize: 10 }}>Page: 1/1</Text>\n            </View> */}\n          {/* </View> */}\n        {/* </View> */}\n      </Page>\n    </Document>\n  );\n};\n\nconst styles = StyleSheet.create({\n  page: {\n    flex: 1,\n    backgroundColor: \"white\",\n    paddingVertical: 10,\n    paddingHorizontal: 20,\n  },\n  infoText: {\n    fontSize: 12,\n  },\n  patientInfo: {\n    flexDirection: \"row\",\n    justifyContent: \"space-around\",\n  },\n  infoCol: {\n    flexDirection: \"column\",\n    justifyContent: \"space-evenly\",\n  },\n  hr: {\n    borderBottomColor: \"black\",\n    borderBottomWidth: 1,\n    width: \"100%\",\n  },\n  address: {\n    marginLeft: 50,\n    marginVertical: 20,\n  },\n});\n\nexport default SitePDF;\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\nimport React, { Component, useEffect, useState, useLayoutEffect } from \"react\";\nimport { useLocation, NavLink } from \"react-router-dom\";\n\nimport { Nav } from \"react-bootstrap\";\nimport { logoImage, CONFIG } from \"constant\";\n\nimport logo from \"assets/img/reactlogo.png\";\nimport API from \"api\";\nimport { useRendersCount } from \"react-use\";\n\nfunction SiteSidebarNew({ color, image, routes, user, pendingTests, siteID , invalidTests, setTestFilter, testFilter }) {\n  const location = useLocation();\n  const [tests, setTests] = useState([]);\n\n  const activeRoute = (routeName) => {\n    return location.pathname.indexOf(routeName) > -1 ? \"active\" : \"\";\n  };\n\n  const isUserAllowed = (user, roles) => {\n    let allowed = false;\n    roles.forEach((role) => {\n      if (user?.[role]()) {\n        allowed = true;\n      }\n    });\n    return allowed;\n  };\n\n  useEffect(() => {\n    // console.log(pendingTests.length);\n  }, [pendingTests]);\n\n  const handleNavClick = () => {\n    if (testFilter) setTestFilter(null);\n  };\n\n  return (\n    <div className=\"sidebar\" data-image={image} data-color={color}>\n      <div\n        className=\"sidebar-background\"\n        style={{\n          backgroundImage: \"url(\" + image + \")\",\n        }}\n      />\n      <div className=\"sidebar-wrapper\">\n        <div className=\"logo d-flex align-items-center justify-content-start\">\n          {/* <a\n            href=\"https://www.creative-tim.com?ref=lbd-sidebar\"\n            className=\"simple-text logo-mini mx-1\"\n          >\n            <div className=\"logo-img\">\n              <img\n                src={require(\"assets/img/reactlogo.png\").default}\n                alt=\"...\"\n              />\n            </div>\n          </a> */}\n          <a className=\"simple-text\" href={CONFIG.baseurl} target=\"_blank\">\n            {/* <img src={require(\"assets/img/safecamp_BRAND.1-nobg.png\").default} alt=\"...\" style={{ width: 240 }} /> */}\n            <img src={logoImage} alt=\"...\" style={{ width: 240 }} />\n          </a>\n        </div>\n        <Nav>\n          \n          {routes.map((prop, key) => {\n            if (!prop.redirect)\n              return (\n                <li className={prop.upgrade ? \"active active-pro\" : activeRoute(prop.layout + prop.path)} key={key}>\n                  <NavLink\n                    to={prop.layout + prop.path.replace(':siteID' , siteID) }\n                    className=\"nav-link\"\n                    activeClassName=\"active\"\n                    onClick={handleNavClick}\n                  >\n                    <i className={prop.icon} />\n                    <p>\n                      {prop.name}{\" \"}\n                      {(prop.name === \"Pending Release\" || prop.name === \"Inconclusive\") &&\n                        (pendingTests.length > 0 || invalidTests.length > 0) && (\n                          <span className=\"sidebarListing-badge\">\n                            {prop.name === \"Pending Release\" ? pendingTests.length : invalidTests.length}\n                          </span>\n                        )}\n                    </p>\n                  </NavLink>\n                </li>\n              );\n            return null;\n          })}\n        </Nav>\n      </div>\n    </div>\n  );\n}\n\nexport default SiteSidebarNew;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport API from \"api\";\n// react-bootstrap components\nimport DashboardLineChart from \"./DashboardLineChart\";\nimport DashboardPieChart from \"./DashboardPieChart\";\nimport DashboardBarChart from \"./DashboardBarChart\";\nimport DashboardChartTotalTestsDataCard from \"./DashboardChartTotalTestsData\";\n\nimport { AppContext } from \"context/app-context\";\nimport { connectedIDInLocalStorage, formateDateLL } from \"utils\";\nimport ClientsDashboard from \"./ClientsDashboard\";\n\n\n\nconst HSDashboard = (props) => {\n\n    const { site } = props;\n\n    const [totalTestCounts, setTotalCounts] = useState('');\n\n    const [summaryData, setSummaryData] = useState({ positiveTests: 0, negativeTests: 0, totalTests: 0, inconclusiveTests: 0, positiveTest: null });\n    const appContext = useContext(AppContext);\n    const connectedIDFromRoute = window.location?.pathname?.split(\"/\").pop();\n    const [routingPathBasedMedFlow, setRoutingPathBasedMedFlow] = useState({\n        userType: \"E\",\n        siteID:\n            connectedIDFromRoute.toLowerCase() !== \"admin\" ? connectedIDFromRoute : connectedIDInLocalStorage.get() || \"A\",\n    });\n\n    useEffect(() => {\n        loadSummaryData();\n    }, []);\n\n    const loadSummaryData = async () => {\n        const connectedID = routingPathBasedMedFlow.siteID || connectedIDInLocalStorage.get() || \"A\";\n\n        const data = await API.getSummaryFromPG({ siteID: connectedID });\n        let newObj = {};\n        if (data.rows.length > 0) {\n\n            // newObj = { ...summaryData };\n            newObj = data.rows.reduce((obj, item) => {\n                if (item[\"result\"] === \"Negative\" || item[\"result\"] === \"negative\"  ) {\n                    obj.negativeTests = parseInt(item[\"count\"]);\n                }\n                if (item[\"result\"] === \"Inconclusive\" || item[\"result\"] ===\"inconclusive\") {\n                    obj.inconclusiveTests = parseInt(item[\"count\"]);\n                }\n                if (item[\"result\"] === \"\" || item[\"result\"] === \"pending\") {\n                    obj.pendingTests = parseInt(item[\"count\"]);\n                }\n                obj.totalTests =  obj.pendingTests + obj.inconclusiveTests +  obj.negativeTests ;\n       \n                return obj;\n            }, summaryData);\n            \n        }\n\n        if (data.positiveTest.length > 0) {\n            const positiveTestsData = data.positiveTest;\n            const realPositive = positiveTestsData.filter((t) => t.status !== \"Pending\");\n            if (realPositive.length > 0) {\n                newObj.positiveTest = realPositive[0]  ;\n                newObj.positiveTests = realPositive.length || realPositive[0];\n            }\n            newObj.totalTests = (newObj.totalTests || 0) + parseInt(positiveTestsData.length);\n        }\n        setSummaryData({ ...newObj });\n       totalCounts(newObj)\n       \n    };\n\n    const showStartDate = (startDate) => {\n        if (startDate) {\n            return new Date(startDate).toDateString();\n        }\n        return \"N/A\";\n    };\n\n    const getShowRunningDays = (startDate) => {\n        if (startDate) {\n            return Math.ceil((new Date() - new Date(startDate).getTime()) / (1000 * 3600 * 24));\n        }\n        return \"N/A\";\n    };\n\n    const lastPositiveTestDate = (testDate) => {\n        if (!testDate) return \"N/A\";\n        const date = new Date(testDate);\n        const currentDate = new Date();\n        const dayLastPositive = Math.floor((currentDate.getTime() - date.getTime()) / (1000 * 3600 * 24));\n        return `${date.toDateString()} (${dayLastPositive} days ago)`;\n    };\n\n    const totalTestOfShow = (tests) => {\n        const ids = tests\n            .filter((test) => test.result?.toLowerCase() === \"positive\" && test.status.toLowerCase() === \"pending\")\n            .map((t) => t.id);\n        return tests.filter((t) => !ids.includes(t.id)).length;\n    };\n\n\n    const totalCounts = (testCountsObj) => {\n        if (site) {\n            testCountsObj.siteName = site?.name;\n            testCountsObj.startDate = showStartDate(site?.startDate);\n            testCountsObj.showRunningDays = getShowRunningDays(site?.startDate);\n            testCountsObj.lastPositive = formateDateLL(summaryData?.positiveTest?.createdAt);\n        }\n\n        setTotalCounts(testCountsObj);\n    };\n\n    return (\n\n        <div className=\"dashboard-wrapper bg-transparent\">\n            <div className=\"container-fluid mb-3\">\n                <h4 className=\"mt-0\">Show Summary</h4>\n                <div className=\"row hs-dashboard-wrapper\">\n                    <div className=\"col-12 col-sm-12 col-md-6 col-xl-4\">\n                        <div className=\"card bg-start-date\">\n                            <div className=\"card-body p-0\">\n                                <span>Show Start Date</span>\n                                <p className=\"mb-0\">{totalTestCounts?.startDate || \"-\"}</p>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"col-12 col-sm-12 col-md-6 col-xl-4\">\n                        <div className=\"card bg-start-date bg-running-days\">\n                            <div className=\"card-body p-0\">\n                                <span>Show Running Days</span>\n                                <p className=\"mb-0\">{totalTestCounts?.showRunningDays || 0}</p>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"col-12 col-sm-12 col-md-6 col-xl-4\">\n                        <div className=\"card bg-start-date last-p-test\">\n                            <div className=\"card-body p-0\">\n                                <span>Last Positive Test</span>\n                                <p className=\"mb-0\">{totalTestCounts?.lastPositive || \"No Positive Tests\"}</p>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <DashboardChartTotalTestsDataCard totalTestCounts={totalTestCounts} />\n            </div>\n            <div className=\"dashboard-wrapper\">\n                <div className=\"container-fluid\">\n                    <div className=\"row\">\n                        <div className=\"col-12 col-md-6 col-lg-6 col-sm-12 col-xl-4\">\n                            <div className=\"bg-white rounded-3 pt-3 position-relative box-height\">\n                                <DashboardBarChart statsType={'sitestats'} statsTitle=\"Date Wise Stats\" connectedID={routingPathBasedMedFlow.siteID} />\n                            </div>\n                        </div>\n\n                        <div className=\"col-12 col-md-6 col-lg-6 col-sm-12 col-xl-4\">\n                            <div className=\"bg-white rounded-3 pt-3 position-relative box-height\">\n                                <div className=\"box-inner-height\">\n                                    <DashboardLineChart statsType={'sitestats'} statsTitle=\"Test-Type Wise Stats\" connectedID={routingPathBasedMedFlow.siteID} />\n                                </div>\n                            </div>\n                        </div>\n\n                        <div className=\"col-12 col-md-6 col-lg-6 col-sm-12 col-xl-4\">\n                            <div className=\"bg-white rounded-3 pt-3 position-relative box-height\">\n                                <DashboardPieChart statsType={'sitestats'} statsTitle=\"Site Stats\" chartData={totalTestCounts} connectedID={routingPathBasedMedFlow.siteID} />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            {/* <ClientsDashboard /> */}\n        </div>\n\n    );\n};\n\n\n\nexport default HSDashboard;\n\n\n\n\n\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\nimport React, { Component, useState, useEffect, useLayoutEffect } from \"react\";\nimport { useLocation, Route, Switch } from \"react-router-dom\";\nimport AdminNavbar from \"components/Navbars/AdminNavbar\";\nimport localApi from \"api\";\nimport GQAPI from \"views/GraphQL/gqApi\";\nimport { AppContext } from \"../context/app-context\";\nimport siteRoutes from \"routes/HSRoutes\";\nimport sidebarImage from \"assets/img/sidebar-3.jpg\";\nimport { Hub, Auth, Storage, API, graphqlOperation } from \"aws-amplify\";\nimport * as subscriptions from \"graphql/subscriptions\";\nimport { Test, Employee, TestConsent, EmployeeBarCodes, ExternalTest, Site } from \"../models\";\nimport { formatTest, medFlowInLocalStorage, formatExternalTest, roleInLocalStorage } from \"utils\";\nimport TableListApi from \"views/GraphQL/TableListApi\";\nimport api from \"api\";\nimport { useIdleTimer } from \"react-idle-timer\";\nimport IdleModal from \"components/IdleModal\";\nimport { useHistory } from \"react-router-dom\";\nimport { debounce } from \"debounce\";\nimport { AMAZON_CLIENT_RESULT, RESULT_PDF, RESULT_CHECK, ROUTES, CONFIG } from \"../constant\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport { DataStore, syncExpression } from \"@aws-amplify/datastore\";\nimport moment from \"moment\";\nimport Loader from \"components/Loader/Loader\";\nimport { showsInSS } from \"utils\";\nimport HSRoutesNew from \"routes/HSRoutesNew\";\nimport HealthAndSafetyDashBoard from \"views/GraphQL/HealthAndSafetyDashboard\";\nimport SiteSidebarNew from \"components/Sidebar/SiteSideBarNew\";\nimport { connectedIDByURL } from \"utils\";\nimport HSDashboard from \"views/DashboardCharts/HSDashboard\";\n\nfunction SiteNew() {\n  const timeout = 1800000;\n  const [showIdleModal, setShowIdleModal] = useState(false);\n  const [remaining, setRemaining] = useState(timeout);\n  const [elapsed, setElapsed] = useState(0);\n  const [lastActive, setLastActive] = useState(+new Date());\n  const [lastEvent, setLastEvent] = useState(\"Events Emitted on Leader\");\n  const [leader, setLeader] = useState(true);\n  const [timedOut, setTimedOut] = useState(false);\n  const [showAlert, setShowAlert] = useState(false);\n  const [successMessageText, setSuccessMessageText] = useState(\"\");\n  const [errorMessageText, setErrorMessageText] = useState(\"\");\n  const [pageState, setPageState] = useState(\"New\");\n  const [role, setRole] = useState(null);\n  //const connectedID = window.location?.pathname?.split('/').pop();\n\n  let getConnectedID = connectedIDByURL(window.location.pathname);\n  // console.log(\"connectedID getConnectedID: \" , getConnectedID);\n  const connectedID = getConnectedID.connectedID;\n  // console.log(\"connectedID: \" , connectedID);\n\n  const [routingPathBasedMedFlow, setRoutingPathBasedMedFlow] = useState({\n    userType: \"E\",\n    connectedId: connectedID,\n    siteID: connectedID,\n  });\n\n  useLayoutEffect(() => {\n    let userType = routingPathBasedMedFlow?.userType || medFlowInLocalStorage.get();\n    if (!userType || userType === null) handleLogOut();\n  }, []);\n\n  useEffect(() => {\n    let roleSelected = roleInLocalStorage.get();\n    setRole(roleSelected);\n  }, []);\n\n  let history = useHistory();\n\n  const handleCloseModal = () => {\n    setShowIdleModal(false);\n  };\n\n  const handleLogOut = async () => {\n    setShowIdleModal(false);\n    try {\n      await DataStore.clear();\n      await Auth.signOut();\n      medFlowInLocalStorage.clear();\n      // console.log(\"PAUSED\");\n      handlePause();\n      history.push(\"/login\");\n    } catch (error) {\n      console.log(\"Error signing out: \", error);\n    }\n  };\n\n  const handleOnIdle = (event) => {\n    setShowIdleModal(true);\n  };\n\n  const handleOnActive = (event) => {\n    setTimedOut(false);\n  };\n\n  const handleOnAction = (event) => {\n    setTimedOut(false);\n  };\n\n  const handleReset = () => reset();\n  const handlePause = () => pause();\n  const handleResume = () => resume();\n  const handleStart = () => start();\n\n  const { pause, resume, start } = useIdleTimer({\n    timeout,\n    onActive: handleOnActive,\n    onIdle: handleOnIdle,\n    onAction: handleOnAction,\n    debounce: 500,\n    crossTab: {\n      emitOnAllTabs: false,\n    },\n  });\n\n  useEffect(() => {\n    // window.addEventListener(\"beforeunload\", removeUserFromLC);\n    DataStore.stop();\n    // return () => {\n    //   window.removeEventListener(\"beforeunload\",removeUserFromLC);\n    // };\n  }, []);\n\n  useEffect(() => {\n    if (showIdleModal) {\n      const timeout = setTimeout(() => {\n        if (showIdleModal) {\n          handleLogOut();\n        }\n      }, 60000); // TODO: - This time is the extra time you want to see how long they're idle for until they get logged out 300000\n      return () => clearTimeout(timeout);\n    }\n  }, [showIdleModal]);\n\n  const [image, setImage] = React.useState(sidebarImage);\n  const [color, setColor] = React.useState(process.env.REACT_APP_COLOR);\n  const [hasImage, setHasImage] = React.useState(true);\n  const [userRoutes, setUserRoutes] = React.useState([]);\n  const [users, setUsers] = React.useState([]);\n  const [clients, setClients] = React.useState([]);\n  const [sites, setSites] = React.useState([]);\n  const [admins, setAdmins] = React.useState([]);\n  const [pendingTests, setPendingTests] = React.useState([]);\n  const [invalidTests, setInvalidTests] = React.useState([]);\n  const [completedTests, setCompletedTests] = React.useState([]);\n  const [unprocessedTests, setUnprocessedTests] = React.useState();\n  const [unSubmittedTests, setUnsubmittedTests] = React.useState();\n  const [externalTest, setExternalTest] = useState([]);\n  const [newTests, setNewTests] = React.useState([]);\n  const [totalTests, setTotalTests] = React.useState([]);\n  const [adminTotalTests, setAdminTotalTests] = React.useState([]);\n  const [userSite, setUserSite] = React.useState(null);\n  const [userSiteName, setUserSiteName] = React.useState(null);\n  const [loading, setLoading] = React.useState(true);\n  const [testFilter, setTestFilter] = useState(null);\n  const [eventObject, setEventObject] = useState(0);\n  const [testObject, setTestObject] = useState(0);\n  const [isShowUpdated, setIsShowUpdated] = useState(null);\n\n  const location = useLocation();\n  const mainPanel = React.useRef(null);\n\n  const getRoutes = (routes) => {\n    return routes.map((prop, key) => {\n      if (prop.layout === \"/site\") {\n        return <Route path={prop.layout + prop.path} render={(props) => <prop.component {...props} />} key={key} />;\n      } else {\n        return null;\n      }\n    });\n  };\n\n  const fetchUserGroups = async () => {\n    const admins = await localApi.fetchAllUsersInGroup(\"Admins\");\n    const sites = await localApi.fetchAllUsersInGroup(\"Sites\");\n    const testers = await localApi.fetchAllUsersInGroup(\"Testers\");\n    const employers = await localApi.fetchAllUsersInGroup(\"Employers\");\n    const clients = await localApi.fetchAllUsersInGroup(\"Clients\");\n    return Promise.all([admins, sites, testers, employers, clients]).then((values) => [\n      admins,\n      sites,\n      testers,\n      employers,\n      clients,\n    ]);\n  };\n\n  const fetchAdmins = async () => {\n    const admins = await localApi.fetchUsersInGroup(\"Admins\");\n    return admins;\n  };\n\n  const fetchClients = async () => {\n    const models = await localApi.getClients();\n    setClients(models);\n  };\n\n  const fetchSites = async () => {\n    const models = await localApi.getSites();\n    // setSites(models.filter((s) => s.isArchive === false));\n    setSites(models);\n  };\n\n  const fetchSitesByUser = async (siteID) => {\n    const models = await localApi.getUserSiteData(siteID);\n    setUserSite(models[0]);\n    setUserSiteName(models[0]?.name);\n    return models;\n  };\n\n  const fetchSitesByClient = async (clientID) => {\n    const models = await localApi.getSitesByClient(clientID);\n    return models;\n  };\n\n  const findTotalTestsBySites = async (sites) => {\n    const passFailClients = await localApi.getResultClients();\n    const tests = [];\n    sites.forEach((site) => {\n      return site?.tests.map((test) => {\n        return tests.push(formatTest(test, passFailClients));\n      });\n    });\n    setTotalTests(tests);\n\n    return tests;\n  };\n\n  const fetchExternalTests = async () => {\n    const models = await localApi.getExternalTest();\n\n    setExternalTest(models.map((t) => formatExternalTest(t)));\n  };\n\n  const updatedShow = (obj) => {\n    if (obj) {\n      setIsShowUpdated(obj);\n    } else {\n      setIsShowUpdated(null);\n    }\n  };\n\n  const getClientName = (id) => {\n    if (!id) return \"\";\n    if (clients) {\n      const client = clients.find((c) => c.id === id);\n      if (client) return client.name;\n    }\n    return \"\";\n  };\n\n  const parseResult = (test) => {\n    if (!test) return \"\";\n    if (test.resultDetails !== null) return \"View Detail\";\n    if (!test.result) return \"\";\n    if (clients) {\n      const client = clients.find((c) => c.id === test.clientID);\n      if (client && client.resultType === \"P/F\") {\n        return AMAZON_CLIENT_RESULT[test.result];\n      }\n    }\n\n    return test.result && test.result.charAt(0).toUpperCase() + test.result.slice(1);\n  };\n\n  const parseTestResultForPDF = (test) => {\n    if (!test) return \"\";\n\n    if (clients) {\n      const client = clients.find((c) => c.id === test.clientID);\n      if (client && client.resultType === \"P/F\") {\n        return AMAZON_CLIENT_RESULT[test.result];\n      }\n    }\n\n    return test.result && RESULT_PDF[test.result.toLowerCase()];\n  };\n\n  const getEmployeeByID = async (id) => {\n    const emp = await localApi.getEmployeeByID(id);\n    return emp;\n  };\n\n  const fetchPendingTests = async (ids) => {\n    if (ids) {\n      const newList = pendingTests.filter((t) => ids.indexOf(t.id) === -1 && (t.invalidResultStatus || 0) === 0);\n      setPendingTests(newList);\n      return;\n    }\n    const params = { pendingRelease: \"Pending\" };\n\n    Object.assign(params, { siteID: routingPathBasedMedFlow?.siteID || \"E\" });\n\n    const models = await localApi.getTestListFromPG(params);\n\n    const tests = models.rows\n      .map((test) => {\n        return formatTest(test);\n      })\n      .filter((f) => (f.invalidResultStatus || 0) === 0);\n    setPendingTests(tests);\n  };\n\n  const fetchAllAdminTests = async () => {\n    const passFailClients = await localApi.getResultClients();\n    const models = await localApi.getTotalAdminTests();\n    const tests = models.map((test) => {\n      return formatTest(test, passFailClients);\n    });\n    setAdminTotalTests(tests);\n  };\n\n  const onSubscriptionTrigger = debounce(() => refreshDataOnSubscribe(), 6000);\n\n  const refreshDataOnSubscribe = () => {\n    console.log(\"Refresh Data\");\n    const userType = routingPathBasedMedFlow?.userType || \"E\";\n    if (userType === \"E\") {\n      fetchNewTests();\n    }\n  };\n\n  const fetchNewTests = async () => {\n    const models = await localApi.getCurrentLabUserTests();\n    setNewTests(models);\n    return models;\n  };\n\n  const [user, setUser] = useState();\n\n  useEffect(() => {\n    if (!testObject) return;\n    const eventType = testObject.opType;\n    const model = formatTest(testObject.element);\n    const result = model.result;\n\n    if (result && result.toLowerCase() === RESULT_CHECK[result.toLowerCase()]) {\n      const newList = [...pendingTests];\n      const index = pendingTests.findIndex((t) => t.id === model.id);\n\n      if (\n        (eventType === \"DELETE\" || (model.status === \"Processed\" && result.toLowerCase() === \"positive\")) &&\n        index !== -1\n      ) {\n        newList.splice(index, 1);\n      } else if (\n        (eventType === \"INSERT\" || eventType === \"UPDATE\") &&\n        index === -1 &&\n        (model.status === \"Pending\" || result.toLowerCase() === \"inconclusive\" || result.toLowerCase() === \"invalid\")\n      ) {\n        newList.unshift(model);\n      } else if (eventType === \"UPDATE\" && index !== -1) {\n        newList.splice(index, 1, model);\n      }\n      setPendingTests(newList.filter((f) => (f.invalidResultStatus || 0) === 0));\n    }\n  }, [testObject]);\n\n  React.useEffect(() => {\n    let subscription = null;\n    let apiSubscription = null;\n    let showSubscription = null;\n    const userType = routingPathBasedMedFlow?.userType || \"E\";\n\n    if (userType === \"E\") {\n      setUserRoutes(HSRoutesNew);\n    }\n\n    const getUSer = async () => {\n      const days = 2;\n      const date = moment().subtract(days, \"days\").format(\"YYYY-MM-DD\");\n      const user = await localApi.getCurrentUser();\n      let syncExpressionsByUserType = [];\n      if (user) {\n        if (user.isAdmin() || user.isSite()) {\n          syncExpressionsByUserType = [\n            syncExpression(TestConsent, () => {\n              return (test) => test.employeeID(\"eq\", \"123\");\n            }),\n            syncExpression(EmployeeBarCodes, () => {\n              return (emp) => emp.employeeID(\"eq\", \"123\");\n            }),\n            syncExpression(Employee, () => {\n              return (test) => test.id(\"eq\", \"123\");\n            }),\n            syncExpression(ExternalTest, () => {\n              return (test) => test.id(\"eq\", \"000\");\n            }),\n          ];\n          if (user.isAdmin()) {\n            syncExpressionsByUserType.push(\n              syncExpression(Test, () => {\n                return (test) => test.status(\"ne\", \"Processed\");\n              })\n            );\n          }\n\n          DataStore.configure({\n            maxRecordsToSync: 90000,\n            syncPageSize: 2000,\n            syncExpressions: syncExpressionsByUserType,\n          });\n          DataStore.start();\n          setUser(user);\n          handleStart();\n        } else {\n          setLoading(false);\n          setShowAlert(true);\n        }\n      } else {\n        setLoading(false);\n        console.log(\"push to login\");\n        history.push(\"/login\");\n      }\n    };\n    getUSer().then((res) => {\n      subscription = DataStore.observe(Test).subscribe((msg) => {\n        const noSubs = ROUTES.some((r) => window.location.href.includes(r));\n        if (noSubs) return;\n        const userType = routingPathBasedMedFlow?.userType || \"E\";\n        const connectedID = routingPathBasedMedFlow?.siteID || \"E\";\n        if (userType === \"E\" && msg.element.siteID === connectedID) {\n          setEventObject(msg);\n        }\n        onSubscriptionTrigger();\n      });\n      showSubscription = DataStore.observe(Site).subscribe((msg) => {\n        updatedShow(msg.element);\n        fetchSites();\n      });\n      apiSubscription = API.graphql(graphqlOperation(subscriptions.onUpdateTest)).subscribe({\n        next: ({ value: { data }, value }) => {\n          console.log(\"Here are in event\");\n          const userType = routingPathBasedMedFlow?.userType || \"E\";\n          const connectedID = routingPathBasedMedFlow?.siteID || \"E\";\n\n          let model = data.onUpdateTest;\n          if (userType === \"E\" && model.siteID === connectedID) {\n            setEventObject({ opType: \"UPDATE\", element: model });\n          }\n        },\n        error: (error) => console.warn(error),\n      });\n    });\n    return () => {\n      if (subscription) subscription.unsubscribe();\n      if (apiSubscription) apiSubscription.unsubscribe();\n      if (showSubscription) showSubscription.unsubscribe();\n    };\n  }, []);\n\n  React.useEffect(() => {\n    document.documentElement.scrollTop = 0;\n    document.scrollingElement.scrollTop = 0;\n    // mainPanel.current.scrollTop = 0;\n    if (window.innerWidth < 993 && document.documentElement.className.indexOf(\"nav-open\") !== -1) {\n      document.documentElement.classList.toggle(\"nav-open\");\n      var element = document.getElementById(\"bodyClick\");\n      element.parentNode.removeChild(element);\n    }\n  }, [location]);\n\n  const contextSwitch = (role) => {\n    if (user?.isAdmin()) {\n      return {\n        testObject,\n        user,\n        users,\n        resetUsers: () => setUsers(fetchUserGroups()),\n        clients,\n        resetClients: () => fetchClients(),\n        sites,\n        resetSites: () => fetchSites(),\n        isShowUpdated,\n        sites,\n        resetSites: () => fetchSites(),\n        pendingTests,\n        invalidTests,\n        resetPendingTests: (ids) => fetchPendingTests(ids),\n        // resetInvalidTests: (ids) => fetchInvalidTests(ids),\n        completedTests,\n        unprocessedTests,\n        unSubmittedTests,\n        totalTests,\n        adminTotalTests,\n        externalTest,\n        isSuperAdmin: () => isSuperAdmin(),\n        sendEmailToCrew: (tests) => sendResultOnEmail(tests),\n        resetUnprocessedTests: () => fetchUnprocessedTests(),\n        resetUnSubmittedTests: () => fetchUnSubmittedTests(),\n        resetAllTests: () => refreshDataOnSubscribe(),\n        resetTotalTest: () => fetchAllAdminTests(),\n        resetExternalTest: () => fetchExternalTests(),\n        getSiteName: (id) => getSiteName(id),\n        getSiteName: (id) => getSiteName(id),\n        getSite: (test) => getSite(test),\n        getSiteTests: (id) => getSiteTests(\"a1115b41-a58a-4c0e-8933-38f6d8a085c9\"),\n        getClientTests: (id) => getClientTests(id),\n        admins,\n        newTests,\n        parseResult: (test) => parseResult(test),\n        parseTestResultForPDF: (test) => parseTestResultForPDF(test),\n        getClientName: (id) => getClientName(id),\n        testFilter,\n        setTestFilter: (filter) => setTestFilter(filter),\n        deleteTests: (tests) => deleteTests(tests),\n        showSuccessMessage: (message) => setSuccessMessageText(message),\n        showErrorMessage: (message) => setErrorMessageText(message),\n        getEmployeeID: (id) => getEmployeeByID(id),\n      };\n    }\n  };\n\n  const isSuperAdmin = () => {\n    console.log(\"isSuperAdmin\", user?.isAdmin());\n    if (user?.isAdmin()) {\n      return user?.phone_number === \"+18888888888\" || user?.phone_number === \"+12222222222\";\n    }\n    return false;\n  };\n\n  const getClientTests = (id) => {\n    const clientObj = adminTotalTests.filter((t) => t.clientID === id);\n    return clientObj.length;\n  };\n\n  const getSiteTests = (id) => {\n    const siteObj = adminTotalTests.filter((t) => t.siteID === id);\n    return siteObj.length;\n  };\n\n  const getSiteName = (id) => {\n    const siteObj = sites.find((site) => site.id === id);\n    return siteObj ? siteObj.name : \"NA\";\n  };\n\n  const getSite = async (test) => {\n    let site = sites.find((site) => site.id === test.siteID);\n    if (!site) {\n      site = await localApi.getSiteByID(test?.siteID);\n    }\n\n    if (site && \"logo\" in site && site.logo) {\n      const path = await Storage.get(site.logo);\n      return { ...site, logoSrc: path };\n    }\n    return site;\n  };\n\n  const deleteTests = async (tests) => {\n    if (tests.length === 0) return;\n\n    await GQAPI.deleteWrongTest(tests.map((t) => t.id));\n\n    setSuccessMessageText(`${tests.length} test${tests.length === 1 ? \"\" : \"s\"} were deleted!`);\n  };\n\n  const sendResultOnEmail = async (param, slug) => {\n    if (param.length === 0) return;\n    setLoading(true);\n    let ttlEmails = param.length;\n    try {\n      await GQAPI.sendEmailToPendingRelease(param);\n      const params = { ids: param, userID: user?.sub, userName: user?.name, slug };\n      api.addTestLogs(params);\n\n      setLoading(false);\n      setSuccessMessageText(`Email has been successfully sent to ${ttlEmails} Crew Member`);\n    } catch (error) {\n      console.log(\"error:-\", error.message);\n      setLoading(false);\n      setErrorMessageText(\"Fail to send the Email\");\n    }\n  };\n\n  const siteListener = () => {\n    const hubListener = Hub.listen(\"datastore\", async (hubData) => {\n      const { event } = hubData.payload;\n      if (event === \"ready\") {\n        setUserRoutes(HSRoutesNew);\n        setSites(await fetchSitesByUser(connectedID));\n        fetchPendingTests();\n        fetchSites();\n        // setAdmins(fetchAdmins());\n        // fetchNewTests();\n        setLoading(false);\n        Hub.remove(\"datastore\", hubListener);\n      }\n    });\n  };\n\n  React.useEffect(() => {\n    //user?.isAdmin() && adminListener();\n    user?.isAdmin() && siteListener();\n    user?.isSite() && siteListener();\n  }, [user]);\n\n  return (\n    <>\n      <div className=\"wrapper\">\n        {showAlert && (\n          <SweetAlert\n            show={showAlert}\n            error\n            title=\"Error\"\n            onConfirm={async () => {\n              await Auth.signOut();\n              window.location.reload();\n            }}\n          >\n            Your account does not have access to the Med Flow portal\n          </SweetAlert>\n        )}\n        {successMessageText && (\n          <SweetAlert\n            show={successMessageText ? true : false}\n            success\n            title=\"Success\"\n            onConfirm={() => setSuccessMessageText(\"\")}\n          >\n            {successMessageText}\n          </SweetAlert>\n        )}\n        {errorMessageText && (\n          <SweetAlert\n            show={errorMessageText ? true : false}\n            error\n            title=\"Error\"\n            onConfirm={() => setErrorMessageText(\"\")}\n          >\n            {errorMessageText}\n          </SweetAlert>\n        )}\n        <SiteSidebarNew\n          color={color}\n          image={\"\"}\n          routes={userRoutes}\n          user={user}\n          pendingTests={pendingTests}\n          invalidTests={invalidTests}\n          testFilter={testFilter}\n          setTestFilter={setTestFilter}\n          siteID={connectedID}\n        />\n        <div className=\"main-panel\" ref={mainPanel}>\n          <AdminNavbar\n            routes={userRoutes}\n            completedTests={completedTests}\n            pendingTests={pendingTests}\n            role={role || user?.roles[0]}\n            userSiteName={userSiteName}\n            siteID={connectedID}\n            userType={\"E\"}\n          />\n          {!loading ? (\n            <div className=\"content\">\n              <AppContext.Provider value={contextSwitch(user?.roles[0])}>\n                <Switch>{getRoutes(userRoutes)}</Switch>\n                {window.location.pathname === \"/site/tests/\" + connectedID && user?.isAdmin() && (\n                  //  <HealthAndSafetyDashBoard site={userSite} siteID={connectedID} userType={'E'} />\n                  <HSDashboard site={userSite} siteID={connectedID} userType={\"E\"} />\n                )}\n              </AppContext.Provider>\n            </div>\n          ) : (\n            <Loader />\n          )}\n          {/* <Footer /> */}\n        </div>\n      </div>\n\n      <IdleModal\n        showIdleModal={showIdleModal}\n        animation={true}\n        handleLogOut={handleLogOut}\n        handleCloseModal={handleCloseModal}\n      />\n    </>\n  );\n}\n\nexport default SiteNew;\n","import React, { useState, useEffect, useRef, useMemo } from \"react\";\nimport logoImage from \"assets/img/co_lab-1.png\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport { formateDateLL, formateDatellll } from \"utils\";\nimport { convertToLower, isValidEmail } from \"utils\";\nimport LogoText from \"components/LogoText\";\n\nconst HipaaRegisterStepOne = (props) => {\n  const { show, handleProcced, errorMessageText, linkCrew } = props;\n  const [newUser, setNewUser] = useState({});\n  const [error, setError] = useState(\"\");\n  const [phoneError, setPhoneError] = useState(\"\");\n\n  useEffect(() => {\n    setError(errorMessageText);\n  }, [errorMessageText]);\n\n  const showErrorMessage = (message) => {\n    setError(message);\n    setTimeout(() => setError(\"\"), 2000);\n  };\n\n  const handleKeyDownEvent = (event) => {\n    if (event.key === \"Enter\") {\n      handleSubmit();\n    }\n  };\n\n  const handleSubmit = () => {\n    if (!linkCrew && !newUser.phone?.trim() && !newUser.email?.trim()) {\n      showErrorMessage(\"Phone or Email is Required\");\n      return;\n    }\n    if (!newUser.phone && linkCrew) {\n      showErrorMessage(\"Phone is required\");\n      return;\n    }\n    if (newUser.phone && phoneError) {\n      showErrorMessage(\"Invalid Phone Number\");\n      return;\n    }\n    if (!linkCrew && newUser.email?.trim() && !isValidEmail(newUser.email)) {\n      showErrorMessage(\"Invalid Email\");\n      return;\n    }\n\n    handleProcced(newUser);\n  };\n\n  return (\n    <div className=\"registerFormWrapper\">\n      <div className=\"registerWrapper\">\n        <div className=\"text-center\">\n          <img src={logoImage} alt=\"logo\" className=\"logo-width\" />\n        </div>\n        <div className=\"codeScannerWrapper codeScannerPhoneInput\">\n          <div className=\"registered-successful\">\n            {linkCrew && (\n              <div className={linkCrew ? \"form-group-wrapper mt-5 mb-5\" : \"form-group-wrapper mt-5 mb-0\"}>\n                <label className=\"mb-1\">Phone Number:</label>\n                <PhoneNoInput\n                  error={setPhoneError}\n                  handleChange={(e) => {\n                    setNewUser({ ...newUser, phone: e });\n                  }}\n                  value={newUser.phone}\n                  cssCode=\"w-100\"\n                />\n              </div>\n            )}\n            {!linkCrew && (\n              <>\n                <div className=\"form-group-wrapper mt-5 mb-5\">\n                  <label className=\"mb-1\">Email:</label>\n                  <input\n                    value={newUser.email}\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"Email\"\n                    onKeyDown={handleKeyDownEvent}\n                    onChange={(e) => setNewUser({ ...newUser, email: convertToLower(e.target.value) })}\n                  />\n                </div>\n              </>\n            )}\n            {error && (\n              <div className=\"error-message\">\n                <h6>{error}</h6>\n              </div>\n            )}\n            <div className=\"mt-2 w-50 mx-auto\">\n              <button type=\"submit\" className=\"text-uppercase w-100 btn signup-btn\" onClick={handleSubmit}>\n                Proceed\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default HipaaRegisterStepOne;\n","export const HIPPA_QUESTIONS = [\n  {\n    id: 1,\n    question: \"What does HIPAA stand for? \",\n    options: [\n      \"Helping in Protection Accountability Act\",\n      \"Health Insurance and Portability Accountability Act\",\n      \"Health and Information for Patient Affordable service Act\",\n    ],\n    answer: \"2\",\n  },\n  {\n    id: 2,\n    question: \"What kind of personally identifiable health information is protected by HIPAA privacy rule? \",\n    options: [\"paper\", \"electronic\", \"spoken word\", \"All of the above\"],\n    answer: \"4\",\n  },\n  {\n    id: 3,\n    question: \"HIPAA security and privacy regulations apply to anyone working in the office and Lab\",\n    options: [\"True\", \"False\"],\n    answer: \"1\",\n  },\n  {\n    id: 4,\n    question:\n      \"The Privacy Rule protects all 'individually identifiable health information' held or transmitted in any form whether electronic, paper, or oral Information that relates to a person’s past, present, or future physical or mental health condition. This includes: \",\n    options: [\n      \"physical or mental health condition\",\n      \"provisions of health care to the person\",\n      \"payment of the person's health care\",\n      \"All of the above\",\n    ],\n    answer: \"4\",\n  },\n  {\n    id: 5,\n    question: \"What is PHI?\",\n    options: [\"Protected Health Identifier\", \"Patient Health Insurance\", \"Protected Health Information\"],\n    answer: \"3\",\n  },\n  {\n    id: 6,\n    question: \"Protected Health Information, PHI can include which of the following:\",\n    options: [\n      \"Name\",\n      \"Date of birth\",\n      \"Medical record number\",\n      \"Message or issue\",\n      \"Diagnosis\",\n      \"Admission date, time and reason\",\n      \"All of the above\",\n    ],\n    answer: \"7\",\n  },\n  {\n    id: 7,\n    question: \"My responsibility under HIPAA includes:\",\n    options: [\n      \"Handling PHI as if it were my own\",\n      \"Disposing of scrap paper and other documents with PHI by shredding or confidential disposal\",\n      \"Accessing PHI, only the minimum necessary, to do my job\",\n      \"Discussing potential violations or any HIPAA concerns with my supervisor, manager or the designated HIPAA Privacy/Security Official\",\n      \"All of the above\",\n      \"Other\",\n    ],\n    answer: \"5\",\n  },\n  {\n    id: 8,\n    question: \"What is a privacy breach? \",\n    options: [\n      \"A team member fails to maintain confidentiality by discussing patient health information on social media\",\n      \"Lab results are sent to the wrong patient or recipient\",\n      \"A laptop or Smartphone containing electronic PHI is lost or stolen – and the device is not encrypted\",\n      \"A computer hacker gains access to systems that contain PHI\",\n      \"All of the above\",\n      \"None of the above\",\n    ],\n    answer: \"5\",\n  },\n  {\n    id: 9,\n    question: \"An example of a Business Associate of a HIPAA covered entity is:\",\n    options: [\n      \"An answering service\",\n      \"A contractor providing IT services and support\",\n      \"A transcription service\",\n      \"Collection and billing vendors\",\n      \"All of the above\",\n    ],\n    answer: \"5\",\n  },\n  {\n    id: 10,\n    question: \"If you need to report a HIPAA concern or violation, which of the following can you do?\",\n    options: [\n      \"Contact my supervisor or manager\",\n      \"Contact my HIPAA Site Coordinator\",\n      \"Contact my organization’s HIPAA Compliance Officer\",\n      \"All of the above\",\n    ],\n    answer: \"4\",\n  },\n  {\n    id: 11,\n    question: \"Consequences for confidentiality include which of the following\",\n    options: [\n      \"Financial penalties\",\n      \"Public shaming\",\n      \"Imprisonment (civil or criminal)\",\n      \"revocation of medical or professional license\",\n    ],\n    answer: \"1\",\n  },\n];\n","import React, { useState } from \"react\";\nimport { Form, Container, Col, Row, Card, Badge } from \"react-bootstrap\";\n\nconst QuestionAndAnswerForm = (props) => {\n  const { data, handleSaveAns } = props;\n  const { question, options, id, a, expectedAns, isNotValid } = data;\n\n  const handleOptionChange = (index) => {\n    handleSaveAns({ id, a: index, options, question, expectedAns });\n  };\n\n  return (\n    <Card>\n      <Card.Body>\n        <h5>{`Q${id}: ${question}`}</h5>\n        <Form>\n          <Row>\n            {options.map((option, index) => (\n              <div key={index} onClick={() => handleOptionChange(index + 1)} className={(a === index+1) && isNotValid ? 'hipaa-answer-wrong' : ''}>\n                {\" \"}\n                {/* Adjust the column widths for different breakpoints */}\n                <Form.Check type=\"radio\" label={option} checked={a === index + 1} />\n              </div>\n            ))}\n          </Row>\n        </Form>\n      </Card.Body>\n    </Card>\n  );\n};\n\nexport default QuestionAndAnswerForm;\n","import React, { useRef } from \"react\";\nimport logoImage from \"assets/img/co_lab-1.png\";\nimport moment from \"moment\";\nimport QrCodeDownloadIcon from \"../../../assets/img/qr-download.svg\";\nimport html2canvas from \"html2canvas\";\nimport LogoText from \"components/LogoText\";\n\nconst Certificate = ({ data }) => {\n  const downloadRef = useRef();\n  const downloadCerificate = async () => {\n    const element = downloadRef.current;\n    await html2canvas(element, { allowTaint: true, useCORS: true, logging: true }).then((canvas) => {\n      const imgData = canvas.toDataURL(\"image/png\");\n      const link = document.createElement(\"a\");\n      if (typeof link.download === \"string\") {\n        link.href = imgData;\n        link.download = `${data.firstName}_${data.lastName}_hipaacertificate.jpg`;\n        document.body.appendChild(link);\n        link.click();\n        document.body.removeChild(link);\n      } else {\n        window.open(imgData);\n      }\n    });\n  };\n  const styles = `\n    @font-face {\n      font-family: \"Calibri\";\n      src: url(\"./fonts/Calibri.eot\");\n      /* ... Calibri font definitions ... */\n    }\n\n    @font-face {\n      font-family: \"Calibri-bold\";\n      src: url(\"./fonts/Calibri-Bold.eot\");\n      /* ... Calibri-Bold font definitions ... */\n    }\n\n    @font-face {\n      font-family: \"Georgia\";\n      src: url(\"./fonts/Georgia.woff2\") format(\"woff2\"),\n        url(\"./fonts/Georgia.woff\") format(\"woff\"),\n        url(\"./fonts/Georgia.ttf\") format(\"truetype\");\n      /* ... Georgia font definitions ... */\n    }\n\n    body {\n      font-family: \"Calibri\", sans-serif;\n      font-size: 22px;\n      margin: 0;\n      padding: 0;\n      overflow-x: hidden;\n    }\n\n    .certificate-container {\n      border: 10px solid #333;\n      padding: 50px 1rem 50px;\n      width: 900px;\n      margin: auto;\n    }\n\n    .logo-container {\n      width: 200px;\n      height: 100px;\n      text-align: center;\n      vertical-align: middle;\n      margin: auto;\n    }\n\n    .logo-image {\n      width: 100%;\n      object-fit: cover;\n    }\n\n    .certificate-details {\n      text-align: center;\n    }\n\n    .certificate-title {\n      font-family: 'Georgia', sans-serif;\n      font-size: 70px;\n      font-weight: 500;\n      margin-top: 0;\n      color: #bf8f00;\n      margin-bottom: 20px;\n    }\n\n    .certificate-text {\n      font-size: 22px;\n      line-height: 1.5;\n      color: #767171;\n      text-align: center;\n      padding-inline: 50px;\n    }\n\n    .certificate-name {\n      font-size: 26px;\n      font-weight: bold;\n      font-family: 'Calibri-bold', sans-serif;\n    }\n\n    .certificate-date {\n      margin-top: 40px;\n      display: inline-block;\n      text-align: center;\n      width: 100%;\n      font-size: 22px;\n      color: #767171;\n    }\n  `;\n\n  return (\n    <>\n      <style>{styles}</style>\n      <section className=\"certificate-container\" ref={downloadRef}>\n        <div className=\"logo-container\">\n          <img src={logoImage} className=\"logo-image\" alt=\"logo\" />\n        </div>\n        <div className=\"certificate-details\">\n          <h1 className=\"certificate-title\">\n            HIPPAA <br />\n            Certificate of Completion\n          </h1>\n          <p className=\"certificate-text\">\n            This Certificate acknowledges that\n            <span className=\"certificate-name mx-1\">{`${data.firstName} ${data.lastName}`}</span>\n            has successfully completed the course HIPAA Rules and compliance, set forth by Collaboration, Inc.\n          </p>\n          <span className=\"certificate-date\">{moment().format(\"MMMM D, YYYY\")}</span>\n        </div>\n      </section>\n      <div className=\"mt-4 text-center\">\n        <button  className=\"text-uppercase w-20 btn\" onClick={downloadCerificate}>\n          Download Certificate\n        </button>\n      </div>\n    </>\n  );\n};\n\nexport default Certificate;\n","import React from 'react';\n\nconst VideoPlayer = ({ videoId }) => {\n  const embedUrl = `https://www.youtube.com/embed/${videoId}`;\n\n  return (\n    <div className=\"video-container\">\n      <iframe\n        src={embedUrl}\n        title=\"YouTube Video Player\"\n        frameBorder=\"0\"\n        allowFullScreen\n        className=\"video-iframe\"\n      ></iframe>\n    </div>\n  );\n};\n\nexport default VideoPlayer;\n","import React, { useState, useEffect, useMemo, useCallback } from \"react\";\nimport {\n  medFlowInLocalStorage,\n  formatZip,\n  toTitleCase,\n  convertToLower,\n  formateDateLL,\n  checkValidity,\n  getValidName,\n  isValidName,\n  isValidIdNum,\n  isValidPhoneWithCode,\n  isValidZipCode,\n} from \"utils\";\nimport { useHistory } from \"react-router-dom\";\nimport { newRegisterObj, externalTypesOptions, countryListAllIsoData, IMAGE_UPLOAD_TYPE, CONFIG } from \"constant\";\nimport { Badge, Button, Card } from \"react-bootstrap\";\nimport API from \"api\";\nimport moment from \"moment\";\nimport Loader from \"components/Loader/Loader\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport ImageInput from \"components/Input/ImageInput\";\nimport Select from \"react-select\";\nimport { Storage } from \"aws-amplify\";\nimport { debounce } from \"debounce\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport Default_Profile from \"assets/img/default_profile.png\";\nimport { formatPhoneNumberIntl } from \"react-phone-number-input\";\nimport countriesOption from \"countries\";\nimport logoImage from \"assets/img/co_lab-1.png\";\nimport ImageCropModal from \"components/Input/ImageCropModal\";\nimport QRCodeView from \"components/PreRegister/QRCodeView\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport ShowSelection from \"components/PreRegister/ShowSelection\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport ConfirmationModal from \"components/Modal/ConfirmationModal\";\nimport { validSpace } from \"utils\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport { isValidEmail } from \"utils\";\nimport { formatPhoneNumber } from \"utils\";\nimport HipaaRegisterStepOne from \"components/Hipaa/component/HipaaRegisterStepOne\";\nimport { HIPPA_QUESTIONS } from \"constants/hippaquestion\";\nimport QuestionAndAnswerForm from \"components/Hipaa/component/QuestionAndAnswerForm\";\nimport Certificate from \"components/Hipaa/component/HipaaCertficate\";\nimport LogoText from \"components/LogoText\";\nimport VideoPlayer from \"components/Hipaa/component/VideoPlayer\";\n\nconst HipaaTest = (props) => {\n  // const {\n  //   match: { params },\n  // } = props;\n  const isMatch = props.hasOwnProperty(\"match\");\n  const isId = props.hasOwnProperty(\"id\");\n\n  const [newUser, setNewUser] = useState(newRegisterObj);\n  const [registrationDone, setRegistrationDone] = useState(false);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(true);\n  const [testKey, setTesKey] = useState(\"\");\n  const [profileImage, setProfileImage] = useState(Default_Profile);\n  const [copyImage, setCopyImage] = useState(Default_Profile);\n  const [vaccinationImage, setVaccinationImage] = useState(\"\");\n  const [externalTestImage, setExternalTestImage] = useState(\"\");\n  const [showImageCroper, setShowImageCropper] = useState(false);\n  const [client, setClient] = useState(\"\");\n  const [showName, setShowName] = useState(\"\");\n  const [pageExpire, setPageExpire] = useState(false);\n  const [step, setStep] = useState(1);\n  const [errorMessageText, setErrorMessageText] = useState(\"\");\n  const [showListing, setShowListing] = useState([]);\n  const [orderKitClose, setOrderKitClose] = useState(1);\n  const [openConfirmationModal, setOpenConfirmationModal] = useState(false);\n  const [message, setMessage] = useState(\"\");\n  const [maxQty, setMaxQty] = useState(2);\n  const [recordData, setRecordData] = useState(\"\");\n  const [recordQuesAnswer, setRecordQuesAnswers] = useState(\n    HIPPA_QUESTIONS.map((m) => ({ id: m.id, a: \"\", question: m.question, options: m.options, expectedAns: m.answer }))\n  );\n\n  const currentEnv = CONFIG.isLive ? \"LIVE\" : \"DEV\";\n  const getFileFromStorage = async (file) => {\n    try {\n      const path = await Storage.get(file);\n      setProfileImage(path);\n      console.log(\"path\", path);\n    } catch {\n      console.log(\"Image loading fail\");\n    }\n  };\n\n  useEffect(() => {\n    if (isMatch) {\n      const {\n        match: { params },\n      } = props;\n      params && params.id ? setTesKey(params.id) : \"\";\n    }\n    if (isId) {\n      setTesKey(props.id);\n    } else {\n      setLoading(false);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (recordData.answers) {\n      setRecordQuesAnswers(\n        recordQuesAnswer.map((m) => {\n          const ansFind = recordData.answers.find((f) => f.id == m.id);\n          if (ansFind) {\n            return { ...ansFind, question: m.question, options: m.options, expectedAns: m.expectedAns };\n          }\n          return m;\n        })\n      );\n    }\n  }, [recordData]);\n\n  const history = useHistory();\n\n  const redirectToAdmin = () => {\n    if (history) history.push(\"/admin\");\n  };\n\n  const isLoggedIn = medFlowInLocalStorage.get();\n  if (isLoggedIn && props.hasOwnProperty(\"match\")) redirectToAdmin();\n\n  const showErrorMessage = (message) => {\n    setError(message);\n    setTimeout(() => setError(\"\"), 2000);\n  };\n  const isVaccinationInfoEnable = useMemo(() => {\n    return newUser.isVaccinated && newUser.showId && newUser.showId.vaccinationCard;\n  }, [newUser.isVaccinated, newUser.showId]);\n\n  const isExternalTestAllow = useMemo(() => {\n    return newUser.showId && newUser.showId.externalTest;\n  }, [newUser.showId]);\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setNewUser({ ...newUser, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zipcode: val.zipcode,\n        zip: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setNewUser({ ...newUser, ...addressObj });\n    }\n  };\n\n  const saveHipaaData = async (data, testKey, email, firstName, lastName) => {\n    try {\n      console.log(\"Data\", testKey, email, firstName, lastName);\n      const res = await API.UpdateHipaaTestAns(data, testKey, email, firstName, lastName);\n    } catch (err) {\n      console.log(\"err\", err);\n    }\n  };\n\n  const savechangeAns = useCallback(\n    debounce((answers, testKey, email, firstName, lastName) => {\n      saveHipaaData(answers, testKey, email, firstName, lastName);\n    }, 800),\n    []\n  );\n\n  const handleSaveAns = async (ansObj) => {\n    const cloneData = _.cloneDeep(recordQuesAnswer);\n    const findDataIndex = cloneData.findIndex((f) => f.id === ansObj.id);\n    cloneData.splice(findDataIndex, 1, ansObj);\n    setRecordQuesAnswers(cloneData);\n    savechangeAns(\n      cloneData.filter((f) => f.a).map((obj) => ({ id: obj.id, a: obj.a })),\n      testKey,\n      recordData.email,\n      recordData.firstName,\n      recordData.lastName\n    );\n  };\n\n  const handleSubmit = async () => {\n    if (!recordData.firstName?.trim()) {\n      showErrorMessage(\"First name is required\");\n      return;\n    }\n\n    if (!recordData.lastName?.trim()) {\n      showErrorMessage(\"Last name is required\");\n      return;\n    }\n    if (!recordData.email?.trim()) {\n      showErrorMessage(\"Email name is required\");\n      return;\n    }\n    if (recordQuesAnswer.some((f) => !f.a)) {\n      showErrorMessage(\"Please Attempt All questions\");\n      return;\n    }\n\n    const reviewAns = recordQuesAnswer.map((question) => {\n      return { ...question, isNotValid: question.a && question.a != question.expectedAns };\n    });\n\n    if (reviewAns.filter((e) => e.isNotValid).length === 0) {\n      setLoading(true);\n      await API.UpdateHipaaTestComplete({\n        id: recordData.id,\n        email: recordData.email,\n        firstName: recordData.firstName,\n        lastName: recordData.lastName,\n        date: moment().format(\"MMMM D, YYYY\"),\n      });\n      setLoading(false);\n      setRegistrationDone(true);\n    } else {\n      setRecordQuesAnswers(reviewAns);\n      setError(\"Please review incorrect answers\");\n    }\n\n    // setStep(3);\n  };\n  console.log(\"reviewAns\", recordQuesAnswer);\n\n  const handleCompleteRegistration = async () => {\n    if (recordQuesAnswer.some((f) => f.a != f.expectedAns)) {\n      showErrorMessage(\"All answers should be correct\");\n      return;\n    }\n    setRegistrationDone(true);\n    await API.UpdateHipaaTestComplete(recordData.email);\n  };\n\n  const handleCropDone = (isConfirm, fileData) => {\n    //console.log(\"registerCrew\", isConfirm, fileData);\n    setShowImageCropper(false);\n    if (isConfirm && fileData) {\n      setProfileImage(new File([fileData], \"profileImage.jpeg\"));\n    } else {\n      setProfileImage(profileImage);\n    }\n  };\n\n  const formatFetchData = (data) => {\n    const obj = _.cloneDeep(data);\n    if (obj.firstName === \"undefined\") {\n      obj.firstName = \"\";\n    }\n    if (obj.lastName === \"undefined\") {\n      obj.lastName = \"\";\n    }\n    return obj;\n  };\n\n  const handleProcced = async (obj) => {\n    try {\n      setLoading(true);\n      const response = await API.hipaaTestSearch(obj, testKey);\n      if (response && response.length > 0) {\n        const obj = formatFetchData(response[0]);\n        setRecordData(obj);\n\n        if (obj.isCompleted) {\n          setRegistrationDone(true);\n        } else {\n          setStep(2);\n        }\n      } else {\n        setErrorMessageText(\"Record Not Found\");\n      }\n      setLoading(false);\n    } catch (err) {\n      setLoading(false);\n      setStep(1);\n      setErrorMessageText(err);\n    }\n  };\n\n  const fillUserData = (data, formattedPhone) => {\n    const country = countryListAllIsoData.find((f) => f.name === data.country) || { code: \"US\" };\n    const obj = {\n      ...newUser,\n      first: data.first,\n      last: data.last,\n      email: data.email,\n      phone_number: formattedPhone,\n      state: data.state,\n      zipcode: data.zipcode,\n      zip: data.zipcode,\n      id: data.id,\n      country: data.country,\n      isoCode: country.code,\n      street: data.street,\n      street2: data.street2 === \"undefined\" ? \"\" : data.street2,\n      city: data.city,\n      designation: \"\",\n    };\n    try {\n      Object.assign(obj, {\n        sex: data.sex,\n        dob: data.dob,\n        id_number: data.id_number || \"\",\n        isVaccinated: data.isVaccinated && data.isVaccinated === \"true\" ? true : false,\n      });\n    } catch (err) {\n      console.log(\"Error\", err);\n    }\n    setNewUser(obj);\n  };\n\n  const handleConfirmationRes = (value) => {\n    setOpenConfirmationModal(false);\n    setMessage(\"\");\n    if (value) {\n      setStep(2);\n    } else {\n      setStep(4);\n      setOrderKitClose(5);\n    }\n  };\n\n  if (pageExpire) return <p>Page Expired</p>;\n\n  if (loading) return <Loader />;\n\n  if (registrationDone) {\n    return <Certificate data={recordData} />;\n  }\n\n  if (step === 1) {\n    return (\n      <>\n        <HipaaRegisterStepOne show={newUser.showId} handleProcced={handleProcced} errorMessageText={errorMessageText} />\n        {openConfirmationModal && (\n          <ConfirmationModal\n            isPreRegister\n            title=\"Pre Registration\"\n            message={message}\n            handleConfirm={handleConfirmationRes}\n          />\n        )}\n      </>\n    );\n  }\n\n  if (step === 3)\n    return (\n      <div className=\"registerFormWrapper align-items-start\">\n        <div className=\"registerWrapper container-fluid\">\n          <div className=\"loginInner\">\n            <div className=\"text-center\">\n              <img src={logoImage} alt=\"logo\" className=\"logo-width\" />\n\n              <h4 className=\"mt-4\">HIPAA Certification Response Summary</h4>\n            </div>\n\n            <table className=\"table\">\n              <thead>\n                <tr>\n                  <th>Question</th>\n                  <th>Response</th>\n                </tr>\n              </thead>\n              <tbody>\n                {recordQuesAnswer.map((question, questionIndex) => (\n                  <tr key={questionIndex}>\n                    <td>{`Q${question.id}: ${question.question}`}</td>\n                    <td>\n                      <span className={question.a === question.expectedAns ? \"green fw-bold\" : \"red fw-bold\"}>\n                        {question.a === question.expectedAns ? (\n                          \"Correct\"\n                        ) : (\n                          <span onClick={() => setStep(2)} className=\"cursor-pointer\">\n                            {\" \"}\n                            Wrong\n                          </span>\n                        )}\n                      </span>\n                    </td>\n                  </tr>\n                ))}\n              </tbody>\n            </table>\n            {error && (\n              <div className=\"error-message\">\n                <h6>{error}</h6>\n              </div>\n            )}\n            <div className=\"mt-4\">\n              <button\n                type=\"submit\"\n                className=\"text-uppercase w-100 btn signup-btn\"\n                onClick={handleCompleteRegistration}\n              >\n                Submit Response\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n\n  return (\n    <>\n      <div className=\"registerFormWrapper\">\n        <div className=\"registerWrapper container-fluid\">\n          <div className=\"loginInner\">\n            <div className=\"text-center mb-4\">\n              {\" \"}\n              <img src={logoImage} alt=\"logo\" className=\"logo-width\" />\n            </div>\n            <h5 className=\"w-100  mt-5 text-alignjustify\">\n              Thank you for visiting the HIPAA video and test link. It is a requirement that all employees at\n              Collaboration, Inc. complete and pass this quiz to demonstrate competency in our HIPAA guidelines. You can\n              play the 20 minute video and answer the quiz questions simultaneously. It is our duty to protect the best\n              interests of our patients which includes protecting their personal health information. Please contact our\n              human resource manager at{\" \"}\n              <span\n                onClick={() => window.open(`tel:+1661-210-9794`)}\n                className={`ellipsis text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none`}\n              >\n                661-210-9794\n              </span>{\" \"}\n              with any questions or to get more information on HIPAA related law.\n            </h5>\n            <VideoPlayer videoId=\"AUnTGNVDWZU\" />\n            <div className=\"form-group-wrapper mt-5\">\n              <label className=\"mb-1\">First Name:</label>\n              <input\n                value={recordData.firstName || \"\"}\n                type=\"text\"\n                className=\"form-control\"\n                placeholder=\"First Name\"\n                onChange={(e) => setRecordData({ ...recordData, firstName: getValidName(e.target.value) })}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"mb-1\">last Name:</label>\n              <input\n                value={recordData.lastName || \"\"}\n                type=\"text\"\n                className=\"form-control\"\n                placeholder=\"First Name\"\n                onChange={(e) => setRecordData({ ...recordData, lastName: getValidName(e.target.value) })}\n              />\n            </div>\n            <div className=\"form-group-wrapper\">\n              <label className=\"mb-1\">Email:</label>\n              <input\n                value={recordData.email}\n                type=\"text\"\n                className=\"form-control\"\n                placeholder=\"Email\"\n                onChange={(e) => setRecordData({ ...recordData, email: convertToLower(e.target.value) })}\n              />\n            </div>\n\n            {recordQuesAnswer.map((m) => (\n              <QuestionAndAnswerForm data={m} handleSaveAns={handleSaveAns} />\n            ))}\n\n            {error && (\n              <div className=\"error-message\">\n                <h6>{error}</h6>\n              </div>\n            )}\n            {step === 2 && (\n              <div className=\"mt-2\">\n                <button type=\"submit\" className=\"text-uppercase w-100 btn signup-btn\" onClick={handleSubmit}>\n                  Submit Answers\n                </button>\n              </div>\n            )}\n          </div>\n        </div>\n      </div>\n\n      {showImageCroper && <ImageCropModal selectedImage={copyImage} handleConfirm={handleCropDone}></ImageCropModal>}\n      {openConfirmationModal && (\n        <ConfirmationModal\n          isPreRegister\n          title=\"Order the Test\"\n          message={message}\n          handleConfirm={handleConfirmationRes}\n        />\n      )}\n    </>\n  );\n};\n\nexport default HipaaTest;\n","const STATS = {\n  STATS_REDUCER: \"stats\",\n  FILTER_PAID_CLAIMS: \"FILTER_PAID_CLAIMS\",\n  FILTER_MONTHLY_CLAIMS: \"FILTER_MONTHLY_CLAIMS\",\n  LATEST_UNAPPROVED_CLAIMS: \"LATEST_UNAPPROVED_CLAIMS\",\n};\n\nexport default STATS;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport api from \"api\";\nimport { CLAIMS_STATS_DETAILS, PAID_CLAIM_SPANS_FORMAT, ORDER_BY_DIRECTION, CONFIG } from \"constant\";\nimport moment from \"moment\";\nimport { userCompanyID } from \"utils\";\nimport CONSTANT from \"./dashboardConstant\";\n\nexport const filterPaidClaimsAsync = createAsyncThunk(CONSTANT.FILTER_PAID_CLAIMS, async (obj) => {\n  const objToSend = {\n    pid: obj.pid || \"\",\n    date: moment(obj.date).format(PAID_CLAIM_SPANS_FORMAT[obj.selectedSpan]),\n  };\n  const res = await api.filterPaidClaims(objToSend);\n  if (res) return res;\n  return null;\n});\n\nexport const filterMonthlyClaimsAsync = createAsyncThunk(CONSTANT.FILTER_MONTHLY_CLAIMS, async (obj) => {\n  const objToSend = {\n    type: \"stats\",\n    pid: obj.pid || \"\",\n    date: moment(obj.date).format(PAID_CLAIM_SPANS_FORMAT[obj.selectedSpan]),\n  };\n  const res = await api.filterPaidClaims(objToSend);\n  if (res) return res;\n  return null;\n});\n\nexport const getLastestDeniedRejectedClaimsAsync = createAsyncThunk(\n  CONSTANT.LATEST_UNAPPROVED_CLAIMS,\n  async (filterParams) => {\n    let params = {\n      status: filterParams.type,\n      orderBy: \"updatedAt\",\n      orderByDirection: ORDER_BY_DIRECTION.DESCEDNING,\n    };\n\n    if (CONFIG.isLabType) {\n      Object.assign(params, { clientID: userCompanyID.get() });\n    }\n    const deniedClaimsRes = await api.getClaimList(params);\n\n    return deniedClaimsRes?.rows || [];\n  }\n);\n\nconst employeeSlice = createSlice({\n  name: CONSTANT.STATS_REDUCER,\n  initialState: {\n    paidClaims: CLAIMS_STATS_DETAILS,\n    monthlyClaims: CLAIMS_STATS_DETAILS,\n    latestUnapprovedClaims: [],\n  },\n  reducers: {},\n  extraReducers: (builder) => {\n    builder\n      .addCase(filterPaidClaimsAsync.fulfilled, (state, action) => {\n        if (action.payload) {\n          const { selectedSpan, date, pid } = action.meta.arg;\n          state.paidClaims = {\n            selectedSpan,\n            date,\n            payerId: pid,\n            ...action.payload,\n          };\n        }\n      })\n      .addCase(filterMonthlyClaimsAsync.fulfilled, (state, action) => {\n        if (action.payload) {\n          const { selectedSpan, date, pid } = action.meta.arg;\n          state.monthlyClaims = {\n            selectedSpan,\n            date,\n            payerId: pid,\n            ...action.payload,\n          };\n        }\n      })\n      .addCase(getLastestDeniedRejectedClaimsAsync.fulfilled, (state, action) => {\n        state.latestUnapprovedClaims = [...action.payload];\n      });\n  },\n});\n\nexport default employeeSlice.reducer;\n","export const EMPLOYEE_CLAIM = \"employeeClaim\";\n\nexport const EMPLOYEE_CLAIM_FETCH = \"employeeClaim/fetchAllEmployeeClaims\";\n\nexport const EMPLOYEE_CLAIM_CREATE = \"employeeClaim/careateEmployeeClaim\";\n\nexport const EMPLOYEE_CLAIM_DELETE = \"employeeClaim/deleteEmployeeClaim\";\n\nexport const EMPLOYEE_CLAIM_UPDATE = \"employeeClaim/updateEmployeeClaim\";\n\nexport const EMPLOYEE_CLAIM_ACKNOWLEGDE = \"employeeClaim/acknowledgeEmployeeClaim\";\n\nexport const ASSIGN_CLAIM = \"employeeClaim/assignClaim\";\n\nexport const EMPLOYEE_CLAIM_UPDATE_STATUS = \"employeeClaim/updateStatusClaims\";\n\nexport const GET_CLAIM_STATS = \"getClaimClaimStats\";\n\nexport const EMPLOYEE_CLAIM_EXPORT_EXCEL = \"employeeClaim/exporttoexcel\";\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { EMP_CLAIM_PERSONALIZE } from \"constants/personalization\";\nimport moment from \"moment\";\nimport api, { exportClamDataToExcel } from \"../../../api\";\nimport {\n  CLAIMS_KEYS,\n  CLAIM_EDIT_STATUS,\n  CLAIM_SUBMIT_STATUS,\n  CONFIG,\n  DIAGNOSIS_ITEMS,\n  EMP_CLAIM_BLANK_OPTS,\n  MEDICARE_ID,\n  MESSAGE_MODES,\n  ON_HOLD_CPT,\n  PARSE_ALPHA_INTO_NUM,\n  STATS_OBJECT,\n  STATUS_KEY,\n} from \"../../../constant\";\nimport graphQLApi from \"../../../graphQLApi\";\nimport {\n  downloadFileFromS3,\n  formatClaims,\n  formatDateMDY,\n  formatEmployeeClaim,\n  getDiagonosisCode,\n  getFloatVal,\n  getIntVal,\n  isJSONString,\n  removeKeysFromObject,\n  removeSpaceIns,\n  userCompanyID,\n} from \"../../../utils\";\nimport { setMessage } from \"../general/generalAction\";\nimport {\n  ASSIGN_CLAIM,\n  EMPLOYEE_CLAIM,\n  EMPLOYEE_CLAIM_ACKNOWLEGDE,\n  EMPLOYEE_CLAIM_CREATE,\n  EMPLOYEE_CLAIM_DELETE,\n  EMPLOYEE_CLAIM_FETCH,\n  EMPLOYEE_CLAIM_UPDATE,\n  EMPLOYEE_CLAIM_UPDATE_STATUS,\n  GET_CLAIM_STATS,\n  EMPLOYEE_CLAIM_EXPORT_EXCEL,\n} from \"./employeeClaimsConstant\";\nimport insServices from \"services/InsuranceService\";\n\nconst sortUsers = (users) => {\n  return [...users].sort((a, b) =>\n    `${b[\"pat_name_f\"]}${b[\"pat_name_l\"]}` < `${a[\"pat_name_f\"]}${a[\"pat_name_l\"]}`\n      ? 1\n      : `${a[\"pat_name_f\"]}${a[\"pat_name_l\"]}` < `${b[\"pat_name_f\"]}${b[\"pat_name_l\"]}`\n      ? -1\n      : 0\n  );\n};\n// Async thunk to fetch all employeeClaims\n\nexport const fetchAllEmployeeClaimsAsync = createAsyncThunk(\n  EMPLOYEE_CLAIM_FETCH,\n  async ({ dateFilter, page, filter, isNewCall, users }, { getState, dispatch }) => {\n    const params = { ...filter, page };\n    const loginUser = getState().auth.user;\n\n    if (CONFIG.isLabType) {\n      Object.assign(params, { clientID: userCompanyID.get() });\n    }\n\n    if (dateFilter) {\n      const { start, end } = dateFilter;\n      if (start) Object.assign(params, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n      if (end) Object.assign(params, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n    }\n\n    if (filter.submissionDate) {\n      const { startDate, endDate } = filter.submissionDate;\n      if (startDate)\n        Object.assign(params, {\n          submissionStartDate: moment(startDate.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString(),\n        });\n      if (endDate)\n        Object.assign(params, { submissionEndDate: moment(endDate.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n      delete params.submissionDate;\n    }\n\n    if (filter.Blank || filter.Blank?.length > 0) {\n      delete params.Blank;\n      Object.assign(params, { blanks: filter.Blank.map((element) => EMP_CLAIM_BLANK_OPTS[element]) });\n    }\n\n    if (Object.keys(filter).includes(\"assignToMe\")) {\n      const user = users.find((f) => f.phone_number === loginUser.phone_number);\n      Object.assign(params, { assignTo: filter.assignToMe ? user.id : \"\" });\n    }\n\n    // Compare Params\n    if (JSON.stringify(getState().employeeClaims.apiParams) === JSON.stringify(params)) {\n      return null;\n    }\n\n    const prevAssignToMe = getState().employeeClaims?.apiParams?.assignToMe;\n    const newAssignToMe = params?.assignToMe;\n\n    if (prevAssignToMe && newAssignToMe) {\n      const prevFetchedList = getState().employeeClaims.employeeClaims || [];\n      if (prevFetchedList.length > 0) {\n        const newFilteredList = nestedFilter(prevFetchedList, getState().employeeClaims.claimsFilter);\n        dispatch(employeeClaimSlice.actions.setFilteredEmployeeClaims(newFilteredList));\n        dispatch(employeeClaimSlice.actions.setStatsObj(updateStatsLocally(newFilteredList)));\n        return;\n      }\n    }\n\n    if (isNewCall) {\n      Object.assign(params, { page: 1 });\n      dispatch(employeeClaimSlice.actions.setPageNo(1));\n      dispatch(employeeClaimSlice.actions.setCurrentPage(1));\n    }\n\n    let objFilter = { ...filter };\n\n    const res = await api.getClaimList(params);\n    if (filter.assignToMe === false) {\n      delete objFilter.assignToMe;\n      dispatch(employeeClaimSlice.actions.setClaimsFilter(objFilter));\n    }\n\n    dispatch(employeeClaimSlice.actions.setAPIParams(params));\n\n    return res;\n  }\n);\n\nconst createChangeObject = (oldObj, newObj) => {\n  const changeObject = { oldRecord: {}, newRecord: {} };\n\n  const getSubKeyInfo = (key, value) => {\n    return [key, value];\n  };\n\n  const processKey = async (key, sourceObj, targetObj) => {\n    if (Object.prototype.hasOwnProperty.call(sourceObj, key)) {\n      const [newKey, newValue] = getSubKeyInfo(key, sourceObj[key]);\n      targetObj[newKey] = newValue;\n    }\n  };\n\n  // Process keys where values are different or present in newObj but not in oldObj\n  const allKeys = new Set([...Object.keys(oldObj), ...Object.keys(newObj)]);\n\n  for (const key of allKeys) {\n    if (\n      !Object.prototype.hasOwnProperty.call(newObj, key) ||\n      JSON.stringify(newObj[key]) !== JSON.stringify(oldObj[key])\n    ) {\n      processKey(key, newObj, changeObject.newRecord);\n      processKey(key, oldObj, changeObject.oldRecord);\n    }\n  }\n\n  return changeObject;\n};\n\nconst updateStatsLocally = (claims) => {\n  const resultSummary = {\n    draft: 0,\n    draftAmount: 0,\n    submitted: 0,\n    submittedAmount: 0,\n    rejected: 0,\n    rejectedAmount: 0,\n    approved: 0,\n    approvedAmount: 0,\n    denied: 0,\n    deniedAmount: 0,\n    paid: 0,\n    paidAmount: 0,\n    partial: 0,\n    partialAmount: 0,\n    cancelled: 0,\n    cancelledAmount: 0,\n  };\n  for (const item of claims) {\n    const { status, paidAmount, total_charge } = item;\n    resultSummary[status] = parseInt(resultSummary[status]) + 1;\n    resultSummary[`${status}Amount`] =\n      resultSummary[`${status}Amount`] + (status === \"paid\" ? paidAmount : total_charge);\n  }\n\n  return resultSummary;\n};\n\n// Apply Local Filter For Client Side Action Performs\nconst nestedFilter = (targetArray, filters) => {\n  if (Object.keys(filters).length === 0) return targetArray;\n  const filterKeys = Object.keys(filters);\n  //filters main array of objects\n  const models = targetArray.filter((obj) => {\n    //goes through each key being filtered for\n    return filterKeys.every((key) => {\n      if (filters[key] == \"\" && !Object.keys(filters[key]).length) {\n        return true;\n      }\n\n      if (key === \"from_date_1\") {\n        return Object.keys(filters[key]).length > 0\n          ? new Date(obj.from_date_1) >= filters[key].startDate?._d &&\n              new Date(obj.from_date_1) <= filters[key].endDate?._d\n          : obj.from_date_1;\n      }\n      if (key === \"paidAmount\" || key === \"adjustedAmount\") {\n        return obj[key] && obj[key].toString().includes(filters[key]);\n      }\n      if (key === \"pat_dob\") {\n        return obj[key] && formatDateMDY(obj[key]).includes(filters[key]);\n      }\n      if (key === \"Blank\" && filters[key].length > 0) {\n        return filters[key].some((f) => !obj[EMP_CLAIM_PERSONALIZE.find((t) => t.title === f)?.itemKey]);\n      }\n      if (key === \"status_code\") {\n        return filters[key] && obj[key] === 2;\n      }\n      if (key === \"reSubmissionDate\") {\n        return filters[key] && obj[key];\n      }\n      if (key === \"crossover_carrier\") {\n        return filters[key] && obj[key];\n      }\n      if (key === \"assignToMe\") {\n        return filters[key] && obj.assign_details;\n      }\n      if (key === \"status\") {\n        return obj[key] && CLAIM_EDIT_STATUS[obj[key]].toLowerCase().includes(filters[key].toLowerCase());\n      }\n      return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n    });\n  });\n  return models;\n};\n\n// Parse Diagnosis Code JSON\nconst parseDiagonosisCode = (obj) => {\n  for (const item of DIAGNOSIS_ITEMS) {\n    obj[`diag_${PARSE_ALPHA_INTO_NUM[item]}`] = getDiagonosisCode(obj[`diag_${PARSE_ALPHA_INTO_NUM[item]}`]);\n  }\n  return obj;\n};\n\n//  get Stats Summmary Data From API\nexport const getStatsSummaryClaimAsync = createAsyncThunk(GET_CLAIM_STATS, async ({ users }, { getState }) => {\n  const claimFilter = getState().employeeClaims.claimsFilter;\n  const params = { ...claimFilter, page: 1, summaryOnly: \"y\" };\n  const loginUser = getState().auth.user;\n  if (CONFIG.isLabType) {\n    Object.assign(params, { clientID: userCompanyID.get() });\n  }\n\n  if (claimFilter.Blank || claimFilter.Blank?.length > 0) {\n    delete params.Blank;\n    Object.assign(params, { blanks: claimFilter.Blank.map((element) => EMP_CLAIM_BLANK_OPTS[element]) });\n  }\n\n  if (Object.keys(claimFilter).includes(\"assignToMe\")) {\n    const user = users ? users.find((f) => f.phone_number === loginUser.phone_number) : {};\n\n    Object.assign(params, { assignTo: claimFilter.assignToMe ? user?.id : \"\" });\n  }\n\n  const res = await api.getClaimList(params);\n\n  const stats = {\n    ...res.summary,\n    rejectted: res.summary.rejected,\n    rejecttedAmount: res.summary.rejectedAmount,\n    partialProcessed: res.summary.partial,\n    partialProcessedAmount: res.summary.partialAmount,\n  };\n\n  return stats;\n});\n\n// Submit Claim to Claim MD\nconst claimSubmitToClaimMD = async (claimSubmission, claimtype, res) => {\n  const fileName = `${claimtype}/${claimtype}_${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}.csv`;\n  let claims = removeKeysFromObject(claimSubmission, CLAIMS_KEYS);\n  if (MEDICARE_ID.includes(claims.payerid)) {\n    Object.assign(claims, { prov_npi: \"\", prov_name_f: \"\", prov_name_l: \"\", prov_name_m: \"\", prov_taxid: \"\" });\n  }\n  claims = parseDiagonosisCode(claims);\n  await api.saveFileOnBucket([{ ...claims, id: res.id, prov_id: \"\", ref_id: \"\", ord_prov_id: \"\" }], fileName);\n};\n\n// Async thunk to create a employeeClaim\nexport const createEmployeeClaimAsync = createAsyncThunk(\n  EMPLOYEE_CLAIM_CREATE,\n  async ({ claimSubmission, seqNumber, claimStatus, claimtype }, { dispatch, getState }) => {\n    // if claim  does'nt have pcn number then assign the pcn number hardly\n    if (!claimSubmission.pcn && claimSubmission.employeeID) {\n      const employees = getState().employees.employees;\n      const emp = employees.find((f) => f.id === claimSubmission.employeeID);\n      Object.assign(claimSubmission, { pcn: emp.schrID });\n    }\n    let res = await graphqlApi.createClaimGQL(claimSubmission, seqNumber, claimStatus);\n    if (res) {\n      if (claimStatus === CLAIM_SUBMIT_STATUS.submitted) {\n        //  Claim Submitted to Claim MD\n        await claimSubmitToClaimMD(claimSubmission, claimtype, res);\n        dispatch(setMessage(\"Claim Sent Successfully\", MESSAGE_MODES.success));\n      } else {\n        dispatch(setMessage(\"Claim Created Successfully\", MESSAGE_MODES.success));\n      }\n    }\n    return res;\n  }\n);\n\n// Async thunk to update a employeeClaim\nexport const updateEmployeeClaimAsync = createAsyncThunk(\n  EMPLOYEE_CLAIM_UPDATE,\n  async ({ claimSubmission, claimStatus, claimtype, oldClaim }, { getState, dispatch }) => {\n    const stats = getState().employeeClaims.statsObj;\n    const res = await graphqlApi.updateEmployeeClaimsGQL(claimSubmission);\n    if (res.newImage && claimStatus === CLAIM_SUBMIT_STATUS.submitted) {\n      //  Claim Submitted to Claim MD\n      await claimSubmitToClaimMD(claimSubmission, claimtype, res.newImage);\n      dispatch(setMessage(\"Claim Sent Successfully\", MESSAGE_MODES.success));\n    } else {\n      if (oldClaim !== \"noAlert\") {\n        dispatch(setMessage(\"Claim Updated Successfully\", MESSAGE_MODES.success));\n      }\n    }\n\n    dispatch(employeeClaimSlice.actions.setStatsObj(updateStats(stats, res.newImage, res.oldImage, \"MODIFY\", false)));\n\n    return [res.newImage];\n  }\n);\n\nexport const updateSubmittedClaimAsync = createAsyncThunk(\n  EMPLOYEE_CLAIM_UPDATE,\n  async ({ claimSubmission }, { getState, dispatch }) => {\n    const stats = getState().employeeClaims.statsObj;\n    const res = await graphqlApi.updateSubmittedClaimsGQL(claimSubmission);\n    dispatch(setMessage(\"Claim Updated Successfully\", MESSAGE_MODES.success));\n    dispatch(employeeClaimSlice.actions.setStatsObj(updateStats(stats, res.newImage, res.oldImage, \"MODIFY\", false)));\n    return [res.newImage];\n  }\n);\n\n// fetch inusruance modal\nconst fetchInsuranceWithPayerID = async (ids) => {\n  const formattedIds = ids.map((id) => `'${id}'`).join(\", \");\n  let payerList = await insServices.fetchInsurances({ payerids: formattedIds });\n  const payerMap = new Map(payerList.rows.map((payer) => [payer.payerId, payer]));\n  const settingObj = {};\n\n  for (const id of ids) {\n    const payerRecord = payerMap.get(id);\n    let objToSet = {\n      bill_npi: CONFIG.DEFAULT_NPI,\n      eClaim: \"yes\",\n      eEligibility: true,\n    };\n    if (payerRecord) {\n      objToSet = {\n        bill_npi: payerRecord.npi,\n        eClaim: payerRecord.eClaim ? \"yes\" : \"no\",\n        eEligibility: payerRecord.eEligibility,\n      };\n    }\n    settingObj[id] = objToSet;\n  }\n  return settingObj;\n};\n\n// Async thunk to Bulk Submit  employeeClaims\nexport const updateBulkSubmitEmployeeClaimAsync = createAsyncThunk(\n  EMPLOYEE_CLAIM_UPDATE,\n  async ({ claimSubmissions, claimStatus, claimtype }, { getState, dispatch }) => {\n    let stats = getState().employeeClaims.statsObj;\n    let user = getState().auth.user;\n    let providers = getState().providers.providers;\n    const setting = await api.getCompanySetting();\n\n    if (claimStatus === CLAIM_SUBMIT_STATUS.submitted) {\n      let claimSubmitted = [];\n      let notSubmitClaim = [];\n\n      const uniqueIds = [...new Set(claimSubmissions.map((item) => item.payerid))];\n\n      // fetch insurance Modal and Check e-claim and e-eligibility\n      const payerList = await fetchInsuranceWithPayerID(uniqueIds);\n\n      for (const subClaim of claimSubmissions) {\n        const claim = { ...subClaim, ...payerList[subClaim.payerid] };\n\n        if (CONFIG.isBioLab) {\n          const isOnHoldCPT = claim.proc_array.some((s) => removeSpaceIns(s.proc_code).includes(ON_HOLD_CPT));\n          let isOnHoldICT = null;\n          if (isOnHoldCPT || isOnHoldICT) {\n            notSubmitClaim.push(claim);\n            continue;\n          }\n        }\n\n        if (claim.prov_id && (!claim.provider || !claim.provider?.prov_id)) {\n          const findProvider = providers.find((f) => f.id === claim.prov_id);\n          if (findProvider) {\n            claim.provider = {\n              ...(claim.provider && {}),\n              prov_npi: findProvider.npi,\n              prov_name_f: findProvider.firstName,\n              prov_name_l: findProvider.lastName,\n              prov_name_m: findProvider.middleName,\n              prov_taxid: findProvider.taxid,\n            };\n          }\n        }\n\n        // Format Claims For Claim MD format\n        const formatedClaim = formatEmployeeClaim(claim, setting, true);\n\n        const newClaim = {\n          ...formatedClaim,\n          status: \"submitted\",\n          prov_id: \"\",\n          ref_id: \"\",\n          ord_prov_id: \"\",\n          status: claimStatus,\n          isUpdate: true,\n          submittedBy: user.sub,\n          submittedByName: user.name,\n        };\n\n        if (MEDICARE_ID.includes(newClaim.payerid)) {\n          Object.assign(newClaim, { prov_npi: \"\", prov_name_f: \"\", prov_name_l: \"\", prov_name_m: \"\", prov_taxid: \"\" });\n        }\n\n        let claimObj = removeKeysFromObject(newClaim, CLAIMS_KEYS);\n        claimObj = parseDiagonosisCode(claimObj);\n        claimSubmitted.push(claimObj);\n        stats = updateStats(stats, newClaim, claim, \"MODIFY\", false);\n      }\n\n      const fileName = `${claimtype}/${claimtype}_multi_${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}.csv`;\n      if (claimSubmitted.length > 0) {\n        await api.saveFileOnBucket(claimSubmitted, fileName);\n        dispatch(\n          setMessage(\n            `Claim Sent Successfully${\n              notSubmitClaim.length > 0\n                ? ` ${notSubmitClaim.length} claim(s) not sent cause of payer is not active`\n                : \"\"\n            }`,\n            MESSAGE_MODES.success\n          )\n        );\n        dispatch(employeeClaimSlice.actions.setStatsObj(stats));\n      } else {\n        dispatch(setMessage(`Claim is On Hold`, MESSAGE_MODES.error));\n      }\n      return claimSubmissions;\n    }\n  }\n);\n\n// Async Thunk to Acknowledge Claim\nexport const acknowledgeClaimAsync = createAsyncThunk(EMPLOYEE_CLAIM_ACKNOWLEGDE, async ({ data, loginUser }) => {\n  const res = await graphqlApi.acknowledgeClaimGQL(data, loginUser);\n  return [res];\n});\n\n// Async thunk to update a employee Claim Status\nexport const updateStatusEmployeeClaimAsync = createAsyncThunk(\n  EMPLOYEE_CLAIM_UPDATE_STATUS,\n  async ({ claimsList, newDate, newStatus, reason }, { getState, dispatch }) => {\n    if (claimsList.length === 0) return;\n    const loginUser = getState().auth.user;\n    let stats = getState().employeeClaims.statsObj;\n    const updatedClaims = [];\n    for (let i = 0; i < claimsList.length; i++) {\n      const claimToBeUpdated = { ...claimsList[i] };\n      claimToBeUpdated.status = newStatus.value;\n      claimToBeUpdated.message = reason?.replace(/'/g, \"\") || \"\";\n\n      const res = await graphqlApi.updateEmployeeClaimStatusWithLogsGQL(claimToBeUpdated, newDate, loginUser);\n      stats = updateStats(stats, res.newImage, res.oldImage, \"MODIFY\", false);\n      updatedClaims.push(res.newImage);\n    }\n    dispatch(employeeClaimSlice.actions.setStatsObj(stats));\n    dispatch(setMessage(\"Claim Status Updated Successfully!\", MESSAGE_MODES.success));\n\n    return updatedClaims;\n  }\n);\n\n// Async thunk to update a employeeClaim\nexport const assignEmployeeClaimAsync = createAsyncThunk(ASSIGN_CLAIM, async (claimsArr, { dispatch, getState }) => {\n  if (!claimsArr || claimsArr?.items?.length === 0) return;\n\n  await api.removeAssignTo(claimsArr);\n\n  const msg =\n    \"Hello, claims have been assigned to you. Please log into the MedFlow Revenue Management portal to find out more information\";\n  await api.sendSMSNotification(claimsArr[0]?.assignUserNumber, msg);\n\n  dispatch(\n    setMessage(\n      `${claimsArr?.items?.length} Claim${claimsArr?.items?.length === 1 ? \"\" : \"s\"} Assigned Successfully!`,\n      MESSAGE_MODES.success\n    )\n  );\n  return [];\n});\n\n// Async thunk to delete a employeeClaim\nexport const deleteEmployeeClaimAsync = createAsyncThunk(\n  EMPLOYEE_CLAIM_DELETE,\n  async ({ userToDelete, empsFilter }, { dispatch }) => {\n    const deletedClaimIDs = [];\n    const ttl = empsFilter.length;\n    if (userToDelete || ttl > 0) {\n      if (userToDelete) {\n        const res = await graphqlApi.deleteEmployeeClaimGQL(userToDelete.id);\n        deletedClaimIDs.push(res);\n      } else if (ttl > 0) {\n        for (let i = 0; i < ttl; i++) {\n          const res = await graphqlApi.deleteEmployeeClaimGQL(empsFilter[i].id);\n          deletedClaimIDs.push(res);\n        }\n      }\n    }\n    dispatch(setMessage(\"Claim Deleted Successfully\", MESSAGE_MODES.success));\n    return deletedClaimIDs;\n  }\n);\n\nconst updateStats = (stats, newImage, oldImage, eventName, isDeleted) => {\n  let companyStats = { ...stats };\n  try {\n    const keyName = STATUS_KEY[newImage.status];\n    const amountKey = `${keyName}Amount`;\n\n    const value = getIntVal(companyStats[keyName]);\n    const amount = getFloatVal(companyStats[amountKey]);\n\n    // new record inserted then increment the number and amount\n    if (eventName === \"INSERT\") {\n      companyStats[keyName] = value + 1;\n      companyStats[amountKey] = amount + getFloatVal(newImage.total_charge);\n    }\n    // when record is deleted then decrement the number and subtract the amount\n    else if (isDeleted && value > 0) {\n      companyStats[keyName] = value - 1;\n      if (amount >= getFloatVal(newImage?.total_charge)) {\n        companyStats[amountKey] = amount - getFloatVal(newImage?.total_charge);\n      }\n    }\n\n    if (eventName === \"MODIFY\" && !isDeleted && oldImage) {\n      const oldKey = STATUS_KEY[oldImage.status];\n      const oldAmountKey = `${oldKey}Amount`;\n\n      const oldValue = getIntVal(companyStats[oldKey]);\n      const oldAmount = getFloatVal(companyStats[oldAmountKey]);\n      let oldClaimAmount = getFloatVal(oldImage.total_charge);\n      if (newImage.status === \"paid\" || newImage.status === \"partial\") {\n        oldClaimAmount = getFloatVal(newImage.paidAmount);\n      }\n      if (oldValue > 0) {\n        companyStats[oldKey] = oldValue - 1;\n      }\n      if (oldAmount >= oldClaimAmount) {\n        companyStats[oldAmountKey] = oldAmount - oldClaimAmount;\n      }\n    }\n\n    if (eventName === \"MODIFY\" && !isDeleted && newImage) {\n      const oldKey = STATUS_KEY[newImage.status];\n      const oldAmountKey = `${oldKey}Amount`;\n\n      const oldValue = getIntVal(companyStats[oldKey]);\n      const oldAmount = getFloatVal(companyStats[oldAmountKey]);\n      let newClaimAmount = getFloatVal(newImage.total_charge);\n\n      if (newImage.status === \"paid\" || newImage.status === \"partial\") {\n        newClaimAmount = getFloatVal(newImage.paidAmount);\n      }\n\n      companyStats[oldKey] = oldValue + 1;\n      companyStats[oldAmountKey] = oldAmount + newClaimAmount;\n    }\n  } catch (e) {\n    console.log(\"[updateStats]\", e);\n  }\n  return companyStats;\n};\n\nexport const exportClaimDataToExcelAsync = createAsyncThunk(\n  EMPLOYEE_CLAIM_EXPORT_EXCEL,\n  async ({ selectedColumn }, { getState }) => {\n    const claimParams = {\n      params: {\n        selectedColumn,\n        ...getState().employeeClaims.apiParams,\n      },\n    };\n    const result = await exportClamDataToExcel(claimParams);\n    await downloadFileFromS3(result.fileName, result.fileName, CONFIG.eligibilityBucket);\n  }\n);\n\nconst employeeClaimSlice = createSlice({\n  name: EMPLOYEE_CLAIM,\n  initialState: {\n    employeeClaims: [],\n    filteredEmployeeClaims: [],\n    claimsFilter: {},\n    claimTimeFilter: {},\n    apiParams: {},\n    statsObj: STATS_OBJECT,\n    totalRecord: 0,\n    currentPage: 1,\n    pageNo: 1,\n    claimReSubmissionModal: null,\n  },\n  reducers: {\n    setFilteredEmployeeClaims: (state, action) => {\n      state.filteredEmployeeClaims = action.payload;\n    },\n    setPageNo: (state, action) => {\n      state.pageNo = action.payload;\n    },\n    setStatsObj: (state, action) => {\n      state.statsObj = action.payload;\n    },\n    setClaimsFilter: (state, action) => {\n      state.claimsFilter = action.payload;\n    },\n    setCurrentPage: (state, action) => {\n      state.currentPage = action.payload;\n    },\n    setClaimTimeFilter: (state, action) => {\n      state.claimTimeFilter = action.payload;\n    },\n    setAPIParams: (state, action) => {\n      state.apiParams = action.payload;\n    },\n    setClaimReSubmissionModal: (state, action) => {\n      state.claimReSubmissionModal = action.payload;\n    },\n    updateNotes: (state, action) => {\n      const data = action.payload;\n      const emp = state.employeeClaims.find((f) => f.id === data.id);\n      emp[\"note\"] = data.note;\n\n      const existingemployeeIndex = state.employeeClaims.findIndex((employee) => employee.id === emp.id);\n      const existingFilteremployeeIndex = state.filteredEmployeeClaims.findIndex((employee) => employee.id === emp.id);\n      if (existingemployeeIndex !== -1) {\n        state.employeeClaims[existingemployeeIndex] = emp;\n      }\n      if (existingFilteremployeeIndex !== -1) {\n        state.filteredEmployeeClaims[existingFilteremployeeIndex] = emp;\n      }\n    },\n    updateClaimSubs: (state, action) => {\n      const emp = formatClaims([action.payload])[0];\n\n      const existingemployeeIndex = state.employeeClaims.findIndex((employee) => employee.id === emp.id);\n      const existingFilteremployeeIndex = state.filteredEmployeeClaims.findIndex((employee) => employee.id === emp.id);\n      if (existingemployeeIndex !== -1) {\n        state.employeeClaims[existingemployeeIndex] = emp;\n      }\n      if (existingFilteremployeeIndex !== -1) {\n        state.filteredEmployeeClaims[existingFilteremployeeIndex] = emp;\n        const filteredClaims = nestedFilter(state.filteredEmployeeClaims, state.claimsFilter);\n        // Update Total Record According to Filter\n        state.totalRecord = state.totalRecord - (state.filteredEmployeeClaims.length - filteredClaims.length);\n        state.filteredEmployeeClaims = filteredClaims;\n      }\n    },\n    createClaimSubs: (state, action) => {\n      if (state.employeeClaims.findIndex((f) => f.id === action.payload.id) === -1) {\n        const claim = formatClaims([action.payload]);\n        state.employeeClaims.unshift(claim[0]);\n        state.filteredEmployeeClaims.unshift(claim[0]);\n        state.filteredEmployeeClaims = nestedFilter(state.filteredEmployeeClaims, state.claimsFilter);\n        state.totalRecord = state.totalRecord + 1;\n      }\n    },\n    deleteClaimSubs: (state, action) => {\n      if (state.employeeClaims.findIndex((f) => f.id === action.payload.id) !== -1) {\n        const deletedClaim = action.payload;\n        state.employeeClaims = state.employeeClaims.filter((employeeClaim) => employeeClaim.id !== deletedClaim.id);\n        state.filteredEmployeeClaims = state.filteredEmployeeClaims.filter(\n          (employeeClaim) => employeeClaim.id !== deletedClaim.id\n        );\n        state.totalRecord = state.totalRecord - 1;\n      }\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchAllEmployeeClaimsAsync.fulfilled, (state, action) => {\n        const res = action.payload;\n        if (!res) return;\n        const claims = sortUsers(formatClaims(res.rows));\n        const models = sortUsers([...state.employeeClaims, ...claims]);\n        if (state.pageNo === 1) {\n          state.statsObj = {\n            ...res.summary,\n            rejectted: res.summary.rejected,\n            rejecttedAmount: res.summary.rejectedAmount,\n            partialProcessed: res.summary.partial,\n            partialProcessedAmount: res.summary.partialAmount,\n          };\n          state.totalRecord = res.total;\n          state.employeeClaims = claims;\n          state.filteredEmployeeClaims = claims;\n        } else {\n          state.employeeClaims = models;\n          state.filteredEmployeeClaims = models;\n        }\n\n        // setFilteredEmployeeClaims(sortUsers(filterDates(nestedFilter(models, filter), timeFilter), sortBy));\n      })\n      .addCase(getStatsSummaryClaimAsync.fulfilled, (state, action) => {\n        state.statsObj = action.payload;\n      })\n      .addCase(createEmployeeClaimAsync.fulfilled, (state, action) => {\n        if (state.employeeClaims.findIndex((f) => f.id === action.payload.id) === -1) {\n          const claim = formatClaims([action.payload]);\n          state.employeeClaims.unshift(claim[0]);\n          state.filteredEmployeeClaims.unshift(claim[0]);\n          state.statsObj = updateStats({ ...state.statsObj }, claim[0], null, \"INSERT\", false);\n          state.filteredEmployeeClaims = nestedFilter(state.filteredEmployeeClaims, state.claimsFilter);\n        }\n      })\n\n      .addCase(deleteEmployeeClaimAsync.fulfilled, (state, action) => {\n        const deletedClaims = action.payload;\n        const deletedemployeeClaimIds = deletedClaims.map((m) => m.id);\n        state.employeeClaims = state.employeeClaims.filter(\n          (employeeClaim) => !deletedemployeeClaimIds.includes(employeeClaim.id)\n        );\n        state.filteredEmployeeClaims = state.filteredEmployeeClaims.filter(\n          (employeeClaim) => !deletedemployeeClaimIds.includes(employeeClaim.id)\n        );\n        for (let i = 0; i < deletedClaims.length; i++) {\n          const claim = deletedClaims[i];\n          state.statsObj = updateStats({ ...state.statsObj }, claim, null, \"\", true);\n        }\n      })\n      .addMatcher(\n        (action) =>\n          [\n            updateEmployeeClaimAsync,\n            acknowledgeClaimAsync,\n            updateStatusEmployeeClaimAsync,\n            updateBulkSubmitEmployeeClaimAsync,\n          ].some((thunk) => action.type.startsWith(thunk.fulfilled.type)),\n        (state, action) => {\n          const claims = formatClaims(action.payload);\n          for (let i = 0; i < claims.length; i++) {\n            const updatedemployeeClaim = { ...claims[i] };\n            const existingemployeeClaimIndex = state.employeeClaims.findIndex(\n              (employeeClaim) => employeeClaim.id === updatedemployeeClaim.id\n            );\n            if (existingemployeeClaimIndex !== -1) {\n              state.employeeClaims[existingemployeeClaimIndex] = updatedemployeeClaim;\n            }\n            const existingfilteredEmployeeClaimIndex = state.filteredEmployeeClaims.findIndex(\n              (employeeClaim) => employeeClaim.id === updatedemployeeClaim.id\n            );\n            if (existingfilteredEmployeeClaimIndex !== -1) {\n              state.filteredEmployeeClaims[existingfilteredEmployeeClaimIndex] = updatedemployeeClaim;\n            }\n          }\n          state.filteredEmployeeClaims = nestedFilter(state.filteredEmployeeClaims, state.claimsFilter);\n        }\n      );\n  },\n});\n\nexport const {\n  setPageNo,\n  setFilteredEmployeeClaims,\n  updateNotes,\n  setStatsObj,\n  updateClaimSubs,\n  createClaimSubs,\n  deleteClaimSubs,\n  setClaimReSubmissionModal,\n  setClaimsFilter,\n  setClaimTimeFilter,\n  setCurrentPage,\n} = employeeClaimSlice.actions;\n\nexport default employeeClaimSlice.reducer;\n","import { API_ACTIONS, MESSAGE_MODES } from \"constant\";\nimport { AUTH_CURRENT_USER } from \"store/features/authentication/authenticationConstant\";\nimport { showMessage } from \"../features/general/generalSlice\";\n\nconst errorMiddleware = (store) => (next) => (action) => {\n  const { dispatch } = store;\n  if (action.type.endsWith(API_ACTIONS.rejected)) {\n    const notToCheck = [AUTH_CURRENT_USER].map((key) => key + \"/\" + API_ACTIONS.rejected);\n    if (!notToCheck.includes(action.type)) {\n      dispatch(showMessage({ text: action.error.message, mode: MESSAGE_MODES.error })); // Dispatch setError(false) after async action completes or throws an error\n    }\n  }\n  return next(action);\n};\n\nexport default errorMiddleware;\n","export const DOCUMNET = \"documents\";\n\nexport const DOC_FETCH = \"documentFetch\";\n\nexport const DOC_CREATE = \"documentCreate\";\n\nexport const DOC_UPDATE = \"documentUpdate\";\n\nexport const DOC_DELETE = \"documentDelete\";\n\nexport const DOC_FETCH_TYPE = \"documentFetchType\";\n\nexport const DOC_TYPE_CREATE = \"documentTypeCreate\";\n","import { API_ACTIONS } from \"constant\";\nimport { AUTH_ERROR_EMAIL } from \"store/features/authentication/authenticationConstant\";\nimport { ICT_CODE_FETCH, CPT_CODE_FETCH } from \"store/features/cptCodes/cptCodeConstant\";\nimport { DOC_FETCH_TYPE } from \"store/features/documents/documentConstant\";\nimport { GET_CLAIM_STATS, EMPLOYEE_CLAIM_FETCH } from \"store/features/employeeClaims/employeeClaimsConstant\";\nimport { INSURANCES_FETCH, INSURANCES_FETCH_ALL } from \"store/features/insurances/insuranceConstant\";\nimport { setLoader } from \"../features/general/generalSlice\";\nimport { COMPANY_SETTING_FETCH } from \"store/features/companySetting/companySettingConstants\";\nimport { PROVIDER_FETCH } from \"store/features/providers/providersContants\";\n\nconst loaderMiddleware = (store) => (next) => (action) => {\n  const { dispatch } = store;\n\n  const nosShowLoader = action.meta?.arg?.noShowLoader;\n  \n  const notToCheck = [\n    GET_CLAIM_STATS,\n    PROVIDER_FETCH,\n    EMPLOYEE_CLAIM_FETCH,\n    DOC_FETCH_TYPE,\n    AUTH_ERROR_EMAIL,\n    DOC_FETCH_TYPE,\n    INSURANCES_FETCH,\n    INSURANCES_FETCH_ALL,\n    COMPANY_SETTING_FETCH,\n  ].map((key) => key + \"/\" + API_ACTIONS.pending);\n  if (action.type.endsWith(API_ACTIONS.fulfilled) || action.type.endsWith(API_ACTIONS.rejected)) {\n    dispatch(setLoader(false)); // Dispatch setLoader(false) after async action completes or throws an error\n  } else if (action.type.endsWith(API_ACTIONS.pending) && !notToCheck.includes(action.type) && !nosShowLoader) {\n    dispatch(setLoader(true)); // Dispatch setLoader(true) before async action starts\n  }\n  return next(action);\n};\n\nexport default loaderMiddleware;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport api from \"../../../api\";\nimport { EMPLOYEE_LOGS, EMPLOYEE_LOGS_FETCH } from \"./employeeLogsConstant\";\n\nexport const fetchApiDataAsync = createAsyncThunk(EMPLOYEE_LOGS_FETCH, async (id) => {\n  const response = await api.getEmployeeLogs(id);\n  return response;\n});\n\nconst employeeLogsSlice = createSlice({\n  name: EMPLOYEE_LOGS,\n  initialState: { data: null },\n  extraReducers: (builder) => {\n    builder.addCase(fetchApiDataAsync.fulfilled, (state, action) => {\n      state.data = action.payload;\n    });\n  },\n});\n\nexport default employeeLogsSlice.reducer;\n","export const EMPLOYEE_LOGS = \"employeeLogs\";\n\nexport const EMPLOYEE_LOGS_FETCH = \"employeeLogs/fetchApiData\";\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { MESSAGE_MODES } from \"constant\";\nimport { userCompanyID } from \"utils\";\nimport api from \"../../../api\";\nimport { setMessage } from \"../general/generalAction\";\nimport { setLoader, showMessage } from \"../general/generalSlice\";\nimport {\n  DOC_FETCH,\n  DOC_CREATE,\n  DOC_UPDATE,\n  DOC_DELETE,\n  DOCUMNET,\n  DOC_FETCH_TYPE,\n  DOC_TYPE_CREATE,\n} from \"./documentConstant\";\n\nexport const fetchDocuemntAsync = createAsyncThunk(DOC_FETCH, async (param, { dispatch }) => {\n  const response = await api.fetchDocumentAPI(param); // Your API call logic here\n  return response || [];\n});\n\nexport const fetchDocuemntTypesAsync = createAsyncThunk(DOC_FETCH_TYPE, async (param, { dispatch }) => {\n  const response = await api.fetchDocumentTypesAPI(param); // Your API call logic here\n  return response || [];\n});\nexport const createDocuemntTypesAsync = createAsyncThunk(DOC_TYPE_CREATE, async (param, { dispatch }) => {\n  const response = await api.creteDocumentTypesAPI(param); // Your API call logic here\n  if (response && response && response.length > 0) return response[0];\n  return null;\n});\n\nexport const updateDocumentAsync = createAsyncThunk(DOC_UPDATE, async (param, { dispatch, getState }) => {\n  const loginUSer = getState().auth.user;\n\n  dispatch(setLoader(true));\n\n  const logObject = {\n    employeeID: param.employeeID,\n    empID: param.employeeID,\n    userID: loginUSer.sub,\n    schrID: param.schrID,\n    eventType: \"UpdateDocument\",\n    action: \"Done\",\n    clientID: userCompanyID.get(),\n    userName: loginUSer.name,\n  };\n\n  let fileName = param.fileName;\n  if (param.file) {\n    fileName = await api.saveDocumentFile(param.employeeID, param.selectedFileName, param.file);\n  }\n  if (param.employeeID) {\n    const response = await api.updateDocumentAPI({\n      ...param,\n      fileName,\n      updatedBy: loginUSer.sub,\n      updatedByName: loginUSer.name,\n    }); // Your API call logic here\n\n    if (response && response.data) {\n      await dispatch(createDocuemntTypesAsync({ title: param.docType }));\n      await api.saveLogs(logObject);\n      dispatch(setMessage(\"Document updated Successfully\", MESSAGE_MODES.success));\n      return response.data;\n    }\n    dispatch(setMessage(`${response?.error || \"Document Not Updated\"}`, MESSAGE_MODES.error));\n\n    return null;\n  } else {\n    dispatch(setMessage(\"Document updated Successfully\", MESSAGE_MODES.success));\n    return { ...param, fileName, updatedBy: loginUSer.sub, updatedByName: loginUSer.name };\n  }\n});\n\nexport const createDocumentAsync = createAsyncThunk(DOC_CREATE, async (param, { dispatch, getState }) => {\n  const loginUSer = getState().auth.user;\n  dispatch(setLoader(true));\n\n  const logObject = {\n    employeeID: param.employeeID,\n    empID: param.employeeID,\n    userID: loginUSer.sub,\n    schrID: param.schrID,\n    eventType: \"CreatedDocument\",\n    action: \"Done\",\n    clientID: userCompanyID.get(),\n    userName: loginUSer.name,\n  };\n  let fileName = null;\n  if (param.file) {\n    fileName = await api.saveDocumentFile(param.employeeID, param.selectedFileName, param.file);\n  }\n\n  if (param.employeeID) {\n    const response = await api.newDocumentCreateAPI([\n      {\n        ...param,\n        fileName,\n        updatedBy: loginUSer.sub,\n        updatedByName: loginUSer.name,\n      },\n    ]); // Your API call logic here\n\n    if (response.rows && response.rows.length > 0) {\n      await dispatch(createDocuemntTypesAsync({ title: param.docType }));\n      await api.saveLogs(logObject);\n      dispatch(setMessage(\"Document Uploaded Successfully\", MESSAGE_MODES.success));\n      return response.rows[0];\n    }\n    dispatch(setMessage(`${response?.error || \"Document Not Created\"}`, MESSAGE_MODES.error));\n    return null;\n  } else {\n    dispatch(setMessage(\"Document Uploaded Successfully\", MESSAGE_MODES.success));\n    return { ...param, fileName, updatedBy: loginUSer.sub, updatedByName: loginUSer.name };\n  }\n});\n\nexport const deleteDcoumentAsync = createAsyncThunk(DOC_DELETE, async (param, { dispatch, getState }) => {\n  const loginUSer = getState().auth.user;\n  const logObject = {\n    employeeID: param.employeeID,\n    empID: param.employeeID,\n    userID: loginUSer.sub,\n    schrID: param.schrID,\n    eventType: \"DeletedDocument\",\n    action: \"Done\",\n    clientID: userCompanyID.get(),\n    userName: loginUSer.name,\n  };\n  const response = await api.deleteDocumentAPI(param); // Your API call logic here\n  if (response && response && response.status) {\n    await api.saveLogs(logObject);\n    dispatch(setMessage(\"Document Deleted Successfully\", MESSAGE_MODES.success));\n    return param;\n  }\n  dispatch(setMessage(`${response?.error || \"Document Not Deleted\"}`, MESSAGE_MODES.error));\n  return null;\n});\n\nconst documentSlice = createSlice({\n  name: DOCUMNET,\n  initialState: {\n    documents: [],\n    documentTypes: [],\n  },\n  reducers: {\n    setDocumentTypes: (state, action) => {\n      state.documentTypes = action.payload;\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(fetchDocuemntAsync.fulfilled, (state, action) => {\n        state.documents = action.payload;\n      })\n      .addCase(fetchDocuemntTypesAsync.fulfilled, (state, action) => {\n        console.log('ActionS', action.payload)\n        state.documentTypes = action.payload;\n      })\n      .addCase(createDocuemntTypesAsync.fulfilled, (state, action) => {\n        if (action.payload) state.documentTypes.push(action.payload);\n      })\n      .addCase(createDocumentAsync.fulfilled, (state, action) => {\n        if (action.payload) state.documents.unshift(action.payload);\n      })\n      .addCase(deleteDcoumentAsync.fulfilled, (state, action) => {\n        if (action.payload) {\n          const deleteDoc = action.payload;\n          state.documents = state.documents.filter((f) => f.id !== deleteDoc.id);\n        }\n      })\n      .addCase(updateDocumentAsync.fulfilled, (state, action) => {\n        const updateDoc = action.payload;\n        if (updateDoc) {\n          const existingIndex = state.documents.findIndex((f) => f.id === updateDoc.id);\n          if (existingIndex !== -1) {\n            state.documents[existingIndex] = updateDoc;\n          }\n        }\n      });\n  },\n});\n\nexport const { setDocumentTypes } = documentSlice.actions;\nexport default documentSlice.reducer;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { EMP_CLAIM_PERSONALIZE } from \"constants/personalization\";\nimport moment from \"moment\";\nimport api from \"../../../api\";\nimport {\n  CLAIMS_KEYS,\n  CLAIM_SUBMIT_STATUS,\n  CONFIG,\n  DIAGNOSIS_ITEMS,\n  EMP_CLAIM_BLANK_OPTS,\n  MEDICARE_ID,\n  MESSAGE_MODES,\n  ON_HOLD_CPT,\n  PARSE_ALPHA_INTO_NUM,\n  STATS_OBJECT,\n  STATUS_KEY,\n} from \"../../../constant\";\nimport graphqlApi from \"../../../graphQLApi\";\nimport {\n  formatClaims,\n  formatDateMDY,\n  formatEmployeeClaim,\n  formatInvoice,\n  getDiagonosisCode,\n  getFloatVal,\n  getIntVal,\n  isJSONString,\n  removeKeysFromObject,\n  removeSpaceIns,\n  userCompanyID,\n} from \"../../../utils\";\nimport { setMessage } from \"../general/generalAction\";\nimport {\n  CLAIM_INVOICE,\n  CLAIM_INVOICE_FETCH,\n  CLAIM_INVOICE_UPDATE,\n  CLAIM_INVOICE_CANCELLED,\n} from \"./claimInvoiceConstants\";\nimport insServices from \"services/InsuranceService\";\nimport { CLAIM_INVOICE_PERSONALIZE } from \"constants/personalization\";\n\n// Async thunk to fetch all employeeClaims\n\nconst nestedFilter = (targetArray, filters) => {\n  if (Object.keys(filters).length === 0) return targetArray;\n  const filterKeys = Object.keys(filters);\n  //filters main array of objects\n  const models = targetArray.filter((obj) => {\n    //goes through each key being filtered for\n    return filterKeys.every((key) => {\n      if (filters[key] == \"\" && !Object.keys(filters[key]).length) {\n        return true;\n      }\n      if (key === \"paidAmount\" || key === \"adjustedAmount\") {\n        return obj[key] && obj[key].toString().includes(filters[key]);\n      }\n      if (key === \"invoiceAmount\") {\n        return obj[key] && obj[key].toString().includes(filters[key]);\n      }\n      if (key === \"discount\") {\n        return obj[key] && obj[key].toString().includes(filters[key]);\n      }\n      if (key === \"dueDate\") {\n        return obj[key] && obj[key].toString().includes(filters[key]);\n      }\n      if (key === \"Blank\" && filters[key].length > 0) {\n        return filters[key].some((f) => !obj[CLAIM_INVOICE_PERSONALIZE.find((t) => t.title === f)?.itemKey]);\n      }\n      if (key === \"status_code\") {\n        return filters[key] && obj[key] === 2;\n      }\n      return obj[key] && obj[key].toLowerCase().includes(filters[key].toLowerCase());\n    });\n  });\n  return models;\n};\n\nexport const fetchAllClaimInvoiceAsync = createAsyncThunk(\n  CLAIM_INVOICE_FETCH,\n  async ({ dateFilter, page, filter, isNewCall, orderBy, orderByDirection }, { getState }) => {\n    const params = { ...filter, page, orderByDirection, orderBy };\n\n    if (dateFilter) {\n      const { start, end } = dateFilter;\n      if (start) Object.assign(params, { startDate: moment(start.format(\"YYYY-MM-DD\")).startOf(\"day\").toISOString() });\n      if (end) Object.assign(params, { endDate: moment(end.format(\"YYYY-MM-DD\")).endOf(\"day\").toISOString() });\n    }\n\n    if (filter?.Blank || filter?.Blank?.length > 0) {\n      delete params.Blank;\n      Object.assign(params, { blanks: filter.Blank.map((element) => EMP_CLAIM_BLANK_OPTS[element]) });\n    }\n\n    if (isNewCall) {\n      Object.assign(params, { page: 1 });\n    }\n    const res = await api.getInvoice(params);\n\n    return res;\n  }\n);\n\nexport const claimInvoiceUpdateAsync = createAsyncThunk(CLAIM_INVOICE_UPDATE, async (data, { getState, dispatch }) => {\n  const dbInvoice = await graphqlApi.getClaimInvoiceByIdGQl(data.id);\n  console.log(\"dbInvoice\", dbInvoice);\n  const correctedDate = data.dueDate.replace(/T00:00:00Z$/, \"\");\n  const params = {\n    id: dbInvoice.id,\n    toData: JSON.stringify(data.toData),\n    paidAmount: data.paidAmount,\n    invoiceAmount: data.invoiceAmount,\n    dueDate: moment(correctedDate).utc().format(\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\"),\n    note: data.note,\n    details: JSON.stringify(data.details),\n    minAmount: data.minAmount,\n    _version: dbInvoice._version,\n  };\n\n  const res = await graphqlApi.updateClaimInvoiceGQL(params);\n  if (Object.keys(res).length > 0) {\n    dispatch(setMessage(\"Invoice updated successfully !!\", MESSAGE_MODES.success));\n  }\n  return res;\n});\n\nexport const claimInvoiceCancelledAsync = createAsyncThunk(\n  CLAIM_INVOICE_CANCELLED,\n  async ({ invoices }, { getState, dispatch }) => {\n    const loginUser = getState().auth.user;\n\n    const params = {\n      ids: invoices.map((m) => m.id),\n      userName: loginUser.name,\n      userID: loginUser.sub,\n    };\n\n    const res = await api.cancelInvoices(params);\n\n    if (res)\n      dispatch(\n        setMessage(\n          `${res.success} Invoice(s) Cancelled Successfully ${res.fail > 0 ? `${res.fail} Invoice(s) Failed` : \"\"}`,\n          MESSAGE_MODES.success\n        )\n      );\n    return res;\n  }\n);\n\nconst claimInvoiceSlice = createSlice({\n  name: CLAIM_INVOICE,\n  initialState: {\n    claimInvoice: [],\n    filteredClaimInvoice: [],\n    invoicesFilter: {},\n    totalRecord: 0,\n    currentPage: 1,\n    pageNo: 1,\n  },\n  reducers: {\n    setFilteredClaimInvoice: (state, action) => {\n      state.filteredClaimInvoice = action.payload;\n    },\n    setPageNo: (state, action) => {\n      state.pageNo = action.payload;\n    },\n    setInvoicesFilter: (state, action) => {\n      state.invoicesFilter = action.payload;\n      state.filteredClaimInvoice = nestedFilter(state.filteredClaimInvoice, state.invoicesFilter);\n      state.totalRecord = state.filteredClaimInvoice.length;\n    },\n    updateNotes: (state, action) => {\n      const data = action.payload;\n      const emp = state.filteredClaimInvoice.find((f) => f.id === data.id);\n      emp[\"note\"] = data.note;\n\n      const existingInvoiceIndex = state.claimInvoice.findIndex((inv) => inv.id === emp.id);\n      const existingFilterInvoiceIndex = state.filteredClaimInvoice.findIndex((inv) => inv.id === emp.id);\n      if (existingInvoiceIndex !== -1) {\n        state.claimInvoice[existingInvoiceIndex] = emp;\n      }\n      if (existingFilterInvoiceIndex !== -1) {\n        state.filteredClaimInvoice[existingFilterInvoiceIndex] = emp;\n      }\n    },\n    updateInvoiceSubs: (state, action) => {\n      const dbInvoice = formatInvoice([action.payload])[0];\n\n      const existingIndex = state.claimInvoice.findIndex((invoice) => invoice.id === dbInvoice.id);\n      const existingFilterIndex = state.filteredClaimInvoice.findIndex((invoice) => invoice.id === dbInvoice.id);\n      if (existingIndex !== -1) {\n        state.claimInvoice[existingIndex] = dbInvoice;\n      }\n      if (existingFilterIndex !== -1) {\n        state.filteredClaimInvoice[existingFilterIndex] = dbInvoice;\n        const filteredClaimInvoice = nestedFilter(state.filteredClaimInvoice, state.invoicesFilter);\n        // Update Total Record According to Filter\n        state.totalRecord = state.totalRecord - (state.filteredClaimInvoice.length - filteredClaimInvoice.length);\n        state.filteredClaimInvoice = filteredClaimInvoice;\n      }\n    },\n    createInvoiceSubs: (state, action) => {\n      if (state.claimInvoice.findIndex((f) => f.id === action.payload.id) === -1) {\n        const dbInvoice = formatInvoice([action.payload]);\n        state.claimInvoice.unshift(dbInvoice[0]);\n        state.filteredClaimInvoice.unshift(dbInvoice[0]);\n        state.claimInvoice = nestedFilter(state.filteredClaimInvoice, state.invoicesFilter);\n        state.totalRecord = state.totalRecord + 1;\n      }\n    },\n  },\n  extraReducers: (builder) => {\n    builder.addCase(fetchAllClaimInvoiceAsync.fulfilled, (state, action) => {\n      const res = action.payload;\n      if (!res) return;\n      let record = formatInvoice(res.rows);\n      const models = [...state.claimInvoice, ...record];\n      if (state.pageNo === 1) {\n        state.totalRecord = res.total;\n        state.claimInvoice = record;\n        state.filteredClaimInvoice = record;\n      } else {\n        state.claimInvoice = models;\n        state.filteredClaimInvoice = models;\n      }\n    });\n  },\n});\n\nexport const {\n  setPageNo,\n  setFilteredClaimInvoice,\n  setInvoicesFilter,\n  updateNotes,\n  createInvoiceSubs,\n  updateInvoiceSubs,\n} = claimInvoiceSlice.actions;\n\nexport default claimInvoiceSlice.reducer;\n","export const CLAIM_INVOICE = \"claimInvoice\";\n\nexport const CLAIM_INVOICE_FETCH = \"claimInvoice/fetchAllClaimsInvoice\";\nexport const CLAIM_INVOICE_UPDATE = \"claimInvoice/claimsInvoiceUpdate\";\nexport const CLAIM_INVOICE_CANCELLED = \"claimInvoice/claimsInvoiceCancelled\";\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { MESSAGE_MODES } from \"constant\";\nimport { userCompanyID } from \"utils\";\nimport api from \"../../../api\";\nimport { setMessage } from \"../general/generalAction\";\nimport { setLoader, showMessage } from \"../general/generalSlice\";\nimport {\n  DOC_FETCH,\n  DOC_CREATE,\n  DOC_UPDATE,\n  DOC_DELETE,\n  DOCUMNET,\n  DOC_FETCH_TYPE,\n  DOC_TYPE_CREATE,\n} from \"./invoiceDocumentConstant\";\n\nexport const updateInvoiceDocsAsync = createAsyncThunk(DOC_UPDATE, async (param, { dispatch, getState }) => {\n  const loginUSer = getState().auth.user;\n\n  dispatch(setLoader(true));\n\n  let fileName = param.fileName;\n  if (param.file) {\n    fileName = await api.saveInvoiceDocFile(param.selectedFileName, param.file);\n  }\n  return { ...param, fileName, updatedBy: loginUSer.sub, updatedByName: loginUSer.name };\n});\n\nexport const createInvoiceDocsAsync = createAsyncThunk(DOC_CREATE, async (param, { dispatch, getState }) => {\n  const loginUSer = getState().auth.user;\n  dispatch(setLoader(true));\n\n  let fileName = null;\n  if (param.file) {\n    fileName = await api.saveInvoiceDocFile(param.selectedFileName, param.file);\n  }\n\n  dispatch(setMessage(\"Document Uploaded Successfully\", MESSAGE_MODES.success));\n\n  return { ...param, fileName, updatedBy: loginUSer.sub, updatedByName: loginUSer.name, file: \"\" };\n});\n\nconst invoiceDocumentSlice = createSlice({\n  name: DOCUMNET,\n  initialState: {\n    invoiceDocs: [],\n  },\n  reducers: {\n    setInvoiceDocs: (state, action) => {\n      state.invoiceDocs = action.payload;\n    },\n    deleteInvoiceDocs: (state, action) => {\n      if (action.payload) state.invoiceDocs = state.invoiceDocs.filter((f) => f.id !== action.payload?.id);\n    },\n  },\n  extraReducers: (builder) => {\n    builder\n      .addCase(createInvoiceDocsAsync.fulfilled, (state, action) => {\n        if (action.payload) state.invoiceDocs.unshift(action.payload);\n      })\n      .addCase(updateInvoiceDocsAsync.fulfilled, (state, action) => {\n        const updateDoc = action.payload;\n        if (updateDoc) {\n          const existingIndex = state.invoiceDocs.findIndex((f) => f.id === updateDoc.id);\n          if (existingIndex !== -1) {\n            state.invoiceDocs[existingIndex] = updateDoc;\n          }\n        }\n      });\n  },\n});\n\nexport const { setInvoiceDocs } = invoiceDocumentSlice.actions;\nexport default invoiceDocumentSlice.reducer;\n","export const DOCUMNET = \"invoiceDocuments\";\n\nexport const DOC_FETCH = \"invoiceDocumentFetch\";\n\nexport const DOC_CREATE = \"invoiceDocumentCreate\";\n\nexport const DOC_UPDATE = \"invoiceDocumentUpdate\";\n\nexport const DOC_DELETE = \"invoiceDocumentDelete\";\n\nexport const DOC_FETCH_TYPE = \"invoiceDocumentFetchType\";\n\nexport const DOC_TYPE_CREATE = \"invoiceDocumentTypeCreate\";\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport {\n  ADD_BULK_INVOICES,\n  CLEAR_BULK_INVOICES,\n  REMOVE_BULK_INVOICES_CLAIM,\n  UPDATE_CLAIM_MESSAGE,\n  SET_ERROR_SELECTED_CLAIMS,\n} from \"./bulkInvoicesConstant\";\n\nexport const addSelectedClaim = createAsyncThunk(ADD_BULK_INVOICES, async (claims) => {\n  return claims;\n});\nexport const removeClaimItem = createAsyncThunk(REMOVE_BULK_INVOICES_CLAIM, async (id) => {\n  return id;\n});\n\nexport const resetClaimList = createAsyncThunk(CLEAR_BULK_INVOICES, async () => {\n  return;\n});\n\nexport const updateClaimMessage = createAsyncThunk(\n  UPDATE_CLAIM_MESSAGE,\n  async ({ id, message, minimumAmount,faxSubject }, { rejectWithValue }) => {\n    try {\n      return { id, message, minimumAmount, faxSubject };\n    } catch (error) {\n      return rejectWithValue(error.message);\n    }\n  }\n);\n\nexport const setErrorForSelectedClaims = createAsyncThunk(SET_ERROR_SELECTED_CLAIMS, async (idsArray) => {\n  return idsArray;\n});\n","export const ADD_BULK_INVOICES = \"bulkInvoices/addSelectedClaim\";\nexport const CLEAR_BULK_INVOICES = \"bulkInvoices/clearClaim\";\nexport const BULK_INVOICES = \"bulk_invoices\";\nexport const REMOVE_BULK_INVOICES_CLAIM = \"remove_bulk_invoices_claim\";\nexport const UPDATE_CLAIM_MESSAGE = \"bulkInvoices/updateClaimMessage\";\nexport const SET_ERROR_SELECTED_CLAIMS = \"bulkInvoices/setErrorForSelectedClaims\";\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { BULK_INVOICES } from \"./bulkInvoicesConstant\";\nimport {\n  addSelectedClaim,\n  resetClaimList,\n  removeClaimItem,\n  updateClaimMessage,\n  setErrorForSelectedClaims,\n} from \"./bulkInvoicesAction\";\n\nconst bulkInvoicesSlice = createSlice({\n  name: BULK_INVOICES,\n  initialState: {\n    selectedClaims: [],\n  },\n  reducers: {},\n  extraReducers: (builder) => {\n    builder.addCase(addSelectedClaim.fulfilled, (state, action) => {\n      state.selectedClaims = action.payload;\n    });\n    builder.addCase(resetClaimList.fulfilled, (state) => {\n      state.selectedClaims = [];\n    });\n    builder.addCase(removeClaimItem.fulfilled, (state, action) => {\n      state.selectedClaims = state.selectedClaims.filter((item) => item.id !== action.payload);\n    });\n    builder.addCase(updateClaimMessage.fulfilled, (state, action) => {\n      const { id, message, minimumAmount } = action.payload;\n      const claimIndex = state.selectedClaims.findIndex((item) => item.claimID === id);\n      if (claimIndex !== -1) {\n        state.selectedClaims[claimIndex].message = message;\n        state.selectedClaims[claimIndex].minAmount = Number(minimumAmount);\n      }\n    });\n    builder.addCase(setErrorForSelectedClaims.fulfilled, (state, action) => {\n      const updatedClaims = action.payload;\n\n      // Create a map of updated claims by their local_id\n      const updatedClaimsMap = updatedClaims.reduce((map, claim) => {\n        map[claim.local_id] = claim;\n        return map;\n      }, {});\n\n      // Update state.selectedClaims using the map for faster lookup\n      state.selectedClaims = state.selectedClaims.map((claim) => {\n        const updateObj = updatedClaimsMap[claim.id];\n        if (updateObj) {\n          return {\n            ...claim,\n            isError: !updateObj.status,\n            errorMessage: updateObj.message,\n          };\n        }\n        return claim;\n      });\n    });\n  },\n});\n\nexport default bulkInvoicesSlice.reducer;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { PROCESS_PAYMENT } from \"./processPaymentConstant\";\n\nconst processPaymentSlice = createSlice({\n  name: PROCESS_PAYMENT,\n  initialState: {\n    alreadyPostedClaim: [],\n    openPaymentProcess: false,\n    claimsIDs: [],\n  },\n  reducers: {\n    setAlreadyPostedClaim: (state, action) => {\n      state.alreadyPostedClaim = action.payload;\n    },\n    setOpenPaymentProcess: (state, action) => {\n      state.openPaymentProcess = action.payload;\n    },\n    setClaimsIDs: (state, action) => {\n      state.claimsIDs = action.payload;\n    },\n  },\n});\n\nexport const { setAlreadyPostedClaim, setOpenPaymentProcess, setClaimsIDs } = processPaymentSlice.actions;\nexport default processPaymentSlice.reducer;\n","export const PROCESS_PAYMENT = \"processPayment\";\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { ADD_SELECTED_INVOICES, RESET_SELECTED_INVOICES } from \"./invoicePreviewConstant\";\n\nexport const addSelectedInvoice = createAsyncThunk(ADD_SELECTED_INVOICES, async (invoice) => {\n  return invoice;\n});\n\nexport const resetInvoice = createAsyncThunk(RESET_SELECTED_INVOICES, async () => {\n  return;\n});\n","export const INVOICE_PREVIEW = \"invoice_preview\";\nexport const ADD_SELECTED_INVOICES = \"add_selected_invoice\";\nexport const RESET_SELECTED_INVOICES = \"reset_selected_invoice\";\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { INVOICE_PREVIEW } from \"./invoicePreviewConstant\";\nimport { addSelectedInvoice, resetInvoice } from \"./invoicePreviewAction\";\nimport { updateClaimMessage } from \"../bulkInvoices/bulkInvoicesAction\";\n\nconst invoicePreviewSlice = createSlice({\n  name: INVOICE_PREVIEW,\n  initialState: {\n    selectedInvoice: {},\n    isBulk: false,\n    viewOnly: false,\n  },\n  reducers: {},\n  extraReducers: (builder) => {\n    builder.addCase(addSelectedInvoice.fulfilled, (state, action) => {\n      state.selectedInvoice = action.payload.selectedInvoice;\n      state.isBulk = action?.payload?.isBulk || false;\n      state.viewOnly = action?.payload?.viewOnly || false;\n    });\n    builder.addCase(resetInvoice.fulfilled, (state) => {\n      state.selectedInvoice = {};\n      state.isBulk = false;\n      state.viewOnly = false;\n    });\n    builder.addCase(updateClaimMessage.fulfilled, (state, action) => {\n      const { id, message } = action.payload;\n      if (state.selectedInvoice && state.selectedInvoice.claimID === id) {\n        state.selectedInvoice.message = message;\n      }\n    });\n  },\n});\n\nexport default invoicePreviewSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { CLIENT_PCS } from \"./clientPcsConstant\";\nimport { customKeyBy } from \"util/customLodash\";\nimport { addSelectedPcs, removeSelectedPcs, showHideClientPcsModal, resetClientPcsState } from \"./clientPcsAction\";\n\nconst initialState = {\n  clientPcsList: [],\n  clientId: \"\",\n  showClientPcsModal: false,\n};\n\nconst clientPcsSlice = createSlice({\n  name: CLIENT_PCS,\n  initialState,\n  reducers: {},\n  extraReducers: (builder) => {\n    builder.addCase(addSelectedPcs.fulfilled, (state, action) => {\n      const payloadArray = Array.isArray(action.payload) ? action.payload : [action.payload];\n\n      const combinedList = [...state.clientPcsList, ...payloadArray];\n\n      const uniqueByKey = customKeyBy(combinedList, \"id\");\n\n      state.clientPcsList = Object.values(uniqueByKey);\n    });\n\n    builder.addCase(removeSelectedPcs.fulfilled, (state, action) => {\n      const pcsId = action.payload.id;\n      state.clientPcsList = state.clientPcsList.filter((item) => item.id !== pcsId);\n    });\n    builder.addCase(showHideClientPcsModal.fulfilled, (state, action) => {\n      const { clientId = \"\", show, pcsData } = action.payload;\n      state.showClientPcsModal = show;\n      state.clientId = clientId;\n      state.clientPcsList = pcsData ?? state.clientPcsList;\n    });\n    builder.addCase(resetClientPcsState.fulfilled, () => {\n      console.log(\"showClientPcsModal here\");\n      return initialState;\n    });\n  },\n});\n\nexport default clientPcsSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport {\n  deleteSalesPerson,\n  fetchSalePersons,\n  setSelectedClientId,\n  setSelectedSalePerson,\n  setSalesPersonAssignDetails,\n  setShowSalesPersonModal,\n  updateSalesPersonInList,\n  unLinkSalesPerson,\n  fetchSaleFilter,\n} from \"./salePersonAction\";\nimport { SALES_PERSON } from \"./salePersonConstant\";\n\nconst initialState = {\n  selectedSalePerson: null,\n  selectedClientId: null,\n  showSalesPersonModal: false,\n  salesPersonsList: [],\n  totalSalesPerson: 0,\n  assigningDetails: {\n    showAssignModal: false,\n    salesPersonListToAssign: [],\n    clientId: null,\n  },\n  saleReportFilter: { insurances: [], salePersons: [] },\n};\n\nconst salePersonSlice = createSlice({\n  name: SALES_PERSON,\n  initialState,\n  reducers: {},\n  extraReducers: (builder) => {\n    builder.addCase(setSelectedSalePerson.fulfilled, (state, action) => {\n      state.selectedSalePerson = action.payload;\n    });\n    builder.addCase(fetchSaleFilter.fulfilled, (state, action) => {\n      state.saleReportFilter = action.payload;\n    });\n    builder.addCase(setSelectedClientId.fulfilled, (state, action) => {\n      const { selectedClientId, salesPersonsList, totalSalesPerson } = action.payload;\n      state.selectedClientId = selectedClientId;\n      state.salesPersonsList = salesPersonsList;\n      state.totalSalesPerson = totalSalesPerson;\n    });\n    builder.addCase(fetchSalePersons.fulfilled, (state, action) => {\n      const { salesPersonsList, totalSalesPerson } = action.payload;\n      state.salesPersonsList = salesPersonsList;\n      state.totalSalesPerson = totalSalesPerson;\n    });\n    builder.addCase(setShowSalesPersonModal.fulfilled, (state, action) => {\n      state.showSalesPersonModal = !!action.payload;\n    });\n    builder.addCase(setSalesPersonAssignDetails.fulfilled, (state, action) => {\n      state.assigningDetails = { ...action.payload };\n    });\n    builder.addCase(updateSalesPersonInList.fulfilled, (state, action) => {\n      const { isNew, updatedSalesPerson } = action.payload;\n      const salesPersonArr = state.salesPersonsList || [];\n\n      if (!!isNew) {\n        salesPersonArr.push(updatedSalesPerson);\n        state.totalSalesPerson++;\n      } else {\n        const indexToUpd = salesPersonArr.findIndex((salesPerson) => salesPerson.id === updatedSalesPerson.id);\n        salesPersonArr.splice(indexToUpd, 1, updatedSalesPerson);\n      }\n      state.salesPersonsList = salesPersonArr || [];\n    });\n    builder.addCase(deleteSalesPerson.fulfilled, (state, action) => {\n      const deletedSalesPerson = action.payload;\n      const prevList = [...state.salesPersonsList];\n      const indexToRemove = prevList.findIndex((salesPerson) => salesPerson.id === deletedSalesPerson.id);\n      prevList.splice(indexToRemove, 1);\n      state.salesPersonsList = prevList;\n      state.totalSalesPerson--;\n    });\n    builder.addCase(unLinkSalesPerson.fulfilled, (state, action) => {\n      const { siteId, salePersonId, confirmed } = action.payload;\n      if (confirmed && state.totalSalesPerson > 0 && state.selectedClientId === siteId) {\n        const prevList = [...state.salesPersonsList];\n        const indexToRemove = prevList.findIndex((salesPerson) => salesPerson.id === salePersonId);\n        prevList.splice(indexToRemove, 1);\n        state.salesPersonsList = prevList;\n        state.totalSalesPerson--;\n      }\n    });\n  },\n});\n\nexport default salePersonSlice.reducer;\n","import { configureStore } from \"@reduxjs/toolkit\";\nimport { combineReducers } from \"redux\";\nimport authReducer from \"./features/authentication/authenticationSlice\";\nimport checkEligibilityReducer from \"./features/checkEligibility/checkEligibilitySlice\";\nimport clientsReducer from \"./features/clients/clientsSlice\";\nimport dashboardReducer from \"./features/dashboard/dashboardSlice\";\nimport eligibilityFileReducer from \"./features/eligibilityFile/eligibilityFileSlice\";\nimport employeeClaimSliceReducer from \"./features/employeeClaims/employeeClaimsSlice\";\nimport employeesReducer from \"./features/employees/employeesSlice\";\nimport generalReducer from \"./features/general/generalSlice\";\nimport locationsReducer from \"./features/locations/locationsSlice\";\nimport providersReducer from \"./features/providers/providersSlice\";\nimport subAgentsReducer from \"./features/subAgents/subAgentsSlice\";\nimport usersReducer from \"./features/users/userSlice\";\nimport errorMiddleware from \"./middlewares/errorMiddleware\";\nimport loaderMiddleware from \"./middlewares/loaderMiddleware\";\nimport companySettingReducer from \"./features/companySetting/companySettingSlice\";\nimport employeeLogsReducer from \"./features/employeeLogs/employeeLogsSlice\";\nimport cptCodeReducer from \"./features/cptCodes/cptCodeSlice\";\nimport insuranceReducer from \"./features/insurances/insuranceSlice\";\nimport documentReducer from \"./features/documents/documentSlice\";\nimport claimInvoiceReducer from \"./features/claimInvoice/claimInvoiceSlice\";\nimport invoiceDocumentReducer from \"./features/invoiceDocuments/invoiceDocumentSlice\";\nimport bulkInvoicesReducer from \"./features/bulkInvoices/bulkInvoicesSlice\";\nimport processPaymentReducer from \"./features/processPayment/processPaymentSlice\";\nimport invoicePreviewSlice from \"./features/invoicePreview/invoicePreviewSlice\";\nimport clientPcsSlice from \"./features/clientPcs/clientPcsSlice\";\nimport salePersonSlice from \"./features/salePerson/salePersonSlice\";\nimport messageTemplateSlice from \"./features/messageTemplate/messageTemplateSlice\";\nimport resultsTestSlice from \"./features/resultsTests/resultsTestSlice\";\nimport generalSettingsSlice from \"./features/testDictionary/testDictionarySlice\";\nimport testAssaySlice from \"./features/testAssay/testAssaySlice\";\nimport genericModalSlice from \"./features/genericTestsView/genericModalSlice\";\nimport reslutPdfSlice from \"./features/resultPdf/reslutPdfSlice\";\n\nconst rootReducer = combineReducers({\n  companySetting: companySettingReducer,\n  employeeLogs: employeeLogsReducer,\n  employees: employeesReducer,\n  clients: clientsReducer,\n  subAgents: subAgentsReducer,\n  locations: locationsReducer,\n  eligibilityFiles: eligibilityFileReducer,\n  providers: providersReducer,\n  employeeClaims: employeeClaimSliceReducer,\n  auth: authReducer,\n  eligibilities: checkEligibilityReducer,\n  dashboard: dashboardReducer,\n  general: generalReducer,\n  users: usersReducer,\n  cptCode: cptCodeReducer,\n  insurances: insuranceReducer,\n  documents: documentReducer,\n  invoiceDocuments: invoiceDocumentReducer,\n  claimInvoice: claimInvoiceReducer,\n  bulkInvoice: bulkInvoicesReducer,\n  invoicePreview: invoicePreviewSlice,\n  processPayment: processPaymentReducer,\n  clientPcs: clientPcsSlice,\n  salePerson: salePersonSlice,\n  messageTemplate: messageTemplateSlice,\n  resultTest: resultsTestSlice,\n  generalSettings: generalSettingsSlice,\n  testAssay: testAssaySlice,\n  genericModal: genericModalSlice,\n  resultPdf: reslutPdfSlice,\n});\n\nconst store = configureStore({\n  reducer: rootReducer,\n  middleware: (getDefaultMiddleware) => [\n    ...getDefaultMiddleware({\n      serializableCheck: false,\n    }),\n    loaderMiddleware,\n    errorMiddleware,\n  ],\n});\n\nexport default store;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport {\n  phoneFormatter,\n  setPhoneNo,\n  isValidPhone,\n  medFlowInLocalStorage,\n  formatZip,\n  checkValidity,\n  getValidName,\n  isValidName,\n  isValidIdNum,\n  isValidPhoneWithCode,\n  getPhoneNo,\n} from \"utils\";\nimport QrCodeDownloadIcon from \"../assets/img/qr-download.svg\";\nimport { useHistory, Link } from \"react-router-dom\";\nimport { newRegisterObj, logoImage } from \"constant\";\nimport { QRCode } from \"react-qrcode-logo\";\nimport logo from \"assets/img/logo.jpg\";\nimport whiteLabelLogo from \"assets/img/medflow_icon.png\";\nimport { Button } from \"react-bootstrap\";\nimport API from \"api\";\nimport html2canvas from \"html2canvas\";\nimport countriesOption from \"countries\";\nimport Select from \"react-select\";\nimport moment from \"moment\";\nimport { countryListAllIsoData } from \"constant\";\nimport Loader from \"components/Loader/Loader\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport \"bootstrap-daterangepicker/daterangepicker.css\";\nimport { toTitleCase, convertToLower, isValidZipCode, validSpace } from \"utils\";\nimport SweetAlert from \"react-bootstrap-sweetalert\";\nimport SingleDatePicker from \"Date/SingleDatePicker\";\nimport PhoneNoInput from \"components/Phone/PhoneNoInput\";\nimport AutoCompleteAddress from \"components/AutoCompleteAddress\";\nimport { isValidEmail } from \"utils\";\nimport { qrResponseJOSN } from \"utils\";\nimport { CONFIG } from \"constant\";\nimport { zipCodeValidationUS } from \"utils\";\nimport { INSURANCE_PROVIDER } from \"constant\";\nimport { convertToUpper } from \"utils\";\n\nconst PreRegisterWhitelabel = () => {\n  const [newUser, setNewUser] = useState(newRegisterObj);\n  const [registrationDone, setRegistrationDone] = useState(false);\n  const [error, setError] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n  const [barcode, setBarcode] = useState(\"\");\n  const [qrRes, setQrRes] = useState(\"\");\n  const [updateClass, setUpdateClass] = useState(false);\n  const [phoneError, setPhoneError] = useState(\"\");\n  const [messageError, setMessageError] = useState(\"\");\n  const history = useHistory();\n  const downloadRef = useRef();\n  const redirectToAdmin = () => {\n    if (history) history.push(\"/admin\");\n  };\n\n  const isLoggedIn = medFlowInLocalStorage.get();\n  if (isLoggedIn) redirectToAdmin();\n\n  const showErrorMessage = (message) => {\n    setError(message);\n    setTimeout(() => setError(\"\"), 2000);\n  };\n\n  const handleUpdateAddress = (val, flag) => {\n    if (!flag) {\n      setNewUser({ ...newUser, street: val });\n    } else {\n      const addressObj = {\n        street: val.street,\n        country: val.country,\n        city: val.city,\n        zipcode: val.zipcode,\n        state: val.state,\n        isoCode: val.isoCode,\n      };\n      setNewUser({ ...newUser, ...addressObj });\n    }\n  };\n  const handleSubmit = async () => {\n    if (!newUser.first) {\n      showErrorMessage(\"First name is required\");\n      return;\n    }\n\n    if (!isValidName(newUser.first)) {\n      showErrorMessage(\"First name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n\n    if (!newUser.last) {\n      showErrorMessage(\"Last name is required\");\n      return;\n    }\n    if (!isValidName(newUser.last)) {\n      showErrorMessage(\"Last name is invalid must contains at least 2 letters and Name should be realistic\");\n      return;\n    }\n\n    if (!newUser.email) {\n      showErrorMessage(\"Email is required\");\n      return;\n    }\n    if (!isValidEmail(newUser.email)) {\n      showErrorMessage(\"Invalid Email\");\n      return;\n    }\n\n    if (!newUser.phone_number) {\n      showErrorMessage(\"Phone Number is required\");\n      return;\n    }\n\n    if (!isValidPhoneWithCode(newUser.phone_number)) {\n      showErrorMessage(\"Invalid Phone Number\");\n      return;\n    }\n    if (!newUser.dob) {\n      showErrorMessage(\"Date of Birth is required\");\n      return;\n    }\n\n    if (!newUser.street.trim()) {\n      showErrorMessage(\"Address is required\");\n      return;\n    }\n    if (!newUser.city.trim()) {\n      showErrorMessage(\"City is required\");\n      return;\n    }\n\n    if (!newUser.state.trim()) {\n      showErrorMessage(\"State is required\");\n      return;\n    }\n    if (!newUser.country) {\n      showErrorMessage(\"Country is Required\");\n      return;\n    }\n    if (newUser.zipcode === null || !newUser.zipcode) {\n      showErrorMessage(\"Zipcode is required\");\n      return;\n    }\n\n    // if (!isValidZipCode(newUser.isoCode || \"US\", newUser.zipcode)) {\n    //   showErrorMessage(\"Invalid zipcode\");\n    //   return;\n    // }\n\n    if (!zipCodeValidationUS(newUser.zipcode)) {\n      showErrorMessage(\"Invalid zipcode\");\n      return;\n    }\n\n    if (!CONFIG.isWhiteLabel) {\n      if (!newUser.id_number) {\n        showErrorMessage(\"DL/Passport Number is required\");\n        return;\n      }\n      if (!isValidIdNum(newUser.id_number)) {\n        showErrorMessage(\"Invalid DL/Passport Number must contains at least 5 characters\");\n        return;\n      }\n    }\n\n    if (!newUser.sex) {\n      showErrorMessage(\"Gender is required\");\n      return;\n    }\n    if (!CONFIG.isWhiteLabel && newUser.isVaccinated === null) {\n      showErrorMessage(\"Vaccinated is required\");\n      return;\n    }\n    try {\n      setLoading(true);\n      const obj = { ...newUser };\n      const [countryCode, phoneNumber] = getPhoneNo(newUser.phone_number);\n      obj.phone_number = phoneNumber;\n      obj.countryCode = countryCode;\n      newUser.id_number = newUser.id_number ? checkValidity(newUser.id_number) : \"00000\";\n      setBarcode(JSON.parse(JSON.stringify(obj)));\n      const response = await API.savePreRegistration(\n        obj,\n        window.location.href.includes(\"medflow\") || CONFIG.isLive ? \"LIVE\" : \"DEV\"\n      );\n\n      if (response && response.body && response.body.item && Object.keys(response.body.item).length > 0) {\n        const newUSer = response.body.item;\n        setQrRes(qrResponseJOSN(obj, newUSer.id, \"PR\"));\n      } else {\n        setQrRes(qrResponseJOSN(obj, newUser.id, \"PR\"));\n      }\n      setLoading(false);\n      setRegistrationDone(true);\n    } catch (err) {\n      setLoading(false);\n      setMessageError(err.message);\n    }\n  };\n\n  const downloadQRCode = async () => {\n    const [countryCode, phoneNumber] = getPhoneNo(newUser.phone_number);\n    const element = downloadRef.current;\n    const canvas = await html2canvas(element);\n    const pngUrl = canvas.toDataURL(\"image/png\").replace(\"image/png\", \"image/octet-stream\");\n    let downloadLink = document.createElement(\"a\");\n    downloadLink.href = pngUrl;\n    downloadLink.download = `${phoneNumber}.png`;\n    document.body.appendChild(downloadLink);\n    downloadLink.click();\n    document.body.removeChild(downloadLink);\n  };\n\n  if (registrationDone) {\n    return (\n      <div className=\"codeScannerWrapper\">\n        <div className=\"registered-successful\">\n          <h3>Thank you for Registering</h3>\n          <p>\n            {CONFIG.isWhiteLabel\n              ? \"Please present this QR code when testing\"\n              : \"Please present this QR code at Event Check In\"}\n          </p>\n          <div className=\"justify-content-center align-items-center pt-4\">\n            <div className=\"qrCodeWrapper text-center\" ref={downloadRef}>\n              <div className=\"d-flex justify-content-center align-items-center\">\n                <QRCode\n                  ecLevel={\"H\"}\n                  className=\"text-center px-4\"\n                  value={JSON.stringify(qrRes)}\n                  enableCORS={true}\n                  logoImage={whiteLabelLogo}\n                  size=\"250\"\n                  logoHeight=\"50\"\n                  logoWidth=\"50\"\n                  fgColor={\"#000\"}\n                  bgColor={\"#fff\"}\n                />\n              </div>\n              <div className=\"text-center fs-4 fw-bold qrSubdiv\">{`${toTitleCase(barcode.first)} ${toTitleCase(\n                barcode.last\n              )}`}</div>\n            </div>\n            <div className={`qrCodeWrapper printQrCode`} id={\"printableArea\"}>\n              <QRCode\n                ecLevel={\"H\"}\n                value={JSON.stringify(qrRes)}\n                enableCORS={true}\n                logoImage={CONFIG.isWhiteLabel ? whiteLabelLogo : logo}\n                size=\"250\"\n                logoHeight={CONFIG.isWhiteLabel ? \"20\" : \"70\"}\n                logoWidth={CONFIG.isWhiteLabel ? \"100\" : \"70\"}\n                fgColor={\"#000\"}\n                bgColor={\"#fff\"}\n              />\n              <div className=\"text-center fs-4 fw-bold qrSubdiv\">{`${toTitleCase(newUser.first)} ${toTitleCase(\n                newUser.last\n              )}`}</div>\n            </div>\n            <div className=\"downloadQrBtn\">\n              <div className=\"pt-3 d-flex align-items-center justify-content-evenly\">\n                {/* <Button className=\"w-50\" variant=\"secondary\" onClick={downloadQRCode}>\n                  Download QR Code\n                </Button> */}\n                <img\n                  src={QrCodeDownloadIcon}\n                  onClick={downloadQRCode}\n                  className=\"cursor-pointer\"\n                  alt=\"qr-code-download\"\n                  width=\"25\"\n                />\n                <Button\n                  href={`safecampmd://app/${barcode.first || \"\"}/${barcode.last || \"\"}/${barcode.email || \"\"}/${\n                    barcode.phone_number || \"\"\n                  }`}\n                  variant=\"secondary\"\n                >\n                  Add To Wallet\n                </Button>\n                <Button variant=\"secondary\" onClick={() => window.print()}>\n                  <i className=\"fas fa-print fs-4\" style={{ color: \"black\" }} />\n                </Button>\n              </div>\n            </div>\n            <div></div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n  return (\n    <>\n      {loading ? (\n        <Loader />\n      ) : (\n        <div className=\"registerFormWrapper\">\n          <div className=\"registerWrapper\">\n            <div className=\"loginInner\">\n              <div className=\"text-center\">\n                <img src={logoImage} alt=\"logo\" className=\"logo-width\" />\n              </div>\n              <h4 className=\"w-100 text-center mt-4 fs-4 fw-bold\">Register your account</h4>\n              <div className=\"form-wrapper\">\n                <div className=\"form-group-wrapper mt-2\">\n                  <label className=\"mb-1\">First Name:</label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"First Name\"\n                    value={newUser.first}\n                    onChange={(e) => setNewUser({ ...newUser, first: getValidName(e.target.value) })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"mb-1\">Last Name:</label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"Last Name\"\n                    value={newUser.last}\n                    onChange={(e) => setNewUser({ ...newUser, last: getValidName(e.target.value) })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"mb-1\">Email:</label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"Email\"\n                    value={newUser.email}\n                    onChange={(e) => setNewUser({ ...newUser, email: convertToLower(e.target.value) })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"mb-1\">Phone Number:</label>\n                  <PhoneNoInput\n                    error={setPhoneError}\n                    handleChange={(e) => {\n                      setNewUser({\n                        ...newUser,\n                        phone_number: e,\n                      });\n                    }}\n                    value={newUser.phone_number}\n                  />\n                  {/* <input\n                    value={phoneFormatter(newUser.phone_number)}\n                    type=\"text\"\n                    maxLength={15}\n                    className=\"form-control\"\n                    placeholder=\"Phone Number\"\n                    onChange={(e) =>\n                      setNewUser({\n                        ...newUser,\n                        phone_number: setPhoneNo(phoneFormatter(e.target.value)),\n                      })\n                    }\n                  /> */}\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"modalLineHeaders\">DOB: </label>\n                  <SingleDatePicker\n                    onApply={(event, picker) => {\n                      setNewUser({ ...newUser, dob: moment(picker.startDate).format(\"YYYY-MM-DD\") });\n                    }}\n                    value={newUser.dob}\n                    currentDate={true}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"mb-1\">Address:</label>\n                  <AutoCompleteAddress value={newUser.street} handleChange={handleUpdateAddress} />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"mb-1\">City:</label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control\"\n                    value={newUser.city}\n                    placeholder=\"City\"\n                    onChange={(e) => setNewUser({ ...newUser, city: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"mb-1\">State:</label>\n                  <input\n                    type=\"text\"\n                    className=\"form-control stateField\"\n                    placeholder=\"State Abbr: XX\"\n                    value={newUser.state}\n                    maxLength={35}\n                    onChange={(e) => {\n                      let val = e.target.value;\n                      if (val) val = val.toUpperCase();\n                      setNewUser({ ...newUser, state: validSpace(val) });\n                    }}\n                  />\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"mb-1\">Country:</label>\n                  <Select\n                    options={countriesOption}\n                    blurInputOnSelect={true}\n                    value={{ label: newUser.country, value: newUser.country }}\n                    menuPlacement=\"auto\"\n                    placeholder=\"Select Country\"\n                    className=\"w-100\"\n                    onChange={(e) => {\n                      const country = countryListAllIsoData.find((f) => f.name === e.value) || { code: \"US\" };\n                      setNewUser({\n                        ...newUser,\n                        country: e.value,\n                        isoCode: country.code,\n                      });\n                    }}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"mb-1\">Zip Code:</label>\n                  <input\n                    value={newUser.isoCode === \"US\" ? formatZip(newUser.zipcode) : newUser.zipcode}\n                    type=\"text\"\n                    className=\"form-control\"\n                    placeholder=\"Enter Zip Code\"\n                    maxLength={10}\n                    onChange={(e) => {\n                      let val = e.target.value;\n                      if (val) val = val.toUpperCase();\n                      setNewUser({\n                        ...newUser,\n                        zipcode: newUser.isoCode === \"US\" ? formatZip(val) : validSpace(val),\n                      });\n                    }}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Payer Information: </label>\n                  <Select\n                    className=\"w-100 siteSelector\"\n                    options={INSURANCE_PROVIDER}\n                    blurInputOnSelect={true}\n                    defaultValue={null}\n                    menuPlacement=\"auto\"\n                    value={\n                      newUser?.insurance_name\n                        ? {\n                            label: newUser?.insurance_name,\n                            value: newUser?.insurance_number,\n                          }\n                        : \"\"\n                    }\n                    placeholder=\"Select Payer\"\n                    onChange={(e) => setNewUser({ ...newUser, insurance_name: e.label, insuranceCompanyCode: e.value })}\n                  />\n                </div>\n\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Insurance Number: </label>\n                  <input\n                    className=\"modalInput\"\n                    placeholder=\"Insurance Number\"\n                    value={newUser?.insurance_number}\n                    onChange={(e) => {\n                      let val = e.target.value;\n                      setNewUser({ ...newUser, insurance_number: convertToUpper(val) });\n                    }}\n                  />\n                </div>\n                <div className=\"form-group-wrapper \">\n                  <label className=\"mb-1\">DL/Passport Number:</label>\n                  <input\n                    maxLength={16}\n                    type=\"text\"\n                    className=\"form-control\"\n                    value={newUser.id_number}\n                    placeholder=\"DL/Passport Number\"\n                    onChange={(e) => setNewUser({ ...newUser, id_number: e.target.value })}\n                  />\n                </div>\n                <div className=\"form-group-wrapper\">\n                  <label className=\"modalLineHeaders\">Gender: </label>\n                  <div>\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"sex\"\n                        onChange={(e) => setNewUser({ ...newUser, sex: e.target.checked ? \"M\" : \"\" })}\n                      />\n                      <span className=\"radioButton\">Male</span>\n                    </span>\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"sex\"\n                        onChange={(e) => setNewUser({ ...newUser, sex: e.target.checked ? \"F\" : \"\" })}\n                      />\n                      <span className=\"radioButton\">Female</span>\n                    </span>\n                    <span className=\"radioBox-wrapper\">\n                      <input\n                        type=\"radio\"\n                        className=\"radioButton\"\n                        name=\"sex\"\n                        onChange={(e) => setNewUser({ ...newUser, sex: e.target.checked ? \"X\" : \"\" })}\n                      />\n                      <span className=\"radioButton\">Not Specified</span>\n                    </span>\n                  </div>\n                </div>\n\n                {!CONFIG.isWhiteLabel && (\n                  <div className=\"form-group-wrapper\">\n                    <label className=\"modalLineHeaders\">Vaccinated: </label>\n                    <div>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"isVaccinated\"\n                          onChange={(e) => setNewUser({ ...newUser, isVaccinated: e.target.checked && true })}\n                        />\n                        <span className=\"radioButton\">Yes</span>\n                      </span>\n                      <span className=\"radioBox-wrapper\">\n                        <input\n                          type=\"radio\"\n                          className=\"radioButton\"\n                          name=\"isVaccinated\"\n                          onChange={(e) => setNewUser({ ...newUser, isVaccinated: e.target.checked && false })}\n                        />\n                        <span className=\"radioButton\">No</span>\n                      </span>\n                    </div>\n                  </div>\n                )}\n              </div>\n              {error && (\n                <div className=\"error-message\">\n                  <h6>{error}</h6>\n                </div>\n              )}\n              {messageError && (\n                <SweetAlert\n                  show={messageError ? true : false}\n                  error\n                  title=\"Error\"\n                  onConfirm={() => setMessageError(\"\")}\n                >\n                  {messageError}\n                </SweetAlert>\n              )}\n\n              <div className=\"mt-2\">\n                <button type=\"submit\" className=\"text-uppercase w-100 btn signup-btn\" onClick={handleSubmit}>\n                  Pre-register\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n};\n\nexport default PreRegisterWhitelabel;\n","import React, { useState, useEffect } from \"react\";\nimport Login from \"components/Login/Login\";\nimport { Bounce } from \"react-activity\";\nimport API from \"api\";\nimport { BrowserRouter, Route, Switch, Redirect } from \"react-router-dom\";\nimport AdminNew from \"layouts/AdminNew\";\nimport PreRegister from \"views/PreRegister\";\nimport RegisterCrew from \"views/RegisterCrew\";\nimport QRLinkView from \"components/QRLinkView\";\nimport Loader from \"./components/Loader/Loader\";\nimport { CONFIG } from \"constant\";\nimport LabNew from \"layouts/LabNew\";\nimport SiteNew from \"layouts/SiteNew\";\nimport HipaaTest from \"views/Hipaa/HipaaTest\";\nimport { Provider } from \"react-redux\";\nimport store from \"./store/store\";\nimport PreRegisterWhitelabel from \"views/PreRegisterWhitelabel\";\n\nexport default function App() {\n  const [loading, setLoading] = useState(true);\n  const [user, setUser] = useState(null);\n\n  useEffect(() => {\n    const getUSer = async () => {\n      const user = await API.getCurrentUser();\n      if (user) {\n        setUser(user);\n        setLoading(false);\n      } else {\n        setLoading(false);\n      }\n    };\n    getUSer();\n  }, []);\n\n  const version = process.env.REACT_APP_VERSION;\n\n  useEffect(() => {\n    if (version) {\n      // Dynamically add script with versioning\n      const script = document.createElement(\"script\");\n      script.src = `/static/js/main.js?v=${version}`;\n      document.body.appendChild(script);\n\n      // Dynamically add stylesheet with versioning\n      const link = document.createElement(\"link\");\n      link.rel = \"stylesheet\";\n      link.href = `/static/css/main.css?v=${version}`;\n      document.head.appendChild(link);\n\n      return () => {\n        // Clean up the dynamically added elements if needed\n        document.body.removeChild(script);\n        document.head.removeChild(link);\n      };\n    }\n  }, [version]);\n\n  if (loading) {\n    return <Loader />;\n  }\n\n  sessionStorage.setItem(\"connectedID\", localStorage.getItem(\"state\"));\n\n  if (CONFIG.isWhiteLabel) {\n    return (\n      <Provider store={store}>\n        <BrowserRouter>\n          <Switch>\n            <Route path=\"/hipaatest\" render={(props) => <HipaaTest {...props} />} />\n            <Route path=\"/hipaatest/:id\" render={(props) => <HipaaTest {...props} />} />\n            <Route path=\"/pre-register\" render={(props) => <PreRegisterWhitelabel />} />\n            <Route path=\"/admin\" render={(props) => <AdminNew {...props} />} />\n            <Route path=\"/lab\" render={(props) => <LabNew {...props} />} />\n            <Route path=\"/site\" render={(props) => <SiteNew {...props} />} />\n            <Route path=\"/login\" render={(props) => <Login />} />\n            <Redirect from=\"/\" to=\"/login\" />\n          </Switch>\n        </BrowserRouter>\n      </Provider>\n    );\n  }\n\n  return (\n    <Provider store={store}>\n      <BrowserRouter>\n        <Switch>\n          <Route path=\"/pre-register\" render={(props) => <PreRegister />} />\n          <Route path=\"/register/:id\" render={(props) => <RegisterCrew {...props} />} />\n          <Route path=\"/register\" render={(props) => <RegisterCrew {...props} />} />\n          <Route path=\"/preregister/:testId\" render={(props) => <QRLinkView {...props} />} />\n          <Route path=\"/admin\" render={(props) => <AdminNew {...props} />} />\n          <Route path=\"/lab\" render={(props) => <LabNew {...props} />} />\n          <Route path=\"/site\" render={(props) => <SiteNew {...props} />} />\n          <Route path=\"/login\" render={(props) => <Login />} />\n          <Redirect from=\"/\" to=\"/login\" />\n        </Switch>\n      </BrowserRouter>\n    </Provider>\n  );\n}\n","/*!\n\n=========================================================\n* Light Bootstrap Dashboard React - v2.0.0\n=========================================================\n\n* Product Page: https://www.creative-tim.com/product/light-bootstrap-dashboard-react\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\n* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard-react/blob/master/LICENSE.md)\n\n* Coded by Creative Tim\n\n=========================================================\n\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n*/\nimport React, { useState } from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport \"./assets/scss/light-bootstrap-dashboard-react.scss?v=2.0.0\";\n// import \"./assets/css/animate.min.css\";\nimport \"./assets/css/demo.css\";\nimport \"@fortawesome/fontawesome-free/css/all.min.css\";\n// custom-css\nimport \"../src/tableStyling.css\";\nimport \"../src/newShowsSettings.css\";\nimport Amplify, { Auth } from \"aws-amplify\";\nimport awsconfig from \"./aws-exports\";\nimport App from \"App\";\n\nconst obj = awsconfig;\nAmplify.configure(obj);\n\nReactDOM.render(\n  <div>\n    <App />\n  </div>,\n  document.getElementById(\"root\")\n);\n","// @ts-check\nimport { initSchema } from '@aws-amplify/datastore';\nimport { schema } from './schema';\n\n\n\nconst { Lab, Site, Client, Employee, Test, LencoBarcodes, TestConsent, TestTypes, EmployeeBarCodes, EmployeeTestCounter, ExternalTest, EmployeeLogin, TestSession, Documents, Order, UploadRequestMain, UploadRequest, GeneralSettingType, Users, MessageTemplate } = initSchema(schema);\n\nexport {\n  Lab,\n  Site,\n  Client,\n  Employee,\n  Test,\n  LencoBarcodes,\n  TestConsent,\n  TestTypes,\n  EmployeeBarCodes,\n  EmployeeTestCounter,\n  ExternalTest,\n  EmployeeLogin,\n  TestSession,\n  Documents,\n  Order,\n  UploadRequestMain,\n  UploadRequest,\n  GeneralSettingType,\n  Users,\n  MessageTemplate\n};","export const schema = {\n    \"models\": {\n        \"Lab\": {\n            \"name\": \"Lab\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"name\": {\n                    \"name\": \"name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"logo\": {\n                    \"name\": \"logo\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"Tests\": {\n                    \"name\": \"Tests\",\n                    \"isArray\": true,\n                    \"type\": {\n                        \"model\": \"Test\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true,\n                    \"association\": {\n                        \"connectionType\": \"HAS_MANY\",\n                        \"associatedWith\": \"labID\"\n                    }\n                },\n                \"contact_name\": {\n                    \"name\": \"contact_name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"contact_phone\": {\n                    \"name\": \"contact_phone\",\n                    \"isArray\": false,\n                    \"type\": \"AWSPhone\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"phone_number\": {\n                    \"name\": \"phone_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fax_number\": {\n                    \"name\": \"fax_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"user_id\": {\n                    \"name\": \"user_id\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"contact_email\": {\n                    \"name\": \"contact_email\",\n                    \"isArray\": false,\n                    \"type\": \"AWSEmail\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"tubes_provided\": {\n                    \"name\": \"tubes_provided\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"lab_director\": {\n                    \"name\": \"lab_director\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"country\": {\n                    \"name\": \"country\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"referredDoctor\": {\n                    \"name\": \"referredDoctor\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clia_number\": {\n                    \"name\": \"clia_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testing_notes\": {\n                    \"name\": \"testing_notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"street\": {\n                    \"name\": \"street\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"city_state_zip\": {\n                    \"name\": \"city_state_zip\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"lab_contacts\": {\n                    \"name\": \"lab_contacts\",\n                    \"isArray\": true,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true\n                },\n                \"default_antigen\": {\n                    \"name\": \"default_antigen\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"antigen_notes\": {\n                    \"name\": \"antigen_notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"default_molecular\": {\n                    \"name\": \"default_molecular\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"default_other\": {\n                    \"name\": \"default_other\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"default_rapidflu\": {\n                    \"name\": \"default_rapidflu\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"default_lucira\": {\n                    \"name\": \"default_lucira\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"molecular_notes\": {\n                    \"name\": \"molecular_notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"custom_notes\": {\n                    \"name\": \"custom_notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"invalid_notes\": {\n                    \"name\": \"invalid_notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"indeterminate_notes\": {\n                    \"name\": \"indeterminate_notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"other_notes\": {\n                    \"name\": \"other_notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"lucira_notes\": {\n                    \"name\": \"lucira_notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"rapidflu_notes\": {\n                    \"name\": \"rapidflu_notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendInsurance\": {\n                    \"name\": \"sendInsurance\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"barCodeProvided\": {\n                    \"name\": \"barCodeProvided\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"barCodeAlertLimit\": {\n                    \"name\": \"barCodeAlertLimit\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"whiteLabel\": {\n                    \"name\": \"whiteLabel\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"whiteLabelPackage\": {\n                    \"name\": \"whiteLabelPackage\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"showOnSummaryScreen\": {\n                    \"name\": \"showOnSummaryScreen\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"orderCodes\": {\n                    \"name\": \"orderCodes\",\n                    \"isArray\": true,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true\n                },\n                \"isArchive\": {\n                    \"name\": \"isArchive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"positiveCount\": {\n                    \"name\": \"positiveCount\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"negativeCount\": {\n                    \"name\": \"negativeCount\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"postitiveDate\": {\n                    \"name\": \"postitiveDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalTest\": {\n                    \"name\": \"totalTest\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"pendingRelease\": {\n                    \"name\": \"pendingRelease\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"logourl\": {\n                    \"name\": \"logourl\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"Labs\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employees\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"update\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"Site\": {\n            \"name\": \"Site\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"name\": {\n                    \"name\": \"name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"Tests\": {\n                    \"name\": \"Tests\",\n                    \"isArray\": true,\n                    \"type\": {\n                        \"model\": \"Test\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true,\n                    \"association\": {\n                        \"connectionType\": \"HAS_MANY\",\n                        \"associatedWith\": \"siteID\"\n                    }\n                },\n                \"contact_name\": {\n                    \"name\": \"contact_name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"contactName\": {\n                    \"name\": \"contactName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"contact_phone\": {\n                    \"name\": \"contact_phone\",\n                    \"isArray\": false,\n                    \"type\": \"AWSPhone\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"phone_number\": {\n                    \"name\": \"phone_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"email\": {\n                    \"name\": \"email\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"contact_email\": {\n                    \"name\": \"contact_email\",\n                    \"isArray\": false,\n                    \"type\": \"AWSEmail\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"safeCampAdmin\": {\n                    \"name\": \"safeCampAdmin\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"antigen\": {\n                    \"name\": \"antigen\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"automateTestType\": {\n                    \"name\": \"automateTestType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"user_id\": {\n                    \"name\": \"user_id\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"show_contacts\": {\n                    \"name\": \"show_contacts\",\n                    \"isArray\": true,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true\n                },\n                \"insurance_required\": {\n                    \"name\": \"insurance_required\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendInsuranceCard\": {\n                    \"name\": \"sendInsuranceCard\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isInsurance\": {\n                    \"name\": \"isInsurance\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"resetTestDay\": {\n                    \"name\": \"resetTestDay\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"startDate\": {\n                    \"name\": \"startDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDate\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"endDate\": {\n                    \"name\": \"endDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDate\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"orderKitDate\": {\n                    \"name\": \"orderKitDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"orderKitType\": {\n                    \"name\": \"orderKitType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"orderQuantity\": {\n                    \"name\": \"orderQuantity\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"enableShipment\": {\n                    \"name\": \"enableShipment\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"showOnSummaryScreen\": {\n                    \"name\": \"showOnSummaryScreen\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"messageTested\": {\n                    \"name\": \"messageTested\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"messageResulted\": {\n                    \"name\": \"messageResulted\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"messagePositive\": {\n                    \"name\": \"messagePositive\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"messageReTest\": {\n                    \"name\": \"messageReTest\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"printLabel\": {\n                    \"name\": \"printLabel\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isArchive\": {\n                    \"name\": \"isArchive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isActive\": {\n                    \"name\": \"isActive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isLucira\": {\n                    \"name\": \"isLucira\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isPCRCustody\": {\n                    \"name\": \"isPCRCustody\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccinationCard\": {\n                    \"name\": \"vaccinationCard\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalTest\": {\n                    \"name\": \"externalTest\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalTestType\": {\n                    \"name\": \"externalTestType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalTestDuration\": {\n                    \"name\": \"externalTestDuration\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalTestAdmit\": {\n                    \"name\": \"externalTestAdmit\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"patternTesting\": {\n                    \"name\": \"patternTesting\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isHRPR\": {\n                    \"name\": \"isHRPR\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"patternHippa\": {\n                    \"name\": \"patternHippa\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"preRegistration\": {\n                    \"name\": \"preRegistration\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"admit\": {\n                    \"name\": \"admit\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"positiveCount\": {\n                    \"name\": \"positiveCount\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"negativeCount\": {\n                    \"name\": \"negativeCount\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"postitiveDate\": {\n                    \"name\": \"postitiveDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalTest\": {\n                    \"name\": \"totalTest\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalPR\": {\n                    \"name\": \"totalPR\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalOrdered\": {\n                    \"name\": \"totalOrdered\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalExtTest\": {\n                    \"name\": \"totalExtTest\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalCheckIn\": {\n                    \"name\": \"totalCheckIn\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalGuest\": {\n                    \"name\": \"totalGuest\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalStaff\": {\n                    \"name\": \"totalStaff\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"status\": {\n                    \"name\": \"status\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"companyID\": {\n                    \"name\": \"companyID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendIdentification\": {\n                    \"name\": \"sendIdentification\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isAutoSubmitClaim\": {\n                    \"name\": \"isAutoSubmitClaim\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendExternalRequisition\": {\n                    \"name\": \"sendExternalRequisition\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendPrescription\": {\n                    \"name\": \"sendPrescription\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendAuthorization\": {\n                    \"name\": \"sendAuthorization\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendOtherDocuments\": {\n                    \"name\": \"sendOtherDocuments\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"startBarCode\": {\n                    \"name\": \"startBarCode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"uploadFileStatus\": {\n                    \"name\": \"uploadFileStatus\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"hippa\": {\n                    \"name\": \"hippa\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"hippaFile\": {\n                    \"name\": \"hippaFile\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"resultTemplate\": {\n                    \"name\": \"resultTemplate\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isTesting\": {\n                    \"name\": \"isTesting\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"street\": {\n                    \"name\": \"street\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"city\": {\n                    \"name\": \"city\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"state\": {\n                    \"name\": \"state\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"zipcode\": {\n                    \"name\": \"zipcode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"countryCode\": {\n                    \"name\": \"countryCode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"country\": {\n                    \"name\": \"country\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"setting\": {\n                    \"name\": \"setting\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"defaultProvider\": {\n                    \"name\": \"defaultProvider\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"practiceID\": {\n                    \"name\": \"practiceID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"labLocalID\": {\n                    \"name\": \"labLocalID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fax\": {\n                    \"name\": \"fax\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"contact_fax\": {\n                    \"name\": \"contact_fax\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"discount\": {\n                    \"name\": \"discount\",\n                    \"isArray\": false,\n                    \"type\": \"Float\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"commission\": {\n                    \"name\": \"commission\",\n                    \"isArray\": false,\n                    \"type\": \"Float\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalOrders\": {\n                    \"name\": \"totalOrders\",\n                    \"isArray\": false,\n                    \"type\": \"Float\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalBilledAmount\": {\n                    \"name\": \"totalBilledAmount\",\n                    \"isArray\": false,\n                    \"type\": \"Float\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"claimAmount\": {\n                    \"name\": \"claimAmount\",\n                    \"isArray\": false,\n                    \"type\": \"Float\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"openAmount\": {\n                    \"name\": \"openAmount\",\n                    \"isArray\": false,\n                    \"type\": \"Float\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"paid\": {\n                    \"name\": \"paid\",\n                    \"isArray\": false,\n                    \"type\": \"Float\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"lastOrder\": {\n                    \"name\": \"lastOrder\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"note\": {\n                    \"name\": \"note\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdBy\": {\n                    \"name\": \"createdBy\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdByName\": {\n                    \"name\": \"createdByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedByName\": {\n                    \"name\": \"updatedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"siteType\": {\n                    \"name\": \"siteType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"Sites\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"byClient\",\n                        \"fields\": [\n                            \"clientID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employees\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"Client\": {\n            \"name\": \"Client\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"Tests\": {\n                    \"name\": \"Tests\",\n                    \"isArray\": true,\n                    \"type\": {\n                        \"model\": \"Test\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true,\n                    \"association\": {\n                        \"connectionType\": \"HAS_MANY\",\n                        \"associatedWith\": \"clientID\"\n                    }\n                },\n                \"Employees\": {\n                    \"name\": \"Employees\",\n                    \"isArray\": true,\n                    \"type\": {\n                        \"model\": \"Employee\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true,\n                    \"association\": {\n                        \"connectionType\": \"HAS_MANY\",\n                        \"associatedWith\": \"clientID\"\n                    }\n                },\n                \"name\": {\n                    \"name\": \"name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"Sites\": {\n                    \"name\": \"Sites\",\n                    \"isArray\": true,\n                    \"type\": {\n                        \"model\": \"Site\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true,\n                    \"association\": {\n                        \"connectionType\": \"HAS_MANY\",\n                        \"associatedWith\": \"clientID\"\n                    }\n                },\n                \"contact_name\": {\n                    \"name\": \"contact_name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"contact_phone\": {\n                    \"name\": \"contact_phone\",\n                    \"isArray\": false,\n                    \"type\": \"AWSPhone\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"phone_number\": {\n                    \"name\": \"phone_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"country\": {\n                    \"name\": \"country\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"timezone\": {\n                    \"name\": \"timezone\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fax_number\": {\n                    \"name\": \"fax_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"street\": {\n                    \"name\": \"street\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"city\": {\n                    \"name\": \"city\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"state\": {\n                    \"name\": \"state\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"zipcode\": {\n                    \"name\": \"zipcode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"contact_email\": {\n                    \"name\": \"contact_email\",\n                    \"isArray\": false,\n                    \"type\": \"AWSEmail\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"hippa\": {\n                    \"name\": \"hippa\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"hippaFile\": {\n                    \"name\": \"hippaFile\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"resultType\": {\n                    \"name\": \"resultType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"showOnSummaryScreen\": {\n                    \"name\": \"showOnSummaryScreen\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"whiteLabel\": {\n                    \"name\": \"whiteLabel\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"whiteLabelPackage\": {\n                    \"name\": \"whiteLabelPackage\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isArchive\": {\n                    \"name\": \"isArchive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"positiveCount\": {\n                    \"name\": \"positiveCount\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"negativeCount\": {\n                    \"name\": \"negativeCount\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"postitiveDate\": {\n                    \"name\": \"postitiveDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalTest\": {\n                    \"name\": \"totalTest\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"resultTypes\": {\n                    \"name\": \"resultTypes\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"brmSetting\": {\n                    \"name\": \"brmSetting\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"setting\": {\n                    \"name\": \"setting\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"pgName\": {\n                    \"name\": \"pgName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"colLabId\": {\n                    \"name\": \"colLabId\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"uploadFileStatus\": {\n                    \"name\": \"uploadFileStatus\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"orderCounter\": {\n                    \"name\": \"orderCounter\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"requiredKeys\": {\n                    \"name\": \"requiredKeys\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"Clients\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employees\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"Employee\": {\n            \"name\": \"Employee\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"first\": {\n                    \"name\": \"first\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"last\": {\n                    \"name\": \"last\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"middleName\": {\n                    \"name\": \"middleName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"dob\": {\n                    \"name\": \"dob\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDate\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"id_number\": {\n                    \"name\": \"id_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"Tests\": {\n                    \"name\": \"Tests\",\n                    \"isArray\": true,\n                    \"type\": {\n                        \"model\": \"Test\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true,\n                    \"association\": {\n                        \"connectionType\": \"HAS_MANY\",\n                        \"associatedWith\": \"employeeID\"\n                    }\n                },\n                \"Client\": {\n                    \"name\": \"Client\",\n                    \"isArray\": false,\n                    \"type\": {\n                        \"model\": \"Client\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"association\": {\n                        \"connectionType\": \"BELONGS_TO\",\n                        \"targetName\": \"employeeClientId\"\n                    }\n                },\n                \"employeeFND\": {\n                    \"name\": \"employeeFND\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"street\": {\n                    \"name\": \"street\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"street2\": {\n                    \"name\": \"street2\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"city\": {\n                    \"name\": \"city\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"state\": {\n                    \"name\": \"state\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"county\": {\n                    \"name\": \"county\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"zip\": {\n                    \"name\": \"zip\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"country\": {\n                    \"name\": \"country\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"countryCode\": {\n                    \"name\": \"countryCode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"phone_number\": {\n                    \"name\": \"phone_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sex\": {\n                    \"name\": \"sex\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"email\": {\n                    \"name\": \"email\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isVaccinated\": {\n                    \"name\": \"isVaccinated\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"insurance_name\": {\n                    \"name\": \"insurance_name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"insurance_number\": {\n                    \"name\": \"insurance_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"insuranceGroupId\": {\n                    \"name\": \"insuranceGroupId\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"insurance_img_front\": {\n                    \"name\": \"insurance_img_front\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"insurance_img_back\": {\n                    \"name\": \"insurance_img_back\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"subID\": {\n                    \"name\": \"subID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"site_name\": {\n                    \"name\": \"site_name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isNew\": {\n                    \"name\": \"isNew\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isPreRegistered\": {\n                    \"name\": \"isPreRegistered\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"medflowDomain\": {\n                    \"name\": \"medflowDomain\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"mdID\": {\n                    \"name\": \"mdID\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"schrID\": {\n                    \"name\": \"schrID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"whiteGlove\": {\n                    \"name\": \"whiteGlove\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employeeType\": {\n                    \"name\": \"employeeType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"profileImage\": {\n                    \"name\": \"profileImage\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccinationCardUpload\": {\n                    \"name\": \"vaccinationCardUpload\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccinationCardImage\": {\n                    \"name\": \"vaccinationCardImage\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccinationDetails\": {\n                    \"name\": \"vaccinationDetails\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccinationType\": {\n                    \"name\": \"vaccinationType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccinationDate\": {\n                    \"name\": \"vaccinationDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccinationLocation\": {\n                    \"name\": \"vaccinationLocation\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccinationDateS\": {\n                    \"name\": \"vaccinationDateS\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccinationLocationS\": {\n                    \"name\": \"vaccinationLocationS\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isBooster\": {\n                    \"name\": \"isBooster\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"BoosterShotCardImage\": {\n                    \"name\": \"BoosterShotCardImage\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isExternalTest\": {\n                    \"name\": \"isExternalTest\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalTestImage\": {\n                    \"name\": \"externalTestImage\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalTestDate\": {\n                    \"name\": \"externalTestDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalTestType\": {\n                    \"name\": \"externalTestType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalTestResult\": {\n                    \"name\": \"externalTestResult\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"preRegisterShowId\": {\n                    \"name\": \"preRegisterShowId\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"patternConsent\": {\n                    \"name\": \"patternConsent\",\n                    \"isArray\": true,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true\n                },\n                \"hippaConsent\": {\n                    \"name\": \"hippaConsent\",\n                    \"isArray\": true,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true\n                },\n                \"insuranceScan\": {\n                    \"name\": \"insuranceScan\",\n                    \"isArray\": true,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedBy\": {\n                    \"name\": \"updatedBy\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedByName\": {\n                    \"name\": \"updatedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"lastUpdatedTest\": {\n                    \"name\": \"lastUpdatedTest\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"autoRelease\": {\n                    \"name\": \"autoRelease\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"lastUsed\": {\n                    \"name\": \"lastUsed\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isPrimaryProfile\": {\n                    \"name\": \"isPrimaryProfile\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"parentRelation\": {\n                    \"name\": \"parentRelation\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"note\": {\n                    \"name\": \"note\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendSMS\": {\n                    \"name\": \"sendSMS\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendEmail\": {\n                    \"name\": \"sendEmail\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalTest\": {\n                    \"name\": \"totalTest\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"connectedTo\": {\n                    \"name\": \"connectedTo\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdBy\": {\n                    \"name\": \"createdBy\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdByName\": {\n                    \"name\": \"createdByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"insuranceDetails\": {\n                    \"name\": \"insuranceDetails\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"insuranceCompanyCode\": {\n                    \"name\": \"insuranceCompanyCode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"medicalNo\": {\n                    \"name\": \"medicalNo\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"postGridID\": {\n                    \"name\": \"postGridID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"noteAddedBy\": {\n                    \"name\": \"noteAddedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"status\": {\n                    \"name\": \"status\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isHospice\": {\n                    \"name\": \"isHospice\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"snf\": {\n                    \"name\": \"snf\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isInsHousing\": {\n                    \"name\": \"isInsHousing\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"eligibilityStatus\": {\n                    \"name\": \"eligibilityStatus\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"requestedDetails\": {\n                    \"name\": \"requestedDetails\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"primaryCarePhysician\": {\n                    \"name\": \"primaryCarePhysician\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"referringPyhsician\": {\n                    \"name\": \"referringPyhsician\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"renderingProvider\": {\n                    \"name\": \"renderingProvider\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"referringProvider\": {\n                    \"name\": \"referringProvider\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"orderingProvider\": {\n                    \"name\": \"orderingProvider\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"codes\": {\n                    \"name\": \"codes\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testTwo\": {\n                    \"name\": \"testTwo\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"siteID\": {\n                    \"name\": \"siteID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"setting\": {\n                    \"name\": \"setting\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"ssn\": {\n                    \"name\": \"ssn\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"ethinicity\": {\n                    \"name\": \"ethinicity\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"provider\": {\n                    \"name\": \"provider\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalID\": {\n                    \"name\": \"externalID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"Employees\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"byClient\",\n                        \"fields\": [\n                            \"clientID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employees\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"operations\": [\n                                    \"create\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"create\",\n                                    \"read\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"Test\": {\n            \"name\": \"Test\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"employee\": {\n                    \"name\": \"employee\",\n                    \"isArray\": false,\n                    \"type\": {\n                        \"model\": \"Employee\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"association\": {\n                        \"connectionType\": \"BELONGS_TO\",\n                        \"targetName\": \"testEmployeeId\"\n                    }\n                },\n                \"status\": {\n                    \"name\": \"status\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"client\": {\n                    \"name\": \"client\",\n                    \"isArray\": false,\n                    \"type\": {\n                        \"model\": \"Client\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"association\": {\n                        \"connectionType\": \"BELONGS_TO\",\n                        \"targetName\": \"testClientId\"\n                    }\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"site\": {\n                    \"name\": \"site\",\n                    \"isArray\": false,\n                    \"type\": {\n                        \"model\": \"Site\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"association\": {\n                        \"connectionType\": \"BELONGS_TO\",\n                        \"targetName\": \"testSiteId\"\n                    }\n                },\n                \"lab\": {\n                    \"name\": \"lab\",\n                    \"isArray\": false,\n                    \"type\": {\n                        \"model\": \"Lab\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"association\": {\n                        \"connectionType\": \"BELONGS_TO\",\n                        \"targetName\": \"testLabId\"\n                    }\n                },\n                \"labID\": {\n                    \"name\": \"labID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employeeID\": {\n                    \"name\": \"employeeID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"siteID\": {\n                    \"name\": \"siteID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"order\": {\n                    \"name\": \"order\",\n                    \"isArray\": false,\n                    \"type\": {\n                        \"model\": \"Order\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"association\": {\n                        \"connectionType\": \"BELONGS_TO\",\n                        \"targetName\": \"testOrderId\"\n                    }\n                },\n                \"orderID\": {\n                    \"name\": \"orderID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"baseSiteID\": {\n                    \"name\": \"baseSiteID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testTypeID\": {\n                    \"name\": \"testTypeID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"batch\": {\n                    \"name\": \"batch\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"barcode\": {\n                    \"name\": \"barcode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"owner\": {\n                    \"name\": \"owner\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"result\": {\n                    \"name\": \"result\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"resultDetails\": {\n                    \"name\": \"resultDetails\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"resultDate\": {\n                    \"name\": \"resultDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDate\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"resultDateTime\": {\n                    \"name\": \"resultDateTime\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"receiveDateTime\": {\n                    \"name\": \"receiveDateTime\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employee_demographics\": {\n                    \"name\": \"employee_demographics\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"labOrderDetail\": {\n                    \"name\": \"labOrderDetail\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"site_name\": {\n                    \"name\": \"site_name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientName\": {\n                    \"name\": \"clientName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"labName\": {\n                    \"name\": \"labName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"phoneNumber\": {\n                    \"name\": \"phoneNumber\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"test_number\": {\n                    \"name\": \"test_number\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"email\": {\n                    \"name\": \"email\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"tester_name\": {\n                    \"name\": \"tester_name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testerID\": {\n                    \"name\": \"testerID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isAntigen\": {\n                    \"name\": \"isAntigen\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"referenceID\": {\n                    \"name\": \"referenceID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"test_type\": {\n                    \"name\": \"test_type\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdBy\": {\n                    \"name\": \"createdBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testerPhone\": {\n                    \"name\": \"testerPhone\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"submittedBy\": {\n                    \"name\": \"submittedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"submittedByName\": {\n                    \"name\": \"submittedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"StampBy\": {\n                    \"name\": \"StampBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"StampByName\": {\n                    \"name\": \"StampByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"emailSend\": {\n                    \"name\": \"emailSend\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"quarantinedStart\": {\n                    \"name\": \"quarantinedStart\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"quarantinedEnd\": {\n                    \"name\": \"quarantinedEnd\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"startTimeStamp\": {\n                    \"name\": \"startTimeStamp\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"timerStatus\": {\n                    \"name\": \"timerStatus\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"startDate\": {\n                    \"name\": \"startDate\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"expired\": {\n                    \"name\": \"expired\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"beenTimed\": {\n                    \"name\": \"beenTimed\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"done\": {\n                    \"name\": \"done\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sr_no\": {\n                    \"name\": \"sr_no\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"appVer\": {\n                    \"name\": \"appVer\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sequenceNo\": {\n                    \"name\": \"sequenceNo\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createSource\": {\n                    \"name\": \"createSource\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isFalsePositive\": {\n                    \"name\": \"isFalsePositive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isRestated\": {\n                    \"name\": \"isRestated\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"invalidResultStatus\": {\n                    \"name\": \"invalidResultStatus\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isLucira\": {\n                    \"name\": \"isLucira\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"patternTestAnswer\": {\n                    \"name\": \"patternTestAnswer\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"schrID\": {\n                    \"name\": \"schrID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"schrTestID\": {\n                    \"name\": \"schrTestID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"timezone\": {\n                    \"name\": \"timezone\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"pcrStatus\": {\n                    \"name\": \"pcrStatus\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"scanByTesterID\": {\n                    \"name\": \"scanByTesterID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"scanByTesterName\": {\n                    \"name\": \"scanByTesterName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"scanByLabUserID\": {\n                    \"name\": \"scanByLabUserID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"scanByLabUserName\": {\n                    \"name\": \"scanByLabUserName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"labelPrinted\": {\n                    \"name\": \"labelPrinted\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isExternalTest\": {\n                    \"name\": \"isExternalTest\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalTestFile\": {\n                    \"name\": \"externalTestFile\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testLocation\": {\n                    \"name\": \"testLocation\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isArchive\": {\n                    \"name\": \"isArchive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"arkstoneID\": {\n                    \"name\": \"arkstoneID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"arkstoneStatus\": {\n                    \"name\": \"arkstoneStatus\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendToID\": {\n                    \"name\": \"sendToID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sendToName\": {\n                    \"name\": \"sendToName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sentToLabDate\": {\n                    \"name\": \"sentToLabDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"verifiedBy\": {\n                    \"name\": \"verifiedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"verifiedByName\": {\n                    \"name\": \"verifiedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"releaseDate\": {\n                    \"name\": \"releaseDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"releaseStatus\": {\n                    \"name\": \"releaseStatus\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"resultPDF\": {\n                    \"name\": \"resultPDF\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"resultColor\": {\n                    \"name\": \"resultColor\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"cancelReason\": {\n                    \"name\": \"cancelReason\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"note\": {\n                    \"name\": \"note\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"claimID\": {\n                    \"name\": \"claimID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"restatedNote\": {\n                    \"name\": \"restatedNote\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sampleContainer\": {\n                    \"name\": \"sampleContainer\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalID\": {\n                    \"name\": \"externalID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"chartID\": {\n                    \"name\": \"chartID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isSendToInstrument\": {\n                    \"name\": \"isSendToInstrument\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isSendToExternalClient\": {\n                    \"name\": \"isSendToExternalClient\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"Tests\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"byClient\",\n                        \"fields\": [\n                            \"clientID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"byLab\",\n                        \"fields\": [\n                            \"labID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"byEmployee\",\n                        \"fields\": [\n                            \"employeeID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"bySite\",\n                        \"fields\": [\n                            \"siteID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"byOrder\",\n                        \"fields\": [\n                            \"orderID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"provider\": \"userPools\",\n                                \"ownerField\": \"owner\",\n                                \"allow\": \"owner\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\"\n                                ],\n                                \"identityClaim\": \"cognito:username\"\n                            },\n                            {\n                                \"allow\": \"private\",\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"LencoBarcodes\": {\n            \"name\": \"LencoBarcodes\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"labID\": {\n                    \"name\": \"labID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"barcode\": {\n                    \"name\": \"barcode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"available\": {\n                    \"name\": \"available\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isActive\": {\n                    \"name\": \"isActive\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"LencoBarcodes\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"byLab\",\n                        \"fields\": [\n                            \"labID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"TestConsent\": {\n            \"name\": \"TestConsent\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"employeeID\": {\n                    \"name\": \"employeeID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"siteID\": {\n                    \"name\": \"siteID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employee\": {\n                    \"name\": \"employee\",\n                    \"isArray\": false,\n                    \"type\": {\n                        \"model\": \"Employee\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"association\": {\n                        \"connectionType\": \"BELONGS_TO\",\n                        \"targetName\": \"testConsentEmployeeId\"\n                    }\n                },\n                \"site\": {\n                    \"name\": \"site\",\n                    \"isArray\": false,\n                    \"type\": {\n                        \"model\": \"Site\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"association\": {\n                        \"connectionType\": \"BELONGS_TO\",\n                        \"targetName\": \"testConsentSiteId\"\n                    }\n                },\n                \"isConsent\": {\n                    \"name\": \"isConsent\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isInsuranceCardScan\": {\n                    \"name\": \"isInsuranceCardScan\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"TestConsents\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"byEmployee\",\n                        \"fields\": [\n                            \"employeeID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"bySite\",\n                        \"fields\": [\n                            \"siteID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"TestTypes\": {\n            \"name\": \"TestTypes\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"code\": {\n                    \"name\": \"code\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"name\": {\n                    \"name\": \"name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"category\": {\n                    \"name\": \"category\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"custom_notes\": {\n                    \"name\": \"custom_notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"typeOfTest\": {\n                    \"name\": \"typeOfTest\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"type\": {\n                    \"name\": \"type\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalTime\": {\n                    \"name\": \"totalTime\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"firstAlert\": {\n                    \"name\": \"firstAlert\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"secondAlert\": {\n                    \"name\": \"secondAlert\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"units\": {\n                    \"name\": \"units\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"minValue\": {\n                    \"name\": \"minValue\",\n                    \"isArray\": false,\n                    \"type\": \"Float\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"maxValue\": {\n                    \"name\": \"maxValue\",\n                    \"isArray\": false,\n                    \"type\": \"Float\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"refInterval\": {\n                    \"name\": \"refInterval\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"duration\": {\n                    \"name\": \"duration\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"hrCounter\": {\n                    \"name\": \"hrCounter\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"siteID\": {\n                    \"name\": \"siteID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sources\": {\n                    \"name\": \"sources\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sampleContainer\": {\n                    \"name\": \"sampleContainer\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"cptCodes\": {\n                    \"name\": \"cptCodes\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"ictCodes\": {\n                    \"name\": \"ictCodes\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"targetRanges\": {\n                    \"name\": \"targetRanges\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isActive\": {\n                    \"name\": \"isActive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isArchive\": {\n                    \"name\": \"isArchive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isAssociatedPanel\": {\n                    \"name\": \"isAssociatedPanel\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isPanelOnly\": {\n                    \"name\": \"isPanelOnly\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isARKStone\": {\n                    \"name\": \"isARKStone\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"lonicCode\": {\n                    \"name\": \"lonicCode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"setting\": {\n                    \"name\": \"setting\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"ranges\": {\n                    \"name\": \"ranges\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdByName\": {\n                    \"name\": \"createdByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedByName\": {\n                    \"name\": \"updatedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"lastUsed\": {\n                    \"name\": \"lastUsed\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"location\": {\n                    \"name\": \"location\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"TestTypes\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employees\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"update\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"EmployeeBarCodes\": {\n            \"name\": \"EmployeeBarCodes\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"employeeID\": {\n                    \"name\": \"employeeID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"barcode\": {\n                    \"name\": \"barcode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"phone_number\": {\n                    \"name\": \"phone_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"licenceNumber\": {\n                    \"name\": \"licenceNumber\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"EmployeeBarCodes\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"EmployeeTestCounter\": {\n            \"name\": \"EmployeeTestCounter\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"counter\": {\n                    \"name\": \"counter\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employeeCounter\": {\n                    \"name\": \"employeeCounter\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"orderCounter\": {\n                    \"name\": \"orderCounter\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"patternQuestion\": {\n                    \"name\": \"patternQuestion\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"totalTest\": {\n                    \"name\": \"totalTest\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employeeUpdate\": {\n                    \"name\": \"employeeUpdate\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"EmployeeTestCounters\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"update\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"ExternalTest\": {\n            \"name\": \"ExternalTest\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"status\": {\n                    \"name\": \"status\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employeeID\": {\n                    \"name\": \"employeeID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"siteID\": {\n                    \"name\": \"siteID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"owner\": {\n                    \"name\": \"owner\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"reason\": {\n                    \"name\": \"reason\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employee_demographics\": {\n                    \"name\": \"employee_demographics\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"site_name\": {\n                    \"name\": \"site_name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"phoneNumber\": {\n                    \"name\": \"phoneNumber\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"tester_name\": {\n                    \"name\": \"tester_name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"email\": {\n                    \"name\": \"email\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccineCardFile\": {\n                    \"name\": \"vaccineCardFile\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"vaccineCardFileBack\": {\n                    \"name\": \"vaccineCardFileBack\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"test_type\": {\n                    \"name\": \"test_type\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"result\": {\n                    \"name\": \"result\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"resultDateTime\": {\n                    \"name\": \"resultDateTime\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalTestFile\": {\n                    \"name\": \"externalTestFile\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"prID\": {\n                    \"name\": \"prID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isPosted\": {\n                    \"name\": \"isPosted\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testNow\": {\n                    \"name\": \"testNow\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"ExternalTests\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\"\n                                ]\n                            },\n                            {\n                                \"provider\": \"userPools\",\n                                \"ownerField\": \"owner\",\n                                \"allow\": \"owner\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\"\n                                ],\n                                \"identityClaim\": \"cognito:username\"\n                            },\n                            {\n                                \"allow\": \"private\",\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"update\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"EmployeeLogin\": {\n            \"name\": \"EmployeeLogin\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"employeeID\": {\n                    \"name\": \"employeeID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"deviceID\": {\n                    \"name\": \"deviceID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"deviceType\": {\n                    \"name\": \"deviceType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"EmployeeLogins\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"TestSession\": {\n            \"name\": \"TestSession\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"siteID\": {\n                    \"name\": \"siteID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sessionStart\": {\n                    \"name\": \"sessionStart\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"sessionEnd\": {\n                    \"name\": \"sessionEnd\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"activeTester\": {\n                    \"name\": \"activeTester\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"Tester\": {\n                    \"name\": \"Tester\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"startedBy\": {\n                    \"name\": \"startedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"startedByName\": {\n                    \"name\": \"startedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"status\": {\n                    \"name\": \"status\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"endedBy\": {\n                    \"name\": \"endedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"endedByName\": {\n                    \"name\": \"endedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"TestSessions\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"Documents\": {\n            \"name\": \"Documents\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employeeID\": {\n                    \"name\": \"employeeID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testID\": {\n                    \"name\": \"testID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"orderID\": {\n                    \"name\": \"orderID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"docType\": {\n                    \"name\": \"docType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"docLabel\": {\n                    \"name\": \"docLabel\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fileName\": {\n                    \"name\": \"fileName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fileType\": {\n                    \"name\": \"fileType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fileSize\": {\n                    \"name\": \"fileSize\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"notes\": {\n                    \"name\": \"notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isActive\": {\n                    \"name\": \"isActive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedBy\": {\n                    \"name\": \"updatedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedByName\": {\n                    \"name\": \"updatedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdByName\": {\n                    \"name\": \"createdByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"Documents\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"private\",\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"Order\": {\n            \"name\": \"Order\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"employeeID\": {\n                    \"name\": \"employeeID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"orderNo\": {\n                    \"name\": \"orderNo\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"Tests\": {\n                    \"name\": \"Tests\",\n                    \"isArray\": true,\n                    \"type\": {\n                        \"model\": \"Test\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true,\n                    \"association\": {\n                        \"connectionType\": \"HAS_MANY\",\n                        \"associatedWith\": \"orderID\"\n                    }\n                },\n                \"providerID\": {\n                    \"name\": \"providerID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"labID\": {\n                    \"name\": \"labID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"labName\": {\n                    \"name\": \"labName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientName\": {\n                    \"name\": \"clientName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"providerName\": {\n                    \"name\": \"providerName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"siteID\": {\n                    \"name\": \"siteID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"site_name\": {\n                    \"name\": \"site_name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employee_demographics\": {\n                    \"name\": \"employee_demographics\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testsToDo\": {\n                    \"name\": \"testsToDo\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"barcode\": {\n                    \"name\": \"barcode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"oldbarcode\": {\n                    \"name\": \"oldbarcode\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_1\": {\n                    \"name\": \"diag_1\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_2\": {\n                    \"name\": \"diag_2\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_3\": {\n                    \"name\": \"diag_3\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_4\": {\n                    \"name\": \"diag_4\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_5\": {\n                    \"name\": \"diag_5\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_6\": {\n                    \"name\": \"diag_6\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_7\": {\n                    \"name\": \"diag_7\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_8\": {\n                    \"name\": \"diag_8\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_9\": {\n                    \"name\": \"diag_9\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_10\": {\n                    \"name\": \"diag_10\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_11\": {\n                    \"name\": \"diag_11\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"diag_12\": {\n                    \"name\": \"diag_12\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"proc_array\": {\n                    \"name\": \"proc_array\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"provider\": {\n                    \"name\": \"provider\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"orderDate\": {\n                    \"name\": \"orderDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"collectionDate\": {\n                    \"name\": \"collectionDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"collectedBy\": {\n                    \"name\": \"collectedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"collectedByName\": {\n                    \"name\": \"collectedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testDoneDate\": {\n                    \"name\": \"testDoneDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"labReceiveDate\": {\n                    \"name\": \"labReceiveDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"status\": {\n                    \"name\": \"status\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"providerStatus\": {\n                    \"name\": \"providerStatus\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"cancelledReason\": {\n                    \"name\": \"cancelledReason\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"notes\": {\n                    \"name\": \"notes\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isActive\": {\n                    \"name\": \"isActive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isResultEmailed\": {\n                    \"name\": \"isResultEmailed\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"floorNo\": {\n                    \"name\": \"floorNo\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"requestID\": {\n                    \"name\": \"requestID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"receivedBy\": {\n                    \"name\": \"receivedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"receivedByName\": {\n                    \"name\": \"receivedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"receivedDate\": {\n                    \"name\": \"receivedDate\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedBy\": {\n                    \"name\": \"updatedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedByName\": {\n                    \"name\": \"updatedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdBy\": {\n                    \"name\": \"createdBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdByName\": {\n                    \"name\": \"createdByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"timezone\": {\n                    \"name\": \"timezone\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"eligibilityStatus\": {\n                    \"name\": \"eligibilityStatus\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"location\": {\n                    \"name\": \"location\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"tdDate\": {\n                    \"name\": \"tdDate\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"externalID\": {\n                    \"name\": \"externalID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clincialComments\": {\n                    \"name\": \"clincialComments\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"hippaSignature\": {\n                    \"name\": \"hippaSignature\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testOrdered\": {\n                    \"name\": \"testOrdered\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"testQuantity\": {\n                    \"name\": \"testQuantity\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"cancelledBy\": {\n                    \"name\": \"cancelledBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isAcknowledged\": {\n                    \"name\": \"isAcknowledged\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"departmentid\": {\n                    \"name\": \"departmentid\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"chartID\": {\n                    \"name\": \"chartID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isSendToExternalClient\": {\n                    \"name\": \"isSendToExternalClient\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"Orders\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"private\",\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"UploadRequestMain\": {\n            \"name\": \"UploadRequestMain\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"Items\": {\n                    \"name\": \"Items\",\n                    \"isArray\": true,\n                    \"type\": {\n                        \"model\": \"UploadRequest\"\n                    },\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isArrayNullable\": true,\n                    \"association\": {\n                        \"connectionType\": \"HAS_MANY\",\n                        \"associatedWith\": \"requestID\"\n                    }\n                },\n                \"filesStatus\": {\n                    \"name\": \"filesStatus\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"employeeID\": {\n                    \"name\": \"employeeID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"siteID\": {\n                    \"name\": \"siteID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fileName\": {\n                    \"name\": \"fileName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fileType\": {\n                    \"name\": \"fileType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"title\": {\n                    \"name\": \"title\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"uploadCallType\": {\n                    \"name\": \"uploadCallType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"status\": {\n                    \"name\": \"status\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdBy\": {\n                    \"name\": \"createdBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdByName\": {\n                    \"name\": \"createdByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"UploadRequestMains\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"private\",\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"UploadRequest\": {\n            \"name\": \"UploadRequest\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"employeeID\": {\n                    \"name\": \"employeeID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"siteID\": {\n                    \"name\": \"siteID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"requestID\": {\n                    \"name\": \"requestID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fileID\": {\n                    \"name\": \"fileID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fileName\": {\n                    \"name\": \"fileName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"fileType\": {\n                    \"name\": \"fileType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"floorNo\": {\n                    \"name\": \"floorNo\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"uploadCallType\": {\n                    \"name\": \"uploadCallType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"data\": {\n                    \"name\": \"data\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"status\": {\n                    \"name\": \"status\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"reason\": {\n                    \"name\": \"reason\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"processingStatus\": {\n                    \"name\": \"processingStatus\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdBy\": {\n                    \"name\": \"createdBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdByName\": {\n                    \"name\": \"createdByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"UploadRequests\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"key\",\n                    \"properties\": {\n                        \"name\": \"byRequest\",\n                        \"fields\": [\n                            \"requestID\"\n                        ]\n                    }\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"private\",\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"GeneralSettingType\": {\n            \"name\": \"GeneralSettingType\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"code\": {\n                    \"name\": \"code\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"title\": {\n                    \"name\": \"title\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"label\": {\n                    \"name\": \"label\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"value\": {\n                    \"name\": \"value\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isActive\": {\n                    \"name\": \"isActive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"settingType\": {\n                    \"name\": \"settingType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedBy\": {\n                    \"name\": \"updatedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedByName\": {\n                    \"name\": \"updatedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdByName\": {\n                    \"name\": \"createdByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"GeneralSettingTypes\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"private\",\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"Users\": {\n            \"name\": \"Users\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"roles\": {\n                    \"name\": \"roles\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"firstName\": {\n                    \"name\": \"firstName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"lastName\": {\n                    \"name\": \"lastName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"note\": {\n                    \"name\": \"note\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"email\": {\n                    \"name\": \"email\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"personalisation\": {\n                    \"name\": \"personalisation\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"phone_number\": {\n                    \"name\": \"phone_number\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"userRole\": {\n                    \"name\": \"userRole\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"connectedID\": {\n                    \"name\": \"connectedID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"labID\": {\n                    \"name\": \"labID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"providerID\": {\n                    \"name\": \"providerID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"status\": {\n                    \"name\": \"status\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"systemUser\": {\n                    \"name\": \"systemUser\",\n                    \"isArray\": false,\n                    \"type\": \"Int\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"appType\": {\n                    \"name\": \"appType\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"userPermission\": {\n                    \"name\": \"userPermission\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"is2FaEnabled\": {\n                    \"name\": \"is2FaEnabled\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"userID\": {\n                    \"name\": \"userID\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"labAdmin\": {\n                    \"name\": \"labAdmin\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdBy\": {\n                    \"name\": \"createdBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdByName\": {\n                    \"name\": \"createdByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedBy\": {\n                    \"name\": \"updatedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedByName\": {\n                    \"name\": \"updatedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"provider\": {\n                    \"name\": \"provider\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"Users\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"private\",\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        \"MessageTemplate\": {\n            \"name\": \"MessageTemplate\",\n            \"fields\": {\n                \"id\": {\n                    \"name\": \"id\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": true,\n                    \"attributes\": []\n                },\n                \"clientID\": {\n                    \"name\": \"clientID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"companyID\": {\n                    \"name\": \"companyID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"subAgentID\": {\n                    \"name\": \"subAgentID\",\n                    \"isArray\": false,\n                    \"type\": \"ID\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"name\": {\n                    \"name\": \"name\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"category\": {\n                    \"name\": \"category\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"subject\": {\n                    \"name\": \"subject\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"message\": {\n                    \"name\": \"message\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"isActive\": {\n                    \"name\": \"isActive\",\n                    \"isArray\": false,\n                    \"type\": \"Boolean\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"criteria\": {\n                    \"name\": \"criteria\",\n                    \"isArray\": false,\n                    \"type\": \"AWSJSON\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedBy\": {\n                    \"name\": \"updatedBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"updatedByName\": {\n                    \"name\": \"updatedByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdBy\": {\n                    \"name\": \"createdBy\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdByName\": {\n                    \"name\": \"createdByName\",\n                    \"isArray\": false,\n                    \"type\": \"String\",\n                    \"isRequired\": false,\n                    \"attributes\": []\n                },\n                \"createdAt\": {\n                    \"name\": \"createdAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                },\n                \"updatedAt\": {\n                    \"name\": \"updatedAt\",\n                    \"isArray\": false,\n                    \"type\": \"AWSDateTime\",\n                    \"isRequired\": false,\n                    \"attributes\": [],\n                    \"isReadOnly\": true\n                }\n            },\n            \"syncable\": true,\n            \"pluralName\": \"MessageTemplates\",\n            \"attributes\": [\n                {\n                    \"type\": \"model\",\n                    \"properties\": {}\n                },\n                {\n                    \"type\": \"auth\",\n                    \"properties\": {\n                        \"rules\": [\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Admins\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Testers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Labs\",\n                                    \"LabTechs\",\n                                    \"Providers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Employers\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"groupClaim\": \"cognito:groups\",\n                                \"provider\": \"userPools\",\n                                \"allow\": \"groups\",\n                                \"groups\": [\n                                    \"Clients\"\n                                ],\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"private\",\n                                \"operations\": [\n                                    \"read\"\n                                ]\n                            },\n                            {\n                                \"allow\": \"public\",\n                                \"provider\": \"apiKey\",\n                                \"operations\": [\n                                    \"read\",\n                                    \"create\",\n                                    \"update\",\n                                    \"delete\"\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        }\n    },\n    \"enums\": {},\n    \"nonModels\": {},\n    \"codegenVersion\": \"3.4.4\",\n    \"version\": \"d4f8b9274bbefcacd8884c30eb3697e4\"\n};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filledCheckBox\":\"FilledCheckBox_filledCheckBox__raRSn\",\"customLabel\":\"FilledCheckBox_customLabel__3nq7e\",\"checkbox\":\"FilledCheckBox_checkbox__OBxry\",\"multiCheckBox\":\"FilledCheckBox_multiCheckBox__h-QP0\",\"multiLabel\":\"FilledCheckBox_multiLabel__j7DFl\"};","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/co_lab-1.5d46628e.png\";","export const genderOBJ = {\n  M: \"Male\",\n  F: \"Female\",\n};\n\nexport const getMatchScore = (item, userData) => {\n  let score = 0;\n\n  for (const filter of item.FilterKey || []) {\n    if (filter) {\n      const keyType = filter.keyType;\n      if (keyType === \"age\") {\n        const ageStart = Number(item.AgeStart);\n        const ageEnd = Number(item.AgeEnd);\n        if (userData.age >= ageStart && userData.age <= ageEnd) {\n          score += 1;\n        }\n      } else {\n        const userValue = userData[keyType]?.value;\n\n        if (userValue !== undefined && userValue === filter.value) {\n          score += 1;\n        }\n      }\n    }\n  }\n\n  return score;\n};\n\nexport const isWithinAgeRange = (item, ageNumber) => {\n  const ageStart = Number(item.AgeStart);\n  const ageEnd = Number(item.AgeEnd);\n  return ageNumber >= ageStart && ageNumber <= ageEnd;\n};\n\nexport const getGroupMatchScore = (group, userData) => {\n  let score = 0;\n\n  for (const filter of group.FilterKey || []) {\n    const keyType = filter.keyType;\n\n    if (keyType === \"age\") {\n      continue;\n    }\n\n    const userValue = userData[keyType]?.value;\n    if (userValue !== undefined && userValue === filter.value) {\n      score += 1;\n    }\n  }\n\n  return score;\n};\n\n// export const findBestMatchingRange = (ranges, userData) => {\n\n//     const scoredGroups = ranges.map((group) => ({\n//       group,\n//       score: getGroupMatchScore(group, userData),\n//     }));\n\n//     const maxGroupScore = Math.max(...scoredGroups.map(({ score }) => score));\n\n//     const bestGroups = scoredGroups\n//       .filter(({ score }) => score === maxGroupScore)\n//       .map(({ group }) => group);\n\n//     const matchingRanges = [];\n\n//     for (const group of bestGroups) {\n//       const matchingRange = findMatchingRange(group, userData.age);\n\n//       if (matchingRange) {\n//         matchingRanges.push({\n//           range: matchingRange,\n//           group,\n//         });\n//       }\n//     }\n\n//     if (matchingRanges.length > 0) {\n//       return matchingRanges[0].range;\n//     }\n\n//     for (const group of bestGroups) {\n//       if (group.RangeArr.length > 0) {\n//         return group.RangeArr[0];\n//       }\n//     }\n\n//     for (const group of ranges) {\n//       if (group.RangeArr.length > 0) {\n//         return group.RangeArr[0];\n//       }\n//     }\n\n//     return null;\n//   };\n\nconst doesGroupMatchAllFilters = (group, userData) => {\n  for (const filter of group.FilterKey || []) {\n    const keyType = filter.keyType;\n\n    if (keyType === \"age\") {\n      continue;\n    }\n\n    const userValue = userData[keyType]?.value;\n    if (userValue === undefined || userValue !== filter.value) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\nexport const findMatchingRange = (group, userAge) => {\n  return group.RangeArr.find((rangeItem) => {\n    const ageStart = Number(rangeItem.AgeStart);\n    const ageEnd = Number(rangeItem.AgeEnd);\n    return userAge >= ageStart && userAge <= ageEnd;\n  });\n};\n\n// Main function to find the best matching range\nexport const findBestMatchingRange = (ranges, userData) => {\n  const matchingGroups = ranges.filter((group) => doesGroupMatchAllFilters(group, userData));\n\n  const matchingRanges = [];\n\n  for (const group of matchingGroups) {\n    const matchingRange = findMatchingRange(group, userData.age);\n\n    if (matchingRange) {\n      matchingRanges.push({\n        range: matchingRange,\n        group,\n      });\n    }\n  }\n\n\n\n  if (matchingRanges.length > 0) {\n    return matchingRanges[0].range;\n  }\n\n  if (ranges.length > 0 && ranges?.[0]?.FilterKey.length === 0) {\n    return ranges?.[0].RangeArr?.[0];\n  }\n\n  return null;\n};\n\nconst isNonEmpty = (value) => {\n  return value !== undefined && value !== null && value !== \"\";\n};\n\nconst getAgeRange = (RangeArr) => {\n  for (const obj of RangeArr) {\n    const ageStart = obj.AgeStart;\n    const ageEnd = obj.AgeEnd;\n    if (isNonEmpty(ageStart) && isNonEmpty(ageEnd)) {\n      return `${ageStart}-${ageEnd}`;\n    }\n  }\n  return \"\";\n};\n\nexport const getSelectedValues = ({ FilterKey, RangeArr, index, collapse }) => {\n  if (index !== 0 || !collapse) {\n    return null;\n  }\n\n  return FilterKey.filter((item) => item !== null && item?.label)\n    .map((item) => {\n      if (item.keyType === \"age\") {\n        const ageRange = getAgeRange(RangeArr);\n        return ageRange ? `Age: ${ageRange}` : \"\";\n      }\n      return item.label;\n    })\n    .filter((label) => label)\n    .join(\", \");\n};\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const getLab = /* GraphQL */ `\n  query GetLab($id: ID!) {\n    getLab(id: $id) {\n      id\n      name\n      logo\n      contact_name\n      contact_phone\n      phone_number\n      fax_number\n      user_id\n      contact_email\n      tubes_provided\n      lab_director\n      country\n      referredDoctor\n      clia_number\n      testing_notes\n      street\n      city_state_zip\n      lab_contacts\n      default_antigen\n      antigen_notes\n      default_molecular\n      default_other\n      default_rapidflu\n      default_lucira\n      molecular_notes\n      custom_notes\n      invalid_notes\n      indeterminate_notes\n      other_notes\n      lucira_notes\n      rapidflu_notes\n      sendInsurance\n      barCodeProvided\n      barCodeAlertLimit\n      whiteLabel\n      whiteLabelPackage\n      showOnSummaryScreen\n      orderCodes\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      pendingRelease\n      logourl\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const listLabs = /* GraphQL */ `\n  query ListLabs(\n    $filter: ModelLabFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listLabs(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        name\n        logo\n        contact_name\n        contact_phone\n        phone_number\n        fax_number\n        user_id\n        contact_email\n        tubes_provided\n        lab_director\n        country\n        referredDoctor\n        clia_number\n        testing_notes\n        street\n        city_state_zip\n        lab_contacts\n        default_antigen\n        antigen_notes\n        default_molecular\n        default_other\n        default_rapidflu\n        default_lucira\n        molecular_notes\n        custom_notes\n        invalid_notes\n        indeterminate_notes\n        other_notes\n        lucira_notes\n        rapidflu_notes\n        sendInsurance\n        barCodeProvided\n        barCodeAlertLimit\n        whiteLabel\n        whiteLabelPackage\n        showOnSummaryScreen\n        orderCodes\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        pendingRelease\n        logourl\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncLabs = /* GraphQL */ `\n  query SyncLabs(\n    $filter: ModelLabFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncLabs(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        name\n        logo\n        contact_name\n        contact_phone\n        phone_number\n        fax_number\n        user_id\n        contact_email\n        tubes_provided\n        lab_director\n        country\n        referredDoctor\n        clia_number\n        testing_notes\n        street\n        city_state_zip\n        lab_contacts\n        default_antigen\n        antigen_notes\n        default_molecular\n        default_other\n        default_rapidflu\n        default_lucira\n        molecular_notes\n        custom_notes\n        invalid_notes\n        indeterminate_notes\n        other_notes\n        lucira_notes\n        rapidflu_notes\n        sendInsurance\n        barCodeProvided\n        barCodeAlertLimit\n        whiteLabel\n        whiteLabelPackage\n        showOnSummaryScreen\n        orderCodes\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        pendingRelease\n        logourl\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getSite = /* GraphQL */ `\n  query GetSite($id: ID!) {\n    getSite(id: $id) {\n      id\n      name\n      clientID\n      contact_name\n      contactName\n      contact_phone\n      phone_number\n      email\n      contact_email\n      safeCampAdmin\n      antigen\n      automateTestType\n      user_id\n      show_contacts\n      insurance_required\n      sendInsuranceCard\n      isInsurance\n      resetTestDay\n      startDate\n      endDate\n      orderKitDate\n      orderKitType\n      orderQuantity\n      enableShipment\n      showOnSummaryScreen\n      messageTested\n      messageResulted\n      messagePositive\n      messageReTest\n      printLabel\n      isArchive\n      isActive\n      isLucira\n      isPCRCustody\n      vaccinationCard\n      externalTest\n      externalTestType\n      externalTestDuration\n      externalTestAdmit\n      patternTesting\n      isHRPR\n      patternHippa\n      preRegistration\n      admit\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      totalPR\n      totalOrdered\n      totalExtTest\n      totalCheckIn\n      totalGuest\n      totalStaff\n      status\n      companyID\n      sendIdentification\n      isAutoSubmitClaim\n      sendExternalRequisition\n      sendPrescription\n      sendAuthorization\n      sendOtherDocuments\n      startBarCode\n      uploadFileStatus\n      hippa\n      hippaFile\n      resultTemplate\n      isTesting\n      street\n      city\n      state\n      zipcode\n      countryCode\n      country\n      setting\n      defaultProvider\n      practiceID\n      labLocalID\n      fax\n      contact_fax\n      discount\n      commission\n      totalOrders\n      totalBilledAmount\n      claimAmount\n      openAmount\n      paid\n      lastOrder\n      note\n      createdBy\n      createdByName\n      updatedByName\n      siteType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const listSites = /* GraphQL */ `\n  query ListSites(\n    $filter: ModelSiteFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listSites(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncSites = /* GraphQL */ `\n  query SyncSites(\n    $filter: ModelSiteFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncSites(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getClient = /* GraphQL */ `\n  query GetClient($id: ID!) {\n    getClient(id: $id) {\n      id\n      name\n      contact_name\n      contact_phone\n      phone_number\n      country\n      timezone\n      fax_number\n      street\n      city\n      state\n      zipcode\n      contact_email\n      hippa\n      hippaFile\n      resultType\n      showOnSummaryScreen\n      whiteLabel\n      whiteLabelPackage\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      resultTypes\n      brmSetting\n      setting\n      pgName\n      colLabId\n      uploadFileStatus\n      orderCounter\n      requiredKeys\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Sites {\n        items {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Employees {\n        items {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const listClients = /* GraphQL */ `\n  query ListClients(\n    $filter: ModelClientFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listClients(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncClients = /* GraphQL */ `\n  query SyncClients(\n    $filter: ModelClientFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncClients(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getEmployee = /* GraphQL */ `\n  query GetEmployee($id: ID!) {\n    getEmployee(id: $id) {\n      id\n      first\n      last\n      middleName\n      dob\n      id_number\n      clientID\n      employeeFND\n      street\n      street2\n      city\n      state\n      county\n      zip\n      country\n      countryCode\n      phone_number\n      sex\n      email\n      isVaccinated\n      insurance_name\n      insurance_number\n      insuranceGroupId\n      insurance_img_front\n      insurance_img_back\n      subID\n      site_name\n      isNew\n      isPreRegistered\n      medflowDomain\n      mdID\n      schrID\n      whiteGlove\n      employeeType\n      profileImage\n      vaccinationCardUpload\n      vaccinationCardImage\n      vaccinationDetails\n      vaccinationType\n      vaccinationDate\n      vaccinationLocation\n      vaccinationDateS\n      vaccinationLocationS\n      isBooster\n      BoosterShotCardImage\n      isExternalTest\n      externalTestImage\n      externalTestDate\n      externalTestType\n      externalTestResult\n      preRegisterShowId\n      patternConsent\n      hippaConsent\n      insuranceScan\n      createdAt\n      updatedBy\n      updatedByName\n      lastUpdatedTest\n      autoRelease\n      lastUsed\n      isPrimaryProfile\n      parentRelation\n      note\n      sendSMS\n      sendEmail\n      totalTest\n      connectedTo\n      createdBy\n      createdByName\n      insuranceDetails\n      insuranceCompanyCode\n      medicalNo\n      postGridID\n      noteAddedBy\n      status\n      isHospice\n      snf\n      isInsHousing\n      eligibilityStatus\n      requestedDetails\n      primaryCarePhysician\n      referringPyhsician\n      renderingProvider\n      referringProvider\n      orderingProvider\n      codes\n      testTwo\n      siteID\n      setting\n      ssn\n      ethinicity\n      provider\n      externalID\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      Client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const listEmployees = /* GraphQL */ `\n  query ListEmployees(\n    $filter: ModelEmployeeFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listEmployees(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncEmployees = /* GraphQL */ `\n  query SyncEmployees(\n    $filter: ModelEmployeeFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncEmployees(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getTest = /* GraphQL */ `\n  query GetTest($id: ID!) {\n    getTest(id: $id) {\n      id\n      status\n      clientID\n      labID\n      employeeID\n      siteID\n      orderID\n      baseSiteID\n      testTypeID\n      batch\n      barcode\n      owner\n      result\n      resultDetails\n      resultDate\n      resultDateTime\n      receiveDateTime\n      employee_demographics\n      labOrderDetail\n      site_name\n      clientName\n      labName\n      phoneNumber\n      test_number\n      email\n      tester_name\n      testerID\n      isAntigen\n      referenceID\n      test_type\n      createdBy\n      testerPhone\n      submittedBy\n      submittedByName\n      StampBy\n      StampByName\n      emailSend\n      quarantinedStart\n      quarantinedEnd\n      startTimeStamp\n      timerStatus\n      startDate\n      expired\n      beenTimed\n      done\n      sr_no\n      appVer\n      sequenceNo\n      createSource\n      isFalsePositive\n      isRestated\n      invalidResultStatus\n      isLucira\n      patternTestAnswer\n      schrID\n      schrTestID\n      createdAt\n      updatedAt\n      timezone\n      pcrStatus\n      scanByTesterID\n      scanByTesterName\n      scanByLabUserID\n      scanByLabUserName\n      labelPrinted\n      isExternalTest\n      externalTestFile\n      testLocation\n      isArchive\n      arkstoneID\n      arkstoneStatus\n      sendToID\n      sendToName\n      sentToLabDate\n      verifiedBy\n      verifiedByName\n      releaseDate\n      releaseStatus\n      resultPDF\n      resultColor\n      cancelReason\n      note\n      claimID\n      restatedNote\n      sampleContainer\n      externalID\n      chartID\n      isSendToInstrument\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      lab {\n        id\n        name\n        logo\n        contact_name\n        contact_phone\n        phone_number\n        fax_number\n        user_id\n        contact_email\n        tubes_provided\n        lab_director\n        country\n        referredDoctor\n        clia_number\n        testing_notes\n        street\n        city_state_zip\n        lab_contacts\n        default_antigen\n        antigen_notes\n        default_molecular\n        default_other\n        default_rapidflu\n        default_lucira\n        molecular_notes\n        custom_notes\n        invalid_notes\n        indeterminate_notes\n        other_notes\n        lucira_notes\n        rapidflu_notes\n        sendInsurance\n        barCodeProvided\n        barCodeAlertLimit\n        whiteLabel\n        whiteLabelPackage\n        showOnSummaryScreen\n        orderCodes\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        pendingRelease\n        logourl\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      order {\n        id\n        employeeID\n        orderNo\n        providerID\n        clientID\n        labID\n        labName\n        clientName\n        providerName\n        siteID\n        site_name\n        employee_demographics\n        testsToDo\n        barcode\n        oldbarcode\n        diag_1\n        diag_2\n        diag_3\n        diag_4\n        diag_5\n        diag_6\n        diag_7\n        diag_8\n        diag_9\n        diag_10\n        diag_11\n        diag_12\n        proc_array\n        provider\n        orderDate\n        collectionDate\n        collectedBy\n        collectedByName\n        testDoneDate\n        labReceiveDate\n        status\n        providerStatus\n        cancelledReason\n        notes\n        isActive\n        isResultEmailed\n        floorNo\n        requestID\n        receivedBy\n        receivedByName\n        receivedDate\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        timezone\n        eligibilityStatus\n        location\n        tdDate\n        externalID\n        clincialComments\n        hippaSignature\n        createdAt\n        updatedAt\n        testOrdered\n        testQuantity\n        cancelledBy\n        isAcknowledged\n        departmentid\n        chartID\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const listTests = /* GraphQL */ `\n  query ListTests(\n    $filter: ModelTestFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listTests(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        status\n        clientID\n        labID\n        employeeID\n        siteID\n        orderID\n        baseSiteID\n        testTypeID\n        batch\n        barcode\n        owner\n        result\n        resultDetails\n        resultDate\n        resultDateTime\n        receiveDateTime\n        employee_demographics\n        labOrderDetail\n        site_name\n        clientName\n        labName\n        phoneNumber\n        test_number\n        email\n        tester_name\n        testerID\n        isAntigen\n        referenceID\n        test_type\n        createdBy\n        testerPhone\n        submittedBy\n        submittedByName\n        StampBy\n        StampByName\n        emailSend\n        quarantinedStart\n        quarantinedEnd\n        startTimeStamp\n        timerStatus\n        startDate\n        expired\n        beenTimed\n        done\n        sr_no\n        appVer\n        sequenceNo\n        createSource\n        isFalsePositive\n        isRestated\n        invalidResultStatus\n        isLucira\n        patternTestAnswer\n        schrID\n        schrTestID\n        createdAt\n        updatedAt\n        timezone\n        pcrStatus\n        scanByTesterID\n        scanByTesterName\n        scanByLabUserID\n        scanByLabUserName\n        labelPrinted\n        isExternalTest\n        externalTestFile\n        testLocation\n        isArchive\n        arkstoneID\n        arkstoneStatus\n        sendToID\n        sendToName\n        sentToLabDate\n        verifiedBy\n        verifiedByName\n        releaseDate\n        releaseStatus\n        resultPDF\n        resultColor\n        cancelReason\n        note\n        claimID\n        restatedNote\n        sampleContainer\n        externalID\n        chartID\n        isSendToInstrument\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        lab {\n          id\n          name\n          logo\n          contact_name\n          contact_phone\n          phone_number\n          fax_number\n          user_id\n          contact_email\n          tubes_provided\n          lab_director\n          country\n          referredDoctor\n          clia_number\n          testing_notes\n          street\n          city_state_zip\n          lab_contacts\n          default_antigen\n          antigen_notes\n          default_molecular\n          default_other\n          default_rapidflu\n          default_lucira\n          molecular_notes\n          custom_notes\n          invalid_notes\n          indeterminate_notes\n          other_notes\n          lucira_notes\n          rapidflu_notes\n          sendInsurance\n          barCodeProvided\n          barCodeAlertLimit\n          whiteLabel\n          whiteLabelPackage\n          showOnSummaryScreen\n          orderCodes\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          pendingRelease\n          logourl\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        site {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        employee {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        order {\n          id\n          employeeID\n          orderNo\n          providerID\n          clientID\n          labID\n          labName\n          clientName\n          providerName\n          siteID\n          site_name\n          employee_demographics\n          testsToDo\n          barcode\n          oldbarcode\n          diag_1\n          diag_2\n          diag_3\n          diag_4\n          diag_5\n          diag_6\n          diag_7\n          diag_8\n          diag_9\n          diag_10\n          diag_11\n          diag_12\n          proc_array\n          provider\n          orderDate\n          collectionDate\n          collectedBy\n          collectedByName\n          testDoneDate\n          labReceiveDate\n          status\n          providerStatus\n          cancelledReason\n          notes\n          isActive\n          isResultEmailed\n          floorNo\n          requestID\n          receivedBy\n          receivedByName\n          receivedDate\n          updatedBy\n          updatedByName\n          createdBy\n          createdByName\n          timezone\n          eligibilityStatus\n          location\n          tdDate\n          externalID\n          clincialComments\n          hippaSignature\n          createdAt\n          updatedAt\n          testOrdered\n          testQuantity\n          cancelledBy\n          isAcknowledged\n          departmentid\n          chartID\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncTests = /* GraphQL */ `\n  query SyncTests(\n    $filter: ModelTestFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncTests(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        status\n        clientID\n        labID\n        employeeID\n        siteID\n        orderID\n        baseSiteID\n        testTypeID\n        batch\n        barcode\n        owner\n        result\n        resultDetails\n        resultDate\n        resultDateTime\n        receiveDateTime\n        employee_demographics\n        labOrderDetail\n        site_name\n        clientName\n        labName\n        phoneNumber\n        test_number\n        email\n        tester_name\n        testerID\n        isAntigen\n        referenceID\n        test_type\n        createdBy\n        testerPhone\n        submittedBy\n        submittedByName\n        StampBy\n        StampByName\n        emailSend\n        quarantinedStart\n        quarantinedEnd\n        startTimeStamp\n        timerStatus\n        startDate\n        expired\n        beenTimed\n        done\n        sr_no\n        appVer\n        sequenceNo\n        createSource\n        isFalsePositive\n        isRestated\n        invalidResultStatus\n        isLucira\n        patternTestAnswer\n        schrID\n        schrTestID\n        createdAt\n        updatedAt\n        timezone\n        pcrStatus\n        scanByTesterID\n        scanByTesterName\n        scanByLabUserID\n        scanByLabUserName\n        labelPrinted\n        isExternalTest\n        externalTestFile\n        testLocation\n        isArchive\n        arkstoneID\n        arkstoneStatus\n        sendToID\n        sendToName\n        sentToLabDate\n        verifiedBy\n        verifiedByName\n        releaseDate\n        releaseStatus\n        resultPDF\n        resultColor\n        cancelReason\n        note\n        claimID\n        restatedNote\n        sampleContainer\n        externalID\n        chartID\n        isSendToInstrument\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        lab {\n          id\n          name\n          logo\n          contact_name\n          contact_phone\n          phone_number\n          fax_number\n          user_id\n          contact_email\n          tubes_provided\n          lab_director\n          country\n          referredDoctor\n          clia_number\n          testing_notes\n          street\n          city_state_zip\n          lab_contacts\n          default_antigen\n          antigen_notes\n          default_molecular\n          default_other\n          default_rapidflu\n          default_lucira\n          molecular_notes\n          custom_notes\n          invalid_notes\n          indeterminate_notes\n          other_notes\n          lucira_notes\n          rapidflu_notes\n          sendInsurance\n          barCodeProvided\n          barCodeAlertLimit\n          whiteLabel\n          whiteLabelPackage\n          showOnSummaryScreen\n          orderCodes\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          pendingRelease\n          logourl\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        site {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        employee {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        order {\n          id\n          employeeID\n          orderNo\n          providerID\n          clientID\n          labID\n          labName\n          clientName\n          providerName\n          siteID\n          site_name\n          employee_demographics\n          testsToDo\n          barcode\n          oldbarcode\n          diag_1\n          diag_2\n          diag_3\n          diag_4\n          diag_5\n          diag_6\n          diag_7\n          diag_8\n          diag_9\n          diag_10\n          diag_11\n          diag_12\n          proc_array\n          provider\n          orderDate\n          collectionDate\n          collectedBy\n          collectedByName\n          testDoneDate\n          labReceiveDate\n          status\n          providerStatus\n          cancelledReason\n          notes\n          isActive\n          isResultEmailed\n          floorNo\n          requestID\n          receivedBy\n          receivedByName\n          receivedDate\n          updatedBy\n          updatedByName\n          createdBy\n          createdByName\n          timezone\n          eligibilityStatus\n          location\n          tdDate\n          externalID\n          clincialComments\n          hippaSignature\n          createdAt\n          updatedAt\n          testOrdered\n          testQuantity\n          cancelledBy\n          isAcknowledged\n          departmentid\n          chartID\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getLencoBarcodes = /* GraphQL */ `\n  query GetLencoBarcodes($id: ID!) {\n    getLencoBarcodes(id: $id) {\n      id\n      labID\n      clientID\n      barcode\n      available\n      isActive\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listLencoBarcodess = /* GraphQL */ `\n  query ListLencoBarcodess(\n    $filter: ModelLencoBarcodesFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listLencoBarcodess(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        labID\n        clientID\n        barcode\n        available\n        isActive\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncLencoBarcodes = /* GraphQL */ `\n  query SyncLencoBarcodes(\n    $filter: ModelLencoBarcodesFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncLencoBarcodes(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        labID\n        clientID\n        barcode\n        available\n        isActive\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getTestConsent = /* GraphQL */ `\n  query GetTestConsent($id: ID!) {\n    getTestConsent(id: $id) {\n      id\n      employeeID\n      siteID\n      isConsent\n      isInsuranceCardScan\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const listTestConsents = /* GraphQL */ `\n  query ListTestConsents(\n    $filter: ModelTestConsentFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listTestConsents(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        employeeID\n        siteID\n        isConsent\n        isInsuranceCardScan\n        createdAt\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        site {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        employee {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncTestConsents = /* GraphQL */ `\n  query SyncTestConsents(\n    $filter: ModelTestConsentFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncTestConsents(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        employeeID\n        siteID\n        isConsent\n        isInsuranceCardScan\n        createdAt\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        site {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        employee {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getTestTypes = /* GraphQL */ `\n  query GetTestTypes($id: ID!) {\n    getTestTypes(id: $id) {\n      id\n      code\n      name\n      category\n      custom_notes\n      typeOfTest\n      type\n      totalTime\n      firstAlert\n      secondAlert\n      units\n      minValue\n      maxValue\n      refInterval\n      duration\n      hrCounter\n      siteID\n      clientID\n      sources\n      sampleContainer\n      cptCodes\n      ictCodes\n      targetRanges\n      isActive\n      isArchive\n      isAssociatedPanel\n      isPanelOnly\n      isARKStone\n      lonicCode\n      setting\n      ranges\n      createdByName\n      updatedByName\n      lastUsed\n      location\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listTestTypess = /* GraphQL */ `\n  query ListTestTypess(\n    $filter: ModelTestTypesFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listTestTypess(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        code\n        name\n        category\n        custom_notes\n        typeOfTest\n        type\n        totalTime\n        firstAlert\n        secondAlert\n        units\n        minValue\n        maxValue\n        refInterval\n        duration\n        hrCounter\n        siteID\n        clientID\n        sources\n        sampleContainer\n        cptCodes\n        ictCodes\n        targetRanges\n        isActive\n        isArchive\n        isAssociatedPanel\n        isPanelOnly\n        isARKStone\n        lonicCode\n        setting\n        ranges\n        createdByName\n        updatedByName\n        lastUsed\n        location\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncTestTypes = /* GraphQL */ `\n  query SyncTestTypes(\n    $filter: ModelTestTypesFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncTestTypes(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        code\n        name\n        category\n        custom_notes\n        typeOfTest\n        type\n        totalTime\n        firstAlert\n        secondAlert\n        units\n        minValue\n        maxValue\n        refInterval\n        duration\n        hrCounter\n        siteID\n        clientID\n        sources\n        sampleContainer\n        cptCodes\n        ictCodes\n        targetRanges\n        isActive\n        isArchive\n        isAssociatedPanel\n        isPanelOnly\n        isARKStone\n        lonicCode\n        setting\n        ranges\n        createdByName\n        updatedByName\n        lastUsed\n        location\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getEmployeeBarCodes = /* GraphQL */ `\n  query GetEmployeeBarCodes($id: ID!) {\n    getEmployeeBarCodes(id: $id) {\n      id\n      employeeID\n      barcode\n      phone_number\n      licenceNumber\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listEmployeeBarCodess = /* GraphQL */ `\n  query ListEmployeeBarCodess(\n    $filter: ModelEmployeeBarCodesFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listEmployeeBarCodess(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n    ) {\n      items {\n        id\n        employeeID\n        barcode\n        phone_number\n        licenceNumber\n        createdAt\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncEmployeeBarCodes = /* GraphQL */ `\n  query SyncEmployeeBarCodes(\n    $filter: ModelEmployeeBarCodesFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncEmployeeBarCodes(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        employeeID\n        barcode\n        phone_number\n        licenceNumber\n        createdAt\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getEmployeeTestCounter = /* GraphQL */ `\n  query GetEmployeeTestCounter($id: ID!) {\n    getEmployeeTestCounter(id: $id) {\n      id\n      counter\n      employeeCounter\n      orderCounter\n      patternQuestion\n      totalTest\n      employeeUpdate\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listEmployeeTestCounters = /* GraphQL */ `\n  query ListEmployeeTestCounters(\n    $filter: ModelEmployeeTestCounterFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listEmployeeTestCounters(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n    ) {\n      items {\n        id\n        counter\n        employeeCounter\n        orderCounter\n        patternQuestion\n        totalTest\n        employeeUpdate\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncEmployeeTestCounters = /* GraphQL */ `\n  query SyncEmployeeTestCounters(\n    $filter: ModelEmployeeTestCounterFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncEmployeeTestCounters(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        counter\n        employeeCounter\n        orderCounter\n        patternQuestion\n        totalTest\n        employeeUpdate\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getExternalTest = /* GraphQL */ `\n  query GetExternalTest($id: ID!) {\n    getExternalTest(id: $id) {\n      id\n      status\n      clientID\n      employeeID\n      siteID\n      owner\n      reason\n      employee_demographics\n      site_name\n      phoneNumber\n      tester_name\n      email\n      vaccineCardFile\n      vaccineCardFileBack\n      test_type\n      result\n      resultDateTime\n      externalTestFile\n      createdAt\n      prID\n      isPosted\n      testNow\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listExternalTests = /* GraphQL */ `\n  query ListExternalTests(\n    $filter: ModelExternalTestFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listExternalTests(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        status\n        clientID\n        employeeID\n        siteID\n        owner\n        reason\n        employee_demographics\n        site_name\n        phoneNumber\n        tester_name\n        email\n        vaccineCardFile\n        vaccineCardFileBack\n        test_type\n        result\n        resultDateTime\n        externalTestFile\n        createdAt\n        prID\n        isPosted\n        testNow\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncExternalTests = /* GraphQL */ `\n  query SyncExternalTests(\n    $filter: ModelExternalTestFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncExternalTests(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        status\n        clientID\n        employeeID\n        siteID\n        owner\n        reason\n        employee_demographics\n        site_name\n        phoneNumber\n        tester_name\n        email\n        vaccineCardFile\n        vaccineCardFileBack\n        test_type\n        result\n        resultDateTime\n        externalTestFile\n        createdAt\n        prID\n        isPosted\n        testNow\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getEmployeeLogin = /* GraphQL */ `\n  query GetEmployeeLogin($id: ID!) {\n    getEmployeeLogin(id: $id) {\n      id\n      employeeID\n      deviceID\n      deviceType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listEmployeeLogins = /* GraphQL */ `\n  query ListEmployeeLogins(\n    $filter: ModelEmployeeLoginFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listEmployeeLogins(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        employeeID\n        deviceID\n        deviceType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncEmployeeLogins = /* GraphQL */ `\n  query SyncEmployeeLogins(\n    $filter: ModelEmployeeLoginFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncEmployeeLogins(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        employeeID\n        deviceID\n        deviceType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getTestSession = /* GraphQL */ `\n  query GetTestSession($id: ID!) {\n    getTestSession(id: $id) {\n      id\n      siteID\n      clientID\n      sessionStart\n      sessionEnd\n      activeTester\n      Tester\n      startedBy\n      startedByName\n      status\n      endedBy\n      endedByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listTestSessions = /* GraphQL */ `\n  query ListTestSessions(\n    $filter: ModelTestSessionFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listTestSessions(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        siteID\n        clientID\n        sessionStart\n        sessionEnd\n        activeTester\n        Tester\n        startedBy\n        startedByName\n        status\n        endedBy\n        endedByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncTestSessions = /* GraphQL */ `\n  query SyncTestSessions(\n    $filter: ModelTestSessionFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncTestSessions(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        siteID\n        clientID\n        sessionStart\n        sessionEnd\n        activeTester\n        Tester\n        startedBy\n        startedByName\n        status\n        endedBy\n        endedByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getDocuments = /* GraphQL */ `\n  query GetDocuments($id: ID!) {\n    getDocuments(id: $id) {\n      id\n      clientID\n      employeeID\n      testID\n      orderID\n      docType\n      docLabel\n      fileName\n      fileType\n      fileSize\n      notes\n      isActive\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listDocumentss = /* GraphQL */ `\n  query ListDocumentss(\n    $filter: ModelDocumentsFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listDocumentss(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        clientID\n        employeeID\n        testID\n        orderID\n        docType\n        docLabel\n        fileName\n        fileType\n        fileSize\n        notes\n        isActive\n        updatedBy\n        updatedByName\n        createdByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncDocuments = /* GraphQL */ `\n  query SyncDocuments(\n    $filter: ModelDocumentsFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncDocuments(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        clientID\n        employeeID\n        testID\n        orderID\n        docType\n        docLabel\n        fileName\n        fileType\n        fileSize\n        notes\n        isActive\n        updatedBy\n        updatedByName\n        createdByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getOrder = /* GraphQL */ `\n  query GetOrder($id: ID!) {\n    getOrder(id: $id) {\n      id\n      employeeID\n      orderNo\n      providerID\n      clientID\n      labID\n      labName\n      clientName\n      providerName\n      siteID\n      site_name\n      employee_demographics\n      testsToDo\n      barcode\n      oldbarcode\n      diag_1\n      diag_2\n      diag_3\n      diag_4\n      diag_5\n      diag_6\n      diag_7\n      diag_8\n      diag_9\n      diag_10\n      diag_11\n      diag_12\n      proc_array\n      provider\n      orderDate\n      collectionDate\n      collectedBy\n      collectedByName\n      testDoneDate\n      labReceiveDate\n      status\n      providerStatus\n      cancelledReason\n      notes\n      isActive\n      isResultEmailed\n      floorNo\n      requestID\n      receivedBy\n      receivedByName\n      receivedDate\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      timezone\n      eligibilityStatus\n      location\n      tdDate\n      externalID\n      clincialComments\n      hippaSignature\n      createdAt\n      updatedAt\n      testOrdered\n      testQuantity\n      cancelledBy\n      isAcknowledged\n      departmentid\n      chartID\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const listOrders = /* GraphQL */ `\n  query ListOrders(\n    $filter: ModelOrderFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listOrders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        employeeID\n        orderNo\n        providerID\n        clientID\n        labID\n        labName\n        clientName\n        providerName\n        siteID\n        site_name\n        employee_demographics\n        testsToDo\n        barcode\n        oldbarcode\n        diag_1\n        diag_2\n        diag_3\n        diag_4\n        diag_5\n        diag_6\n        diag_7\n        diag_8\n        diag_9\n        diag_10\n        diag_11\n        diag_12\n        proc_array\n        provider\n        orderDate\n        collectionDate\n        collectedBy\n        collectedByName\n        testDoneDate\n        labReceiveDate\n        status\n        providerStatus\n        cancelledReason\n        notes\n        isActive\n        isResultEmailed\n        floorNo\n        requestID\n        receivedBy\n        receivedByName\n        receivedDate\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        timezone\n        eligibilityStatus\n        location\n        tdDate\n        externalID\n        clincialComments\n        hippaSignature\n        createdAt\n        updatedAt\n        testOrdered\n        testQuantity\n        cancelledBy\n        isAcknowledged\n        departmentid\n        chartID\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncOrders = /* GraphQL */ `\n  query SyncOrders(\n    $filter: ModelOrderFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncOrders(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        employeeID\n        orderNo\n        providerID\n        clientID\n        labID\n        labName\n        clientName\n        providerName\n        siteID\n        site_name\n        employee_demographics\n        testsToDo\n        barcode\n        oldbarcode\n        diag_1\n        diag_2\n        diag_3\n        diag_4\n        diag_5\n        diag_6\n        diag_7\n        diag_8\n        diag_9\n        diag_10\n        diag_11\n        diag_12\n        proc_array\n        provider\n        orderDate\n        collectionDate\n        collectedBy\n        collectedByName\n        testDoneDate\n        labReceiveDate\n        status\n        providerStatus\n        cancelledReason\n        notes\n        isActive\n        isResultEmailed\n        floorNo\n        requestID\n        receivedBy\n        receivedByName\n        receivedDate\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        timezone\n        eligibilityStatus\n        location\n        tdDate\n        externalID\n        clincialComments\n        hippaSignature\n        createdAt\n        updatedAt\n        testOrdered\n        testQuantity\n        cancelledBy\n        isAcknowledged\n        departmentid\n        chartID\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getUploadRequestMain = /* GraphQL */ `\n  query GetUploadRequestMain($id: ID!) {\n    getUploadRequestMain(id: $id) {\n      id\n      filesStatus\n      employeeID\n      clientID\n      siteID\n      fileName\n      fileType\n      title\n      uploadCallType\n      status\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Items {\n        items {\n          id\n          employeeID\n          clientID\n          siteID\n          requestID\n          fileID\n          fileName\n          fileType\n          floorNo\n          uploadCallType\n          data\n          status\n          reason\n          processingStatus\n          createdBy\n          createdByName\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const listUploadRequestMains = /* GraphQL */ `\n  query ListUploadRequestMains(\n    $filter: ModelUploadRequestMainFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listUploadRequestMains(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n    ) {\n      items {\n        id\n        filesStatus\n        employeeID\n        clientID\n        siteID\n        fileName\n        fileType\n        title\n        uploadCallType\n        status\n        createdBy\n        createdByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Items {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncUploadRequestMains = /* GraphQL */ `\n  query SyncUploadRequestMains(\n    $filter: ModelUploadRequestMainFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncUploadRequestMains(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        filesStatus\n        employeeID\n        clientID\n        siteID\n        fileName\n        fileType\n        title\n        uploadCallType\n        status\n        createdBy\n        createdByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Items {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getUploadRequest = /* GraphQL */ `\n  query GetUploadRequest($id: ID!) {\n    getUploadRequest(id: $id) {\n      id\n      employeeID\n      clientID\n      siteID\n      requestID\n      fileID\n      fileName\n      fileType\n      floorNo\n      uploadCallType\n      data\n      status\n      reason\n      processingStatus\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listUploadRequests = /* GraphQL */ `\n  query ListUploadRequests(\n    $filter: ModelUploadRequestFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listUploadRequests(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        employeeID\n        clientID\n        siteID\n        requestID\n        fileID\n        fileName\n        fileType\n        floorNo\n        uploadCallType\n        data\n        status\n        reason\n        processingStatus\n        createdBy\n        createdByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncUploadRequests = /* GraphQL */ `\n  query SyncUploadRequests(\n    $filter: ModelUploadRequestFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncUploadRequests(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        employeeID\n        clientID\n        siteID\n        requestID\n        fileID\n        fileName\n        fileType\n        floorNo\n        uploadCallType\n        data\n        status\n        reason\n        processingStatus\n        createdBy\n        createdByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getGeneralSettingType = /* GraphQL */ `\n  query GetGeneralSettingType($id: ID!) {\n    getGeneralSettingType(id: $id) {\n      id\n      clientID\n      code\n      title\n      label\n      value\n      isActive\n      settingType\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listGeneralSettingTypes = /* GraphQL */ `\n  query ListGeneralSettingTypes(\n    $filter: ModelGeneralSettingTypeFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listGeneralSettingTypes(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n    ) {\n      items {\n        id\n        clientID\n        code\n        title\n        label\n        value\n        isActive\n        settingType\n        updatedBy\n        updatedByName\n        createdByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncGeneralSettingTypes = /* GraphQL */ `\n  query SyncGeneralSettingTypes(\n    $filter: ModelGeneralSettingTypeFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncGeneralSettingTypes(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        clientID\n        code\n        title\n        label\n        value\n        isActive\n        settingType\n        updatedBy\n        updatedByName\n        createdByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getUsers = /* GraphQL */ `\n  query GetUsers($id: ID!) {\n    getUsers(id: $id) {\n      id\n      roles\n      firstName\n      lastName\n      note\n      email\n      personalisation\n      phone_number\n      userRole\n      clientID\n      connectedID\n      labID\n      providerID\n      status\n      systemUser\n      appType\n      userPermission\n      is2FaEnabled\n      userID\n      labAdmin\n      createdBy\n      createdByName\n      updatedBy\n      updatedByName\n      provider\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listUserss = /* GraphQL */ `\n  query ListUserss(\n    $filter: ModelUsersFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listUserss(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        roles\n        firstName\n        lastName\n        note\n        email\n        personalisation\n        phone_number\n        userRole\n        clientID\n        connectedID\n        labID\n        providerID\n        status\n        systemUser\n        appType\n        userPermission\n        is2FaEnabled\n        userID\n        labAdmin\n        createdBy\n        createdByName\n        updatedBy\n        updatedByName\n        provider\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncUsers = /* GraphQL */ `\n  query SyncUsers(\n    $filter: ModelUsersFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncUsers(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        roles\n        firstName\n        lastName\n        note\n        email\n        personalisation\n        phone_number\n        userRole\n        clientID\n        connectedID\n        labID\n        providerID\n        status\n        systemUser\n        appType\n        userPermission\n        is2FaEnabled\n        userID\n        labAdmin\n        createdBy\n        createdByName\n        updatedBy\n        updatedByName\n        provider\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const getMessageTemplate = /* GraphQL */ `\n  query GetMessageTemplate($id: ID!) {\n    getMessageTemplate(id: $id) {\n      id\n      clientID\n      companyID\n      subAgentID\n      name\n      category\n      subject\n      message\n      isActive\n      criteria\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listMessageTemplates = /* GraphQL */ `\n  query ListMessageTemplates(\n    $filter: ModelMessageTemplateFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listMessageTemplates(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n    ) {\n      items {\n        id\n        clientID\n        companyID\n        subAgentID\n        name\n        category\n        subject\n        message\n        isActive\n        criteria\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\nexport const syncMessageTemplates = /* GraphQL */ `\n  query SyncMessageTemplates(\n    $filter: ModelMessageTemplateFilterInput\n    $limit: Int\n    $nextToken: String\n    $lastSync: AWSTimestamp\n  ) {\n    syncMessageTemplates(\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n      lastSync: $lastSync\n    ) {\n      items {\n        id\n        clientID\n        companyID\n        subAgentID\n        name\n        category\n        subject\n        message\n        isActive\n        criteria\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      startedAt\n      __typename\n    }\n  }\n`;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkboxCustom\":\"ViewCheckBox_checkboxCustom__1U_k9\",\"checkboxCustomLabel\":\"ViewCheckBox_checkboxCustomLabel__3Yj8o\",\"radio-custom-label\":\"ViewCheckBox_radio-custom-label__2G5Po\",\"red\":\"ViewCheckBox_red__2FUzB\",\"yellow\":\"ViewCheckBox_yellow__15gct\",\"blue\":\"ViewCheckBox_blue__2HbaB\",\"orange\":\"ViewCheckBox_orange__2Chv-\",\"checkbox-custom\":\"ViewCheckBox_checkbox-custom__2YsmJ\",\"radioButton\":\"ViewCheckBox_radioButton__2TYtL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkboxCustom\":\"ViewOnlyCheckBox_checkboxCustom__2fiIN\",\"checkboxCustomLabel\":\"ViewOnlyCheckBox_checkboxCustomLabel__XAcqY\",\"radio-custom-label\":\"ViewOnlyCheckBox_radio-custom-label__Ngp1M\",\"red\":\"ViewOnlyCheckBox_red__3-7Hk\",\"yellow\":\"ViewOnlyCheckBox_yellow__zFSwv\",\"blue\":\"ViewOnlyCheckBox_blue__2dk7F\",\"orange\":\"ViewOnlyCheckBox_orange__2aYlL\",\"checkbox-custom\":\"ViewOnlyCheckBox_checkbox-custom__1D-pI\",\"radioButton\":\"ViewOnlyCheckBox_radioButton__NkpD6\"};","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAYCAYAAAAYl8YPAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAE6ADAAQAAAABAAAAGAAAAABXv2G3AAABy0lEQVQ4EZ2VvS5EURSF7/iLRjIkZCpRSESlIOIJPACPoVFqxxOoaDyCVkgkSoVEokSBRCgUyIgY/751566TE/dkYmYly95n373X3ueeM1clS2OI8AIchcOwWtgK9hDuwhL6SpEsU8Eq1LMLeA0fC/ZgV+A5vIdqosY3sKHCv6gRqMNN2A/jyVQ8AXthjFsW6xJT8hKUiDulmvA44BlP0z4VVv6etjIH56HwBb0lJ6as8krQBCNwDH7AF9gp3il4UJG3s4y/qEAXuKOmrjqdjqCpuoUmy2GxTwewb/A0WusKXEbrM/xGtA6DWCwESFLyFvT728ffgcY2zpEX2NJksZjvkCYUvuFP7rX+NDF+14q0FRto1YQkFcbFahz/csIgqW2mxAr9cFD6ZRjeQfI0LRY6ugrrWCzWdptODEmI+J1ZzA3VJ+SltmkxF6pAhyC4MBYrbTO+ZxZzoaeSmBs4R7GSmJP00ImOpcTiydw0eQAWC0nqUMAx5yjsWFJMd0oX97+ThW368rlQnYRZOJ57WTaJrRZ+DTsN9UE1wmS+2bIbcNAZHdg1cvVBDdvUSz5QoEOckJ8Lqc6TWWMGZwrqP047vPLwCh7D8An/BQcxb1NP5CAYAAAAAElFTkSuQmCC\"","import { DataStore, Predicates, SortDirection } from \"@aws-amplify/datastore\";\nimport { Client, Site, Lab, Employee, Test, TestTypes, TestConsent, LencoBarcodes, EmployeeTestCounter } from \"models\";\nimport { Auth, API, Storage, graphqlOperation } from \"aws-amplify\";\nimport * as queries from \"graphql/queries\";\nimport {\n  setPhoneNo,\n  formatTest,\n  getPhoneNo,\n  formatDoBForDemo,\n  parseBooleanVal,\n  getLoginUserInfoFromLocal,\n  getDiagnosisCode,\n  clientIDInLocalStorage,\n} from \"utils\";\nimport { TEST_STATUS, RESULT_VALUE, CONFIG, UN_RESULT } from \"constant\";\nimport axios from \"axios\";\nimport { jsonToCSV } from \"react-papaparse\";\nimport moment from \"moment\";\nimport * as uuid from \"uuid\";\nimport * as mutations from \"graphql/mutations\";\n\nimport { AWS_ENDPOINT } from \"constants/endpoints\";\nimport { ExternalTest } from \"models\";\nimport graphQLApi from \"graphQLApi\";\nimport api from \"api\";\nimport { createOrderChangeObjForLogs } from \"utils\";\nimport { createChangeObjForLogs } from \"utils\";\nconst MAX_PAGE_LIMIT = 1000;\nconst PRE_REGISTER_URL = {\n  LIVE: \"https://g8bgbgfb45.execute-api.eu-west-1.amazonaws.com/dev/register\",\n  DEV: \"https://qa3dzt4aoj.execute-api.eu-west-1.amazonaws.com/dev/register\",\n};\n\nconst apiName = \"AdminQueries\";\nconst publicApiName = \"usersApi\";\n\nexport const callAmplifyAPI = async (path, payload) => {\n  try {\n    const loginUserInfo = getLoginUserInfoFromLocal();\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: { ...payload, clientID: clientIDInLocalStorage.get(), ...loginUserInfo },\n    };\n\n    const apiRes = await API.post(apiName, path, params);\n\n    return apiRes;\n  } catch (err) {\n    console.log(\"Err\", err);\n    return null;\n  }\n};\n\nexport const callAmplifyAPIWithError = async (path, payload) => {\n  const loginUserInfo = getLoginUserInfoFromLocal();\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: { ...payload, clientID: CONFIG.clientID, ...loginUserInfo },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n\n  return apiRes;\n};\n\nexport const callPublicAPI = async ({ path, payload }) => {\n  try {\n    const publicApiName = \"usersApi\";\n\n    let params = {\n      body: {\n        ...payload,\n      },\n    };\n    const res = await API.post(publicApiName, path, params);\n\n    return res;\n  } catch (err) {\n    console.log(\"Err\", err);\n    throw err;\n  }\n};\n\nexport const callAmplifyAPIPut = async (path, payload) => {\n  try {\n    const loginUserInfo = getLoginUserInfoFromLocal();\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: { ...payload, clientID: CONFIG.clientID, ...loginUserInfo },\n    };\n\n    const apiRes = await API.put(apiName, path, params);\n\n    return apiRes;\n  } catch (err) {\n    console.log(\"Err\", err);\n    return null;\n  }\n};\n\nconst getClients = async () => {\n  const models = await DataStore.query(Client, Predicates.ALL, {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n  /* const clients = [];\n  const promises = [];\n  models.map(async (model, i) => {\n    promises[i] = findTestsByClient(model.id);\n    return clients.push({ ...model, tests: await promises[i] });\n  });\n  return Promise.all([models, ...promises]).then(() => clients); */\n  return models;\n};\n\nconst getResultClients = async () => {\n  const models = await DataStore.query(Client, (client) => client.resultType(\"eq\", \"P/F\"));\n  return models;\n};\n\nconst getClientById = async (id) => {\n  const client = await DataStore.query(Client, (client) => client.id(\"eq\", id));\n  return client[0];\n};\n\nconst getTestGraphQL = async (filter) => {\n  let employees = await graphQLApi.getTestGQL(filter);\n  return employees;\n};\n\nconst getEmployeeGraphQl = async () => {\n  let employees = await graphQLApi.getEmployeeGQL();\n  return employees;\n};\nconst getEmployeeByIdGraphQl = async (id) => {\n  let employee = await graphQLApi.getEmployeeByIdGQl(id);\n  return employee;\n};\n\nconst deleteEmployeeGQL = async (employees) => {\n  const deletedArray = [];\n  for (let i = 0; i < employees.length; i++) {\n    const isDeleted = await graphQLApi.deleteEmployeeGQL(employees[i]);\n    if (isDeleted) {\n      deletedArray.push(employees[i]);\n    }\n  }\n  return deletedArray;\n};\n\nconst updateEmployeeGraphQL = async (employee) => {\n  const employeeData = {\n    id: employee.id,\n    first: employee.first,\n    last: employee.last,\n    dob: moment(employee.dob).format(\"YYYY-MM-DD\"),\n    id_number: employee.id_number,\n    email: employee.email,\n    sex: employee.sex,\n    phone_number: employee.phone_number,\n    countryCode: employee.countryCode,\n    street: employee.street,\n    street2: employee.street2,\n    city: employee.city,\n    state: employee.state,\n    zip: employee.zip,\n    profileImage: employee.profileImage,\n    vaccinationCardImage: employee.vaccinationCardImage,\n    externalTestImage: employee.externalTestImage,\n    _version: employee._version,\n  };\n  const updateEmp = await graphQLApi.updateEmployeeGQL(employeeData);\n  return updateEmp;\n};\nconst getCurrentUser = async () => {\n  try {\n    const response = await Auth.currentAuthenticatedUser({ bypassCache: true });\n\n    return {\n      ...response.attributes,\n      roles: response.signInUserSession.accessToken.payload[\"cognito:groups\"] || [],\n      name: `${response.attributes[\"custom:firstName\"]} ${response.attributes[\"custom:lastName\"]}`,\n      clientID: response.attributes[\"custom:clientID\"],\n      connectedID: response.attributes[\"custom:connectedID\"],\n      isAdmin: function () {\n        return this.roles.some((role) => role === \"Admins\");\n      },\n      isLab: function () {\n        return this.roles.some((role) => role === \"Labs\");\n      },\n      isUser: function () {\n        return this.roles.length === 0;\n      },\n      isSite: function () {\n        return this.roles.some((role) => role === \"Employers\");\n      },\n      isClient: function () {\n        return this.roles.some((role) => role === \"Clients\");\n      },\n    };\n  } catch (err) {\n    console.log(err);\n    localStorage.clear();\n    return null;\n  }\n};\n\nconst getAllUsers = async () => {\n  const models = await DataStore.query(Employee);\n  return models;\n};\n\nconst signIn = async (username, password) => {\n  try {\n    const response = await Auth.signIn(username, password);\n    // console.log(response);\n    return {\n      ...response.attributes,\n      roles: response.signInUserSession.accessToken.payload[\"cognito:groups\"] || [],\n      isAdmin: function () {\n        return this.roles.some((role) => role === \"Admins\");\n      },\n      isUser: function () {\n        return this.roles.length === 0;\n      },\n    };\n  } catch (err) {\n    return null;\n  }\n};\n\nconst getLabs = async () => {\n  const models = await DataStore.query(Lab, Predicates.ALL, {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n  return models;\n};\n\nconst getLabsWithTests = async () => {\n  const models = await DataStore.query(Lab);\n  const labs = [];\n  const promises = [];\n  models.map(async (model, i) => {\n    promises[i] = findTestsByLab(model.id);\n    labs.push({ ...model, tests: await promises[i] });\n  });\n  return Promise.all([models, ...promises]).then(() => labs);\n};\n\nconst getLabByID = async (labID) => {\n  const model = await DataStore.query(Lab, (lab) => lab.id(\"eq\", labID));\n  return model[0];\n};\n\nconst createSite = async (newSite, userID) => {\n  const site = await DataStore.save(\n    new Site({\n      name: newSite.name,\n      clientID: newSite.clientID,\n      contact_name: newSite.contact,\n      contact_phone: setPhoneNo(newSite.phone),\n      contact_email: newSite.email,\n      user_id: userID,\n      antigen: newSite.antigen,\n      automateTestType: newSite.automateTestType,\n      insurance_required: newSite.insurance_required,\n      startDate: newSite.startDate,\n      endDate: newSite.endDate,\n      orderKitDate: newSite.orderKitDate ? moment(newSite.orderKitDate).toISOString() : null,\n      enableShipment: newSite.enableShipment,\n      orderQuantity: newSite.orderQuantity,\n      sendInsuranceCard: newSite.sendInsuranceCard,\n      resetTestDay: newSite.resetTestDay,\n      showOnSummaryScreen: newSite.showOnSummaryScreen,\n      messageTested: newSite.messageTested,\n      messageResulted: newSite.messageResulted,\n      messagePositive: newSite.messagePositive,\n      isArchive: newSite.isArchive,\n      vaccinationCard: newSite.vaccinationCard,\n      externalTest: newSite.externalTest,\n      externalTestAdmit: newSite.externalTestAdmit,\n      externalTestType: newSite.externalTestType,\n      admit: newSite.admit,\n      patternTesting: newSite.patternTesting,\n      patternHippa: newSite.patternHippa,\n      preRegistration: newSite.preRegistration,\n    })\n  );\n  return site;\n};\n\nconst getSites = async () => {\n  // const models = await DataStore.query(Site, (site) => site.isArchive(\"eq\", false), {\n  //   sort: (s) => s.name(SortDirection.ASCENDING),\n  // });\n\n  const models = await DataStore.query(Site, (site) => {}, {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n\n  return models;\n\n  const sites = [];\n  const promises = [];\n  models.map(async (model, i) => {\n    promises[i] = findTestsBySite(model.id);\n    sites.push({\n      ...model,\n      tests: await promises[i],\n      labID: await promises[i].then((resp) => (resp[0] ? resp[0].labID : null)),\n    });\n  });\n  return Promise.all([models, ...promises]).then(() => sites);\n};\nconst getSitesWithTests = async () => {\n  const models = await DataStore.query(Site, (site) => site.isArchive(\"eq\", false), {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n\n  const sites = [];\n  const promises = [];\n  models.map(async (model, i) => {\n    promises[i] = findTestsBySite(model.id);\n    sites.push({\n      ...model,\n      tests: await promises[i],\n      labID: await promises[i].then((resp) => (resp[0] ? resp[0].labID : null)),\n    });\n  });\n  return Promise.all([models, ...promises]).then(() => sites);\n};\n\nconst getShows = async () => {\n  const models = await DataStore.query(Site);\n  return models;\n};\n\nconst getSitesByClient = async (clientID) => {\n  const models = await DataStore.query(Site, (site) => site.clientID(\"eq\", clientID), {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n\n  const sites = [];\n  const promises = [];\n  console.log(models);\n  models.map(async (model, i) => {\n    promises[i] = findTestsBySite(model.id);\n    sites.push({\n      ...model,\n      tests: await promises[i],\n      labID: await promises[i].then((resp) => (resp[0] ? resp[0].labID : null)),\n    });\n  });\n  return Promise.all([models, ...promises]).then(() => sites);\n};\n\nconst getSitesByUser = async (userID) => {\n  let models = await DataStore.query(Site, (site) => site.id(\"eq\", userID), {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n\n  const sites = [];\n  const promises = [];\n  models.map(async (model, i) => {\n    promises[i] = findTestsBySite(model.id);\n    sites.push({\n      ...model,\n      tests: await promises[i],\n      labID: await promises[i].then((resp) => (resp[0] ? resp[0].labID : null)),\n    });\n  });\n  return Promise.all([models, ...promises]).then(() => sites);\n  // console.log(models);\n  // return models;\n};\n\nconst getUserSiteData = async (userID) => {\n  let models = await DataStore.query(Site, (site) => site.id(\"eq\", userID), {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n  return models;\n};\n\nconst getUserSites = async (userID) => {\n  let models = await DataStore.query(Site, (site) => site.user_id(\"eq\", userID), {\n    sort: (s) => s.name(SortDirection.ASCENDING),\n  });\n\n  if (models.length === 0) {\n    const allSites = await DataStore.query(Site);\n    models = allSites.filter((s) => s.show_contacts && s.show_contacts.includes(userID));\n  }\n\n  const sites = [];\n  const promises = [];\n  console.log(models);\n  return models[0].id;\n};\n\nconst findSiteByID = async (siteID) => {\n  const models = await DataStore.query(Site, (site) => site.id(\"eq\", siteID));\n  console.log(models);\n  return models;\n};\n\nconst getEmployeeByID = async (employeeID) => {\n  const models = await DataStore.query(Employee, (test) => test.id(\"eq\", employeeID));\n  return models.length > 0 ? models[0].mdID || employeeID : employeeID;\n};\nconst getEmployeeTestCount = async (employeeID) => {\n  const models = await DataStore.query(Test, (test) => test.employeeID(\"eq\", employeeID));\n  return models;\n};\n\nconst getEmployeeLastShow = async (employeeID) => {\n  const models = await DataStore.query(Test, (test) => test.employeeID(\"eq\", employeeID), {\n    sort: (s) => s.createdAt(SortDirection.DESC),\n  });\n  if (models.length === 0) return \"N/A\";\n  return models[0].site_name;\n};\n\nconst createEmployee = async (demographics = {}, clientID, phoneNumber) => {\n  const models = await DataStore.query(Employee, (emp) =>\n    emp\n      .clientID(\"eq\", clientID)\n      .first(\"eq\", demographics.firstName)\n      .last(\"eq\", demographics.lastName)\n      .dob(\"eq\", buildAWSDate(demographics.dob))\n  );\n  if (models.length > 0) {\n    return models[0];\n  }\n  //Must be new. Create it\n  const employee = await DataStore.save(\n    new Employee({\n      first: demographics.firstName,\n      last: demographics.lastName,\n      dob: buildAWSDate(demographics.dob),\n      id_number: demographics.idNumber,\n      clientID: clientID,\n      phone_number: demographics.phoneNo,\n      countryCode: demographics.ccCode,\n      country: demographics.country || \"United State\",\n      street: demographics.street,\n      street2: demographics.street2,\n      city: demographics.city,\n      state: demographics.state,\n      zip: demographics.zip,\n    })\n  );\n  return employee;\n};\n\nconst createNewEmployee = async (demographics = {}) => {\n  let employeeObj = {\n    email: demographics.email,\n    country: demographics.country,\n    countryCode: demographics.countryCode,\n    first: demographics.firstName,\n    last: demographics.lastName,\n    dob: buildAWSDate(formatDoBForDemo(demographics.dob)),\n    id_number: demographics.idNumber,\n    phone_number: demographics.phoneNumber,\n    street: demographics.street,\n    street2: demographics.street2,\n    city: demographics.city,\n    state: demographics.state,\n    zip: demographics.zip,\n    profileImage: demographics.profileImage,\n    isExternalTest: parseBooleanVal(demographics?.isExternalTest),\n    externalTestImage: demographics?.externalTestImage || \"\",\n    externalTestResult: demographics?.externalTestResult || \"\",\n    externalTestType: demographics?.externalTestType || \"\",\n    vaccinationCardImage: demographics?.vaccinationCardImage || \"\",\n    vaccinationLocation: demographics?.vaccinationLocation || \"\",\n    vaccinationType: demographics?.vaccinationType || \"\",\n    isPreRegistered: true,\n    sex: demographics.sex,\n    employeeType: demographics.employeeType,\n    isVaccinated: parseBooleanVal(demographics.isVaccinated),\n  };\n\n  if (demographics?.externalTestDate) {\n    employeeObj = { ...employeeObj, externalTestDate: demographics?.externalTestDate };\n  }\n\n  if (demographics?.vaccinationDate) {\n    employeeObj = { ...employeeObj, vaccinationDate: demographics?.vaccinationDate };\n  }\n\n  const employee = await DataStore.save(new Employee(employeeObj));\n  return employee;\n};\n\nconst preRegisterEmployee = async (employee, env) => {\n  axios.defaults.headers.common = {\n    \"X-API-Key\": \"wlx6h2qWY04KX2z0xVJAJ8bazvEbgQ0l24JYXS5K\",\n  };\n  const zipcode = employee.zipcode.replaceAll(\"[^0-9]+\", \"\");\n  let params = `first=${encodeURIComponent(employee.first)}&last=${encodeURIComponent(\n    employee.last\n  )}&dob=${encodeURIComponent(employee.dob)}&id_number=${encodeURIComponent(employee.id_number)}`;\n  params += `&email=${encodeURIComponent(employee.email)}&sex=${encodeURIComponent(\n    employee.sex\n  )}&isVaccinated=${encodeURIComponent(employee.isVaccinated)}`;\n  params += `&phone_number=${encodeURIComponent(employee.phone_number)}&street=${encodeURIComponent(employee.street)}`;\n  params += `&city=${encodeURIComponent(employee.city)}&state=${encodeURIComponent(\n    employee.state\n  )}&zipcode=${encodeURIComponent(zipcode)}&labid=${encodeURIComponent(\n    CONFIG.appPackage\n  )}&countryCode=${encodeURIComponent(employee.countryCode)}`;\n\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n\n  return notification.data;\n};\n\nconst getPreRegisterByPhone = async (phone, showId, env) => {\n  axios.defaults.headers.common = {\n    \"X-API-Key\": \"wlx6h2qWY04KX2z0xVJAJ8bazvEbgQ0l24JYXS5K\",\n  };\n  let params = `phoneNo=${encodeURIComponent(phone)}`;\n  if (showId) params += `&showId=${encodeURIComponent(showId)}`;\n\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n\n  return notification.data;\n};\n\nconst preRegisterNewEmployee = async (employee, clientID, isVaccinationInfoEnable, step, env) => {\n  axios.defaults.headers.common = {\n    \"X-API-Key\": \"wlx6h2qWY04KX2z0xVJAJ8bazvEbgQ0l24JYXS5K\",\n  };\n  const zipcode = employee.zipcode.replaceAll(\"[^0-9]+\", \"\");\n  let params = `first=${encodeURIComponent(employee.first)}&last=${encodeURIComponent(\n    employee.last\n  )}&dob=${encodeURIComponent(employee.dob)}&id_number=${encodeURIComponent(employee.id_number)}`;\n  params += `&email=${encodeURIComponent(employee.email)}&sex=${encodeURIComponent(\n    employee.sex\n  )}&isVaccinated=${encodeURIComponent(employee.isVaccinated)}`;\n  params += `&phone_number=${encodeURIComponent(employee.phone_number)}&countryCode=${encodeURIComponent(\n    employee.countryCode\n  )}&street=${encodeURIComponent(employee.street)}&street2=${encodeURIComponent(employee.street2)}`;\n  params += `&city=${encodeURIComponent(employee.city)}&state=${encodeURIComponent(\n    employee.state\n  )}&country=${encodeURIComponent(employee.country)}&zipcode=${encodeURIComponent(zipcode)}&rStep=${step}`;\n\n  if (employee.showId) {\n    params += `&showId=${employee.showId.id}&showName=${encodeURIComponent(employee.showId.name)}`;\n  }\n  if (isVaccinationInfoEnable) {\n    params += `&vaccinationType=${encodeURIComponent(employee.vaccinationType)}&vaccinationDate=${encodeURIComponent(\n      employee.vaccinationFirstDate\n    )}&vaccinationLocation=${encodeURIComponent(employee.vaccinationFirstLocation)}`;\n    if (employee.vaccinationSecondDate) {\n      params += `&vaccinationDate1=${encodeURIComponent(\n        employee.vaccinationSecondDate\n      )}&vaccinationLocation1=${encodeURIComponent(employee.vaccinationSecondLocation)}`;\n    }\n    if (employee.isBooster) {\n      params += `&isBooster=${encodeURIComponent(employee.isBooster)}&boosterType=${encodeURIComponent(\n        employee.boosterType\n      )}&boosterDate=${encodeURIComponent(employee.boosterDate)}&boosterLocation=${encodeURIComponent(\n        employee.boosterLocation\n      )}`;\n    }\n  }\n  if (employee.isExternalTest) {\n    params += `&isExternalTest=${encodeURIComponent(employee.isExternalTest)}&externalTestDate=${encodeURIComponent(\n      employee.externalTestDate\n    )}&externalTestResult=${encodeURIComponent(employee.externalTestResult)}&externalTestType=${encodeURIComponent(\n      employee.externalTestType\n    )}`;\n  }\n\n  console.log(\"Parmas\", params);\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n\n  return notification.data;\n};\n\nconst requestTestKit = async (employee, clientID, env) => {\n  axios.defaults.headers.common = {\n    \"X-API-Key\": \"wlx6h2qWY04KX2z0xVJAJ8bazvEbgQ0l24JYXS5K\",\n  };\n  const zipcode = employee.zipcode.replaceAll(\"[^0-9]+\", \"\");\n  let params = `first=${encodeURIComponent(employee.first)}&last=${encodeURIComponent(\n    employee.last\n  )}&order_phone=${encodeURIComponent(employee.order_phone)}`;\n  params += `&email=${encodeURIComponent(employee.email)}&phone_number=${encodeURIComponent(\n    employee.phone_number\n  )}&profileImage=${encodeURIComponent(employee.profileImage)}`;\n  params += `&countryCode=${encodeURIComponent(employee.countryCode)}&street=${encodeURIComponent(\n    employee.street\n  )}&street2=${encodeURIComponent(employee.street2)}`;\n  params += `&city=${encodeURIComponent(employee.city)}&state=${encodeURIComponent(\n    employee.state\n  )}&country=${encodeURIComponent(employee.country)}&zipcode=${encodeURIComponent(zipcode)}`;\n  if (employee.showId) {\n    params += `&showId=${encodeURIComponent(employee.showId.id)}&showName=${encodeURIComponent(employee.showId.name)}`;\n  }\n  if (clientID) {\n    params += `&clientId=${encodeURIComponent(clientID)}`;\n  }\n  params += `&testSend=${encodeURIComponent(employee.testSend)}&testSendQty=${encodeURIComponent(\n    employee.testSendQty\n  )}`;\n\n  params += `&capacity=${employee.capacity}`;\n\n  console.log(\"Parmas\", params);\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n\n  return notification.data;\n};\n\nconst preRegisterClientShows = async (id, env) => {\n  axios.defaults.headers.common = {\n    \"X-API-Key\": \"wlx6h2qWY04KX2z0xVJAJ8bazvEbgQ0l24JYXS5K\",\n  };\n\n  let params = `&preregistration=${encodeURIComponent(id)}`;\n\n  console.log(\"Parmas\", params);\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n\n  return notification.data.body;\n};\n\nconst preRegisterShowData = async (id, env) => {\n  axios.defaults.headers.common = {\n    \"X-API-Key\": \"wlx6h2qWY04KX2z0xVJAJ8bazvEbgQ0l24JYXS5K\",\n  };\n\n  let params = `&registeruser=${encodeURIComponent(id)}`;\n\n  console.log(\"Parmas\", params);\n  const notification = await axios.post(`${PRE_REGISTER_URL[env]}?${params}`);\n\n  return notification.data.body;\n};\n\nconst createTest = async (dbEmp = {}) => {\n  const demo = dbEmp.employee_demographics;\n  const [countryCode, phoneNo] = getPhoneNo(demo.phoneNumber, demo.countryCode);\n  const createdAt = dbEmp.createdAt ? moment(dbEmp.createdAt).toISOString() : moment().toISOString();\n  const resultDate = dbEmp.createdAt ? moment(dbEmp.createdAt).format(\"YYYY-MM-DD\") : moment().format(\"YYYY-MM-DD\");\n  const pcrStatus = dbEmp.result ? \"Received By Lab\" : \"Specimen Collected\";\n  const obj = {\n    batch: CONFIG.isWhiteLabel ? \"\" : new Date().toDateString(),\n    barcode: dbEmp.barcode,\n    clientID: dbEmp.clientID,\n    orderID: dbEmp.orderID,\n    clientName: dbEmp.clientName,\n    createSource: dbEmp.createSource ? dbEmp.createSource : \"web\",\n    createdAt: createdAt,\n    createdBy: dbEmp.createdBy,\n    done: false,\n    email: dbEmp.email,\n    emailSend: false,\n    employeeID: dbEmp.employeeID,\n    employee_demographics: { ...demo, countryCode, phoneNumber: phoneNo },\n    expired: false,\n    isAntigen: dbEmp?.test_type === \"Antigen\" ? true : false,\n    isFalsePositive: false,\n    invalidResultStatus: 0,\n    labID: dbEmp.labID,\n    labName: dbEmp.labName,\n    phoneNumber: phoneNo,\n    referenceID: moment().valueOf().toString(),\n    sequenceNo: parseInt(dbEmp.sequenceNo),\n    baseSiteID: dbEmp.siteID,\n    siteID: dbEmp.siteID,\n    site_name: dbEmp.site_name,\n    startTimeStamp: moment().toISOString(),\n    status: dbEmp.status,\n    submittedBy: dbEmp.createdBy,\n    submittedByName: dbEmp.submittedByName,\n    test_type: dbEmp.test_type,\n    tester_name: dbEmp.tester_name,\n    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n    appVer: \"0\",\n    pcrStatus: pcrStatus,\n    sr_no: JSON.stringify([{ accession_no: dbEmp.barcode, date: createdAt, name: dbEmp.submittedByName }]),\n  };\n  if (dbEmp.result && dbEmp.result !== UN_RESULT) {\n    Object.assign(obj, { result: dbEmp.result, resultDate: resultDate, resultDateTime: createdAt });\n  }\n  const test = await DataStore.save(new Test(obj));\n  return test;\n};\n\nconst createOrderAPI = async (dbOrder = {}) => {\n  const diagnosis = getDiagnosisCode(dbOrder);\n\n  // const newOrderNo = await getOrderAutoNumber();\n  const demo = dbOrder.employee_demographics;\n  const [countryCode, phoneNo] = getPhoneNo(demo.phoneNumber, demo.countryCode);\n  const obj = {\n    clientID: dbOrder.clientID,\n    clientName: dbOrder.clientName,\n    createdBy: dbOrder.createdBy,\n    createdByName: dbOrder.createdByName,\n    employeeID: dbOrder.employeeID,\n    employee_demographics: JSON.stringify({ ...demo, countryCode, phoneNumber: phoneNo }),\n    provider: dbOrder.provider ? JSON.stringify(dbOrder.provider) : null,\n    eligibilityStatus: dbOrder.eligibilityStatus ? JSON.stringify(dbOrder.eligibilityStatus) : null,\n    testsToDo: JSON.stringify(dbOrder.testsToDo),\n    labID: dbOrder.labID,\n    labName: dbOrder.labName,\n    providerID: dbOrder.providerID,\n    providerName: dbOrder.providerName,\n    orderDate: dbOrder.orderDate,\n    floorNo: dbOrder.floorNo,\n    isActive: true,\n    siteID: dbOrder.siteID,\n    site_name: dbOrder.site_name,\n    status: dbOrder.status,\n    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n    externalID: dbOrder.externalID,\n    location: dbOrder.location,\n    clincialComments: dbOrder.clincialComments,\n    ...diagnosis,\n    createdAt: dbOrder.createdAt,\n    updatedAt: dbOrder.createdAt,\n    collectionDate: dbOrder.collectionDate,\n    labReceiveDate: dbOrder.labReceiveDate,\n    collectedBy: dbOrder.collectedBy,\n    collectedByName: dbOrder.collectedByName,\n    chartID: dbOrder.chartID,\n  };\n\n  const order = await callAmplifyAPI(\"/orders/new\", { order: obj });\n  return order?.data;\n};\n\nconst updateOrderAPI = async (dbOrder = {}) => {\n  const getOrder = await graphQLApi.getOrderByIdGQl(dbOrder?.id);\n\n  if (!getOrder) return null;\n\n  const fieldsName = {\n    \"employee_demographics.firstName\": \"First Name\",\n    \"employee_demographics.lastName\": \"Last Name\",\n    \"employee_demographics.country\": \"Country\",\n    \"employee_demographics.city\": \"City\",\n    \"employee_demographics.street\": \"Address\",\n    \"employee_demographics.street2\": \"Apt/Unit#\",\n    \"employee_demographics.state\": \"State\",\n    \"employee_demographics.email\": \"Email\",\n    \"employee_demographics.zip\": \"Zip\",\n    \"employee_demographics.sex\": \"Gender\",\n    \"employee_demographics.insurance_name\": \"Payer\",\n    \"employee_demographics.insurance_number\": \"Member ID\",\n    \"employee_demographics.phoneNumber\": \"Phone Number\",\n    \"employee_demographics.dob\": \"DOB\",\n    providerName: \"Ordering Physician\",\n    \"employee_demographics.stat\": \"Instruation: STAT\",\n    \"employee_demographics.fax\": \"Instruation: FAX\",\n    \"employee_demographics.call\": \"Instruation: Call\",\n    \"employee_demographics.fasting\": \"Instruation: Fasting\",\n    \"employee_demographics.random\": \"Instruation: Random\",\n    clincialComments: \"Clinical Comments\",\n    cancelledReason: \"Lab Comments\",\n    externalID: \"External Reference ID\",\n    labReceiveDate: \"Lab Received Date\",\n    collectionDate: \"Collection Date\",\n    orderDate: \"Test Date\",\n    createdAt: \"Order Date\",\n    collectedByName: \"Collected By\",\n    chartID: \"Chart ID\",\n  };\n\n  const chngObj = createOrderChangeObjForLogs({\n    oldRecord: {\n      ...getOrder,\n      provider: JSON.parse(getOrder.provider),\n      employee_demographics: JSON.parse(getOrder.employee_demographics),\n    },\n    newRecord: dbOrder,\n    fieldsName,\n  });\n\n  const demo = dbOrder.employee_demographics;\n  const [countryCode, phoneNo] = getPhoneNo(demo.phoneNumber, demo.countryCode);\n  const diagnosis = getDiagnosisCode(dbOrder);\n  const obj = {\n    id: dbOrder?.id,\n    updatedBy: dbOrder.updatedBy,\n    updatedByName: dbOrder.updatedByName,\n    employeeID: dbOrder.employeeID,\n    providerID: dbOrder.providerID,\n    providerName: dbOrder.providerName,\n    employee_demographics: JSON.stringify({ ...demo, countryCode, phoneNumber: phoneNo }),\n    orderDate: dbOrder.orderDate,\n    collectionDate: dbOrder.collectionDate,\n    labReceiveDate: dbOrder.labReceiveDate,\n    ...(dbOrder.createdAt && { createdAt: dbOrder.createdAt }),\n    createdAt: dbOrder.createdAt,\n    labName: dbOrder.labName,\n    floorNo: dbOrder.floorNo,\n    isActive: true,\n    siteID: dbOrder.siteID,\n    site_name: dbOrder.site_name,\n    testsToDo: JSON.stringify(dbOrder.testsToDo),\n    provider: dbOrder.provider ? JSON.stringify(dbOrder.provider) : null,\n    externalID: dbOrder.externalID,\n    location: dbOrder.location,\n    clincialComments: dbOrder.clincialComments,\n    cancelledReason: dbOrder.cancelledReason,\n    collectedBy: dbOrder.collectedBy,\n    chartID : dbOrder?.chartID,\n    collectedByName: dbOrder.collectedByName,\n    _version: getOrder?._version,\n    ...diagnosis,\n  };\n\n  const order = await graphQLApi.updateOrderGQL(obj);\n  await api.addLogs({\n    testID: order?.id,\n    changeObject: chngObj,\n    slug: \"Order Updated\",\n    newValue: \"Updated\",\n    userName: dbOrder.updatedByName,\n    userID: dbOrder.updatedBy,\n  });\n  return order;\n};\n\nconst updateRejcetedOrder = async ({ dbOrder, selectedTestIds, user, updatedTestsData, fileName }) => {\n  const infoUpdated = await callAmplifyAPI(\"/orders/rejected\", {\n    orderID: dbOrder.id,\n    selectedTestIds,\n    updatedTestsData,\n  });\n\n  return infoUpdated?.data;\n\n  // const getOrder = await graphQLApi.getOrderByIdGQl(dbOrder.id);\n  // if (!getOrder) return null;\n\n  // const testsToDo = JSON.parse(getOrder.testsToDo) || {};\n  // const todoTests = testsToDo.test || [];\n\n  // const todoUpdatedTests = todoTests.map((t) => {\n  //   const updatedTest = {\n  //     ...t,\n  //   };\n  //   if (selectedTestIds.includes(t.id)) {\n  //     const selectedUpdatedData = updatedTestsData?.find((item) => item.id === t.id);\n\n  //     if (!t.collectedDate && selectedUpdatedData?.testStatus === \"Rejected\") {\n  //       updatedTest.testStatus = \"Rejected\";\n  //       updatedTest.labComment = selectedUpdatedData?.labComment;\n  //       updatedTest.rejectedReason = selectedUpdatedData?.rejectedReason;\n  //       updatedTest.fileName = selectedUpdatedData?.fileName;\n  //     }\n  //   }\n  //   return updatedTest;\n  // });\n\n  // const isAllRejected = todoUpdatedTests.every((t) => t.testStatus === \"Rejected\");\n\n  // const updatedTestsToDo = {\n  //   ...testsToDo,\n  //   test: todoUpdatedTests,\n  // };\n\n  // const obj = {\n  //   id: dbOrder.id,\n  //   updatedBy: user?.sub || dbOrder.updatedBy,\n  //   updatedByName: user?.name || dbOrder.updatedByName,\n  //   testsToDo: JSON.stringify(updatedTestsToDo),\n  //   ...(isAllRejected && {\n  //     status: \"Rejected\",\n  //   }),\n  //   _version: getOrder._version,\n  // };\n\n  // const order = await graphQLApi.updateOrderGQL(obj);\n  // const logPromises = updatedTestsData?.map((item) => {\n  //   if (selectedTestIds.includes(item.id)) {\n  //     api.addLogs({\n  //       testID: order.id,\n  //       slug: \"Order Updated\",\n  //       newValue: \"Reject the Test\",\n  //       userName: dbOrder.updatedByName,\n  //       userID: dbOrder.updatedBy,\n  //       file: item?.fileName,\n  //       rejectedReason: item?.rejectedReason,\n  //     });\n  //   }\n  // });\n  // await Promise.all(logPromises);\n  // return order;\n};\n\nconst updateOrderStatus = async (dbOrder = {}) => {\n  const getOrder = await graphQLApi.getOrderByIdGQl(dbOrder.id);\n  if (!getOrder) return null;\n\n  const obj = {\n    id: dbOrder.id,\n    notes: dbOrder.note,\n    updatedBy: dbOrder.updatedBy,\n    updatedByName: dbOrder.updatedByName,\n    _version: getOrder?._version,\n  };\n\n  const order = await graphQLApi.updateOrderGQL(obj);\n  return order;\n};\n\nconst createClient = async (newClient) => {\n  // const phoneNumber = newClient.phone.replace(/\\D/g, \"\");\n  const client = await DataStore.save(\n    new Client({\n      name: newClient.name,\n      contact_name: newClient.contact,\n      contact_phone: setPhoneNo(newClient.phone),\n      contact_email: newClient.email,\n      resultType: newClient.resultType,\n      showOnSummaryScreen: newClient.showOnSummaryScreen,\n      whiteLabel: newClient.whiteLabel,\n      whiteLabelPackage: newClient.whiteLabelPackage,\n      isArchive: newClient.isArchive,\n      // user_id: newUserID,\n    })\n  );\n  return client;\n};\n\nconst createLab = async (newLab, newUserID) => {\n  const lab = await DataStore.save(\n    new Lab({\n      name: newLab.name,\n      contact_name: newLab.contact,\n      contact_phone: setPhoneNo(newLab.phone),\n      contact_email: newLab.email,\n      user_id: newUserID,\n      street: newLab.street,\n      city_state_zip: newLab.city_state_zip,\n      lab_director: newLab.lab_director,\n      testing_notes: newLab.testing_notes,\n      clia_number: newLab.clia_number,\n      default_antigen: newLab.default_antigen,\n      default_molecular: newLab.default_molecular,\n      default_other: newLab.default_other,\n      tubes_provided: newLab.tubes_provided,\n      sendInsurance: newLab.sendInsurance,\n      logo: newLab.logo,\n      barCodeProvided: newLab.barCodeProvided,\n      barCodeAlertLimit: 0,\n      antigen_notes: newLab.default_antigen ? newLab.antigen_notes : \"\",\n      molecular_notes: newLab.default_molecular ? newLab.molecular_notes : \"\",\n      showOnSummaryScreen: newLab.showOnSummaryScreen,\n      whiteLabel: newLab.whiteLabel,\n      whiteLabelPackage: newLab.whiteLabelPackage,\n      other_notes: newLab.other_notes,\n      isArchive: newLab.isArchive,\n    })\n  );\n  return lab;\n};\n\nconst deleteClient = async (id) => {\n  await DataStore.delete(Client, (client) => client.id(\"eq\", id));\n};\n\nconst deleteLab = async (id) => {\n  await DataStore.delete(Lab, (lab) => lab.id(\"eq\", id));\n};\n\nconst deleteSite = async (id) => {\n  await DataStore.delete(Site, (site) => site.id(\"eq\", id));\n};\nconst deleteEmployee = async (id) => {\n  await DataStore.delete(Employee, (e) => e.id(\"eq\", id));\n};\n\nconst getTests = async () => {\n  let currentPage = 0;\n  let fetchData = true;\n  let models = await DataStore.query(Test, (test) => test.labID(\"ne\", null), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n\n  return models;\n};\n\nconst getCompletedTests = async () => {\n  let models = await DataStore.query(Test, (test) => test.result(\"ne\", null), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n\n  return models;\n};\n\nconst getExternalTest = async () => {\n  let models = await DataStore.query(ExternalTest, Predicates.ALL, {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n\n  return models;\n};\n\nconst getTotalAdminTests = async () => {\n  let models = await DataStore.query(Test, (test) => test.labID(\"ne\", null), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n\n  return models;\n};\n\nconst getPendingTests = async () => {\n  let models = await DataStore.query(Test, (test) => test.status(\"eq\", \"Pending\").labID(\"ne\", null), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n\n  return models;\n};\n\nconst getUnSubmittedTest = async () => {\n  const models = await DataStore.query(\n    Test,\n    (test) => test.status(\"eq\", \"Pending\").result(\"eq\", null).test_type(\"eq\", \"PCR\"),\n    {\n      sort: (test) => test.createdAt(SortDirection.DESCENDING),\n    }\n  );\n  return models;\n};\n\nconst getUnprocessedTests = async () => {\n  let currentPage = 0;\n  let fetchData = true;\n  let models = await DataStore.query(\n    Test,\n    (test) =>\n      test\n        .labID(\"ne\", null)\n        .result(\"eq\", null)\n        .or((test) => test.status(\"eq\", \"Processing\").status(\"eq\", \"Pending\").status(\"eq\", \"Sent\")),\n    {\n      sort: (test) => test.createdAt(SortDirection.DESCENDING),\n    }\n  );\n\n  return models;\n};\n\nconst getAllEmployees = async () => {\n  let models = await DataStore.query(Employee, Predicates.ALL);\n  return models;\n};\n\nconst callApi = async (path, param) => {\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: param,\n  };\n\n  const data = await API.post(apiName, path, params);\n  console.log(\"Api Data\", data);\n  return data;\n};\n\nconst submitUnprocessedTests = async (tests, user, env) => {\n  const response = [];\n  const testsByLab = {};\n  console.log(\"tests\", tests);\n\n  let allTests = [];\n  const totalTests = tests.length;\n\n  for (const test of tests) {\n    if (!testsByLab[test.labID]) {\n      testsByLab[test.labID] = [test];\n    } else {\n      testsByLab[test.labID].push(test);\n    }\n  }\n\n  for (const lab in testsByLab) {\n    const labData = await getLabByID(lab);\n    if (labData) {\n      allTests = allTests.concat(\n        testsByLab[lab].map((t) => {\n          return { ...t, labName: labData.name };\n        })\n      );\n      const [formattedTests, bucket, batch] = formatTests(labData, testsByLab[lab]);\n      try {\n        await Storage.put(`${batch}.csv`, formattedTests, { bucket: bucket });\n        response.push({ lab: labData, tests: testsByLab[lab], error: null, totalTest: totalTests });\n      } catch (e) {\n        console.log(\"Error uploading to bucket\", e);\n        response.push({\n          lab: labData,\n          tests: testsByLab[lab],\n          error: \"Error uploading to bucket\",\n          totalTest: totalTests,\n        });\n      }\n    }\n  }\n\n  await saveFileSendToLab(\n    `${moment().format(\"DD_MM_YYYY_HH_mm_ss\")}_send_to_lab_${CONFIG.envType}.csv`,\n    allTests.map((t) => {\n      return { ...t, status: \"Sent\", submittedBy: user.sub, submittedByName: user.name };\n    })\n  );\n\n  return response;\n};\n\nconst reSubmitUnprocessedTests = async (tests, user) => {\n  const response = [];\n  const testsByLab = {};\n  for (const test of tests) {\n    if (!testsByLab[test.labID]) {\n      testsByLab[test.labID] = [test];\n    } else {\n      testsByLab[test.labID].push(test);\n    }\n  }\n\n  for (const lab in testsByLab) {\n    const labData = await getLabByID(lab);\n    if (labData) {\n      const [formattedTests, bucket, batch] = formatTests(labData, testsByLab[lab]);\n      try {\n        await Storage.put(`${batch}.csv`, formattedTests, { bucket: bucket });\n        response.push({ lab: labData, tests: testsByLab[lab], error: null });\n      } catch (e) {\n        console.log(\"Error uploading to bucket\", e);\n        response.push({ lab: labData, tests: testsByLab[lab], error: \"Error uploading to bucket\" });\n      }\n    }\n  }\n  return response;\n};\n\nconst formatTests = (labData, tests) => {\n  const labName = labData.name;\n  let batch;\n  switch (labName.toLowerCase()) {\n    case \"lenco\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/New_York\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatLencoCSV(tests, labData), \"lenco-tests\", batch];\n    case \"alliance\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/New_York\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatAllianceCSV(tests, labData), \"alliance-tests\", batch];\n    case \"biolab\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/Los_Angeles\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatBiolabCSV(tests, labData), \"biolabs-tests\", batch];\n    case \"sunrise\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/Los_Angeles\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatSunriseCSV(tests, labData), \"sunrise-tests\", batch];\n    case \"lifebrite\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/New_York\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatLifebriteCSV(tests, labData), \"lifebrite-tests\", batch];\n    case \"alta\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"America/Los_Angeles\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatAltaCSV(tests, labData), \"alta-tests\", batch];\n    case \"new discovery\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"EST\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatNewDiscoveryCSV(tests), \"new-discovery-tests\", batch];\n    case \"dls\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"HST\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatDLSCSV(tests), \"dls-tests\", batch];\n    case \"oxygen\":\n      batch = new Date(tests[0].createdAt)\n        .toString()\n        .toLocaleString(\"en-US\", { timeZone: \"EST\" })\n        .substring(0, 21)\n        .replace(/(:|\\s+)/g, \"_\");\n      return [formatOxygenCSV(tests), \"oxygen-tests\", batch];\n    default:\n      console.log(\"default case\");\n      return [\n        formatSunriseCSV(tests, labData),\n        \"no-lab-found-tests\",\n        `${labName}/${new Date(tests[0].createdAt)\n          .toString()\n          .substring(0, 21)\n          .replace(/(:|\\s+)/g, \"_\")}`,\n      ];\n  }\n};\n\nconst toISOLocal = (d) => {\n  var z = (n) => (\"0\" + n).slice(-2);\n  var zz = (n) => (\"00\" + n).slice(-3);\n  var off = d.getTimezoneOffset();\n  var sign = off > 0 ? \"-\" : \"+\";\n  off = Math.abs(off);\n\n  return (\n    d.getFullYear() +\n    \"-\" +\n    z(d.getMonth() + 1) +\n    \"-\" +\n    z(d.getDate()) +\n    \"T\" +\n    z(d.getHours()) +\n    \":\" +\n    z(d.getMinutes()) +\n    \":\" +\n    z(d.getSeconds()) +\n    \".\" +\n    zz(d.getMilliseconds()) +\n    sign +\n    z((off / 60) | 0) +\n    \":\" +\n    z(off % 60)\n  );\n};\n\nconst parseDateOfBirth = (dob) => {\n  const arr = dob.split(\"-\");\n  return `${arr[1]}/${arr[2]}/${arr[0]}`;\n};\n\nconst parseDateOfBirthLenco = (dob) => {\n  const arr = dob.split(\"-\");\n  return `${arr[1]}-${arr[2]}-${arr[0]}`;\n};\n\nconst formatLencoCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      Provider_ID: 33133,\n      patientFirst: demographics.firstName,\n      patientLast: demographics.lastName,\n      patientDOB: demographics.dob.includes(\"-\")\n        ? parseDateOfBirthLenco(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}-${demographics.dob.substring(2, 4)}-${demographics.dob.substring(4)}`,\n      patientGender: demographics.sex === \"M\" ? \"male\" : \"female\",\n      address1: demographics.street,\n      addressCity: demographics.city,\n      addressState: demographics.state,\n      addressZip: demographics.zip.substring(0, 5),\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      Accession: test.barcode,\n      collection_date: `${test.createdAt.substring(5, 7)}-${test.createdAt.substring(8, 10)}-${test.createdAt.substring(\n        0,\n        4\n      )}`,\n      result: \"\",\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatAllianceCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      client_id: 3211,\n      barcode: test.barcode,\n      date_created: `${test.createdAt.substring(5, 7)}/${test.createdAt.substring(8, 10)}/${test.createdAt.substring(\n        0,\n        4\n      )}`,\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      result: \"\",\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatBiolabCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      client_id: 3739,\n      barcode: test.barcode,\n      date_created: toISOLocal(new Date(test.createdAt)),\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      result: \"\",\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatSunriseCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      client_id: 36,\n      barcode: test.barcode,\n      date_created: toISOLocal(new Date(test.createdAt)),\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      result: \"\",\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatAltaCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      client_id: 1,\n      barcode: test.barcode,\n      date_created: toISOLocal(new Date(test.createdAt)),\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      result: \"\",\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatLifebriteCSV = (tests, labData) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    const obj = {\n      barcode: test.barcode,\n      date_created: toISOLocal(new Date(test.createdAt)).split(\"T\")[0],\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      insurance_name: demographics.insurance_name,\n      insurance_number: demographics.insurance_number,\n      test_code: 1,\n      result: \"\",\n    };\n    if (labData.sendInsurance) {\n      Object.assign(obj, {\n        insurance_name: demographics.insurance_name,\n        insurance_number: demographics.insurance_number,\n      });\n    }\n    return obj;\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatDLSCSV = (tests) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    return {\n      PatientFirstName: demographics.firstName,\n      PatientMiddleName: \"\",\n      PatientLastName: demographics.lastName,\n      patientDOB: demographics.dob.includes(\"-\")\n        ? parseDateOfBirthLenco(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}-${demographics.dob.substring(2, 4)}-${demographics.dob.substring(4)}`,\n      barcode: test.barcode,\n      date_created: test.createdAt.toString(),\n      PatientGender: demographics.sex,\n      Address1: demographics.street,\n      Address2: \"\",\n      AddressCity: demographics.city,\n      AddressState: demographics.state,\n      AddressZip: demographics.zip,\n      EmailAddress: \"\",\n      PatientPhone: test.phoneNumber,\n      UniqueID: test.id,\n      AccessionOrderID: test.barcode,\n      TestkitID: \"\",\n      Covid19TestCode: \"\",\n      SpecimenSource: \"OP\",\n      CollectionDateTime: \"\",\n      OrderingPhysician: \"\",\n      Race: \"UNK: Unknown\",\n      Ethnicity: \"UNK: Unknown\",\n      FirstCovidTest: \"\",\n      HealthCareWorker: \"\",\n      CovidSymptomatic: \"\",\n      SymptomOnsetDate: \"\",\n      CovidHospitalized: \"\",\n      InICU: \"\",\n      CongregateCareSetting: \"\",\n      Pregnant: \"\",\n      result: \"\",\n    };\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatNewDiscoveryCSV = (tests) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    return {\n      barcode: test.barcode,\n      date_created: test.createdAt,\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      sex: demographics.sex,\n      address_street: demographics.street,\n      address_city: demographics.city,\n      address_state: demographics.state,\n      address_zip: demographics.zip,\n      emailAddress: \"\",\n      patientPhone: test.phoneNumber,\n      reference_id: test.referenceID,\n      result: \"\",\n    };\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst formatOxygenCSV = (tests) => {\n  const formattedTests = tests.map((test) => {\n    const demographics =\n      typeof test.employee_demographics === \"object\"\n        ? test.employee_demographics\n        : JSON.parse(test.employee_demographics);\n    return {\n      accession_number: test.barcode,\n      requisition_number: test.referenceID,\n      date: new Date(test.createdAt).toString().substring(0, 15),\n      time: new Date(test.createdAt).toString().substring(16),\n      clinic_id: \"52a3c04d-2b81-43c0-8c9d-5a5ae8f067fc\",\n      first_name: demographics.firstName,\n      last_name: demographics.lastName,\n      patient_dob: demographics.dob.includes(\"-\")\n        ? parseDateOfBirth(demographics.dob)\n        : `${demographics.dob.substring(0, 2)}/${demographics.dob.substring(2, 4)}/${demographics.dob.substring(4)}`,\n      patient_gender: demographics.sex,\n      patient_phone: test.phoneNumber,\n      patient_email: \"\",\n      patient_ethnicity_code: \"U\",\n      patient_race_code: \"U\",\n      provider_first_name: \"\",\n      provider_last_name: \"\",\n      provider_npi: \"1111111111\",\n      provider_phone_number: \"\",\n      specimen_type: \"OS\",\n      panel_type: \"COV  (COVID-19 (2019 Coronavirus (SARS-CoV-2)))\",\n      result: \"\",\n    };\n  });\n  return jsonToCSV(formattedTests);\n};\n\nconst getCurrentLabUserTests = async () => {\n  const user = await getCurrentUser();\n\n  let lab = await DataStore.query(Lab, (lab) => lab.user_id(\"eq\", user.sub));\n  if (lab.length === 0) {\n    const labs = await DataStore.query(Lab);\n    lab = labs.filter((l) => {\n      return l.lab_contacts && l.lab_contacts.includes(user.sub);\n    });\n    if (lab.length === 0) return [];\n  }\n\n  if (lab[0].default_antigen || lab[0].default_molecular) {\n    const models = await DataStore.query(\n      Test,\n      (test) =>\n        test\n          .labID(\"eq\", lab[0].id)\n          .test_type(\"eq\", \"PCR\")\n          .or((test) => test.status(\"eq\", \"Processing\").status(\"eq\", \"Pending\").status(\"eq\", \"Sent\")),\n      {\n        sort: (test) => test.createdAt(SortDirection.DESCENDING),\n      }\n    );\n\n    return models.filter((t) => !t.result);\n  }\n\n  const models = await DataStore.query(\n    Test,\n    (test) =>\n      test\n        .labID(\"eq\", lab[0].id)\n        .test_type(\"eq\", \"PCR\")\n        .or((test) => test.status(\"eq\", \"Processing\").status(\"eq\", \"Pending\").status(\"eq\", \"Sent\")),\n    {\n      sort: (test) => test.createdAt(SortDirection.DESCENDING),\n    }\n  );\n\n  return models.filter((t) => !t.result);\n\n  return models;\n};\n\nconst getAllCurrentLabUserTests = async () => {\n  const user = await getCurrentUser();\n  let lab = await DataStore.query(Lab, (lab) => lab.user_id(\"eq\", user.sub));\n  if (lab.length === 0) {\n    const labs = await DataStore.query(Lab);\n    lab = labs.filter((l) => {\n      return l.lab_contacts && l.lab_contacts.includes(user.sub);\n    });\n    if (lab.length === 0) return [];\n  }\n\n  const models = await DataStore.query(Test, (test) => test.labID(\"eq\", lab[0].id), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n  return models.filter((model) => model.result);\n};\n\nconst getCurrentLabUserProcessedTests = async (id, user) => {\n  let labID = id;\n  if (!labID) {\n    const lab = await DataStore.query(Lab, (lab) => lab.user_id(\"eq\", user.sub));\n    if (lab.length > 0) {\n      labID = lab[0].id;\n    } else {\n      const labs = await DataStore.query(Lab);\n      const filterLab = labs.filter((l) => {\n        return l.lab_contacts && l.lab_contacts.includes(user.sub);\n      });\n      if (filterLab.length > 0) {\n        labID = filterLab[0].id;\n      }\n    }\n  }\n\n  if (labID === null) return [];\n\n  let currentPage = 0;\n  let fetchData = true;\n  const models = await DataStore.query(\n    Test,\n    (test) =>\n      test\n        .labID(\"eq\", labID)\n        .result(\"ne\", null)\n        .test_type(\"eq\", \"PCR\")\n        .or((test) => test.status(\"eq\", \"Processed\").status(\"eq\", \"Pending\")),\n    {\n      sort: (test) => test.createdAt(SortDirection.DESCENDING),\n    }\n  );\n\n  const tests = models.map((test) => {\n    const obj = formatTest(test);\n    obj.status = TEST_STATUS.Processed;\n    return obj;\n  });\n\n  return tests;\n};\nconst getPendingReleaseTests = async () => {\n  const models = await DataStore.query(\n    Test,\n    (test) => test.status(\"eq\", \"Pending\").or((t) => t.result(\"eq\", \"Positive\").result(\"eq\", \"positive\")),\n    {\n      sort: (test) => test.updatedAt(SortDirection.DESCENDING),\n    }\n  );\n\n  return models;\n};\n\nconst sendToLab = async (tests = []) => {\n  tests.forEach(async (test) => {\n    await DataStore.save(\n      Test.copyOf(test, (updated) => {\n        updated.status = \"Sent\";\n      })\n    );\n  });\n};\n\nconst findTestByID = async (id) => {\n  const models = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  // console.log(\"findTestByID\", models);\n  return models[0];\n};\n\nconst findTestByBarcode = async (id) => {\n  const models = await DataStore.query(Test, (test) => test.barcode(\"eq\", id));\n  if (models.length > 0) return models[0];\n\n  const byId = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  if (byId.length > 0) return byId[0];\n\n  return null;\n};\nconst findExternalTestByID = async (testID) => {\n  const models = await DataStore.query(ExternalTest, (test) => test.id(\"eq\", testID));\n  console.log(models);\n  return models[0];\n};\nconst getTestTypes = async () => {\n  const models = await DataStore.query(TestTypes, Predicates.ALL, {\n    sort: (t) => t.name(SortDirection.ASCENDING),\n  });\n  console.log(\"getTestTypes\", models);\n  return models;\n};\n\nconst updateTestTypes = async (obj) => {\n  console.log(\"IN UPDATE Obj \", obj);\n  const items = await DataStore.query(TestTypes, (t) => t.id(\"eq\", obj.id));\n  return await DataStore.save(\n    TestTypes.copyOf(items[0], (updated) => {\n      updated.totalTime = obj.totalTime;\n      updated.firstAlert = obj.firstAlert;\n      updated.secondAlert = obj.secondAlert;\n      updated.duration = obj.duration ? parseInt(obj.duration) : 0;\n    })\n  );\n};\n\nconst updateTestFalsePositive = async () => {\n  const items = await DataStore.query(Test, (t) => t.sequenceNo(\"eq\", 22923));\n  if (items.length > 0) {\n    return await DataStore.save(\n      Test.copyOf(items[0], (updated) => {\n        updated.isFalsePositive = false;\n      })\n    );\n  }\n};\n\nconst findTestsByClient = async (clientID) => {\n  const models = await DataStore.query(Test, (test) => test.clientID(\"eq\", clientID).result(\"ne\", \"Expired\"));\n  // console.log(models);\n  return models;\n};\n\nconst findTestsBySite = async (siteID) => {\n  const models = await DataStore.query(Test, (test) => test.siteID(\"eq\", siteID).result(\"ne\", \"Expired\"));\n  return models;\n};\n\nconst findTestsByLab = async (labID) => {\n  const models = await DataStore.query(Test, (test) => test.labID(\"eq\", labID).result(\"ne\", \"Expired\"));\n  return models;\n};\n\nconst fetchAllUsersInGroup = async (groupName) => {\n  const path = \"/listUsersInGroup\";\n  let NextToken = null;\n  let users = [];\n  try {\n    do {\n      const myInit = {\n        queryStringParameters: {\n          groupname: groupName,\n          limit: 60,\n          token: NextToken,\n        },\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n        },\n      };\n      const models = await API.get(apiName, path, myInit);\n      console.log(`Fetching ${groupName}`, models);\n      NextToken = models.NextToken || null;\n      users = users.concat(models.Users);\n    } while (NextToken);\n    return users;\n  } catch (e) {\n    console.log(\"Error getting users:\", e);\n  }\n};\n\nconst fetchAllCrewMembers = async (groupName, NextToken) => {\n  const path = \"/listUsersInGroup\";\n  let users = [];\n  const myInit = {\n    queryStringParameters: {\n      groupname: groupName,\n      limit: 60,\n      token: NextToken,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n  const models = await API.get(apiName, path, myInit);\n  return models;\n};\n\nconst fetchAllEmployees = async (phone) => {\n  const models = await DataStore.query(Employee, (test) => test.phone_number(\"eq\", phone));\n  return models;\n};\n\nconst fetchUsersInGroup = async (groupName) => {\n  const path = \"/listUsersInGroup\";\n  try {\n    const myInit = {\n      queryStringParameters: {\n        groupname: groupName,\n        limit: 60,\n      },\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n    };\n    const models = await API.get(apiName, path, myInit);\n\n    return models.Users;\n  } catch (e) {\n    console.log(\"Error getting users:\", e);\n  }\n};\n\nconst fetchAllUsers = async (filter) => {\n  let path = \"/listUsers\";\n  let params = {\n    queryStringParameters: {\n      limit: 60,\n      filter: filter,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n  const models = await API.get(apiName, path, params);\n  return models;\n};\n\nconst changeUserRole = async (prevRole, newRole, username) => {\n  console.log(prevRole, newRole, username);\n  let path = \"/removeUserFromGroup\";\n  let prevRoleAlias;\n  if (prevRole === \"Crew\") {\n    prevRoleAlias = \"Employee\";\n  } else if (prevRole === \"Health & Safety\") {\n    prevRoleAlias = \"Employer\";\n  } else {\n    prevRoleAlias = prevRole;\n  }\n  let params = {\n    body: {\n      username: username,\n      groupname: prevRoleAlias + \"s\",\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    const roleRemoval = await API.post(apiName, path, params);\n    path = \"/addUserToGroup\";\n    params.body[\"groupname\"] = newRole + \"s\";\n    const roleChange = await API.post(apiName, path, params);\n    // console.log(\"Changing role\", roleRemoval, roleChange);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Unable to change user role\");\n  }\n};\n\nconst addUserToGroup = async (newRole, username) => {\n  let params = {\n    body: {\n      username: username,\n      groupname: newRole + \"s\",\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    const path = \"/addUserToGroup\";\n    const roleChange = await API.post(apiName, path, params);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Unable to Add user role\");\n  }\n};\n\nconst confirmUserSignUp = async (username) => {\n  console.log(username);\n  const path = \"/confirmUserSignUp\";\n  try {\n    const params = {\n      body: {\n        username: username,\n      },\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n    };\n    const done = await API.post(apiName, path, params);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Fail to confirm user\");\n  }\n};\n\nconst updateUserInfo = async (user) => {\n  console.log(\"[update_info]\", user);\n  const path = \"/updateUserInfo\";\n  let note = \"\";\n  let connectedID = \"\";\n  if (user.show) {\n    note = user.show.label;\n    connectedID = user.show.id;\n  } else if (user.lab) {\n    note = user.lab.label;\n    connectedID = user.lab.id;\n  } else if (user.client) {\n    note = user.client.label;\n  } else if (user.role === \"Admin\" || user.role === \"Tester\") note = \"System\";\n  else note = \"\";\n\n  try {\n    const infoUpdated = await callAmplifyAPI(path, {\n      username: user.username,\n      email: user.email,\n      firstName: user.firstName,\n      lastName: user.lastName,\n      note: note,\n      clientID: user.client ? user.client.id : \"\",\n      connectedID: connectedID,\n    });\n    console.log(\"[update_info]\", infoUpdated);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Unable to update user info\");\n  }\n};\n\nconst updateUserSecondRole = async (user) => {\n  console.log(\"[updateUserSecondRole]\", user);\n  const path = \"/updateUserSecondRole\";\n\n  const params = {\n    body: {\n      username: user.username,\n      role: user.adRole,\n      connectedID: user.connectedID,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    const infoUpdated = await API.post(apiName, path, params);\n    console.log(\"[update_info]\", infoUpdated);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Unable to update user info\");\n  }\n};\n\nconst updateAssociatedInfo = async (username, note) => {\n  console.log(\"[update_info]\", username, note);\n  const path = \"/updateAssociatedInfo\";\n\n  const params = {\n    body: {\n      username: username,\n      note: note,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    const infoUpdated = await API.post(apiName, path, params);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n  }\n};\n\nconst updateUserPassword = async (username, password) => {\n  console.log(\"[update_user_password_info]\", username, password);\n  const path = \"/updateUserPassword\";\n  const params = {\n    body: {\n      username: username,\n      password: password,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  const infoUpdated = await API.post(apiName, path, params);\n  console.log(\"[update_user_password_info]\", infoUpdated);\n};\n\nconst deleteUser = async (username) => {\n  console.log(\"[delete_user_password_info]\", username);\n  const path = \"/deleteUser\";\n  const params = {\n    body: {\n      username: username,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  try {\n    await API.post(apiName, path, params);\n  } catch (e) {\n    console.log(\"Error changing user role:\", e);\n    alert(\"Unable to update user password\");\n  }\n};\n\nconst sendSMSNotification = async (phoneNumber, message) => {\n  try {\n    const notification = await axios.post(AWS_ENDPOINT + \"/notification\", {\n      phone_number: phoneNumber.replace(/\\D/g, \"\"),\n      message: message,\n    });\n    return notification;\n  } catch (error) {\n    console.log(error);\n  }\n};\nconst updateClientsHippa = async (id, newHippa, fileName) => {\n  const client = await DataStore.query(Client, (client) => client.id(\"eq\", id));\n  await DataStore.save(\n    Client.copyOf(client[0], (updated) => {\n      updated.hippa = newHippa;\n      updated.hippaFile = fileName || \"\";\n    })\n  );\n};\n\nconst updateClient = async (newClient) => {\n  const client = await DataStore.query(Client, (client) => client.id(\"eq\", newClient.id));\n  await DataStore.save(\n    Client.copyOf(client[0], (updated) => {\n      updated.name = newClient.name;\n      updated.contact_name = newClient.contact;\n      updated.contact_phone = setPhoneNo(newClient.phone);\n      updated.contact_email = newClient.email;\n      updated.resultType = newClient.resultType;\n      updated.showOnSummaryScreen = newClient.showOnSummaryScreen;\n      updated.whiteLabel = newClient.whiteLabel;\n      updated.whiteLabelPackage = newClient.whiteLabelPackage;\n      updated.isArchive = newClient.isArchive;\n    })\n  );\n};\n\nconst updateSite = async (newSite) => {\n  console.log(\"UPDATING\", newSite);\n  const site = await DataStore.query(Site, (site) => site.id(\"eq\", newSite.id));\n  await DataStore.save(\n    Site.copyOf(site[0], (updated) => {\n      updated.name = newSite.name;\n      updated.contact_name = newSite.contact;\n      updated.contact_phone = setPhoneNo(newSite.phone);\n      updated.contact_email = newSite.email;\n      updated.antigen = newSite.antigen;\n      updated.automateTestType = newSite.automateTestType;\n      updated.insurance_required = newSite.insurance_required;\n      updated.sendInsuranceCard = newSite.sendInsuranceCard;\n      updated.resetTestDay = newSite.resetTestDay;\n      updated.startDate = newSite.startDate;\n      updated.endDate = newSite.endDate;\n      updated.clientID = newSite.clientID;\n      updated.showOnSummaryScreen = newSite.showOnSummaryScreen;\n      updated.messageTested = newSite.messageTested;\n      updated.messageResulted = newSite.messageResulted;\n      updated.messagePositive = newSite.messagePositive;\n      updated.isArchive = newSite.isArchive;\n      updated.vaccinationCard = newSite.vaccinationCard;\n      updated.admit = newSite.admit;\n      updated.externalTest = newSite.externalTest;\n      updated.externalTestAdmit = newSite.externalTestAdmit;\n      updated.externalTestType = newSite.externalTestType;\n      updated.patternTesting = newSite.patternTesting;\n      updated.patternHippa = newSite.patternHippa;\n      updated.preRegistration = newSite.preRegistration;\n      updated.orderKitDate = newSite.orderKitDate ? moment(newSite.orderKitDate).toISOString() : null;\n      updated.enableShipment = newSite.enableShipment;\n      updated.orderQuantity = newSite.orderQuantity;\n    })\n  );\n  return;\n};\n\nconst updateSiteArchive = async (id, isArchive) => {\n  console.log(\"UPDATING SITE ARCHIVE\", id, isArchive);\n  const res = await DataStore.query(Site, (site) => site.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Site.copyOf(res[0], (updated) => {\n      updated.isArchive = isArchive;\n    })\n  );\n  return;\n};\n\nconst addUserToSite = async (updatedSite, user) => {\n  console.log(\"FROM API\", updatedSite, user);\n  const models = await DataStore.query(Site, (site) => site.id(\"eq\", updatedSite.id));\n  return await DataStore.save(\n    Site.copyOf(models[0], (updated) => {\n      if (updated.show_contacts === null) {\n        updated.show_contacts = [user];\n      } else {\n        if (models[0].show_contacts.indexOf(user) === -1) {\n          updated.show_contacts = [...models[0].show_contacts, user];\n        }\n      }\n    })\n  );\n};\n\nconst removeUserToSite = async (updatedSite, user) => {\n  console.log(\"FROM API\", updatedSite, user);\n  const models = await DataStore.query(Site, (site) => site.id(\"eq\", updatedSite.id));\n  return await DataStore.save(\n    Site.copyOf(models[0], (updated) => {\n      if (updated.show_contacts !== null) {\n        updated.show_contacts = updated.show_contacts.filter((lc) => lc !== user);\n      }\n    })\n  );\n};\n\nconst addUserToLab = async (newLab, user) => {\n  if (newLab) {\n    const lab = await DataStore.query(Lab, (lab) => lab.id(\"eq\", newLab.id));\n    console.log(\"[ADD_USER_TO_LAB]\", lab);\n    try {\n      if (lab.length > 0) {\n        const result = await DataStore.save(\n          Lab.copyOf(lab[0], (updated) => {\n            if (updated.lab_contacts === null) {\n              updated.lab_contacts = [user];\n            } else {\n              if (updated.lab_contacts.indexOf(user) === -1) updated.lab_contacts = [...updated.lab_contacts, user];\n            }\n          })\n        );\n        console.log(\"[ADD_USER_TO_LAB]\", result);\n      }\n    } catch (e) {\n      console.log(\"Error adding user to lab:\", e);\n    }\n  }\n};\n\nconst removeUserToLab = async (prevLab, user) => {\n  if (prevLab) {\n    const lab = await DataStore.query(Lab, (lab) => lab.id(\"eq\", prevLab.id));\n    console.log(\"[REMOVE_USER_TO_LAB]\", lab);\n    try {\n      if (lab.length > 0) {\n        const result = await DataStore.save(\n          Lab.copyOf(lab[0], (updated) => {\n            if (updated.lab_contacts !== null) {\n              updated.lab_contacts = updated.lab_contacts.filter((lc) => lc !== user);\n            }\n          })\n        );\n        console.log(\"[REMOVE_USER_TO_LAB]\", result);\n      }\n    } catch (e) {\n      console.log(\"Error adding user to lab:\", e);\n    }\n  }\n};\n\nconst updateLab = async (newLab) => {\n  console.log(\"IN UPDATE LAB \", newLab);\n  const lab = await DataStore.query(Lab, (lab) => lab.id(\"eq\", newLab.id));\n  return await DataStore.save(\n    Lab.copyOf(lab[0], (updated) => {\n      updated.name = newLab.name;\n      updated.contact_name = newLab.contact;\n      updated.contact_phone = setPhoneNo(newLab.phone);\n      updated.contact_email = newLab.email;\n      updated.street = newLab.street;\n      updated.city_state_zip = newLab.city_state_zip;\n      updated.lab_director = newLab.lab_director;\n      updated.clia_number = newLab.clia_number;\n      updated.testing_notes = newLab.testing_notes;\n      updated.default_antigen = newLab.default_antigen;\n      updated.default_molecular = newLab.default_molecular;\n      updated.default_other = newLab.default_other;\n      updated.tubes_provided = newLab.tubes_provided;\n      updated.sendInsurance = newLab.sendInsurance;\n      updated.logo = newLab.logo;\n      updated.barCodeProvided = newLab.barCodeProvided;\n      updated.barCodeAlertLimit = newLab.barCodeAlertLimit;\n      updated.antigen_notes = newLab.default_antigen ? newLab.antigen_notes : \"\";\n      updated.molecular_notes = newLab.default_molecular ? newLab.molecular_notes : \"\";\n      updated.other_notes = newLab.default_other ? newLab.other_notes : \"\";\n      updated.showOnSummaryScreen = newLab.showOnSummaryScreen;\n      updated.whiteLabel = newLab.whiteLabel;\n      updated.whiteLabelPackage = newLab.whiteLabelPackage;\n      updated.isArchive = newLab.isArchive;\n    })\n  );\n};\n\nconst updateLabBarCodes = async (barCodeData, id) => {\n  barCodeData.forEach(async (row) => {\n    await DataStore.save(\n      new LencoBarcodes({\n        labID: id,\n        barcode: row.barcode,\n        available: true,\n      })\n    );\n  });\n};\n\nconst getLabBarCodes = async (id) => {\n  const models = await DataStore.query(LencoBarcodes, (lab) => lab.labID(\"eq\", id).available(\"eq\", true));\n  return models;\n};\n\nconst updateLabLogo = async (id, fileName) => {\n  const lab = await DataStore.query(Lab, (lab) => lab.id(\"eq\", id));\n  return await DataStore.save(\n    Lab.copyOf(lab[0], (updated) => {\n      updated.logo = fileName;\n    })\n  );\n};\n\nconst updateBarCodeAlert = async (val) => {\n  const labs = await DataStore.query(Lab, (lab) => lab.barCodeProvided(\"eq\", true));\n  console.log(\"Labs\", labs, parseInt(val));\n  labs.forEach(async (lab) => {\n    await DataStore.save(\n      Lab.copyOf(lab, (updated) => {\n        updated.barCodeAlertLimit = parseInt(val);\n      })\n    );\n  });\n};\n\nconst resetDefaultAntigenLab = async (labID) => {\n  const labs = await DataStore.query(Lab, (lab) => lab.id(\"ne\", labID).whiteLabel(\"eq\", false));\n  labs.forEach(async (lab) => {\n    await DataStore.save(\n      Lab.copyOf(lab, (updated) => {\n        updated.default_antigen = false;\n      })\n    );\n  });\n};\n\nconst resetDefaultMolecularLab = async (labID) => {\n  const labs = await DataStore.query(Lab, (lab) => lab.id(\"ne\", labID).whiteLabel(\"eq\", false));\n  labs.forEach(async (lab) => {\n    await DataStore.save(\n      Lab.copyOf(lab, (updated) => {\n        updated.default_molecular = false;\n      })\n    );\n  });\n};\n\nconst resetDefaultOtherLab = async (labID) => {\n  const labs = await DataStore.query(Lab, (lab) => lab.id(\"ne\", labID).whiteLabel(\"eq\", false));\n  labs.forEach(async (lab) => {\n    await DataStore.save(\n      Lab.copyOf(lab, (updated) => {\n        updated.default_other = false;\n      })\n    );\n  });\n};\n\n// const AWS = require('aws-sdk');\n// AWS.config.update({\n//   accessKeyId: process.env.AWS_ACCESS_KEY,\n\n// })\n\nconst buildAWSDate = (dobFromID) => {\n  const awsdob = [];\n  awsdob.push(dobFromID.substring(4));\n  awsdob.push(dobFromID.substring(0, 2));\n  awsdob.push(dobFromID.substring(2, 4));\n  return awsdob.join(\"-\");\n};\n\nconst findHippaConsent = async (employeeID, showId) => {\n  const models = await DataStore.query(TestConsent, (test) => test.employeeID(\"eq\", employeeID).siteID(\"eq\", showId));\n  return models;\n};\n\nconst deleteWrongTest = async (ids) => {\n  const path = \"/deleteTests\";\n\n  const apiRes = await callAmplifyAPI(path, {\n    ids: ids,\n  });\n  return apiRes.data;\n};\n\nconst updateDemographics = (c, crew) => {\n  const demos = { ...c.employee_demographics };\n  demos.firstName = crew.firstName;\n  demos.lastName = crew.lastName;\n  demos.email = crew.email;\n  return demos;\n};\n\nconst updateCrewInfo = async (crew) => {\n  const res = await DataStore.query(Test, (test) => test.employeeID(\"eq\", crew.employeeID));\n  res.forEach(async (c) => {\n    await DataStore.save(\n      Test.copyOf(c, (updated) => {\n        updated.employee_demographics = updateDemographics(c, crew);\n        updated.email = crew.email;\n      })\n    );\n  });\n\n  const employee = await DataStore.query(Employee, (test) => test.id(\"eq\", crew.employeeID));\n  employee.forEach(async (e) => {\n    await DataStore.save(\n      Test.copyOf(e, (updated) => {\n        updated.first = crew.firstName;\n        updated.last = crew.lastName;\n        updated.email = crew.email;\n      })\n    );\n  });\n\n  console.log(\"Data\", crew, employee);\n};\n\nconst updateCompleteCrewInfo = async (crew) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", crew.id));\n  const [countryCode, phoneNo] = getPhoneNo(crew.employee_demographics.phoneNumber);\n\n  const dbTest = res[0];\n  await DataStore.save(\n    Test.copyOf(dbTest, (updated) => {\n      updated.employee_demographics = { ...crew.employee_demographics };\n      updated.phoneNumber = phoneNo;\n      updated.email = crew.employee_demographics.email;\n    })\n  );\n  const demographics = crew.employee_demographics;\n\n  const employeeData = {\n    id: crew.employeeID,\n    first: demographics.firstName,\n    last: demographics.lastName,\n    dob: moment(demographics.dob).format(\"YYYY-MM-DD\"),\n    id_number: demographics.idNumber,\n    email: crew.employee_demographics.email,\n    phone_number: phoneNo,\n    countryCode: countryCode,\n    street: demographics.street,\n    street2: demographics.street2,\n    city: demographics.city,\n    state: demographics.state,\n    zip: demographics.zip,\n    vaccinationCardImage: demographics.vaccinationCardImage,\n    externalTestImage: demographics.externalTestImage,\n    _version: demographics._version,\n  };\n\n  const updatedTodo = await API.graphql({ query: mutations.updateEmployee, variables: { input: employeeData } });\n\n  // const employee = await DataStore.query(Employee, (test) => test.id(\"eq\", crew.employeeID));\n  // const dbEmp = employee[0];\n  // await DataStore.save(\n  //   Employee.copyOf(dbEmp, (updated) => {\n  //     updated.first = demographics.firstName;\n  //     updated.last = demographics.lastName;\n  //     updated.dob = buildAWSDate(demographics.dob);\n  //     updated.id_number = demographics.idNumber;\n  //     updated.phone_number = demographics.phoneNumber;\n  //     updated.street = demographics.street;\n  //     updated.street2 = demographics.street2;\n  //     updated.city = demographics.city;\n  //     updated.state = demographics.state;\n  //     updated.zip = demographics.zip;\n  //   })\n  // );\n  console.log(\"Data\", crew, updatedTodo, res);\n};\n\nconst sendEmailToCrew = async (data) => {\n  console.log(\"[sendEmailToCrew]\", data);\n  // const path = \"/sendEmailToCrew\";\n  const path = \"/sendEmailAttachement\";\n\n  const params = {\n    body: {\n      data: data,\n      isPortalCall: true,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  const infoUpdated = await API.post(apiName, path, params);\n};\n\nconst sendInvitationEmail = async (data) => {\n  console.log(\"[sendGeneralEmail]\", data);\n  // const path = \"/sendEmailToCrew\";\n  const path = \"/sendGeneralEmail\";\n\n  const params = {\n    body: {\n      data: data,\n    },\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n  };\n\n  const infoUpdated = await API.post(apiName, path, params);\n};\n\nconst getTestAutoNumber = async () => {\n  console.log(\"[getAutoNumber]\");\n  const path = \"/getAutoNumber\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {},\n  };\n\n  const counterData = await API.post(apiName, path, params);\n  console.log(\"Counter Api\", counterData);\n  return counterData;\n};\n\nconst getOrderAutoNumber = async () => {\n  console.log(\"[getOrderAutoNumber]\");\n  const path = \"/orders/orderNo\";\n\n  const counterData = await callAmplifyAPI(path, {});\n  console.log(\"Counter Api\", counterData);\n  return counterData;\n};\n\nconst getLabTestAutoNumber = async (date, labID) => {\n  console.log(\"[getLabAutoNumber]\");\n  const path = \"/getLabAutoNumber\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: { date: date, labID },\n  };\n\n  const counterData = await API.post(apiName, path, params);\n  console.log(\"Counter Api\", counterData);\n  return counterData;\n};\n\nconst getPreRegisterData = async () => {\n  console.log(\"[getPreRegisterRecord]\");\n  const path = \"/getPreRegisterRecord\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      // phone_number: \"26951b33-c456-42de-9afb-33431695d56e\",\n      phone_number: \"8322999999\",\n    },\n  };\n\n  const counterData = await API.post(apiName, path, params);\n\n  const params1 = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      phone_number: \"57b4f60a-acec-4150-8224-49eb3d2e5c8e\",\n    },\n  };\n\n  await API.post(apiName, path, params1);\n  console.log(\"Counter Api\", counterData);\n};\n\nconst deletePreRegistration = async (id) => {\n  console.log(\"[deletePreRegistration]\");\n  const path = \"/deletePreRegistration\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: id,\n    },\n  };\n\n  const counterData = await API.post(apiName, path, params);\n};\n\nconst getTestListFromApi = async (siteid) => {\n  console.log(\"[testList]\");\n  const path = \"/testList\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      siteID: siteid,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  if (apiRes.Items) {\n    return apiRes.Items.filter((f) => f._delete !== true && f.result);\n  }\n  return [];\n};\n\nconst getTestLogs = async (id) => {\n  const path = \"/getTestLogs\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: id,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst getAppTestLogs = async (id) => {\n  const path = \"/getAppTestLogs\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: id,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\nconst getAdminTestList = async (id) => {\n  const path = \"/adminTestList\";\n  let items = [];\n  let nextPage = null;\n  do {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n      },\n      body: {\n        siteID: id,\n        siteKey: \"employeeID\",\n        siteIndex: \"byEmployee\",\n        nextPage: nextPage,\n      },\n    };\n    const apiRes = await API.post(apiName, path, params);\n    nextPage = apiRes.LastEvaluatedKey ?? null;\n    items = items.concat(apiRes.Items);\n  } while (nextPage);\n  return items;\n};\nconst getShowPreRegistration = async (id) => {\n  const path = \"/getShowPreRegistration\";\n  let items = [];\n  let nextPage = null;\n  const token = (await Auth.currentSession()).getAccessToken().getJwtToken();\n\n  do {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: token,\n      },\n      body: {\n        id: id,\n        nextPage: nextPage,\n      },\n    };\n    const apiRes = await API.post(apiName, path, params);\n    nextPage = apiRes.data.LastEvaluatedKey ?? null;\n    items = items.concat(apiRes.data.Items);\n  } while (nextPage);\n\n  return items;\n};\n\nconst addTestLogs = async (obj) => {\n  const path = \"/addTestLogs\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      params: obj,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst addTestAppLogs = async (obj) => {\n  const path = \"/addTestAppLogs\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      data: obj,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst getSettingForApp = async (siteid) => {\n  console.log(\"[testList]\");\n  const path = \"/getSettingForApp\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {},\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes;\n};\n\nconst getTestFromApi = async (id) => {\n  console.log(\"[testDetails]\");\n  const path = \"/adminTestList\";\n  let tests = [];\n  let nextPage = null;\n  const token = (await Auth.currentSession()).getAccessToken().getJwtToken();\n  do {\n    const params = {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Authorization: token,\n      },\n      body: {\n        siteID: id,\n        siteKey: \"clientID\",\n        siteIndex: \"byClient\",\n        nextPage: nextPage,\n      },\n    };\n    const apiRes = await API.post(apiName, path, params);\n    nextPage = apiRes.LastEvaluatedKey ?? null;\n    tests = tests.concat(apiRes.Items);\n  } while (nextPage);\n  return tests;\n};\n\nconst saveUserPersonalisation = async (userID, personalisationData) => {\n  const path = \"/saveUserPersonalisation\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      userID: userID,\n      personalisationData: personalisationData,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst getUserPersonalisation = async (userID) => {\n  const path = \"/getUserPersonalisation\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      userID: userID,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst createDelivery = async (deliveryObj) => {\n  const path = \"/addPRTestLogs\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      obj: deliveryObj,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst updateEmailStatus = async (id) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  if (res.length === 0) return;\n  await DataStore.save(\n    Test.copyOf(res[0], (updated) => {\n      updated.emailSend = true;\n    })\n  );\n};\n\nconst updateTestResult = async (tests) => {\n  await Storage.put(`${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_result_${CONFIG.envType}.csv`, jsonToCSV(tests), {\n    bucket: \"result-update\",\n  });\n};\n\nconst updateWhiteLabelTestResult = async (tests, isSimpleResult) => {\n  const fileName = isSimpleResult ? \"simplelabresult\" : \"labresult\";\n  await Storage.put(\n    `${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_${fileName}_${CONFIG.envType}.csv`,\n    jsonToCSV(tests),\n    {\n      bucket: \"result-update\",\n    }\n  );\n};\n\nconst updateTestLab = async (tests) => {\n  await Storage.put(\n    `${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_lab_change_${CONFIG.envType}.csv`,\n    jsonToCSV(tests),\n    {\n      bucket: \"result-update\",\n    }\n  );\n};\n\nconst updateTestType = async (tests) => {\n  await Storage.put(\n    `${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_change_test_type_${CONFIG.envType}.csv`,\n    jsonToCSV(tests),\n    {\n      bucket: \"result-update\",\n    }\n  );\n};\n\nconst updateTestClientLab = async (tests) => {\n  await Storage.put(\n    `${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_change_config_${CONFIG.envType}.csv`,\n    jsonToCSV(tests),\n    {\n      bucket: \"result-update\",\n    }\n  );\n};\n\nconst updateStatusByLab = async (tests) => {\n  await Storage.put(`${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_lab_${CONFIG.envType}.csv`, jsonToCSV(tests), {\n    bucket: \"result-update\",\n  });\n};\n\nconst releaseTest = async (tests) => {\n  await Storage.put(\n    `${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_pending_release_${CONFIG.envType}.csv`,\n    jsonToCSV(tests),\n    {\n      bucket: \"result-update\",\n    }\n  );\n};\n\nconst sendEmailToPendingRelease = async (tests) => {\n  await Storage.put(`${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_email_${CONFIG.envType}.csv`, jsonToCSV(tests), {\n    bucket: \"result-update\",\n  });\n};\n\nconst sendSmsToCrews = async (tests) => {\n  console.log(\"tests\", tests);\n  await Storage.put(\n    `${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_invalid_sms_${CONFIG.envType}.csv`,\n    jsonToCSV(tests),\n    {\n      bucket: \"result-update\",\n    }\n  );\n};\n\nconst addDeleteLogs = async (data) => {\n  await Storage.put(`${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_logs_${CONFIG.envType}.csv`, jsonToCSV(data), {\n    bucket: \"result-update\",\n  });\n};\n\nconst submitToLab = async (labData, tests) => {\n  const [formattedTests, bucket, batch] = formatTests(labData, tests);\n  try {\n    await Storage.put(`${batch}.csv`, formattedTests, { bucket: bucket });\n  } catch (e) {\n    console.log(\"Error uploading to bucket\", e);\n    return \"Error uploading to bucket\";\n  }\n  return `Successfully submitted to ${labData.name}`;\n};\n\nconst updateTestLabWithResetStatus = async (id, labID) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  res.forEach(async (c) => {\n    await DataStore.save(\n      Test.copyOf(c, (updated) => {\n        updated.result = null;\n        updated.resultDate = null;\n        updated.resultDateTime = null;\n        updated.StampBy = null;\n        updated.StampByName = null;\n        updated.status = \"Sent\";\n        updated.labID = labID;\n        updated.emailSend = false;\n      })\n    );\n  });\n};\n\nconst updateQuarantineData = async (id, startDate, endDate) => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", id));\n  console.log(\"In Update Quarantine\", id, startDate, endDate);\n  if (res.length > 0) {\n    if (startDate && endDate) {\n      await DataStore.save(\n        Test.copyOf(res[0], (updated) => {\n          updated.quarantinedStart = moment(startDate).toISOString();\n          updated.quarantinedEnd = moment(endDate).toISOString();\n        })\n      );\n    } else if (startDate) {\n      await DataStore.save(\n        Test.copyOf(res[0], (updated) => {\n          updated.quarantinedStart = moment(startDate).toISOString();\n          updated.quarantinedEnd = null;\n        })\n      );\n    }\n  }\n};\n\nconst getExpiredTest = async () => {\n  const items = await DataStore.query(Test, (test) => test.result(\"eq\", \"Expired\"), {\n    sort: (test) => test.createdAt(SortDirection.DESCENDING),\n  });\n  return items;\n};\n\nconst getPositiveTests = async (id) => {\n  if (!id) return [];\n\n  const test = await DataStore.query(Test, (test) =>\n    test.siteID(\"eq\", id).quarantinedStart(\"ne\", null).quarantinedEnd(\"eq\", null)\n  );\n  return test;\n};\n\nconst UpdateEndQuarantine = async (users) => {\n  for (let i = 0; i < users.length; i++) {\n    const res = await DataStore.query(Test, (test) => test.id(\"eq\", users[i]));\n    await DataStore.save(\n      Test.copyOf(res[0], (updated) => {\n        updated.quarantinedEnd = moment().utc().toISOString();\n      })\n    );\n  }\n};\n\nconst getTodaysTest = async () => {\n  const startDate = moment().subtract(1, \"days\").startOf(\"day\").utc().toISOString();\n  const endDate = moment().subtract(1, \"days\").endOf(\"day\").utc().toISOString();\n\n  const models = await DataStore.query(Test, (test) => test.createdAt(\"between\", [startDate, endDate]));\n  console.log(\"Models\", models);\n  return models;\n};\n\nconst deleteUserLinkFromEmployee = async (val) => {\n  const users = await DataStore.query(Employee, (e) => e.subID(\"eq\", val));\n  users.forEach(async (user) => {\n    await DataStore.save(\n      Employee.copyOf(user, (updated) => {\n        updated.subID = null;\n      })\n    );\n  });\n};\n\nconst hrCheckIn = async (id) => {\n  const path = \"/graphqlEmployeeCheckIn\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: \"60956afd-0d86-4268-9c3d-83b80733cfd0\",\n      version: 15,\n      checkIn: moment().toISOString(),\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\nconst validateAccessionNo = async (test) => {\n  const path = \"/validateAccessionNo\";\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: test.barcode,\n      labID: test.labID,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.isAvailable;\n};\n\nconst saveFileSendToLab = async (fileName, formattedTests) => {\n  try {\n    await Storage.put(fileName, jsonToCSV(formattedTests), { bucket: \"result-update\" });\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n};\n\nconst cloneTest = async () => {\n  const res = await DataStore.query(Test, (test) => test.sequenceNo(\"eq\", 46145));\n  console.log(\"Res\", res);\n  if (res.length === 0) return;\n\n  const demographics = res[0].employee_demographics;\n\n  // const employee = await DataStore.save(\n  //   new Employee({\n  //     first: demographics.firstName,\n  //     last: demographics.lastName,\n  //     dob: buildAWSDate('10291972'),\n  //     id_number: demographics.idNumber,\n  //     phone_number: demographics.phoneNumber,\n  //     street: demographics.street,\n  //     street2: demographics.street2,\n  //     city: demographics.city,\n  //     state: demographics.state,\n  //     zip: demographics.zip,\n  //   })\n  // );\n\n  await DataStore.save(\n    Test.copyOf(res[0], (updated) => {\n      updated.employee_demographics = { ...demographics, dob: \"10291972\", id: \"eac9a1c8-a627-430c-86ed-b2a6053bcfc4\" };\n      updated.employeeID = \"eac9a1c8-a627-430c-86ed-b2a6053bcfc4\";\n    })\n  );\n};\n\nconst getTestListFromPG = async (param) => {\n  console.log(\"[getTestFromPG]\");\n  let statusNew = \"\";\n  let statusPending = \"\";\n  let test_type = [];\n  let dob = \"\";\n  if (param?.status?.toLowerCase() == \"new\") {\n    statusNew = \"pending\";\n    test_type = [\"PCR\"];\n  }\n  if (param?.status?.toLowerCase() == \"pending\") {\n    statusPending = \"pending\";\n    test_type = [\"Lucira\", \"Molecular\", \"Antigen\", \"Rapid Flu\", \"Rapid PCR\"];\n  }\n  if (param?.dob) {\n    dob = param?.dob?.replace(/[&\\/\\\\#,+()$~%.'\":*?<>{}]/g, \"\");\n  }\n\n  const path = \"/getTestFromPG\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      params: dob\n        ? { ...param, dob }\n        : statusNew\n        ? { ...param, status: statusNew, test_type }\n        : statusPending\n        ? { ...param, test_type }\n        : param,\n    },\n  };\n\n  console.log(\"updated params::\", params);\n\n  const apiRes = await API.post(apiName, path, params);\n\n  return apiRes.data;\n};\n\nconst getSummaryFromPG = async (param) => {\n  console.log(\"[getSummary]\");\n  const path = \"/getSummary\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      params: param,\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n\n  return apiRes.data;\n};\n\nconst getTestBySequenceNoByAPI = async (param) => {\n  console.log(\"[getSummary]\");\n  const path = \"/getTestBySequenceNo\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      id: parseInt(param),\n    },\n  };\n\n  const apiRes = await API.post(apiName, path, params);\n\n  return apiRes.data;\n};\n\nconst getAppVersion = async (param) => {\n  console.log(\"[getAppVersion]\");\n  const path = \"/appVersion\";\n\n  const params = {\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`,\n    },\n    body: {\n      name: \"ios\",\n    },\n  };\n  const apiRes = await API.post(apiName, path, params);\n  return apiRes.data;\n};\n\nconst updateTestStatus = async () => {\n  const res = await DataStore.query(Test, (test) => test.id(\"eq\", \"652e3558-a5d5-4f14-a75d-4c6e81491047\"));\n  console.log(\"res\", res);\n  if (res.length === 0) return;\n  return;\n  res.forEach(async (c) => {\n    await DataStore.save(\n      Test.copyOf(c, (updated) => {\n        updated.result = null;\n        updated.status = \"Sent\";\n        updated.resultDate = null;\n        updated.resultDateTime = null;\n      })\n    );\n  });\n};\n\nconst getTestBySequenceNo = async (num) => {\n  const res = await DataStore.query(Test, (test) => test.sequenceNo(\"eq\", parseInt(num)));\n  return res;\n};\n\nconst getDeletedTestList = async () => {\n  const path = \"/archivedTests\";\n\n  const apiRes = await callAmplifyAPI(path, { params: { clientID: CONFIG.clientID } });\n\n  return apiRes?.rows || [];\n};\nconst unResultTests = async (tests) => {\n  await Storage.put(`${moment().format(\"DD_MM_YYYY_HH_mm_ss.SSS\")}_unresult_${CONFIG.envType}.csv`, jsonToCSV(tests), {\n    bucket: \"result-update\",\n  });\n};\n\nexport default {\n  getEmployeeGraphQl,\n  deleteEmployeeGQL,\n  getTodaysTest,\n  getClients,\n  getResultClients,\n  getSitesByClient,\n  getLabs,\n  getLabsWithTests,\n  createEmployee,\n  requestTestKit,\n  preRegisterEmployee,\n  getPreRegisterByPhone,\n  preRegisterNewEmployee,\n  preRegisterClientShows,\n  deletePreRegistration,\n  preRegisterShowData,\n  getEmployeeTestCount,\n  getEmployeeLastShow,\n  createTest,\n  getTests,\n  getPendingTests,\n  sendToLab,\n  getCurrentUser,\n  getAllUsers,\n  signIn,\n  getCurrentLabUserTests,\n  getAllCurrentLabUserTests,\n  getCurrentLabUserProcessedTests,\n  getTestGraphQL,\n  getPendingReleaseTests,\n  findTestByID,\n  findTestByBarcode,\n  findTestsByClient,\n  releaseTest,\n  sendEmailToPendingRelease,\n  unResultTests,\n  fetchUsersInGroup,\n  fetchAllUsersInGroup,\n  fetchAllUsers,\n  changeUserRole,\n  addUserToGroup,\n  confirmUserSignUp,\n  updateUserInfo,\n  updateUserSecondRole,\n  deleteUser,\n  updateUserPassword,\n  sendSMSNotification,\n  deleteEmployee,\n  createLab,\n  deleteLab,\n  updateClientsHippa,\n  updateClient,\n  updateSite,\n  updateSiteArchive,\n  updateLab,\n  updateLabBarCodes,\n  getLabBarCodes,\n  updateLabLogo,\n  updateBarCodeAlert,\n  resetDefaultAntigenLab,\n  resetDefaultMolecularLab,\n  resetDefaultOtherLab,\n  getClientById,\n  createSite,\n  getSites,\n  getSitesWithTests,\n  sendSmsToCrews,\n  getShows,\n  createClient,\n  deleteClient,\n  deleteSite,\n  getSitesByUser,\n  getUserSiteData,\n  findSiteByID,\n  addUserToSite,\n  removeUserToSite,\n  addUserToLab,\n  removeUserToLab,\n  getUnprocessedTests,\n  getUnSubmittedTest,\n  getLabByID,\n  submitUnprocessedTests,\n  reSubmitUnprocessedTests,\n  getTestTypes,\n  updateTestTypes,\n  updateTestType,\n  findHippaConsent,\n  getCompletedTests,\n  getTotalAdminTests,\n  deleteWrongTest,\n  sendEmailToCrew,\n  sendInvitationEmail,\n  updateCrewInfo,\n  updateCompleteCrewInfo,\n  updateEmailStatus,\n  updateTestResult,\n  getExpiredTest,\n  updateQuarantineData,\n  getTestAutoNumber,\n  getOrderAutoNumber,\n  getLabTestAutoNumber,\n  getTestListFromApi,\n  getTestFromApi,\n  getPreRegisterData,\n  findExternalTestByID,\n  getExternalTest,\n  fetchAllCrewMembers,\n  fetchAllEmployees,\n  getPositiveTests,\n  UpdateEndQuarantine,\n  getUserSites,\n  getEmployeeByIdGraphQl,\n  getEmployeeByID,\n  updateEmployeeGraphQL,\n  getAllEmployees,\n  getTestLogs,\n  addTestLogs,\n  updateTestLab,\n  updateTestClientLab,\n  getAppTestLogs,\n  addTestAppLogs,\n  submitToLab,\n  getAdminTestList,\n  getShowPreRegistration,\n  updateTestFalsePositive,\n  addDeleteLogs,\n  formatTests,\n  deleteUserLinkFromEmployee,\n  hrCheckIn,\n  saveFileSendToLab,\n  getUserPersonalisation,\n  saveUserPersonalisation,\n  getSettingForApp,\n  cloneTest,\n  getTestListFromPG,\n  getSummaryFromPG,\n  updateTestStatus,\n  getTestBySequenceNo,\n  updateStatusByLab,\n  getDeletedTestList,\n  getTestBySequenceNoByAPI,\n  createNewEmployee,\n  createDelivery,\n  updateWhiteLabelTestResult,\n  validateAccessionNo,\n  createOrderAPI,\n  updateOrderAPI,\n  updateRejcetedOrder,\n  updateOrderStatus,\n};\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/medflow_icon.cf8edcbf.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputLabel\":\"InputStyle_inputLabel__2IDf-\",\"inputStyling\":\"InputStyle_inputStyling__3XU-P\"};","export const AWS_ENDPOINT = 'https://z4o41uq9n1.execute-api.us-west-1.amazonaws.com/dev'\n\nexport const AWS_USERS_ENDPOINT = 'https://hmbjn6rhi4.execute-api.eu-west-1.amazonaws.com/dev'","export default __webpack_public_path__ + \"static/media/3eaf991b-b876-4897-8e39-47aef2247dcd.46b85e66.png\";","export default __webpack_public_path__ + \"static/media/patient_portal.cb73cf67.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIaADAAQAAAABAAAAIQAAAAAWQIAAAAAE3ElEQVRYCcVYa2xURRS+M7e729LdxFgEBenefbBFq2yxbRCj1PogJib8chs0EhvEBCM0JCqhkR/9g0KEhPhKTEhMqUaw8Yd/jDExXRpMSKBC21Qswj4qIqUxEgrdR++d4zm33Lt3N3cfEttOspkz55w535kzZ86dWSYVtEZFuT/D2EYJYCVIkiYxJgpU/vsQgDNJktHWny6AwbFE4prVCMrmWiQSkYfPnIkgcDV3uX4cHx+/asj+r76hoWGFyGQ2ob1MU2vrN/39/ZppmxwI+Hw7Qz5f2GTOI0E4hEe4JkxIUbY0+HxrTcYCEOTIakV5maA45QBtwXg8PrIA2CbExXh8GAcuwueUhJQDpnQBCcLV8ekUzEcSVrIWHRfxq/RjWMkMG52B+vABJsEetMG4xA60TQx326iVZBE+zq28DvT09PB8i7CGHCAeMLi7k4X4BUbzIYwRgQf9/m19vb3doVBoKfEH69c9jOibDR0AtimqhA8OepsfOO1bvzzqDf8U9TZ9BigwdIr1FTnx5bFjnSDEesyfei2b3R/0+V6t8wQvofnrOcMgg4A9GsxeTWvpKwj+DIB486Sy7tOcjj1V1gmKAhqsK5i+oUP61YknfB9jrA935HPszxk6IEGVQaPjAZMuQlTihFjidh/Nmw8wrWmaqz15/uhbbnX7To/a9XRy+DGHkz2CsR+16jocsNU6tqNzHttJ7/CEEOa+InGtxuM5kkql7sXSuyN9+/YqUkP6yhti+sTxe9wb/rkhRTFhW4gPVXJZjLKRIEOZmZnnqKcmM/YtOQCq+i7lCLLIQTypsCorxNtbbt1awaoc25Cpf31nU6KL5pVqJZ1Y7fe/ElSU3ZgTz+pGGLv+Wyw2KqlqBMdmdCwALAvQ0RYbGsVI6DlCdSRav/a7AW/4kEUvjyzpBG5DGxp7yDJjoqWlhQqc18LLJzEijY2NTqw/p0mAugx/m9GZXfmKuVFJJ3JqcxSegNz3v1CYGyOmjlybY+kcu8jpKiWdYJwP4swLhjEG4B8aGppFXsLgFfYoS46NjWVx/WtIxiSmMiZ9j+E4XKhrjEtm7qVY7CtSxOL0EubF8wLgvkAgEMQr2tcZIfbikmXDEPXogIYGj5/0Nj0hQDxOPCznB9uTI/uILtZKRsKYxB2OqEFLQrwmu91/gyx/gPv+O26RSuD4i8ku14e91cumsVh9YujX8JqPDbpYXzIStpMAls3cvPmek/MvLsTjh+iKNjU1xaLRqDoQal6aSqdPAUj6VmBstBTkaoytPWSWjQSVbZHNbrcawG2ow5rwDh7f9385e/b1P5LJHXicX/R4pBk8DstzuiAzkTmBW4mBKt4qcUIg6F92JsgZLFLN+HsUgV7Y5XQCY/wwIqJoriFxDrfMHBt8a1/WCVLe2tnZh/v/M+37Eo9nb3VtbTfnnK6EpnF0wnFjcvLBtuT5/Zw5ViLwD2j8SPvEyG4roB3NAorSdTmR+MhOWMijsFpXpVdTo5gxdvFyPF70GBbaMsaEz3F1ecfMENr1VgdIjnVkEjvKPI0zdlePJcJnWAM6ZKfz1GJcdulFhpekJzm9De88zewWP688wiV8To9TDEl6MV5guMIM4eunI9za2q9K0saFcoRw8Ev4FD2KKdQYhLm2mK9y0wnDmcX4f+Jf3oD1dcxE9Y0AAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/MedFlow-Alpha-LIS.e6037d9e.png\";","export default __webpack_public_path__ + \"static/media/reactlogo.55f6660b.png\";","export default \"data:image/png;base64,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\"","export const TABLE_COLUMN_TYPES = {\n  shortDate: \"shortDate\",\n  text: \"text\",\n  dateTime: \"dateTime\",\n  upperCaseText: \"upperCaseText\",\n  firstLetterCapital: \"firstLetterCapital\",\n  email: \"email\",\n  phone: \"phone\",\n  number: \"number\",\n  currency: \"currency\",\n  image: \"image\",\n  insuranceProvider: \"insuranceProvider\",\n  result: \"result\",\n  fixedValue: \"fixedValue\",\n  json: \"json\",\n  labelID: \"labelID\",\n};\n\nconst claimSubmitStatusColorOpts = {\n  draft: \"gray\",\n  submitted: \"#3939ff\",\n  partial: \"green\",\n  rejected: \"red\",\n  approved: \"green\",\n  sent: \"green\",\n  paid: \"green\",\n  denied: \"#ff5f5f\",\n  cancelled: \"#95614c\",\n  sent: \"#3939ff\",\n  pending: \"orange\",\n};\n\nexport const EMP_PERSONALIZE = [\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"middleName\",\n    title: \"Middle Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 22,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category: \"Demographic\",\n  },\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"email\",\n    title: \"Email\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.email,\n  },\n  {\n    itemKey: \"phoneNumber\",\n    title: \"Phone Number\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.phone,\n  },\n  {\n    itemKey: \"dob\",\n    title: \"DOB\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 5,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"street\",\n    title: \"Address\",\n    textAlign: \"left\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 6,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"id_number\",\n    title: \"ID NUMBER\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 7,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"site_name\",\n    title: \"Show\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 8,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n\n  {\n    itemKey: \"insurance_name\",\n    title: \"Payer Carrier\",\n    textAlign: \"left\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 9,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"insurance_number\",\n    title: \"Member Number\",\n    textAlign: \"left\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 10,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n\n  {\n    itemKey: \"lastUsed\",\n    title: \"Last Test Date\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 11,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"totalTest\",\n    title: \"Total Test\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 12,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.number,\n  },\n];\n\nexport const LAB_MEMBER_PERSONALIZE = [\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n\n    category: \"Demographic\",\n    sortedIndex: 1,\n  },\n\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n\n    category: \"Demographic\",\n    sortedIndex: 2,\n  },\n  {\n    itemKey: \"email\",\n    title: \"Email\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.email,\n    category: \"Demographic\",\n    sortedIndex: 3,\n  },\n  {\n    itemKey: \"phoneNumber\",\n    title: \"Phone Number\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.phone,\n    category: \"Demographic\",\n    sortedIndex: 4,\n  },\n  {\n    itemKey: \"street\",\n    title: \"Address\",\n    textAlign: \"left\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 5,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category: \"Demographic\",\n    sortedIndex: 7,\n  },\n  {\n    itemKey: \"street2\",\n    title: \"Apt/Unit#\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 6,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category: \"Demographic\",\n    sortedIndex: 10,\n  },\n  {\n    itemKey: \"city\",\n    title: \"City\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 7,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category: \"Demographic\",\n    sortedIndex: 8,\n  },\n  {\n    itemKey: \"state\",\n    title: \"State\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 8,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category: \"Demographic\",\n    sortedIndex: 9,\n  },\n  {\n    itemKey: \"zip\",\n    title: \"Zip Code\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 9,\n    type: TABLE_COLUMN_TYPES.text,\n    category: \"Demographic\",\n    sortedIndex: 11,\n  },\n  {\n    itemKey: \"dob\",\n    title: \"Date Of Birth\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 10,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    category: \"Demographic\",\n    sortedIndex: 5,\n  },\n  {\n    itemKey: \"sex\",\n    title: \"Gender\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 11,\n    type: TABLE_COLUMN_TYPES.text,\n    category: \"Demographic\",\n    sortedIndex: 6,\n  },\n  {\n    itemKey: \"insurance_name\",\n    title: \"Payer\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 12,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    filterKey: \"payerId\",\n    sortedIndex: 12,\n  },\n  {\n    itemKey: \"insurance_number\",\n    title: \"Member ID\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 13,\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    customCellRenderer: true,\n    sortedIndex: 13,\n  },\n  {\n    itemKey: \"insuranceGroupId\",\n    title: \"Group ID\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 14,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 14,\n  },\n  {\n    itemKey: \"updatedAt\",\n    title: \"Last Updated\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 15,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 15,\n  },\n  {\n    itemKey: \"eligibilityStatus\",\n    title: \"Eligibility\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 16,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 16,\n  },\n  {\n    itemKey: \"status\",\n    title: \"Status\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 17,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 17,\n  },\n  // {\n  //   itemKey: 'providerName',\n  //   title: 'Provider',\n  //   textAlign: 'center',\n  //   isCheck: true,\n  //   textOverflow: 'visible',\n  //   id: 18,\n  //   type: TABLE_COLUMN_TYPES.firstLetterCapital,\n  // },\n  {\n    itemKey: \"site_name\",\n    title: \"Client\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 19,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    customCellRenderer: true,\n    filterKey: \"siteID\",\n    sortedIndex: 18,\n  },\n  // {\n  //   itemKey: 'primaryCarePhysician',\n  //   title: 'Primary Care Physician',\n  //   textAlign: 'center',\n  //   isCheck: true,\n  //   textOverflow: 'visible',\n  //   id: 20,\n  //   type: TABLE_COLUMN_TYPES.firstLetterCapital,\n  // },\n  // {\n  //   itemKey: 'referringPyhsician',\n  //   title: 'Referring Physician',\n  //   textAlign: 'center',\n  //   isCheck: true,\n  //   textOverflow: 'visible',\n  //   id: 21,\n  //   type: TABLE_COLUMN_TYPES.firstLetterCapital,\n  // },\n\n  {\n    itemKey: \"schrID\",\n    title: \"LTCS ID\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 23,\n    type: TABLE_COLUMN_TYPES.labelID,\n    sortedIndex: 19,\n  },\n  {\n    itemKey: \"externalID\",\n    title: \"Chart#\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 24,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 20,\n  },\n];\n\nexport const PENDING_RESULT_PERSONALIZE = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Collected\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 6,\n  },\n\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    customCellRenderer: true,\n    category: \"Demographic\",\n    sortedIndex: 1,\n  },\n\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category: \"Demographic\",\n    sortedIndex: 2,\n  },\n\n  {\n    itemKey: \"dob\",\n    title: \"DOB\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    category: \"Demographic\",\n    sortedIndex: 3,\n  },\n\n  {\n    itemKey: \"email\",\n    title: \"Email\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.email,\n    category: \"Demographic\",\n    sortedIndex: 4,\n  },\n\n  {\n    itemKey: \"phoneNumber\",\n    title: \"Phone\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n    type: TABLE_COLUMN_TYPES.phone,\n    category: \"Demographic\",\n    sortedIndex: 5,\n  },\n\n  {\n    itemKey: \"test_type\",\n    title: \"Test\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 7,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 11,\n  },\n\n  {\n    itemKey: \"barcode\",\n    title: \"Accession No\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 8,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n    sortedIndex: 3,\n    sortedIndex: 19,\n  },\n\n  {\n    itemKey: \"client\",\n    title: \"External Client\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 9,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n    filterKey: \"siteID\",\n    sortedIndex: 13,\n  },\n  {\n    itemKey: \"status\",\n    title: \"Test Status\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 10,\n    customCellRenderer: true,\n    isSkipFilter: true,\n  },\n\n  {\n    itemKey: \"pcrStatus\",\n    title: \"Cust Status\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 11,\n    customCellRenderer: true,\n    filterKey: \"pcrStatus\",\n    sortedIndex: 12,\n  },\n  {\n    itemKey: \"tester_name\",\n    title: \"Collected By\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    id: 12,\n    sortedIndex: 14,\n  },\n  {\n    itemKey: \"scanByLabUserName\",\n    title: \"Received By\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    id: 13,\n    sortedIndex: 15,\n  },\n\n  {\n    itemKey: \"providerName\",\n    title: \"Refererring Physician\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    id: 14,\n    sortedIndex: 16,\n  },\n\n  {\n    itemKey: \"orderDate\",\n    title: \"Order Date\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 15,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 7,\n  },\n  {\n    itemKey: \"receivedDate\",\n    title: \"Date Received\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 16,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 8,\n  },\n  {\n    itemKey: \"sentToLabDate\",\n    title: \"Date Sent\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 17,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 9,\n  },\n  {\n    itemKey: \"testDate\",\n    title: \"Test Date\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 18,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 10,\n  },\n  {\n    itemKey: \"note\",\n    title: \"Clinical Notes\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 19,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 20,\n  },\n  {\n    itemKey: \"labComments\",\n    title: \"Lab Comments\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 20,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 21,\n  },\n  {\n    itemKey: \"orderNo\",\n    title: \"Order Number\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 21,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 18,\n  },\n  {\n    itemKey: \"sendToName\",\n    title: \"Reference Lab\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 22,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 17,\n  },\n  {\n    itemKey: \"chartID\",\n    title: \"Chart #\",\n    isCheck: true,\n    id: 23,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 18,\n  },\n];\n\nexport const COMPLETED_RESULT_PERSONALIZE = [\n  {\n    itemKey: \"resultDateTime\",\n    title: \"Processed\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 9,\n  },\n\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    customCellRenderer: true,\n    sortedIndex: 1,\n    category: \"Demographic\",\n  },\n\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    sortedIndex: 2,\n    category: \"Demographic\",\n  },\n\n  {\n    itemKey: \"dob\",\n    title: \"DOB\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 3,\n    category: \"Demographic\",\n  },\n\n  {\n    itemKey: \"email\",\n    title: \"Email\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.email,\n    sortedIndex: 4,\n    category: \"Demographic\",\n  },\n\n  {\n    itemKey: \"phoneNumber\",\n    title: \"Phone\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n    type: TABLE_COLUMN_TYPES.phone,\n    sortedIndex: 5,\n    category: \"Demographic\",\n  },\n\n  {\n    itemKey: \"result\",\n    title: \"Result\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 7,\n    customCellRenderer: true,\n    isSkipFilter: true,\n  },\n\n  {\n    itemKey: \"test_type\",\n    title: \"Test\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 8,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 6,\n  },\n\n  {\n    itemKey: \"barcode\",\n    title: \"Accession No\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 9,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n    sortedIndex: 20,\n  },\n\n  {\n    itemKey: \"site_name\",\n    title: \"Client\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 10,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n    filterKey: \"siteID\",\n    sortedIndex: 19,\n  },\n\n  {\n    itemKey: \"tester_name\",\n    title: \"Collected By\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 11,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 18,\n  },\n  {\n    itemKey: \"scanByLabUserName\",\n    title: \"Received By\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 12,\n    type: TABLE_COLUMN_TYPES.text,\n    filterKey: \"scanByLabUserID\",\n    sortedIndex: 17,\n  },\n  {\n    itemKey: \"stampByName\",\n    filterKey: \"stampBy\",\n    title: \"Resulted By\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 13,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 16,\n  },\n  {\n    itemKey: \"verifiedByName\",\n    filterKey: \"verifiedBy\",\n    title: \"Released By\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 14,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 15,\n  },\n\n  {\n    itemKey: \"batch\",\n    title: \"H&S\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 15,\n    customCellRenderer: true,\n    sortedIndex: 7,\n  },\n\n  {\n    itemKey: \"releaseStatus\",\n    title: \"Release Status\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 16,\n    customCellRenderer: true,\n    sortedIndex: 8,\n  },\n  {\n    itemKey: \"orderDate\",\n    title: \"Order Date\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 17,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 9,\n  },\n  {\n    itemKey: \"createdAt\",\n    title: \"Test Date\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 18,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 9,\n  },\n  {\n    itemKey: \"createdAt\",\n    title: \"Collected Date\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 19,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 9,\n  },\n  {\n    itemKey: \"releaseDate\",\n    title: \"Released Date\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 26,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 9,\n  },\n  {\n    itemKey: \"clinicalcomment\",\n    title: \"Clinical Notes\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 20,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 10,\n  },\n  {\n    itemKey: \"labComments\",\n    title: \"Lab Comments\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 21,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 11,\n  },\n  {\n    itemKey: \"orderNo\",\n    title: \"Order Number\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 22,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 14,\n  },\n  {\n    itemKey: \"arkstoneStatus\",\n    title: \"Arkstone Status\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 23,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n    sortedIndex: 12,\n  },\n  {\n    itemKey: \"sendToName\",\n    title: \"Reference Lab\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 24,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 13,\n  },\n  {\n    itemKey: \"chartID\",\n    title: \"Chart #\",\n    isCheck: true,\n    id: 25,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 14,\n  },\n  {\n    itemKey: \"emailSend\",\n    title: \"Result Sent\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 27,\n    customCellRenderer: true,\n    sortedIndex: 21,\n  },\n];\n\nexport const COMPLETED_RESULT_CUSTOM_COLUMN = [\n  {\n    itemKey: \"isRestated\",\n    filterKey: \"isRestated\",\n    title: \"Restated\",\n    textAlign: \"center\",\n    id: 26,\n    isCheck: true,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 26,\n  },\n];\n\nexport const TEST_MANAGEMENT_PERSONALIZATION = [\n  {\n    itemKey: \"name\",\n    title: \"Test Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.text,\n    filterKey: \"id\",\n    category: \"Test\",\n    sortedIndex: 1,\n  },\n  {\n    itemKey: \"typeOfTest\",\n    title: \"Result Type\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n    category: \"Test\",\n    sortedIndex: 2,\n  },\n  {\n    itemKey: \"icdCodes\",\n    title: \"ICD Code\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n    textOverflow: \"none\",\n    isSkipFilter: true,\n  },\n  {\n    itemKey: \"category\",\n    title: \"Department\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.text,\n    category: \"Test\",\n    sortedIndex: 2,\n  },\n\n  {\n    itemKey: \"source\",\n    title: \"Source\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"lastUsed\",\n    title: \"Last Used\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n    type: TABLE_COLUMN_TYPES.dateTime,\n  },\n\n  {\n    itemKey: \"isARKStone\",\n    title: \"Arkstone\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 7,\n    type: TABLE_COLUMN_TYPES.text,\n    cssClass: \"linkedText\",\n    customCellRenderer: true,\n    category: \"Test\",\n    sortedIndex: 3,\n  },\n  {\n    itemKey: \"isActive\",\n    title: \"Active\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 8,\n    type: TABLE_COLUMN_TYPES.text,\n    cssClass: \"linkedText\",\n    customCellRenderer: true,\n    category: \"Test\",\n    sortedIndex: 4,\n  },\n];\n\nexport const ORDER_PERSONALIZE = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Date of Order\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    isSkipFilter: true,\n    sortedIndex: 6,\n  },\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    sortedIndex: 1,\n    category: \"Demographic\",\n  },\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    sortedIndex: 2,\n    category: \"Demographic\",\n  },\n  {\n    itemKey: \"dob\",\n    title: \"DOB\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 3,\n    category: \"Demographic\",\n  },\n  {\n    itemKey: \"sex\",\n    title: \"Gender\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 4,\n    category: \"Demographic\",\n  },\n  {\n    itemKey: \"street2\",\n    title: \"Apt/Unit\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    sortedIndex: 5,\n    category: \"Demographic\",\n  },\n  {\n    itemKey: \"tests\",\n    title: \"Test #\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 7,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"test_type\",\n    title: \"Test Name\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 8,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"barcode\",\n    title: \"Accession #\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 9,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n    sortedIndex: 7,\n  },\n  {\n    itemKey: \"site_name\",\n    title: \"Client\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 10,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    customCellRenderer: true,\n    filterKey: \"siteID\",\n    sortedIndex: 8,\n  },\n  {\n    itemKey: \"status\",\n    title: \"Order Status\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 11,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n    sortedIndex: 9,\n  },\n  {\n    itemKey: \"providerStatus\",\n    title: \"Order Status\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 11,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n    sortedIndex: 9,\n  },\n  {\n    itemKey: \"orderDate\",\n    title: \"Test Date\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 12,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    isSkipFilter: true,\n    sortedIndex: 17,\n  },\n  {\n    itemKey: \"eligibilityStatus\",\n    title: \"Eligibility\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 13,\n    type: TABLE_COLUMN_TYPES.text,\n    cssClass: \"linkedText\",\n    filterKey: \"eligibility\",\n    sortedIndex: 10,\n  },\n  {\n    itemKey: \"providerName\",\n    title: \"Refererring Physician\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 14,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    sortedIndex: 11,\n  },\n  {\n    itemKey: \"clincialComments\",\n    title: \"Clinical Notes\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 15,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 16,\n  },\n  {\n    itemKey: \"orderNo\",\n    title: \"Order Number\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 16,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 12,\n  },\n  {\n    itemKey: \"isResultEmailed\",\n    title: \"Result\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 17,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n    sortedIndex: 13,\n  },\n  {\n    itemKey: \"chartID\",\n    title: \"Chart #\",\n    isCheck: true,\n    id: 18,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 14,\n  },\n  {\n    itemKey: \"cancelledReason\",\n    title: \"Lab Comment\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 19,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 15,\n  },\n  // {\n  //   itemKey: \"isSendToExternalClient\",\n  //   title: \"Send To External Client\",\n  //   textAlign: \"center\",\n  //   isCheck: true,\n  //   textOverflow: \"none\",\n  //   id: 20,\n  //   type: TABLE_COLUMN_TYPES.text,\n  //   customCellRenderer: true,\n  //   sortedIndex: 18,\n  // },\n];\n\nexport const ORDER_IMPORT_MODAL_PERSONALIZE = [\n  {\n    itemKey: \"test_date\",\n    title: \"Test Date\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    columnWidth: \"60px\",\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"first_name\",\n    title: \"First Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    isEmployee: true,\n  },\n  {\n    itemKey: \"last_name\",\n    title: \"Last Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    isEmployee: true,\n  },\n  {\n    itemKey: \"dob\",\n    title: \"DOB\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    columnWidth: \"60px\",\n    isEmployee: true,\n  },\n  {\n    itemKey: \"patientCreated\",\n    title: \"Patient\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.text,\n    cssClass: \"linkedText\",\n    customCellRenderer: true,\n    columnWidth: \"60px\",\n    isEmployee: true,\n  },\n  {\n    itemKey: \"orderCreated\",\n    title: \"Order\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 6,\n    type: TABLE_COLUMN_TYPES.text,\n    cssClass: \"linkedText\",\n    customCellRenderer: true,\n    columnWidth: \"60px\",\n  },\n  {\n    itemKey: \"eligibility\",\n    title: \"Eligibility\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 7,\n    type: TABLE_COLUMN_TYPES.text,\n    cssClass: \"linkedText\",\n    customCellRenderer: true,\n    columnWidth: \"60px\",\n    isEmployee: true,\n  },\n  {\n    itemKey: \"reason\",\n    title: \"Reason\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 8,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    columnWidth: \"130px\",\n    isEmployee: true,\n  },\n];\n\nexport const TEST_PANEL_PERSONALIZE = [\n  {\n    itemKey: \"name\",\n    title: \"Element Name\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    width: \"100%\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: false,\n  },\n\n  // {\n  //   itemKey: \"units\",\n  //   title: \"Unit\",\n  //   textAlign: \"\",\n  //   isCheck: true,\n  //   textOverflow: \"none\",\n  //   id: 2,\n  //   width: \"100%\",\n  //   customCellRenderer: true,\n  // },\n  // {\n  //   itemKey: \"sources\",\n  //   title: \"Sources\",\n  //   textAlign: \"\",\n  //   isCheck: true,\n  //   textOverflow: \"none\",\n  //   id: 5,\n  //   width: \"100%\",\n  //   customCellRenderer: true,\n  //   type: TABLE_COLUMN_TYPES.text,\n  // },\n  {\n    itemKey: \"antibioticResistanceType\",\n    title: \"Element Type\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  //\n  // {\n  //   itemKey: \"refInterval\",\n  //   title: \"Ref Interval\",\n  //   textAlign: \"\",\n  //   isCheck: true,\n  //   textOverflow: \"none\",\n  //   id: 3,\n  //   type: TABLE_COLUMN_TYPES.text,\n  //   width: \"100%\",\n  //   customCellRenderer: false,\n  // },\n  // {\n  //   itemKey: \"action\",\n  //   title: \"Action\",\n  //   textAlign: \"right\",\n  //   isCheck: true,\n  //   textOverflow: \"none\",\n  //   id: 4,\n  //   type: TABLE_COLUMN_TYPES.text,\n  //   width: \"100%\",\n  //   customCellRenderer: true,\n  // },\n];\n\nexport const CREATE_TEST_PERSONALIZE = [\n  {\n    itemKey: \"name\",\n    title: \"Element Name\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    width: \"100%\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: false,\n  },\n\n  {\n    itemKey: \"units\",\n    title: \"Unit\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    width: \"100%\",\n    customCellRenderer: true,\n  },\n  // {\n  //   itemKey: 'sources',\n  //   title: 'Sources',\n  //   textAlign: '',\n  //   isCheck: true,\n  //   textOverflow: 'none',\n  //   id: 5,\n  //   width: '100%',\n  //   customCellRenderer: true,\n  //   type: TABLE_COLUMN_TYPES.text,\n  // },\n  {\n    itemKey: \"sources\",\n    title: \"Sources\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    width: \"100%\",\n    customCellRenderer: true,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  // {\n  //   itemKey: \"refInterval\",\n  //   title: \"Ref Interval\",\n  //   textAlign: \"\",\n  //   isCheck: true,\n  //   textOverflow: \"none\",\n  //   id: 3,\n  //   type: TABLE_COLUMN_TYPES.text,\n  //   width: \"100%\",\n  //   customCellRenderer: false,\n  // },\n  {\n    itemKey: \"antibioticResistanceType\",\n    title: \"Element Type\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n    width: \"100%\",\n    customCellRenderer: false,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"action\",\n    title: \"Action\",\n    textAlign: \"right\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.text,\n    width: \"100%\",\n    customCellRenderer: true,\n  },\n];\n\nexport const CREATE_TEST_GENERIC_PERSONALIZE = [\n  {\n    itemKey: \"name\",\n    title: \"Pannel Name\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    width: \"100%\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    customCellRenderer: false,\n  },\n\n  {\n    itemKey: \"sources\",\n    title: \"Sources\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    width: \"100%\",\n    customCellRenderer: true,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n\nexport const ASSOCIATED_PANEL_PERSONALIZE = [\n  {\n    itemKey: \"serialNo\",\n    title: \"Serial\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    width: \"100%\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: false,\n  },\n  {\n    itemKey: \"name\",\n    title: \"Name\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    width: \"100%\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    customCellRenderer: false,\n  },\n\n  {\n    itemKey: \"unit\",\n    title: \"Unit\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    width: \"100%\",\n    customCellRenderer: true,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"sources\",\n    title: \"Sources\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    width: \"100%\",\n    customCellRenderer: true,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"refInterval\",\n    title: \"Ref Interval\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n    width: \"100%\",\n    customCellRenderer: false,\n  },\n  {\n    itemKey: \"status\",\n    title: \"Status\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.text,\n    width: \"100%\",\n    customCellRenderer: true,\n  },\n];\n\nexport const SHOW_TEST_PERSONALIZE = [\n  {\n    itemKey: \"name\",\n    title: \"Panel\",\n    textAlign: \"\",\n    isCheck: true,\n    id: 1,\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    columnWidth: \"90px\",\n    customCellRenderer: false,\n  },\n\n  {\n    itemKey: \"testResult\",\n    title: \"Result\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"testResultMarks\",\n    title: \"CT Value\",\n\n    textAlign: \"center\",\n\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: true,\n  },\n\n  {\n    itemKey: \"unit\",\n    title: \"Unit\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"refInterval\",\n    title: \"Ref Interval\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: false,\n  },\n];\n\nexport const TEST_DICTIONARY_PERSONALIZE = [\n  {\n    itemKey: \"label\",\n    title: \"Code\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n  },\n  {\n    itemKey: \"value\",\n    title: \"Title\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n\n// add new\nexport const PROCEDURE_CODE_PERSONALIZE = [\n  {\n    itemKey: \"code\",\n    title: \"Procedure Code\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"internalCode\",\n    title: \"Alias\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"description\",\n    title: \"Procedure Code Desc\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 3,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"charges\",\n    title: \"Internal Charge\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 4,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"referenceCharge\",\n    title: \"Reference Charge\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 5,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"cashCharge\",\n    title: \"Cash Charge\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 6,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"inNeworkCharge\",\n    title: \"In Network Charge\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 7,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"outNetworkCharge\",\n    title: \"Out Network Charge\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 8,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"effectiveDate\",\n    title: \"Effective Date\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 9,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"retiredDate\",\n    title: \"Retired Date\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 10,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n\n  {\n    itemKey: \"lastUsed\",\n    title: \"Last Used\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 11,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"isActive\",\n    title: \"Active\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 12,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n  },\n];\n\nexport const DICTIONARY_PERSONALIZATION = [\n  {\n    itemKey: \"label\",\n    title: \"Code\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n  },\n  {\n    itemKey: \"value\",\n    title: \"Title\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"settingType\",\n    title: \"Type\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n\n// add new\nexport const DIAGNOSIS_CODE_PERSONALIZE = [\n  {\n    itemKey: \"code\",\n    title: \"Diagnosis Code\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"internalCode\",\n    title: \"Alias\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"title\",\n    title: \"Diagnosis Code Desc\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"effectiveDate\",\n    title: \"Effective Date\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 3,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"retiredDate\",\n    title: \"Date Inactive\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 4,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n\n  {\n    itemKey: \"lastUsed\",\n    title: \"Last Used\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 5,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"isBillable\",\n    title: \"Billable\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 6,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.boolean,\n  },\n  {\n    itemKey: \"isActive\",\n    title: \"Active\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 7,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.boolean,\n  },\n];\n\nexport const CLAIM_INVOICE_PERSONALIZE = [\n  {\n    itemKey: \"invoiceDate\",\n    title: \"Invoice Date\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"street\",\n    title: \"Address\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"state\",\n    title: \"State\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n  },\n  {\n    itemKey: \"city\",\n    title: \"City\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"invoiceAmount\",\n    title: \"Amount\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 7,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"discount\",\n    title: \"Discount\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 8,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"paidAmount\",\n    title: \"Paid\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 9,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"dueDate\",\n    title: \"Due Date\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 10,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"paymentMethod\",\n    title: \"Payment Method\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 11,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n  },\n  {\n    itemKey: \"status\",\n    title: \"Status\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 12,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n    colorObj: claimSubmitStatusColorOpts,\n    customCellRenderer: true,\n  },\n\n  {\n    itemKey: \"invoiceNo\",\n    title: \"Invoice No\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 13,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n\n  {\n    itemKey: \"postGridStatus\",\n    title: \"Sent\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 14,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"sendTo\",\n    title: \"Sent To\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 15,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\nexport const EMP_CLAIM_PERSONALIZE = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Claim Date\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"pat_name_f\",\n    title: \"First Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"pat_name_l\",\n    title: \"Last Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"pat_email\",\n    title: \"Email\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.email,\n  },\n  {\n    itemKey: \"pat_phone\",\n    title: \"Phone Number\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.phone,\n  },\n  {\n    itemKey: \"pat_addr_1\",\n    title: \"Address\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 6,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n\n  {\n    itemKey: \"pat_addr_2\",\n    title: \"Apt/Unit#\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 7,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"pat_city\",\n    title: \"City\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 8,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"pat_state\",\n    title: \"State\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 9,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n  },\n  {\n    itemKey: \"pat_zip\",\n    title: \"Zip Code\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 10,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"pat_dob\",\n    title: \"DOB\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 11,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"pat_sex\",\n    title: \"Gender\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 12,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"payer_name\",\n    title: \"Payer\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 13,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"ins_number\",\n    title: \"Member ID\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 14,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n  },\n  {\n    itemKey: \"claimNo\",\n    title: \"Claim ID\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 15,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"total_charge\",\n    title: \"Claim Amount\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 16,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"adjustedAmount\",\n    title: \"Adjusted Amount\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 17,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"paidAmount\",\n    title: \"Paid Amount\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 18,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"eraIds\",\n    title: \"ERA\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 19,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.image,\n  },\n  {\n    itemKey: \"from_date_1\",\n    title: \"DOS\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 20,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"paid_ins_processed\",\n    title: \"Paid By\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 21,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"status\",\n    title: \"Status\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 22,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n    colorObj: claimSubmitStatusColorOpts,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"remote_claimid\",\n    title: \"B-ID\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 23,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.labelID,\n  },\n  {\n    itemKey: \"submittedByName\",\n    title: \"Processed By\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 24,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"checkDate\",\n    title: \"Paid Date\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 25,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"paymentCheckNo\",\n    title: \"Check/ERA #\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 26,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"accNo\",\n    title: \"Acc. No\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 27,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"invoiceID\",\n    title: \"Invoice ID\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 28,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"externalID\",\n    title: \"Chart #\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 29,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\nexport const MEMBER_ORDER_PERSONALIZE = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Order Date\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"testQty\",\n    title: \"Qty Ordered\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"street\",\n    title: \"Address\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"city\",\n    title: \"City\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 4,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"state\",\n    title: \"State\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 5,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"zip\",\n    title: \"Zip Code\",\n    textAlign: \"center\",\n    textOverflow: \"visible\",\n    isCheck: true,\n    id: 6,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"orderStatus\",\n    title: \"Order Status\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 7,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\nexport const PROVIDER_PERSONALIZE = [\n  {\n    itemKey: \"name\",\n    title: \"Name\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    sortedIndex: 1,\n    category: \"General\",\n  },\n  {\n    itemKey: \"street\",\n    title: \"Address\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n    isSkipFilter: true,\n    sortedIndex: 2,\n    category: \"General\",\n  },\n  {\n    itemKey: \"city\",\n    title: \"City\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 3,\n    category: \"General\",\n  },\n  {\n    itemKey: \"state\",\n    title: \"State\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 4,\n    category: \"General\",\n  },\n  {\n    itemKey: \"zip\",\n    title: \"Zip\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 5,\n    category: \"General\",\n  },\n  {\n    itemKey: \"phoneNumber\",\n    title: \"Phone Number\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n    type: TABLE_COLUMN_TYPES.phone,\n    customCellRenderer: true,\n    sortedIndex: 6,\n    category: \"General\",\n  },\n  {\n    itemKey: \"code\",\n    title: \"Internal Reference Code\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 7,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 7,\n  },\n  {\n    itemKey: \"fax\",\n    title: \"Fax\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 8,\n    type: TABLE_COLUMN_TYPES.phone,\n    sortedIndex: 8,\n    category: \"General\",\n  },\n  {\n    itemKey: \"npi\",\n    title: \"NPI\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 9,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 9,\n  },\n  {\n    itemKey: \"npiType\",\n    title: \"NPI Type\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 10,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 10,\n  },\n  {\n    itemKey: \"speciality\",\n    title: \"Speciality\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 11,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    sortedIndex: 11,\n  },\n  {\n    itemKey: \"taxid\",\n    title: \"Taxonomy\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 12,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 12,\n  },\n  {\n    itemKey: \"orders\",\n    title: \"Total Orders\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 13,\n    type: TABLE_COLUMN_TYPES.number,\n    sortedIndex: 13,\n  },\n  {\n    itemKey: \"claimAmount\",\n    title: \"Claim Amount\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 14,\n    type: TABLE_COLUMN_TYPES.currency,\n    sortedIndex: 14,\n  },\n  {\n    itemKey: \"openAmount\",\n    title: \"Open Amount\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 15,\n    type: TABLE_COLUMN_TYPES.currency,\n    sortedIndex: 15,\n  },\n  {\n    itemKey: \"paid\",\n    title: \"Total Paid\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 16,\n    type: TABLE_COLUMN_TYPES.currency,\n    sortedIndex: 16,\n  },\n  {\n    itemKey: \"lastOrder\",\n    title: \"Last Order\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 17,\n    type: TABLE_COLUMN_TYPES.shortDate,\n    sortedIndex: 17,\n  },\n];\nexport const LAB_CLIENT_PERSONALIZE = [\n  {\n    itemKey: \"practiceID\",\n    title: \"ID\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.text,\n    sortedIndex: 1,\n    category: \"General\",\n  },\n  {\n    itemKey: \"name\",\n    title: \"Practice Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    category: \"General\",\n  },\n  {\n    itemKey: \"street\",\n    title: \"Address\",\n    textAlign: \"left\",\n    isCheck: false,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n    category: \"General\",\n  },\n  {\n    itemKey: \"phone_number\",\n    title: \"Phone\",\n    textAlign: \"left\",\n    isCheck: false,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.phone,\n    category: \"General\",\n  },\n  {\n    itemKey: \"fax\",\n    title: \"Fax\",\n    textAlign: \"left\",\n    isCheck: false,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.phone,\n    category: \"General\",\n  },\n  {\n    itemKey: \"email\",\n    title: \"Email\",\n    textAlign: \"left\",\n    isCheck: false,\n    textOverflow: \"none\",\n    id: 6,\n    type: TABLE_COLUMN_TYPES.text,\n    category: \"General\",\n  },\n  {\n    itemKey: \"contact_name\",\n    title: \"Main Contact\",\n    textAlign: \"left\",\n    isCheck: false,\n    textOverflow: \"none\",\n    id: 7,\n    type: TABLE_COLUMN_TYPES.text,\n    category: \"General\",\n  },\n  {\n    itemKey: \"contactName\",\n    title: \"Contact Phone\",\n    textAlign: \"left\",\n    isCheck: false,\n    textOverflow: \"none\",\n    id: 8,\n    type: TABLE_COLUMN_TYPES.phone,\n    category: \"General\",\n  },\n  {\n    itemKey: \"contactFax\",\n    title: \"Contact Fax\",\n    textAlign: \"center\",\n    isCheck: false,\n    textOverflow: \"none\",\n    id: 9,\n    type: TABLE_COLUMN_TYPES.phone,\n    category: \"General\",\n  },\n  {\n    itemKey: \"contact_email\",\n    title: \"Contact Email\",\n    textAlign: \"center\",\n    isCheck: false,\n    textOverflow: \"none\",\n    id: 10,\n    type: TABLE_COLUMN_TYPES.text,\n    category: \"General\",\n  },\n  {\n    itemKey: \"discount\",\n    title: \"Discount %\",\n    textAlign: \"center\",\n    isCheck: false,\n    textOverflow: \"none\",\n    id: 11,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"commission\",\n    title: \"Commission %\",\n    textAlign: \"center\",\n    isCheck: false,\n    textOverflow: \"none\",\n    id: 12,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"totalOrders\",\n    title: \"Total Orders\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 13,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"claimAmount\",\n    title: \"Claim Amount\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 14,\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"openAmount\",\n    title: \"Open Amount\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 15,\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n  {\n    itemKey: \"paid\",\n    title: \"Paid\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 16,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"associatedClients\",\n    title: \"Associated Providers\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 17,\n    type: TABLE_COLUMN_TYPES.number,\n    style: {\n      color: \"blue\",\n      cursor: \"pointer\",\n    },\n  },\n];\n\nconst TEST_DONE_SPECIFIC_COLUMNS = [\n  {\n    itemKey: \"name\",\n    title: \"Test Name\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 2,\n  },\n  // {\n  //   itemKey: \"comment\",\n  //   title: \"Laboratory Comments\",\n  //   textAlign: \"center\",\n  //   textOverflow: \"none\",\n  //   type: TABLE_COLUMN_TYPES.text,\n  //   isCheck: true,\n  //   customCellRenderer: true,\n  //   id: 3,\n  // },\n  {\n    itemKey: \"testAction\",\n    title: \"Action\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n    customCellRenderer: true,\n    isCheck: true,\n    id: 4,\n  },\n  {\n    itemKey: \"testStatus\",\n    title: \"Test Status\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 5,\n  },\n  {\n    itemKey: \"result\",\n    title: \"Result\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.result,\n    isCheck: true,\n    id: 6,\n  },\n  {\n    itemKey: \"req_form\",\n    title: \"Req\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 7,\n  },\n  {\n    itemKey: \"print\",\n    title: \"Print\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n    customCellRenderer: true,\n    isCheck: true,\n    id: 8,\n  },\n];\n\nconst TEST_HISTORY_SPECIFIC_COLUMNS = [\n  {\n    itemKey: \"testDate\",\n    title: \"Test Date\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.shortDate,\n    isCheck: true,\n    id: 2,\n  },\n  {\n    itemKey: \"name\",\n    title: \"Test Name\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 3,\n  },\n  {\n    itemKey: \"testStatus\",\n    title: \"Test Status\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    customCellRenderer: true,\n    isCheck: true,\n    id: 5,\n  },\n\n  {\n    itemKey: \"pcrStatus\",\n    title: \"Custody Status\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 6,\n  },\n  {\n    itemKey: \"result\",\n    title: \"Result\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.result,\n    isCheck: true,\n    id: 7,\n  },\n  {\n    itemKey: \"req_form\",\n    title: \"Req\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 8,\n  },\n];\n\nexport const TEST_COLUMNS_FOR_PROVIDER = [\n  {\n    itemKey: \"name\",\n    title: \"Test Name\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 2,\n  },\n  {\n    itemKey: \"comment\",\n    title: \"Laboratory Comments\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 4,\n  },\n  {\n    itemKey: \"testStatus\",\n    title: \"Test Status\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    customCellRenderer: true,\n    isCheck: true,\n    id: 5,\n  },\n  {\n    itemKey: \"result\",\n    title: \"Result\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.result,\n    isCheck: true,\n    id: 6,\n  },\n  {\n    itemKey: \"req_form\",\n    title: \"Req\",\n    textAlign: \"center\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.text,\n    isCheck: true,\n    customCellRenderer: true,\n    id: 7,\n  },\n];\n\n// Combining common and specific columns for each table\nexport const TEST_DONE_MODAL_COLUMN_DETAILS = [...TEST_DONE_SPECIFIC_COLUMNS];\nexport const TEST_HISTORY_MODAL_COLUMN = [...TEST_HISTORY_SPECIFIC_COLUMNS];\n\nexport const ELIGIBILITY_PERSONALIZE = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Date Requested\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n\n  {\n    itemKey: \"payerId\",\n    title: \"Payer\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 6,\n    type: TABLE_COLUMN_TYPES.insuranceProvider,\n  },\n  {\n    itemKey: \"medicalNo\",\n    title: \"Member ID #\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 7,\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n  },\n\n  {\n    itemKey: \"groupId\",\n    title: \"Group ID #\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 9,\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    customCellRenderer: true,\n  },\n\n  {\n    itemKey: \"message\",\n    title: \"Status\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 10,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"userName\",\n    title: \"User\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 11,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"copay\",\n    title: \"Co Payment\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 12,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"deductible\",\n    title: \"Deductible\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 13,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"snf\",\n    title: \"SNF\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 14,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"coinsurnace\",\n    title: \"Coinsurnace\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 15,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"planNumber\",\n    title: \"Plan Number\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 16,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n];\n\nexport const LAB_ELIGIBILITY_PERSONALIZE = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Date Requested\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.shortDate,\n  },\n  {\n    itemKey: \"firstName\",\n    title: \"First Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"lastName\",\n    title: \"Last Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"payerId\",\n    title: \"Payer\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.insuranceProvider,\n  },\n  {\n    itemKey: \"medicalNo\",\n    title: \"Payer ID #\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n  },\n\n  {\n    itemKey: \"message\",\n    title: \"Status\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 6,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"userName\",\n    title: \"User\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 7,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"view\",\n    title: \"Details\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 8,\n    type: TABLE_COLUMN_TYPES.image,\n  },\n  {\n    itemKey: \"copay\",\n    title: \"Co Payment\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 9,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"deductible\",\n    title: \"Deductible\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 10,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"snf\",\n    title: \"SNF\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 11,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"coinsurnace\",\n    title: \"Coinsurance\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 12,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n  {\n    itemKey: \"planNumber\",\n    title: \"Plan Number\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 13,\n    type: TABLE_COLUMN_TYPES.number,\n  },\n];\n\nexport const ORDER_DIAG_PERSONALIZATION = [\n  {\n    itemKey: \"test\",\n    title: \"Test\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n\n    columnWidth: \"20%\",\n    customCellRenderer: true,\n  },\n  // {\n  //   itemKey: \"cpt\",\n  //   title: \"CPT\",\n  //   textAlign: \"\",\n  //   isCheck: true,\n  //   textOverflow: \"none\",\n  //   id: 2,\n\n  //   columnWidth: \"16.66%\",\n  //   customCellRenderer: true,\n  // },\n\n  {\n    itemKey: \"source\",\n    title: \"Source\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n\n    columnWidth: \"20%\",\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"sampleContainer\",\n    title: \"Sample Container\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n\n    columnWidth: \"20%\",\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"icd\",\n    title: \"Diagnosis\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n\n    columnWidth: \"20%\",\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"unit\",\n    title: \"Units\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n\n    columnWidth: \"16.66%\",\n    customCellRenderer: true,\n  },\n  // {\n  //   itemKey: \"refCharge\",\n  //   title: \"Charge\",\n  //   textAlign: \"\",\n  //   isCheck: true,\n  //   textOverflow: \"none\",\n  //   id: 5,\n\n  //   columnWidth: \"16.66%\",\n  //   customCellRenderer: true,\n  // },\n];\n\nexport const PAYER_INFO_PERSONALIZE = [\n  {\n    itemKey: \"insuranceCompanyCode\",\n    title: \"Company\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: false,\n  },\n  {\n    itemKey: \"insuranceCompany\",\n    title: \"Company Code\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: false,\n  },\n  {\n    itemKey: \"medicalNo\",\n    title: \"Medical No\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: false,\n  },\n  {\n    itemKey: \"copay\",\n    title: \"Copay\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.currency,\n    columnWidth: \"60px\",\n    customCellRenderer: false,\n  },\n  {\n    itemKey: \"deductible\",\n    title: \"Deductible\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.currency,\n    columnWidth: \"60px\",\n    customCellRenderer: false,\n  },\n];\n\nexport const MESSAGE_TEMPLATE_PERSONALIZE = [\n  {\n    itemKey: \"name\",\n    title: \"Name\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"category\",\n    title: \"Category\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"subject\",\n    title: \"Subject\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"message\",\n    title: \"Message\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 3,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n\nexport const REFERENCE_PERSONALIZE = [\n  {\n    itemKey: \"name\",\n    title: \"Lab Name\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: \"100%\",\n    textAlign: \"left\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"contact_name\",\n    title: \"Main Contact Name\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    textAlign: \"left\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"phone_number\",\n    title: \"Phone\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    textAlign: \"left\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.phone,\n  },\n  {\n    itemKey: \"email\",\n    title: \"Email\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 3,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.email,\n  },\n];\n\nexport const PATIENT_INSURANCE_COLUMN = [\n  {\n    itemKey: \"insuranceCompanyCode\",\n    title: \"Payer\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"medicalNo\",\n    title: \"Member ID\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"copay\",\n    title: \"Copay\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.currency,\n    textOverflow: \"none\",\n  },\n  {\n    itemKey: \"deductible\",\n    title: \"Deductible\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.currency,\n  },\n\n  {\n    itemKey: \"planStartDate\",\n    title: \"Effective From\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.date,\n  },\n  {\n    itemKey: \"planEndDate\",\n    title: \"Effective To\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n    type: TABLE_COLUMN_TYPES.date,\n  },\n  {\n    itemKey: \"isActive\",\n    title: \"Active\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 7,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n\nexport const PATIENT_DOCUMENT_COLUMNS = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Uploaded\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.date,\n  },\n  {\n    itemKey: \"docType\",\n    title: \"Type\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"docLabel\",\n    title: \"Label\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  // {\n  //   itemKey: \"fileName\",\n  //   title: \"File Name\",\n  //   textAlign: \"left\",\n  //   isCheck: true,\n  //   textOverflow: \"none\",\n  //   id: 4,\n  //   type: TABLE_COLUMN_TYPES.text,\n  // },\n];\n\nexport const CREATE_TEST_PANEL_PERSONALIZE = [\n  {\n    itemKey: \"name\",\n    title: \"Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"type\",\n    title: \"Type\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    customCellRenderer: true,\n  },\n];\n\nexport const TEST_PANELS_PERSONALIZE = [\n  {\n    itemKey: \"name\",\n    title: \"Name\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"noOfTest\",\n    title: \"Panels / Tests\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"lastUsed\",\n    title: \"Last Used\",\n    textAlign: \"left\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.dateTime,\n  },\n  {\n    itemKey: \"code\",\n    title: \"Internal Panel code\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n\nexport const keysPickForPanel = [\"panelName\", \"name\", \"testResult\", \"testResultMarks\", \"unit\", \"refInterval\"];\nexport const keysPickForWithouPathogenQualitative = [\"name\", \"testResult\", \"testResultMarks\", \"unit\", \"refInterval\"];\nexport const keysPickForWithouPathogenQuantitative = [\"name\", \"testResult\", \"unit\", \"refInterval\"];\nexport const keysPickForWithPathogenQuantitative = [\"panelName\", \"name\", \"testResult\", \"unit\", \"refInterval\"];\n\nexport const PANEL_RESULT_TEST_PERSONALIZE = [\n  {\n    itemKey: \"panelName\",\n    title: \"Panel Name\",\n    textAlign: \"\",\n    isCheck: true,\n    id: 1,\n    columnWidth: \"30px\",\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"testResult\",\n    title: \"Result\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 2,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"testResultMarks\",\n    title: \"CT Value\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 3,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: true,\n  },\n\n  {\n    itemKey: \"unit\",\n    title: \"Units\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"refInterval\",\n    title: \"Ref Interval\",\n    textAlign: \"\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n    type: TABLE_COLUMN_TYPES.text,\n    columnWidth: \"60px\",\n    customCellRenderer: false,\n    textAlign: \"center\",\n  },\n];\nexport const TAB_SETTINGS_COLUMN = [\n  {\n    itemKey: \"printer_name\",\n    title: \"Printer Name\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: \"100%\",\n    textAlign: \"left\",\n    type: TABLE_COLUMN_TYPES.text,\n    // customCellRenderer: true,\n  },\n  {\n    itemKey: \"printer_size\",\n    title: \"Printer Size\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    textAlign: \"left\",\n    type: TABLE_COLUMN_TYPES.text,\n    // customCellRenderer: true,\n  },\n\n  {\n    itemKey: \"action\",\n    title: \"Action\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    textAlign: \"right\",\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n  },\n];\n\nexport const BARCODE_SETTINGS_COLUMN = [\n  {\n    itemKey: \"name\",\n    title: \"Client Name\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: \"500px\",\n    textAlign: \"left\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"barcodeRangeToShow\",\n    title: \"Accession# Range\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"200px\",\n    textAlign: \"left\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"action\",\n    title: \"Action\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100px\",\n    textAlign: \"right\",\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n  },\n];\n\nexport const SYSTEM_USER_ROLES_PERSONALIZATION = [\n  {\n    itemKey: \"label\",\n    title: \"Role\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: \"100%\",\n    textAlign: \"left\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\nexport const PANEL_QUESTIONS_PERSONALIZATION = [\n  {\n    itemKey: \"title\",\n    title: \"Question\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: 400,\n    textAlign: \"left\",\n    columnWidth: \"400px\",\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n  },\n];\n\nexport const ORDER_ADDITIONAL_QUESTION_PERSONALIZATION = [\n  {\n    itemKey: \"title\",\n    title: \"Question\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: 400,\n    textAlign: \"left\",\n    columnWidth: \"400px\",\n    customCellRenderer: true,\n    // type: TABLE_COLUMN_TYPES.firstLetterCapital,\n  },\n  {\n    itemKey: \"type\",\n    title: \"Answer\",\n    textAlign: \"center\",\n    isCheck: true,\n    textOverflow: \"none\",\n    customCellRenderer: true,\n    columnWidth: \"100px\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/user-profile.59c4b5b4.png\";","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n    \"aws_project_region\": \"eu-west-1\",\n    \"aws_cloud_logic_custom\": [\n        {\n            \"name\": \"AdminQueries\",\n            \"endpoint\": \"https://i7sdzcguu8.execute-api.eu-west-1.amazonaws.com/dev\",\n            \"region\": \"eu-west-1\"\n        },\n        {\n            \"name\": \"usersApi\",\n            \"endpoint\": \"https://hmbjn6rhi4.execute-api.eu-west-1.amazonaws.com/dev\",\n            \"region\": \"eu-west-1\"\n        }\n    ],\n    \"aws_appsync_graphqlEndpoint\": \"https://oh3u5jwmyfcsdkirlqytlxtipi.appsync-api.eu-west-1.amazonaws.com/graphql\",\n    \"aws_appsync_region\": \"eu-west-1\",\n    \"aws_appsync_authenticationType\": \"AMAZON_COGNITO_USER_POOLS\",\n    \"aws_appsync_apiKey\": \"da2-ccq2u7cwxffxbdafloqv2o4shm\",\n    \"aws_cognito_identity_pool_id\": \"eu-west-1:e0a3c491-0c98-479f-9624-ac1782865f1d\",\n    \"aws_cognito_region\": \"eu-west-1\",\n    \"aws_user_pools_id\": \"eu-west-1_0GfxcufKQ\",\n    \"aws_user_pools_web_client_id\": \"3i039r3lsfe4rge4hsnim6s4s4\",\n    \"oauth\": {},\n    \"aws_cognito_username_attributes\": [\n        \"PHONE_NUMBER\"\n    ],\n    \"aws_cognito_social_providers\": [],\n    \"aws_cognito_signup_attributes\": [\n        \"EMAIL\"\n    ],\n    \"aws_cognito_mfa_configuration\": \"OFF\",\n    \"aws_cognito_mfa_types\": [\n        \"SMS\"\n    ],\n    \"aws_cognito_password_protection_settings\": {\n        \"passwordPolicyMinLength\": 8,\n        \"passwordPolicyCharacters\": []\n    },\n    \"aws_cognito_verification_mechanisms\": [\n        \"EMAIL\"\n    ],\n    \"aws_user_files_s3_bucket\": \"crnaeb3085eb7b5f48fd9fc30dfb9bd7ef3c105147-dev\",\n    \"aws_user_files_s3_bucket_region\": \"eu-west-1\"\n};\n\n\nexport default awsmobile;\n","import _ from \"lodash\";\n\nexport const customIsEmpty = (value) => {\n  return _.isEmpty(value);\n};\n\nexport const customKeyBy = (array, key) => {\n  return _.keyBy(array, key);\n};\nexport const customUniqBy = (array, key) => {\n  return _.uniqBy(array, key);\n};\n\nexport const customCloneDeep = (obj) => {\n  return _.cloneDeep(obj);\n};\n\nexport const isNullOrEmpty = (value) => {\n  if (_.isNull(value) || _.isUndefined(value)) {\n    return true;\n  }\n  if (_.isArray(value) && _.isEmpty(value)) {\n    return true;\n  }\n  return false;\n};\n\nexport const customIsObject = (variable) => {\n  return _.isObject(variable) && !_.isArray(variable) && variable !== null;\n};\n\nexport const customIsJsonString = (str) => {\n  if (!_.isString(str)) {\n    return false;\n  }\n  try {\n    const parsed = JSON.parse(str);\n    return typeof parsed === \"object\" && parsed !== null;\n  } catch (e) {\n    return false;\n  }\n};\n\nexport const customPick = (obj, pickedItemArr) => {\n  return _.pick(obj, pickedItemArr);\n};\n\nexport const customGroupBy = (collection, iteratee) => {\n  return _.groupBy(collection, iteratee);\n};\n\nexport const customFlatMap = (collection, iteratee) => {\n  return _.flatMap(collection, iteratee);\n};\n\nexport const customFind = (collection, predicate) => {\n  return _.find(collection, predicate);\n};","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/safecamp_biolab_1.c318638b.png\";","export default __webpack_public_path__ + \"static/media/phone-svgrepo-com.5f5d1ea3.png\";","export default __webpack_public_path__ + \"static/media/envelope-mail-mobile-ui-svgrepo-com.41771f07.png\";","export default __webpack_public_path__ + \"static/media/globe-alt-svgrepo-com.7e1af839.png\";","export default __webpack_public_path__ + \"static/media/marker-pin-01-svgrepo-com.8ffb4fd7.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAQAAAC00HvSAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAACYktHRAD/h4/MvwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+gIAQgyN+XRvy0AAALiSURBVEjHrdZPbFRVFMfxz3TGGZ0ZXVgWFISSUGiisbrBmNhxZdpumbIT2RgryEZNWkwIanUnaQKWqMHognFRMKlLWjamUxZsKf5pk6npYKAmWhfG1szQZly8ls50XtuBcFYv5573vef+7rn3XB6JRTb1J7XpsE+zhJK/FN00a0mlUUxMmx6H7VZStqwiIiYu4Y5RY2Ytb4/Z5ZjXpeXdcMttC8rimu3V4WUZ//rOJfNbLzLjmjnnHZIKGU05ZNiccZ2bI6KOmDGhS2yLiWK65M3oFQ1XKWvWFQca2JgDRsw6EqZsxowROxuAwE6XzcjUC3vNhLYGIUFGeWNaql1NPjCn6wEg0K1oQNO6o90t52uEjYRWVK33McOmtAd5QI+0XFVRRZzWL70BkjbgdBXonpyndK9hUrLyfq36oaLsPf2SVb6kfu8q1RyGX0zKrkW9oODEhplTPnbXR/czSjlj3qd1RXlSwfPB5zE/hVRlyhl3fSKNpEHzPgyp7Ff97CgxtLrndl3AoiExb1vxheP6fG3IYl1UUdm+ANNsxd8h+7LkM8ve9Jo9vgyFsGBFcyBxQkVZmC36SlGnOy6GQiirSASYkoh4aFDKca2u260v9MQTF1EKMAuing4JSRpw0rcO+8YJp0JBzaIWAm2K4vbWiZzyvrdcNLQqdp/lEH1axc0Fnx0K3qmDPHDdpEy4tCFgwLzBDVU8aN5ATVRazo+SgTaLRmU8WzUc8bhzzlqq2f6zzknUHM7nZPywHtVuyucPccIvuOnguqPJqYe4b3oU9ddOt8u4fEP38JodNOlq7e0HGdMu17s3sRZXTHslbN1ZBd9Xr3WLTEYU9Ia37qheM/K6t+lTPSZNy4b3qcA6jSka3qRrpr3kgqKrG5dTn1aLNxz1pOtumLrfw3fYs9rD/5GT88d2GGL265b1jJKyFRURUXEJvxs17rdGXhRr/ifs96JWOySU/Ln6vvkv/H3ziOx/LJTNZtrWnm4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMjQtMDgtMDFUMDg6NTA6NTUrMDA6MDDGeCcKAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDI0LTA4LTAxVDA4OjUwOjU1KzAwOjAwtyWftgAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyNC0wOC0wMVQwODo1MDo1NSswMDowMOAwvmkAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAMAAAANmfvwAAAAVFBMVEX39/f8/Pz6+voPDw/w8PD4+Pj5+fn29vb+/v709PQDAwPn5+ceHh4sLCzc3NzMzMxvb2/AwMBgYGCysrKZmZk5OTl/f3/T09NISEilpaVBQUFTU1NHgcxqAAACXklEQVQ4y11UB7LlIAwzHdPT2/3vuYKf/eUxnkkiwHKRQ561Z/ZairrOOSmslOe1ANBWamE0MXUjnlpS6Zzb3lo7s0rzxNI5AyNNFqePBnApzNY7KXWc9qzmYliyEwQiwUtW7dBCamnwBSNf1pSXAYDF8oUv5yT3S7IDBvdtfdRqAeCIXNJWBbF1DMQyGTYEM7Gpi5wlb2rOh9dO9gT+E7HogJ5TlZrwVJPQkjSIBPxqwmEzACrbHT1o1G7I0fcyP68OmytieXJxPO4aO+46OHsBqZ8t0qR2RN/3RgQwbHwDflEL7YjkzeMrlV+JwWKeacvxLYizhi0x0u8AmVEeM2dSs+1+hSk19lTjFJGfjLX0kITbFYVGw8uxqSeyjKc6i+D4qLsw4vdroLDb3k55haAmI5cQwiLtpEK4JAQg+pEmBlFNYSuejxxygbMtpAodCcKR9Lz1rmvpDahX7UUuax0d8YjlzJGGqowwXUFS2qExYYeeUNleFzdawj9i0N+AKGmmI7VBROKj0wPgC3oYDR81+yupATh9o0do0syflR+SAmBXtXbttrDCKX1KCoA40hkhKRtvtWAgPiXltC93moyAbmzN6SLzS1VDTiSPW11dbcKxn7La419JAcbkrB2griBwqgmo85isAQg9zSovXWOeeh5U0qmFgwC01qwxjOupMHxy5EbwK+2iLgw1Jnm7z/PekgqpTfSWZxD5Pa2PUnebzw3rfvalCPuK2fdwJbUQ0j51TEdwSWNH+ojfItzeTjeD2GKAQO26dYze/0onQg77Bb/jT9SH5Etj9AL+HwezIoblcR71AAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/range.e9d73457.png\";","export default __webpack_public_path__ + \"static/media/roles.46fa874a.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAMAAADW3miqAAAAS1BMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3i/cDAAAAGHRSTlMA4BYx97wMx37yzStg1jiej03tBHZtIaoWIY8aAAAA8ElEQVQ4y63T2Y6EIBBAUYESRFBBlub/v3TEHjIsDtpJ3xcfPAGDxYBC006GqkukyT0SahYPUJjJA1SqS7Raa3UfgVtjxPRQAA5HI+2id+wDZB4gqegtkjxs+AYZByGoPpIKO2Ckg5Q595Ki803Ha348bO8Ifg0THVSYf1BprlFlIgI2ptCliQitOGWjQV6gwpzbLXNqPxei1PHcnAh43q71ht0ofDF0SJMiuoXJUP0q5omrKW+lk/RYou7QycFrtUA1mdVKHmureD2+1TfFi6JRM+Pv25HFob0If+eUWhqUnXiKNNtl/y7F4LN791X0A7XJRdM+FgG6AAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAMAAADW3miqAAAASFBMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJhibTAAAAF3RSTlMA1+orGgn+lxRb83I4u8T5qMwe40eHL4ldFaEAAAElSURBVDjLjdTZkoMgEEBRUNkkbIL2///pNDoSgcR431J1SummDCE5OdVJ0pcsrTO9kgGaqGSJ1WgcPiCrH6DgdI+sOAsHgll3SJWf+h/Vakfr60ycCJxmNXLzmQOIC1kjRtXNwbkibFoweYMgKsmOWhQNL8oFs+eXGsXERPfIYbygYbV4jnuE65VoOHBTlipsg7g4TJ6rpNrXgViyAa7LUl9rhzh1x1jzdasNynfv3f10wIG+GL6AX2pR1D4R6XECVRLtCnBJ2QBPN9P5aTfAvS757kx+8/Ch5uCR/0ZYWGec4P31DR1yEDay4rXIkm4RVWIji0HEzojuV0CywduxJdo+yYy7+XFwk8yD6WZ4tIJb1P/1vAvly0uGfslc7ptNXzq+zT9zWDdJ8UnbpgAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/file-icon.4b763c0d.png\";","export default __webpack_public_path__ + \"static/media/file-icon-gray.7882d5f5.png\";","export default __webpack_public_path__ + \"static/media/download-black.5a614183.png\";","export default __webpack_public_path__ + \"static/media/chart-simple-solid.bd513e7a.png\";","export default __webpack_public_path__ + \"static/media/green-tick-icon.b3c4addf.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"closeButton\":\"CloseButton_closeButton__2lyq1\",\"btnClose\":\"CloseButton_btnClose__1r99K\"};","export default __webpack_public_path__ + \"static/media/thrive.88709515.png\";","export default __webpack_public_path__ + \"static/media/venturedx.ae9f4361.png\";","import payerList from \"Jsons/payer-list.json\";\nimport placeOfServices from \"Jsons/POS.json\";\nimport { getPersonalizationIds } from \"utils\";\nexport const PAGE_LIMIT = 20;\nimport moment from \"moment\";\nexport const WHITE_LABEL = \"whitelabel\";\nexport const NOTES_MAX_CHARACTER_LENGTH = 1500;\nexport const BUCKET_EXTERNAL_IMAGES = \"employee-external-tests\";\n\nexport const INSURANCE_PROVIDER = payerList;\nexport const POS_OPT = placeOfServices;\n\nimport {\n  default as co_lab_image,\n  default as image,\n  default as lis_lable_image,\n} from \"assets/img/MedFlow-Alpha-LIS.png\";\nimport Status from \"components/Status/Status\";\nimport thriveLogo from \"assets/img/thrive.png\";\nimport venturedx from \"assets/img/venturedx.png\";\nexport const TABLE_COLUMN_TYPES = {\n  shortDate: \"shortDate\",\n  dateTime: \"dateTime\",\n  text: \"text\",\n  upperCaseText: \"upperCaseText\",\n  firstLetterCapital: \"firstLetterCapital\",\n  number: \"number\",\n  email: \"email\",\n  phone: \"phone\",\n  currency: \"currency\",\n  image: \"image\",\n  insuranceProvider: \"insuranceProvider\",\n  result: \"result\",\n  fixedValue: \"fixedValue\",\n  json: \"json\",\n};\n\nconst img = () => {\n  if (process.env.REACT_APP_LOGO.includes(\"co_lab\")) {\n    return co_lab_image;\n  } else if (process.env.REACT_APP_LOGO === \"thrive.png\") {\n    return thriveLogo;\n  } else if (process.env.REACT_APP_LOGO === \"venturedx.png\") {\n    return venturedx;\n  }  else if (process.env.REACT_APP_ENV_WHITE === \"whitelabel\") {\n    return lis_lable_image;\n  } \n\n  return image;\n};\nexport const logoImage = img();\n\nexport const COMBINE_PROFILE = \"Combine Profile\";\nexport const LOCATIONS_OPTIONS = [\n  { value: \"At Home\", label: \"At Home\" },\n  { value: \"On Location\", label: \"On Set\" },\n];\n\nexport const CONFIG = {\n  logoImage: img(),\n  basename: \"LIS\",\n  url: process.env.REACT_APP_URL,\n  baseurl: process.env.REACT_APP_BASE_URL,\n  isWhiteLabel: process.env.REACT_APP_ENV_WHITE === WHITE_LABEL,\n  env: process.env.REACT_APP_ENV,\n  isLive: process.env.REACT_APP_ENV === \"live\",\n  whiteLabelID: process.env.REACT_APP_WHITELABEL_ID,\n  clientID: process.env.REACT_APP_CLIENT,\n  siteID: \"\",\n  allowSites: [],\n  appPackage: process.env.REACT_APP_PACKAGE,\n  envType: process.env.REACT_APP_ENV === \"live\" ? \"live\" : \"test\",\n  eligibilityBucket: process.env.REACT_APP_ELIGIBILITY_BUCKET,\n  isLabType: process.env.REACT_APP_COMPANY_TYPE === \"LAB\",\n  lifeCarePrimaryPharmacy: process.env.REACT_APP_WHITE_LABEL_NAME?.includes('thrive') || process.env.REACT_APP_WHITE_LABEL_NAME?.includes('Venture')\n};\n\nconst LABS = {\n  ALTA: \"6d8ec4ef-f634-4237-9984-c5b337e36546\",\n  BIO: \"8cd1a74a-392c-4378-a8a0-15480ee37a1e\",\n  DISCOVERY: \"3eaf991b-b876-4897-8e39-47aef2247dcd\",\n  CDL: \"ff763f06-3dd9-4101-bc52-34dc97c31385\",\n  SECL: \"655f8008-f306-4052-a932-3f5622a39925\",\n  FGL: \"4d519d64-f8db-4e6e-9396-fc723b70ae7e\",\n  COLAB: \"391fad16-d800-42b5-9ada-e7851f2202da\",\n  LLPC: \"1ccc1f3c-a687-4931-9dd1-28cf9d97b7d8\",\n  LAHORE: \"b63c398e-dc3f-412c-871e-ad89a94ddb0e\",\n  SECL_TEST: \"a2172c3b-2997-4eee-9cc4-ff4cc38fd203\",\n  SPN: \"05abfe0d-7717-46a9-8d02-05e8a2f48915\"\n};\n\nexport const LABS_LIST_AS_WHITELABEL = {\n  medflow: [\n    LABS.ALTA,\n    LABS.BIO,\n    LABS.DISCOVERY,\n    LABS.CDL,\n    LABS.SECL,\n    LABS.FGL,\n    LABS.COLAB,\n    LABS.SECL_TEST,\n    LABS.LAHORE,\n  ],\n  thrive: [\n    LABS.LLPC,\n    // LABS.LAHORE\n  ],\n  venturedx: [\n    LABS.SPN,\n  ],\n};\n\nexport const LAB_SFTP_BUCKET = {\n  BIO_LAB: \"biolabs-tests\",\n};\n\n// Chart Stats Labels\nexport const SUMMARY_STATS_TYPE = {\n  labstats: \"Lab Stats\",\n  sitestats: \"Site Stats\",\n  clientstats: \"Client Stats\",\n  clientsitestats: \"Client Stats\",\n};\n\n//Charts Tables Key Labels\nexport const SUMMARY_TABLES_KEY_LABELS = {\n  labstats: \"labID\",\n  sitestats: \"siteID\",\n  clientstats: \"clientID\",\n  clientsitestats: \"clientID\",\n};\nexport const TEST_TYPE_OPT = [{ value: \"PCR\", label: \"PCR\" }];\n\nexport const TEST_ORDER_LIMIT_CATEGORY_VALUE = {\n  0: \"Per Week\",\n  1: \"Per Month\",\n  2: \"Per Year\",\n};\nexport const newLabClientObject = {\n  name: \"\",\n  practiceId: \"\",\n  address: \"\",\n  phone_number: \"\",\n  fax: \"\",\n  email: \"\",\n  contact_name: \"\",\n  contactName: \"\",\n  contactFax: \"\",\n  contact_email: \"\",\n  isActive: true,\n  isArchive: false,\n  isTesting: true,\n  discount: \"\",\n  commission: \"\",\n  isNew: true,\n  setting: {\n    hippaRequired: true,\n  },\n};\nexport const MIN_TEST_LIMIT = 8;\nexport const ATTACHMENT_FILES_LIMIT = 5;\nexport const TEST_ORDER_LIMIT_CATEGORY = [\n  { label: \"Per Week\", value: \"0\" },\n  { label: \"Per Month\", value: \"1\" },\n  { label: \"Per Year\", value: \"2\" },\n];\n\n//Charts Tables Stats Labels\nexport const SUMMARY_TABLES_STATS_TYPE = {\n  labstats: \"Lab\",\n  sitestats: \"Site\",\n  clientstats: \"Client\",\n  clientsitestats: \"Client\",\n};\n\nexport const VACCINATED_OPTIONS = [\n  { value: \"0\", label: \"No\" },\n  { value: \"1\", label: \"Yes\" },\n];\n\nexport const BATCH_OPTIONS = [\n  {\n    value: \"yes\",\n    label: (\n      <div className=\"star-icon-wrapper\">\n        <Status type=\"circle\" size=\"md\" color=\"green\" tickIcon />\n      </div>\n    ),\n  },\n  {\n    value: \"no\",\n    label: (\n      <div className=\"star-icon-wrapper\">\n        <Status type=\"circle\" size=\"md\" color=\"maroon\" crossIcon />\n      </div>\n    ),\n  },\n];\n\nexport const CAPACITY_OPTIONS = [\n  { value: \"Staff\", label: \"Staff\" },\n  { value: \"Guest\", label: \"Guest\" },\n];\n\n// IMAGES TYPE\nexport const IMAGE_UPLOAD_TYPE = {\n  VacinationCard: \"vaccination_card\",\n  ExternalTest: \"external_test\",\n  ProfileImage: \"profile_image\",\n};\n\nexport const PROFILE_IMAGE_PATH = \"https://medflow-images.s3.eu-west-1.amazonaws.com/public/profile/\";\n\n// SITE STATUS\nexport const SITE_STATUS_OPTIONS = [\n  // { value: 0, label: \"Pending\" },\n  { value: 1, label: \"Approved\" },\n  { value: 2, label: \"Hold\" },\n];\n\nexport const TEST_TYPE_VALUE = {\n  Lucira: \"Lucira\",\n  PCR: \"PCR\",\n  Antigen: \"Antigen\",\n  Other: \"Rapid PCR\",\n  Molecular: \"Cue\",\n  RapidFlu: \"Rapid Flu\",\n  Rapid_PCR: \"Other\",\n  Antigen: \"Antigen\",\n  Rapid_Flu: \"RapidFlu\",\n};\n\nexport const MESSAGE_TYPE = {\n  default: \"default\",\n  info: \"info\",\n  success: \"success\",\n  warning: \"warning\",\n  danger: \"danger\",\n  error: \"error\",\n  input: \"input\",\n  custom: \"custom\",\n  controlled: \"controlled\",\n};\n\nexport const TEST_HEADER_TYPE = {\n  unprocessed: \"unprocessed\",\n  completed: \"completed\",\n  alltests: \"alltests\",\n  pending: \"pending\",\n  expired: \"expired\",\n};\n\nexport const TEST_STATUS = {\n  New: \"New\",\n  Sent: \"Sent\",\n  Processing: \"Processing\",\n  Pending: \"Pending\",\n  Processed: \"Processed\",\n};\nexport const LAB_CLIENT_CSV_COLUMNS = [\n  \"client_payer_id\",\n  \"client_name\",\n  \"client_address\",\n  \"client_city\",\n  \"client_state\",\n  \"client_zip\",\n  \"client_phone\",\n];\nexport const newRoleOptions = [\n  { value: \"Admin\", label: \"Admin\" },\n  { value: \"Lab\", label: \"Lab\" },\n  { value: \"Tester\", label: \"Tester\", isWhiteLabelLab: \"No\" },\n  { value: \"Employee\", label: \"Crew\" },\n  { value: \"Health & Safety\", label: \"Health & Safety\" },\n  { value: \"Client\", label: \"Client\" },\n];\n\nexport const LAB_CLIENT_DROPDOWN_OPTIONS = [\n  // { value: \"delete\", title: \"Archive\" },\n  { value: \"logs\", title: \"Audit Trail\" },\n];\nexport const PROVIDER_DROPDOWN_OPTIONS = [{ value: \"logs\", title: \"Audit Trail\" }];\n\nexport const PAYER_DROPDOWN_OPTIONS = [{ value: \"logs\", title: \"Audit Trail\" }];\n\n// add new contant\nexport const CLI_DEFAULT_OPTIONS = {\n  yes: \"Yes\",\n  no: \"No\",\n};\nexport const INSURANCE_EMPTY_OBJECT = {\n  clientID: \"\",\n  payerId: \"\",\n  Name: \"\",\n  address: \"\",\n  city: \"\",\n  state: \"\",\n  phone: \"\",\n  fax: \"\",\n  eClaim: true,\n  eFax: \"\",\n  manualTerm: \"\",\n  manualTerm: \"\",\n  manualAmount: 0,\n  manualMail: \"\",\n  eEligibility: true,\n  EDI: true,\n  ERA: true,\n  eraMail: false,\n  claimAddress: \"\",\n  claimCity: \"\",\n  claimState: \"\",\n  claimPhone: \"\",\n  claimFax: \"\",\n  isNew: true,\n  isActive: true,\n};\nexport const NEW_CLI_ITEM = {\n  cliCode: \"\",\n  isDefault: CLI_DEFAULT_OPTIONS.no,\n};\nexport const CLI_ACTIONS = {\n  add: \"add\",\n  delete: \"delete\",\n  update: \"update\",\n};\nexport const MESSAGE_MODES = {\n  info: \"info\",\n  error: \"error\",\n  success: \"success\",\n};\nexport const ADMIN_USERS = [\"+17777777777\", \"+18888888888\"];\nexport const CLAIMS_KEYS = [\n  \"clientID\",\n  \"locationID\",\n  \"subAgentID\",\n  \"employeeID\",\n  \"clientName\",\n  \"locationName\",\n  \"subAgentName\",\n  \"orderId\",\n  \"orderDate\",\n  \"localOrderId\",\n  \"fileid\",\n  \"paymentMethod\",\n  \"paymentCheckNo\",\n  \"checkDate\",\n  \"claimNo\",\n  \"allowedPayment\",\n  \"paidAmount\",\n  \"adjustedAmount\",\n  \"overPaidAmount\",\n  \"submissionDate\",\n  \"reSubmissionDate\",\n  \"insuranceProcessDate\",\n  \"isPost\",\n  \"plan_type\",\n  \"total_paid\",\n  \"crossover_carrier\",\n  \"crossover_id\",\n  \"claim_received_date\",\n  \"status_code\",\n  \"filing_code\",\n  \"requestedBy\",\n  \"requestedByName\",\n  \"updatedBy\",\n  \"updatedByName\",\n  \"createdAt\",\n  \"proc_array\",\n  \"provider\",\n  \"era\",\n  \"eraIds\",\n  \"isNewLogs\",\n  \"acknowledgeBy\",\n  \"paid_insurance\",\n  \"assign_details\",\n  \"toData\",\n  \"updatedAt\",\n  \"_version\",\n  \"_deleted\",\n  \"_lastChangedAt\",\n  \"partialAmount\",\n];\nexport const PAID_CLAIM_SPANS_MODAL_FORMAT = {\n  weekly: {\n    datePickerFormat: \"MM/dd/y\",\n    datePickerView: \"month\",\n    momentFormat: \"YYYY-MM-DD\",\n  },\n  monthly: {\n    datePickerFormat: \"yyyy-MM\",\n    datePickerView: \"year\",\n    momentFormat: \"YYYY-MM\",\n  },\n  yearly: {\n    datePickerFormat: \"yyyy\",\n    datePickerView: \"decade\",\n    momentFormat: \"YYYY\",\n  },\n};\n\nexport const PAID_CLAIM_FILTERING_SPANS = {\n  weekly: \"weekly\",\n  monthly: \"monthly\",\n  yearly: \"yearly\",\n};\n\nexport const CLAIMS_STATS_DETAILS = {\n  selectedSpan: PAID_CLAIM_FILTERING_SPANS.yearly,\n  date: moment().format(PAID_CLAIM_SPANS_MODAL_FORMAT.yearly.momentFormat),\n  payerId: \"\",\n  rows: [],\n  total: 0,\n};\nexport const PAID_CLAIM_FILTERING_SPANS_OPTS = [\n  { value: \"weekly\", label: \"Weekly\" },\n  { value: \"monthly\", label: \"Monthly\" },\n  { value: \"yearly\", label: \"Yearly\" },\n];\n\nexport const CLAIM_EDIT_STATUS = {\n  draft: \"draft\",\n  submitted: \"submitted\",\n  rejected: \"rejected\",\n  approved: \"approved\",\n  paid: \"paid\",\n  denied: \"denied\",\n  cancelled: \"cancelled\",\n  partial: \"partial\",\n  rejectedanddenied: \"rejectedanddenied\",\n  unpaid: \"unpaid\",\n  sent: \"submitted\",\n};\nexport const DEFAULT_USRERS_PERMISSIONS = {\n  dashboard: { access: true },\n  employee: { access: true, write: true, delete: true },\n  checkEligibility: { access: true, write: true, delete: true },\n  claims: { access: true, write: true, delete: true },\n  users: { access: true, write: true, delete: true },\n  settings: { access: true },\n  claiminvoice: { access: true },\n};\nexport const EMP_CLAIM_BLANK_OPTS = {\n  \"First Name\": \"pat_name_f\",\n  \"Last Name\": \"pat_name_l\",\n  Email: \"pat_email\",\n  \"Phone Number\": \"pat_phone\",\n  Address: \"pat_addr_1\",\n  \"Apt/Unit#\": \"pat_addr_2\",\n  City: \"pat_city\",\n  State: \"pat_state\",\n  \"Zip Code\": \"pat_zip\",\n  \"Date Of Birth\": \"pat_dob\",\n  Gender: \"pat_sex\",\n  Insurance: \"payer_name\",\n  \"Insurance #\": \"ins_number\",\n  \"Claim ID\": \"claimNo\",\n  \"Claim Amount\": \"total_charge\",\n  \"Adjusted Amount\": \"adjustedAmount\",\n  \"Paid Amount\": \"paidAmount\",\n  DOS: \"from_date_1\",\n  Status: \"status\",\n  \"LTCS ID\": \"pcn\",\n  \"B-ID\": \"remote_claimid\",\n  \"Processed By\": \"paid_insurance\",\n};\nexport const LAB_ROTUES = {\n  \"/dashboard\": \"dashboard\",\n  \"/members\": \"employee\",\n  \"/checkeligibility\": \"checkEligibility\",\n  \"/employeeclaim\": \"claims\",\n  \"/users\": \"users\",\n  \"/settings\": \"settings\",\n  \"/claiminvoice\": \"claiminvoice\",\n};\nexport const ORDER_BY_DIRECTION = {\n  ASCEDNING: \"asc\",\n  DESCEDNING: \"desc\",\n};\nexport const MEDICARE_ID = [\"01192\", \"00882\", \"12302\"];\n\nexport const PAID_CLAIM_SPANS_FORMAT = {\n  weekly: \"DDMMYYYY\",\n  monthly: \"MMYYYY\",\n  yearly: \"YYYY\",\n};\nexport const STATS_OBJECT = {\n  approved: 0,\n  approvedAmount: 0,\n  denied: 0,\n  deniedAmount: 0,\n  draft: 0,\n  draftAmount: 0,\n  newPatients: 0,\n  paid: 0,\n  paidAmount: 0,\n  partialProcessed: 0,\n  partialProcessedAmount: 0,\n  refundAmount: 0,\n  rejectted: 0,\n  rejecttedAmount: 0,\n  submitted: 0,\n  submittedAmount: 0,\n};\n\nexport const STATUS_KEY = {\n  draft: \"draft\",\n  submitted: \"submitted\",\n  rejected: \"rejectted\",\n  approved: \"approved\",\n  denied: \"denied\",\n  paid: \"paid\",\n  partial: \"partialProcessed\",\n  cancelled: \"cancelled\",\n};\nexport const API_ACTIONS = {\n  fulfilled: \"fulfilled\",\n  rejected: \"rejected\",\n  pending: \"pending\",\n};\nexport const ADMIN_ORDERS_DROPDOWN_OPTIONS = [{ value: \"view\", title: \"View\" }];\nexport const USER_TYPE_USER = \"user\";\nexport const USER_TYPE_ADMIN = \"admin\";\nexport const USER_TYPE_CLIENT = \"client\";\nexport const USER_TYPE_SUBAGENT = \"subagent\";\n\nexport const USER_ROLE_TITLE = {\n  Admins: \"Medflow Admin\",\n  Employers: \"Facility/Agent Admin\",\n  Clients: \"Client Admin\",\n  SubAgents: \"Sub Agent Admin\",\n};\nexport const LAB_CLAIM_STATUS_OPT = [\n  {\n    value: \"submitted\",\n    label: \"Submitted\",\n  },\n  { value: \"denied\", label: \"Denied\" },\n  { value: \"approved\", label: \"Approved\" },\n];\nexport const PARSE_PROVIDER = {\n  renderingProvider: \"Rendering Provider\",\n  referringProvider: \"Referring Physician\",\n  orderingProvider: \"Ordering Provider\",\n  referringPyhsician: \"Referring Pyhsician\",\n  primaryCarePhysician: \"Primary Care Physician\",\n};\nexport const DEFAULT_PROVIDERS_ARR = [\n  \"renderingProvider\",\n  \"referringProvider\",\n  \"orderingProvider\",\n  \"referringPyhsician\",\n  \"primaryCarePhysician\",\n];\nexport const DEFAULT_PROVIDERS = [\n  {\n    value: \"renderingProvider\",\n    label: \"Rendering Provider\",\n  },\n  { value: \"referringProvider\", label: \"Referring Physician\" },\n  { value: \"orderingProvider\", label: \"Ordering Provider\" },\n  { value: \"referringPyhsician\", label: \"Referring Pyhsician\" },\n  { value: \"primaryCarePhysician\", label: \"Primary Care Physician\" },\n];\nexport const BILLING_TYPES_OPT = [\n  { value: \"mail\", label: \"Mail\" },\n  { value: \"email\", label: \"Email\" },\n  { value: \"fax\", label: \"Fax\" },\n];\nexport const TEST_ORDER_QUANTITY = [\n  { label: 2, value: 2 },\n  { label: 4, value: 4 },\n  { label: 6, value: 6 },\n  { label: 8, value: 8 },\n];\n// add new contant end\n\nexport const newRoleOptionsWhiteLabel = [\n  { value: \"Lab\", label: \"Admin\", isWhiteLabelLab: \"Yes\" },\n  { value: \"Tester\", label: \"Tester\", isWhiteLabelLab: \"Yes\" },\n  { value: \"LabTech\", label: \"Lab Tech\", isWhiteLabelLab: \"Yes\" },\n  // { value: \"Employers\", label: \"Lab Client\", isWhiteLabelLab: \"Yes\" },\n  { value: \"Provider\", label: \"Provider\", isWhiteLabelLab: \"Yes\" },\n];\n\nexport const TEST_RESULT_OPTIONS = [\n  { value: \"empty\", label: \"Not Resulted\" },\n  { value: \"Positive\", label: \"Positive\" },\n  { value: \"Negative\", label: \"Negative\" },\n];\n\nexport const crewRoleOptions = [\n  { value: \"Tester\", label: \"Tester\" },\n  { value: \"Employee\", label: \"Crew\" },\n];\n\nexport const USER_ROLE_TYPE = {\n  Admin: \"Admin\",\n  Lab: \"Lab\",\n  LabTech: \"LabTech\",\n  Tester: \"Tester\",\n  Employee: \"Employee\",\n  Employer: \"Employer\",\n  Client: \"Client\",\n  Provider: \"Provider\",\n};\n\nexport const FILE_TYPES = {\n  pdf: \".pdf\",\n  csv: \".pdf\",\n  jpg: \".jpg\",\n  jpeg: \".jpeg\",\n  png: \".png\",\n  gif: \".gif\",\n  doc: \".doc\",\n  docx: \".docx\",\n};\n\nexport const DEFAULT_ACCEPTED_FILE_TYPES = \".pdf, .jpg, .jpeg, .png, .gif, .doc, .docx\";\n\nexport const FILE_REPRESENT_TYPES_MAP = new Map([\n  [\"application/pdf\", \"pdf\"],\n  [\"text/csv\", \"csv\"],\n]);\n\nexport const HEALTH_AND_SAFTEY = \"Health & Safety\";\n\nexport const RESULT_SENT_OPTIONS = [\n  {\n    value: \"1\",\n    label: (\n      <div className=\"star-icon-wrapper\">\n        <Status type=\"circle\" size=\"md\" color=\"green\" tickIcon />\n      </div>\n    ),\n  },\n  {\n    value: \"0\",\n    label: (\n      <div className=\"star-icon-wrapper\">\n        <Status type=\"circle\" size=\"md\" color=\"maroon\" crossIcon />\n      </div>\n    ),\n  },\n];\n\nexport const CUSTODY_OPT = [\n  { value: \"\", label: \"All\" },\n  {\n    value: \"Received\",\n    label: \"Received\",\n  },\n  { value: \"Sent Out\", label: \"Sent Out\" },\n  { value: \"Specimen Collected\", label: \"Specimen Collected\" },\n];\n\nexport const GET_CUST_COLOR = {\n  \"At Location\": \"maroon\",\n  \"Specimen Collected\": \"maroon\",\n  \"Test Sent\": \"maroon\",\n  \"Sent Out\": \"maroon\",\n  \"Received By Lab\": \"green\",\n  \"Sample Received\": \"green\",\n  \"Test Shipped\": \"green\",\n  \"Test Sent\": \"green\",\n};\nexport const EmptyUserObj = {\n  firstName: \"\",\n  lastName: \"\",\n  email: \"\",\n  password: \"\",\n  role: \"Employee\",\n  isNew: true,\n  lab: null,\n  show: null,\n  client: null,\n};\n\nexport const AMAZON_CLIENT_RESULT = {\n  Positive: \"Fail\",\n  Negative: \"Pass\",\n  Expired: \"Expired\",\n  positive: \"Fail\",\n  negative: \"Pass\",\n  expired: \"Expired\",\n  Pass: \"Pass\",\n  Fail: \"Fail\",\n  pass: \"Pass\",\n  fail: \"Fail\",\n  inconclusive: \"Inconclusive\",\n  Inconclusive: \"Inconclusive\",\n  indeterminate: \"Indeterminate\",\n  Indeterminate: \"Indeterminate\",\n  invalid: \"Invalid\",\n  Invalid: \"Invalid\",\n  Detected: \"Detected\",\n  Invalid: \"Invalid\",\n};\n\nexport const RESULT_COLOR = {\n  positive: \"#bf1e2e\",\n  negative: \"green\",\n  expired: \"orange\",\n  inconclusive: \"blue\",\n  Inconclusive: \"blue\",\n  invalid: \"blue\",\n  Invalid: \"blue\",\n  indeterminate: \"blue\",\n  Indeterminate: \"blue\",\n  pass: \"green\",\n  Cancel: \"red\",\n  fail: \"red\",\n  detail: \"green\",\n  details: \"green\",\n  Detected: \"red\",\n  detected: \"red\",\n  NotDetected: \"green\",\n  \"Not Detected\": \"green\",\n};\n\nexport const RESULT_COLOR_OPTIONS = [\n  {\n    label: \"Green\",\n    value: \"green\",\n  },\n  {\n    label: \"Red\",\n    value: \"red\",\n  },\n  {\n    label: \"Blue\",\n    value: \"blue\",\n  },\n  {\n    label: \"Orange\",\n    value: \"orange\",\n  },\n];\n\nexport const TEST_STATUS_COLOR = {\n  Pending: \"orange\",\n  Cancel: \"maroon\",\n};\n\nexport const RESULT_VALUE = {\n  Positive: \"Positive\",\n  Negative: \"Negative\",\n  positive: \"Positive\",\n  negative: \"Negative\",\n  Inconclusive: \"Inconclusive\",\n  inconclusive: \"Inconclusive\",\n  indeterminate: \"Indeterminate\",\n  Indeterminate: \"Indeterminate\",\n  invalid: \"Invalid\",\n  Invalid: \"Invalid\",\n  Pass: \"Pass\",\n  pass: \"Pass\",\n  Fail: \"Fail\",\n  Detected: \"Detected\",\n  detected: \"Detected\",\n  NotDetected: \"Not Detected\",\n  notdetected: \"Not Detected\",\n  fail: \"Fail\",\n};\n\nexport const stringConstant = {\n  sequenceNo: CONFIG.isWhiteLabel ? \"Accession No\" : \"Sequence Number\",\n  site: CONFIG.isWhiteLabel ? \"Client\" : \"Site\",\n  sites: CONFIG.isWhiteLabel ? \"Locations\" : \"Sites\",\n  show: CONFIG.isWhiteLabel ? \"Client\" : \"Show\",\n  SafeCamp: CONFIG.isWhiteLabel ? \"List\" : \"SafeCamp\",\n  accession_no: CONFIG.isWhiteLabel ? \"accession_no\" : \"sequenceNo\",\n  barcode: CONFIG.isWhiteLabel ? \"Accession No\" : \"Barocode\",\n};\n\nexport const RESULT_PDF = {\n  positive: \"Detected\",\n  detected: \"Detected\",\n  negative: \"Not Detected\",\n  invalid: \"Invalid\",\n  inconclusive: \"Inconclusive\",\n  indeterminate: \"Indeterminate\",\n};\n\nexport const weekDaysOptions = [\n  { value: \"0\", label: \"Sunday\" },\n  { value: \"1\", label: \"Monday\" },\n  { value: \"2\", label: \"Tuesday\" },\n  { value: \"3\", label: \"Wednesday\" },\n  { value: \"4\", label: \"Thursday\" },\n  { value: \"5\", label: \"Friday\" },\n  { value: \"6\", label: \"Saturday\" },\n];\n\nexport const TestTypeOptions = [\n  { value: \"Antigen\", label: \"Antigen\" },\n  { value: \"Molecular\", label: \"Molecular\" },\n];\n\nexport const TEST_TYPE_Duarations = [\n  { testType: \"PCR\", hours: 495 },\n  { testType: \"Antigen\", hours: 50 },\n  { testType: \"Molecular\", hours: 60 },\n];\nexport const WEEK_DAYS = {\n  0: \"Sunday\",\n  1: \"Monday\",\n  2: \"Tuesday\",\n  3: \"Wednesday\",\n  4: \"Thursday\",\n  5: \"Friday\",\n  6: \"Saturday\",\n};\n\nexport const GEN_TYPE_VALUE = {\n  firstName: \"First\",\n  lastName: \"Last\",\n  phone_number: \"Phone\",\n  email: \"Email\",\n  id_number: \"License\",\n};\nexport const SUPER_ADMIN_ID = [\"cd8826f7-d1a6-446f-be49-1b086c380002\", \"20cafd4b-2671-4854-8389-4f185d60c69b\"];\n\nexport const EXPECTED_QUARANTINE_DAYS = 10;\n\nexport const newRegisterObj = {\n  first: \"\",\n  last: \"\",\n  dob: null,\n  id_number: \"\",\n  street: \"\",\n  city: \"\",\n  state: \"\",\n  phone_number: \"\",\n  sex: \"\",\n  email: \"\",\n  isVaccinated: null,\n  isBooster: null,\n  country: \"United States\",\n  testSend: true,\n  testSendQty: 1,\n  showId: null,\n  capacity: \"Guest\",\n  isExternalTest: \"\",\n  isoCode: \"US\",\n};\n\nexport const TEST_CATEGORY_OPTIONS = [\n  { label: \"Histopathology\", value: \"Histopathology\" },\n  { label: \"Urinalysis\", value: \"Urinalysis\" },\n  { label: \"Urology\", value: \"Urology\" },\n  { label: \"Phlebotomist (PBT)\", value: \"Phlebotomist (PBT)\" },\n  { label: \"Clinical chemistry\", value: \"Clinical chemistry\" },\n  { label: \"Coagulation\", value: \"Coagulation\" },\n  { label: \"Virology\", value: \"Virology\" },\n  { label: \"Respiratory System\", value: \"Respiratory System\" },\n  { label: \"Parasitology\", value: \"Parasitology\" },\n  { label: \"Blood transfusion\", value: \"Blood transfusion\" },\n  { label: \"Microbiology\", value: \"Microbiology\" },\n  { label: \"Respiratory\", value: \"Respiratory\" },\n  { label: \"Respiratory\", value: \"Respiratory\" },\n  { label: \"UTI\", value: \"UTI\" },\n  { label: \"Immunohaematology\", value: \"Immunohaematology\" },\n  { label: \"Cytogenetics\", value: \"Cytogenetics\" },\n  { label: \"Cytology\", value: \"Cytology\" },\n  { label: \"Immunology\", value: \"Immunology\" },\n  { label: \"Toxicology\", value: \"Toxicology\" },\n  { label: \"Cytogenetics\", value: \"Cytogenetics\" },\n  { label: \"Surgical Pathology\", value: \"Surgical Pathology\" },\n  { label: \"Microbiology\", value: \"Microbiology\" },\n  { label: \"Respiratory\", value: \"Respiratory\" },\n  { label: \"Molecular diagnostics\", value: \"Molecular diagnostics\" },\n  { label: \"Urology\", value: \"Urology\" },\n  { label: \"Hematology\", value: \"Hematology\" },\n  { label: \"Dermatology/ Wound care\", value: \"Dermatology/ Wound care\" },\n];\nexport const TESTS_UNITS_SET = [\n  { value: \"mg/dL\", label: \"mg/dL\" },\n  { value: \"g/dL\", label: \"g/dL\" },\n  { value: \"IU/L\", label: \"IU/L\" },\n  { value: \"x10E6/uL\", label: \"x10E6/uL\" },\n  { value: \"%\", label: \"%\" },\n  { value: \"fL\", label: \"fl\" },\n  { value: \"pg\", label: \"pg\" },\n  { value: \"mL/min/1.73\", label: \"mL/min/1.73\" },\n  { value: \"mmol/L\", label: \"mmol/L\" },\n];\n\nexport const TEST_TYPE_OPTIONS = [\n  { value: \"Qualitative\", label: \"Qualitative\" },\n  { value: \"Quantitative\", label: \"Quantitative\" },\n  { value: \"Both\", label: \"Both\" },\n  { value: \"External Source\", label: \"External Source\" },\n];\n\nexport const TEST_TYPE_OPTIONS_ONLY = [\n  { value: \"Qualitative\", label: \"Qualitative\" },\n  { value: \"Quantitative\", label: \"Quantitative\" },\n];\n\nexport const TEST_SOURCE_OPTIONS = [\n  { label: \"Amniotic Fluid\", value: \"Amniotic Fluid\" },\n  { label: \"Blood\", value: \"Blood\" },\n  { label: \"Bone Marrow\", value: \"Bone Marrow\" },\n  { label: \"CSF\", value: \"CSF\" },\n  { label: \"Finger Nail\", value: \"Finger Nail\" },\n  { label: \"Hair\", value: \"Hair\" },\n  { label: \"Mid-turbinate swab\", value: \"Mid-turbinate swab\" },\n  { label: \"Nail\", value: \"Nail\" },\n  { label: \"Nasal\", value: \"Nasal\" },\n  { label: \"Nasopharyngeal Swab\", value: \"Nasopharyngeal Swab\" },\n  { label: \"Oral\", value: \"Oral\" },\n  { label: \"Other Fluids\", value: \"Other Fluids\" },\n  { label: \"Saliva\", value: \"Saliva\" },\n  { label: \"Semen\", value: \"Semen\" },\n  { label: \"Serum\", value: \"Serum\" },\n  { label: \"Serum (preferred)\", value: \"Serum (preferred)\" },\n  { label: \"Stool\", value: \"Stool\" },\n  { label: \"Sweat\", value: \"Sweat\" },\n  { label: \"SW\", value: \"SW\" },\n  { label: \"Swab\", value: \"Swab\" },\n  { label: \"Throat\", value: \"Throat\" },\n  { label: \"Tissue\", value: \"Tissue\" },\n  { label: \"Urine\", value: \"Urine\" },\n  { label: \"Vaginal\", value: \"Vaginal\" },\n  { label: \"Vaginal Swab\", value: \"Vaginal Swab\" },\n  { label: \"Wound\", value: \"Wound\" },\n  { label: \"Wound/Sore\", value: \"Wound/Sore\" },\n];\n\nexport const MESSAGE_SEND_TYPE = [\n  { value: \"E\", label: \"Email\" },\n  { value: \"M\", label: \"Text Message\" },\n];\n\nexport const CANCEL_REASON_OPTIONS = [\n  {\n    value: \"Clotted Sample\",\n    label: \"Clotted Sample\",\n    title: \"Blood samples may clot, which makes certain tests impossible.\",\n  },\n  {\n    value: \"Duplicate Test Order\",\n    label: \"Duplicate Test Order\",\n    title: \"The same test has been ordered more than once, leading to cancellation of the extra order.\",\n  },\n  {\n    value: \"Expired Sample\",\n    label: \"Expired Sample\",\n    title: \"The sample was not tested within the required timeframe, making it unusable.\",\n  },\n  {\n    value: \"Improper Storage\",\n    label: \"Improper Storage\",\n    title: \"The sample was stored or transported incorrectly, affecting its integrity.\",\n  },\n  {\n    value: \"Insurance/Authorization Issue\",\n    label: \"Insurance/Authorization Issue\",\n    title: \"The test cannot proceed due to insurance denial or lack of preauthorization.\",\n  },\n  {\n    value: \"Instrument Failure\",\n    label: \"Instrument Failure\",\n    title: \"Equipment malfunction prevents the test from being performed.\",\n  },\n  {\n    value: \"Other\",\n    label: \"Other\",\n    title: \"Other\",\n  },\n  {\n    value: \"Patient Withdrawal\",\n    label: \"Patient Withdrawal\",\n    title: \"The patient or physician has withdrawn consent for the test.\",\n  },\n  {\n    value: \"Regulatory Issues\",\n    label: \"Regulatory Issues\",\n    title: \"Certain tests may be cancelled due to non-compliance with regulatory guidelines or licensure restrictions.\",\n  },\n  {\n    value: \"Requisition Error\",\n    label: \"Requisition Error\",\n    title:\n      \"The test order contains errors or lacks critical information, such as missing test codes or unclear instructions.\",\n  },\n  {\n    value: \"Sample Contamination\",\n    label: \"Sample Contamination\",\n    title: \"The sample is compromised (e.g., mixed with another substance, exposed to extreme conditions).\",\n  },\n  {\n    value: \"Sample Labelling Error\",\n    label: \"Sample Labelling Error\",\n    title: \"The sample is mislabelled or lacks proper identification (e.g., missing patient ID or date).\",\n  },\n  {\n    value: \"Test Not Indicated\",\n    label: \"Test Not Indicated\",\n    title: \"The test ordered is not appropriate for the patient or diagnosis.\",\n  },\n  {\n    value: \"Incorrect Sample Type\",\n    label: \"Incorrect Sample Type\",\n    title:\n      \"The sample provided does not match the type required for the specific test (e.g., serum instead of plasma).\",\n  },\n  {\n    value: \"Specimen Rejection Criteria\",\n    label: \"Specimen Rejection Criteria\",\n    title:\n      \"The sample does not meet specific laboratory criteria for acceptance, such as haemolysis or incorrect volume.\",\n  },\n];\n\nexport const externalTypesOptions = CONFIG.isWhiteLabel\n  ? [\n      { value: \"1\", label: \"PCR\" },\n      { value: \"2\", label: \"Urine Culture\" },\n      { value: \"3\", label: \"Cystoscopy\" },\n      { value: \"4\", label: \"Urinalysis with Reflex\" },\n      { value: \"5\", label: \"Urinalysis microscopic examination\" },\n      { value: \"6\", label: \"Urinary bladder\" },\n      { value: \"7\", label: \"Proteus vulgaris indole test\" },\n      { value: \"8\", label: \"CBC - W/out Diff\" },\n      { value: \"9\", label: \"CBC With Diff\" },\n      { value: \"10\", label: \"Pelvic exam\" },\n      { value: \"11\", label: \"Rectal exam\" },\n    ]\n  : [\n      { value: \"Molecular\", label: \"Cue\" },\n      { value: \"PCR\", label: \"PCR\" },\n      { value: \"Antigen\", label: \"Antigen\" },\n      { value: \"Other\", label: \"Rapid PCR\" },\n      { value: \"Lucira\", label: \"Lucira\" },\n      { value: \"RapidFlu\", label: \"Rapid Flu\" },\n    ];\n\nexport const TEST_TYPES = CONFIG.isWhiteLabel\n  ? [{ value: \"PCR\", label: \"PCR\" }]\n  : [\n      { value: \"Molecular\", label: \"Molecular\" },\n      { value: \"PCR\", label: \"PCR\" },\n      { value: \"Antigen\", label: \"Antigen\" },\n      { value: \"Rapid PCR\", label: \"Rapid PCR\" },\n      { value: \"Lucira\", label: \"Lucira\" },\n      { value: \"Rapid Flu\", label: \"Rapid Flu\" },\n    ];\n\nexport const PRE_REGISTRATION_TEST_TYPE = [\n  { value: \"Lucira\", label: \"Lucira\" },\n  { value: \"PCR\", label: \"PCR\" },\n  { value: \"Antigen\", label: \"Antigen\" },\n];\n\nexport const DOCUMENT_TYPES_OPT = [\n  { value: \"Authorization Document\", label: \"Authorization\" },\n  { value: \"External Requisition Document\", label: \"External Requisition\" },\n  { value: \"Identification Document\", label: \"Identification\" },\n  { value: \"Insurance Document\", label: \"Insurance\" },\n  { value: \"Prescription Document\", label: \"Prescription\" },\n  { value: \"Other Documents\", label: \"Other Documents\" },\n];\n\nexport const Audit_Parse = {\n  OrderPlaced: \"Order Placed\",\n  OrderShipped: \"Order Shipped\",\n  OrderReturned: \"Order Returned\",\n  OrderOrderReturn: \"Order Returned\",\n  OrderDelivered: \"Order Delivered\",\n  Eligibility: \"Eligibility Checked\",\n  MemberUpdated: \"Member Edited\",\n  MemberCreated: \"New Patient\",\n  SubmitForBill: \"Claim Submitted\",\n  RESubmitForBill: \"Claim Re-Submitted\",\n  ERAUpdate: \"ERA Update\",\n  ClaimDenied: \"Claim Denied\",\n  OrderLimitReset: \"Order Limit Reset\",\n  insuranceStatus: \"Insurance Status\",\n  claimStatus: \"Claim Status\",\n  claimStatusRejected: \"Claim Rejected\",\n  claimRejected: \"Claim Rejected\",\n  ClaimCancelled: \"Claim Cancelled\",\n  ClaimRestored: \"Claim Restored\",\n  ClaimRejected: \"Claim Rejected\",\n  claimApproved: \"Claim Approved\",\n  SendToInsurance: \"Send To Insurance\",\n  SubmissionFailed: \"Submission Failed\",\n  ClaimDenied: \"Claim Denied\",\n  ClaimWriteOff: \"Write Off\",\n  ClaimInvoice: \"Invoice Generated\",\n  InvoiceSent: \"Invoice Sent\",\n  InvoiceCancel: \"Invoice Cancelled\",\n  ClaimPartiallyProcessed: \"Claim Partially Processed\",\n  claimAmountReceived: \"Claim Paid\",\n  claimAmountReturned: \"Claim Returned\",\n  ClaimCreated: \"Claim Created\",\n  ClaimUpdated: \"Claim Updated\",\n  CreatedDocument: \"Document Created\",\n  UpdateDocument: \"Document Updated\",\n  DeletedDocument: \"Document Deleted\",\n  OrderUpdate: \"Order Update\",\n  Note: \"Note\",\n  isAcknowledge: \"Acknowledge\",\n  UpdateStatus: \"Status\",\n  isAssigned: \"Assigned\",\n  ClientUpdated: \"Client Updated\",\n  ClientCreated: \"Client Created\",\n  PayerCreated: \"Payer Created\",\n  PayerUpdated: \"Payer Updated\",\n  ProviderUpdated: \"Provider Updated\",\n  ProviderCreated: \"Provider Created\",\n};\n\nexport const TOTAL_TEST_HEADER = [\"createdAt\", \"firstName\", \"lastName\", \"phoneNumber\", \"email\", \"result\"];\n\nexport const getPreRegistrationLink = (id, location) => {\n  let baseLocation = \"portal\";\n  if (location) {\n    if (location.includes(\"staging\")) {\n      baseLocation = \"staging\";\n    } else if (location.includes(\"test\")) {\n      baseLocation = \"test\";\n    }\n  }\n  return `https://${baseLocation}.safecampmd.com/register/${id}`;\n};\n\nexport const PRE_REGISTRATION_STATUS = {\n  1: \"Test Ordered\",\n  5: \"Pre Registered\",\n};\n\nexport const TEST_ORDER_QTY = [\n  { value: 1, label: 1 },\n  { value: 2, label: 2 },\n  { value: 3, label: 3 },\n  { value: 4, label: 4 },\n  { value: 5, label: 5 },\n  { value: 6, label: 6 },\n  { value: 7, label: 7 },\n  { value: 8, label: 8 },\n  { value: 9, label: 9 },\n  { value: 10, label: 10 },\n];\n\nexport const GENDER_TEXT = {\n  M: \"Male\",\n  F: \"Female\",\n  X: \"Not Specified\",\n  N: \"Non Binary\",\n};\nexport const GENDER_OPTIONS = [\n  { value: \"M\", label: \"Male\" },\n  { value: \"F\", label: \"Female\" },\n  { value: \"X\", label: \"Not Specified\" },\n  { value: \"N\", label: \"Non Binary\" },\n];\n\nexport const FILTER_SHOW_STATUS = [\n  { value: \"1\", label: \"Active\" },\n  { value: \"0\", label: \"Pending\" },\n  { value: \"2\", label: \"Hold\" },\n];\n\nexport const FILTER_TEST_STATUS = [\n  { value: \"Active\", label: \"Active\" },\n  { value: \"Pending\", label: \"Pending\" },\n  { value: \"Hold\", label: \"Hold\" },\n];\n\nexport const TAB_NAMES = {\n  pendingResult: \"Test\",\n  completedResult: \"Test\",\n  orders: \"Order\",\n  patient: \"General\",\n};\n\nexport const ORDER_CANCELLED_RESASON_OPT = [\n  { value: \"COVID positive\", label: \"COVID positive\" },\n  { value: \"Discharged\", label: \"Discharged\" },\n  { value: \"Refused\", label: \"Refused\" },\n  { value: \"Out of Facility\", label: \"Out of Facility\" },\n];\n\nexport const LAB_ORDER_STATUS = {\n  Created: \"1\",\n  Error: \"2\",\n};\n\nexport const DICTIONARY_COLUMNS = [\n  {\n    itemKey: \"label\",\n    title: \"Title\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 0,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n    customCellRenderer: true,\n  },\n  {\n    itemKey: \"value\",\n    title: \"Code\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n\nexport const SOURCE_DICTIONARY_COLUMNS = [\n  {\n    itemKey: \"label\",\n    title: \"Source\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"code\",\n    title: \"Label Code\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n\nexport const INSTRUMENT_PLATFORM_COLUMNS = [\n  {\n    itemKey: \"title\",\n    title: \"Instrument\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"label\",\n    title: \"Platform\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\nexport const SPECIMEN_CONTAINER_COLUMNS = [\n  {\n    itemKey: \"value\",\n    title: \"Name\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"code\",\n    title: \"Type\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n\nexport const CANCELLED_DICTIONARY_COLUMNS = [\n  {\n    itemKey: \"label\",\n    title: \"Label\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"title\",\n    title: \"Title\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\nexport const RESULT_OPTIONS_COLUMNS = [\n  {\n    // itemKey: \"label\",\n    // title: \"Label\",\n    itemKey: \"label\",\n    title: \"Name\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 1,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n  {\n    itemKey: \"code\",\n    title: \"Type\",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"visible\",\n    id: 2,\n    width: \"100%\",\n    type: TABLE_COLUMN_TYPES.text,\n  },\n];\n\nexport const PRE_REG_PERSONALIZE = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Date Created \",\n    textAlign: \"start\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n  },\n  {\n    itemKey: \"first\",\n    title: \"First Name\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    id: 2,\n  },\n  {\n    itemKey: \"last\",\n    title: \"Last Name\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    id: 3,\n  },\n  {\n    itemKey: \"email\",\n    title: \"Email\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n  },\n  {\n    itemKey: \"phone_number\",\n    title: \"Phone Number\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n  },\n  {\n    itemKey: \"sex\",\n    title: \"Gender\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 6,\n  },\n  {\n    itemKey: \"id_number\",\n    title: \"ID Number\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 7,\n  },\n  {\n    itemKey: \"dob\",\n    title: \"Date Of Birth\",\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    isCheck: true,\n    id: 8,\n  },\n  {\n    itemKey: \"street\",\n    title: \"Street\",\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    isCheck: true,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    id: 9,\n  },\n  {\n    itemKey: \"city\",\n    title: \"City\",\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    isCheck: true,\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    id: 10,\n  },\n  {\n    itemKey: \"isVaccinated\",\n    title: \"Vaccinated\",\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    isCheck: true,\n    id: 11,\n  },\n  {\n    itemKey: \"vaccinationType\",\n    title: \"Vaccination Type\",\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    isCheck: true,\n    id: 12,\n  },\n  {\n    itemKey: \"vaccinationDate\",\n    title: \"Vaccination Date\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 13,\n  },\n  {\n    itemKey: \"vaccinationLocation\",\n    title: \"Vaccination Location\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 14,\n  },\n  {\n    itemKey: \"showName\",\n    title: \"Show Name\",\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    isCheck: true,\n    id: 15,\n  },\n  {\n    itemKey: \"testSendQty\",\n    title: \"Order Quantity\",\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    isCheck: true,\n    id: 16,\n  },\n  {\n    itemKey: \"step\",\n    title: \"Status\",\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    isCheck: true,\n    id: 17,\n  },\n  {\n    itemKey: \"orderId\",\n    title: \"SB Order Id\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 18,\n  },\n  {\n    itemKey: \"orderStatus\",\n    title: \"SB Order Status\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 19,\n  },\n  {\n    itemKey: \"isExternalTest\",\n    title: \"External Test\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 20,\n  },\n  {\n    itemKey: \"externalTestType\",\n    title: \"External Test Type\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 21,\n  },\n  {\n    itemKey: \"externalTestDate\",\n    title: \"External Test Date\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 22,\n  },\n  {\n    itemKey: \"externalTestResult\",\n    title: \"External Test Result\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 23,\n  },\n  {\n    itemKey: \"capacity\",\n    title: \"Capacity\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 24,\n  },\n  {\n    itemKey: \"designation\",\n    title: \"Role\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.firstLetterCapital,\n    id: 24,\n  },\n  {\n    itemKey: \"orderKitType\",\n    title: \"Test Type\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 25,\n  },\n  {\n    itemKey: \"testID\",\n    title: \"Test ID\",\n    isCheck: true,\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    id: 26,\n  },\n];\n\nexport const defaultPersonalization = () => {\n  return { preregistration: getPersonalizationIds(\"preregistration\"), employee: getPersonalizationIds(\"employee\") };\n};\n\nexport const EMPS_DROPDOWN_OPTIONS = [\n  { value: \"logs\", title: \"Logs\" },\n  { value: \"delete\", title: \"Delete\" },\n];\n\nexport const ROUTES = [\"preregistration\", \"users\", \"clients\", \"shows\", \"testtypes\"];\n\nexport const PERSONALISATION_KEY = {\n  PRE_REGISTRATION: \"preregistration\",\n  EMPLOYEE: \"employee\",\n  LAB_CLIENT: \"labClient\",\n  INSURANCE: \"insurance\",\n  PROVIDER: \"provider\",\n  PENDING_TEST: \"pendingtest\",\n  COMPLETED_TEST: \"completedtest\",\n  ORDER_PERSONALIZE: \"orderpersonalize\",\n  TEST_DETAILS_DONE: \"testDetailsDone\",\n  TEST_HISTORY: \"testHistory\",\n  PANEL: \"panel\",\n};\n\n// Delivery Courier Company data\nexport const RESULT_CHECK = {\n  inconclusive: \"inconclusive\",\n  invalid: \"invalid\",\n  positive: \"positive\",\n};\n\nexport const PRE_REG_QR_PERSONALIZE = [\n  {\n    itemKey: \"createdAt\",\n    title: \"Date Created \",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 1,\n  },\n  {\n    itemKey: \"first\",\n    title: \"First Name\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    id: 2,\n  },\n  {\n    itemKey: \"last\",\n    title: \"Last Name\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    type: TABLE_COLUMN_TYPES.upperCaseText,\n    id: 3,\n  },\n  {\n    itemKey: \"email\",\n    title: \"Email\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 4,\n  },\n  {\n    itemKey: \"phone_number\",\n    title: \"Phone Number\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 5,\n  },\n  {\n    itemKey: \"dob\",\n    title: \"Date Of Birth\",\n    textAlign: \"centered\",\n    textOverflow: \"none\",\n    isCheck: true,\n    id: 6,\n  },\n  {\n    itemKey: \"id_number\",\n    title: \"ID Number\",\n    textAlign: \"centered\",\n    isCheck: true,\n    textOverflow: \"none\",\n    id: 7,\n  },\n];\n\nexport const DELIVERY_COMPANY = [\n  { value: \"FedEx\", label: \"FedEx\" },\n  // { value: \"USPS\", label: \"USPS\" },\n  { value: \"UPS\", label: \"UPS\" },\n  // { value: \"Blue_Dart\", label: \"Blue Dart\" },\n  { value: \"DHL\", label: \"DHL\" },\n  // { value: \"Central_Courier\", label: \"Central Courier\" },\n  // { value: \"LaserShip\", label: \"LaserShip\" },\n  // { value: \"Aramex\", label: \"Aramex\" },\n  // { value: \"SkyPostal\", label: \"SkyPostal\" },\n];\nexport const DISCLAIMER_TYPE = {\n  DISCLAIMER: \"DISCLAIMER\",\n  ANTIGEN: \"ANTIGEN\",\n  MOLECULAR: \"MOLECULAR\",\n  ACCULA: \"ACCULA\",\n  LUCIRA: \"LUCIRA\",\n  RAPIDFLU: \"RAPIDFLU\",\n  CUSTOM: \"CUSTOM\",\n  INVALIDNOTES: \"INVALIDNOTES\",\n  INDERMINATENOTES: \"INDERMINATENOTES\",\n};\n\nexport const DISCLAIMER_KEYS = {\n  DISCLAIMER: \"testing_notes\",\n  ANTIGEN: \"antigen_notes\",\n  MOLECULAR: \"molecular_notes\",\n  ACCULA: \"other_notes\",\n  LUCIRA: \"lucira_notes\",\n  RAPIDFLU: \"rapidflu_notes\",\n  CUSTOM: \"custom_notes\",\n  INDERMINATENOTES: \"indeterminate_notes\",\n  INVALIDNOTES: \"invalid_notes\",\n};\n\nexport const TEST_TYPE_DISCLAIMER_KEY = {\n  Lucira: \"lucira_notes\",\n  PCR: \"testing_notes\",\n  Rapid_Antigen: \"antigen_notes\",\n  Rapid_PCR: \"other_notes\",\n  Molecular: \"molecular_notes\",\n};\n\nexport const ADDRESS_OPTIONS = {\n  fields: [\"address_components\", \"name\", \"formatted_address\"],\n  strictBounds: false,\n  types: [],\n};\n\nexport const countryListAllIsoData = [\n  { code: \"AF\", code3: \"AFG\", name: \"Afghanistan\", number: \"004\" },\n  { code: \"AL\", code3: \"ALB\", name: \"Albania\", number: \"008\" },\n  { code: \"DZ\", code3: \"DZA\", name: \"Algeria\", number: \"012\" },\n  { code: \"AS\", code3: \"ASM\", name: \"American Samoa\", number: \"016\" },\n  { code: \"AD\", code3: \"AND\", name: \"Andorra\", number: \"020\" },\n  { code: \"AO\", code3: \"AGO\", name: \"Angola\", number: \"024\" },\n  { code: \"AI\", code3: \"AIA\", name: \"Anguilla\", number: \"660\" },\n  { code: \"AQ\", code3: \"ATA\", name: \"Antarctica\", number: \"010\" },\n  { code: \"AG\", code3: \"ATG\", name: \"Antigua and Barbuda\", number: \"028\" },\n  { code: \"AR\", code3: \"ARG\", name: \"Argentina\", number: \"032\" },\n  { code: \"AM\", code3: \"ARM\", name: \"Armenia\", number: \"051\" },\n  { code: \"AW\", code3: \"ABW\", name: \"Aruba\", number: \"533\" },\n  { code: \"AU\", code3: \"AUS\", name: \"Australia\", number: \"036\" },\n  { code: \"AT\", code3: \"AUT\", name: \"Austria\", number: \"040\" },\n  { code: \"AZ\", code3: \"AZE\", name: \"Azerbaijan\", number: \"031\" },\n  { code: \"BS\", code3: \"BHS\", name: \"Bahamas\", number: \"044\" },\n  { code: \"BH\", code3: \"BHR\", name: \"Bahrain\", number: \"048\" },\n  { code: \"BD\", code3: \"BGD\", name: \"Bangladesh\", number: \"050\" },\n  { code: \"BB\", code3: \"BRB\", name: \"Barbados\", number: \"052\" },\n  { code: \"BY\", code3: \"BLR\", name: \"Belarus\", number: \"112\" },\n  { code: \"BE\", code3: \"BEL\", name: \"Belgium\", number: \"056\" },\n  { code: \"BZ\", code3: \"BLZ\", name: \"Belize\", number: \"084\" },\n  { code: \"BJ\", code3: \"BEN\", name: \"Benin\", number: \"204\" },\n  { code: \"BM\", code3: \"BMU\", name: \"Bermuda\", number: \"060\" },\n  { code: \"BT\", code3: \"BTN\", name: \"Bhutan\", number: \"064\" },\n  { code: \"BO\", code3: \"BOL\", name: \"Bolivia\", number: \"068\" },\n  { code: \"BQ\", code3: \"BES\", name: \"Bonaire, Sint Eustatius and Saba\", number: \"535\" },\n  { code: \"BA\", code3: \"BIH\", name: \"Bosnia and Herzegovina\", number: \"070\" },\n  { code: \"BW\", code3: \"BWA\", name: \"Botswana\", number: \"072\" },\n  { code: \"BV\", code3: \"BVT\", name: \"Bouvet Island\", number: \"074\" },\n  { code: \"BR\", code3: \"BRA\", name: \"Brazil\", number: \"076\" },\n  { code: \"IO\", code3: \"IOT\", name: \"British Indian Ocean Territory\", number: \"086\" },\n  { code: \"BN\", code3: \"BRN\", name: \"Brunei Darussalam\", number: \"096\" },\n  { code: \"BG\", code3: \"BGR\", name: \"Bulgaria\", number: \"100\" },\n  { code: \"BF\", code3: \"BFA\", name: \"Burkina Faso\", number: \"854\" },\n  { code: \"BI\", code3: \"BDI\", name: \"Burundi\", number: \"108\" },\n  { code: \"CV\", code3: \"CPV\", name: \"Cabo Verde\", number: \"132\" },\n  { code: \"KH\", code3: \"KHM\", name: \"Cambodia\", number: \"116\" },\n  { code: \"CM\", code3: \"CMR\", name: \"Cameroon\", number: \"120\" },\n  { code: \"CA\", code3: \"CAN\", name: \"Canada\", number: \"124\" },\n  { code: \"KY\", code3: \"CYM\", name: \"Cayman Islands\", number: \"136\" },\n  { code: \"CF\", code3: \"CAF\", name: \"Central African Republic\", number: \"140\" },\n  { code: \"TD\", code3: \"TCD\", name: \"Chad\", number: \"148\" },\n  { code: \"CL\", code3: \"CHL\", name: \"Chile\", number: \"152\" },\n  { code: \"CN\", code3: \"CHN\", name: \"China\", number: \"156\" },\n  { code: \"CX\", code3: \"CXR\", name: \"Christmas Island\", number: \"162\" },\n  { code: \"CC\", code3: \"CCK\", name: \"Cocos (Keeling) Islands\", number: \"166\" },\n  { code: \"CO\", code3: \"COL\", name: \"Colombia\", number: \"170\" },\n  { code: \"KM\", code3: \"COM\", name: \"Comoros\", number: \"174\" },\n  { code: \"CD\", code3: \"COD\", name: \"Congo, The Democratic Republic of the\", number: \"180\" },\n  { code: \"CG\", code3: \"COG\", name: \"Congo\", number: \"178\" },\n  { code: \"CK\", code3: \"COK\", name: \"Cook Islands\", number: \"184\" },\n  { code: \"CR\", code3: \"CRI\", name: \"Costa Rica\", number: \"188\" },\n  { code: \"HR\", code3: \"HRV\", name: \"Croatia\", number: \"191\" },\n  { code: \"CU\", code3: \"CUB\", name: \"Cuba\", number: \"192\" },\n  { code: \"CW\", code3: \"CUW\", name: \"Curaçao\", number: \"531\" },\n  { code: \"CY\", code3: \"CYP\", name: \"Cyprus\", number: \"196\" },\n  { code: \"CZ\", code3: \"CZE\", name: \"Czechia\", number: \"203\" },\n  { code: \"CI\", code3: \"CIV\", name: \"Côte d'Ivoire\", number: \"384\" },\n  { code: \"DK\", code3: \"DNK\", name: \"Denmark\", number: \"208\" },\n  { code: \"DJ\", code3: \"DJI\", name: \"Djibouti\", number: \"262\" },\n  { code: \"DM\", code3: \"DMA\", name: \"Dominica\", number: \"212\" },\n  { code: \"DO\", code3: \"DOM\", name: \"Dominican Republic\", number: \"214\" },\n  { code: \"EC\", code3: \"ECU\", name: \"Ecuador\", number: \"218\" },\n  { code: \"EG\", code3: \"EGY\", name: \"Egypt\", number: \"818\" },\n  { code: \"SV\", code3: \"SLV\", name: \"El Salvador\", number: \"222\" },\n  { code: \"GQ\", code3: \"GNQ\", name: \"Equatorial Guinea\", number: \"226\" },\n  { code: \"ER\", code3: \"ERI\", name: \"Eritrea\", number: \"232\" },\n  { code: \"EE\", code3: \"EST\", name: \"Estonia\", number: \"233\" },\n  { code: \"SZ\", code3: \"SWZ\", name: \"Eswatini\", number: \"748\" },\n  { code: \"ET\", code3: \"ETH\", name: \"Ethiopia\", number: \"231\" },\n  { code: \"FK\", code3: \"FLK\", name: \"Falkland Islands (Malvinas)\", number: \"238\" },\n  { code: \"FO\", code3: \"FRO\", name: \"Faroe Islands\", number: \"234\" },\n  { code: \"FJ\", code3: \"FJI\", name: \"Fiji\", number: \"242\" },\n  { code: \"FI\", code3: \"FIN\", name: \"Finland\", number: \"246\" },\n  { code: \"FR\", code3: \"FRA\", name: \"France\", number: \"250\" },\n  { code: \"GF\", code3: \"GUF\", name: \"French Guiana\", number: \"254\" },\n  { code: \"PF\", code3: \"PYF\", name: \"French Polynesia\", number: \"258\" },\n  { code: \"TF\", code3: \"ATF\", name: \"French Southern Territories\", number: \"260\" },\n  { code: \"GA\", code3: \"GAB\", name: \"Gabon\", number: \"266\" },\n  { code: \"GM\", code3: \"GMB\", name: \"Gambia\", number: \"270\" },\n  { code: \"GE\", code3: \"GEO\", name: \"Georgia\", number: \"268\" },\n  { code: \"DE\", code3: \"DEU\", name: \"Germany\", number: \"276\" },\n  { code: \"GH\", code3: \"GHA\", name: \"Ghana\", number: \"288\" },\n  { code: \"GI\", code3: \"GIB\", name: \"Gibraltar\", number: \"292\" },\n  { code: \"GR\", code3: \"GRC\", name: \"Greece\", number: \"300\" },\n  { code: \"GL\", code3: \"GRL\", name: \"Greenland\", number: \"304\" },\n  { code: \"GD\", code3: \"GRD\", name: \"Grenada\", number: \"308\" },\n  { code: \"GP\", code3: \"GLP\", name: \"Guadeloupe\", number: \"312\" },\n  { code: \"GU\", code3: \"GUM\", name: \"Guam\", number: \"316\" },\n  { code: \"GT\", code3: \"GTM\", name: \"Guatemala\", number: \"320\" },\n  { code: \"GG\", code3: \"GGY\", name: \"Guernsey\", number: \"831\" },\n  { code: \"GN\", code3: \"GIN\", name: \"Guinea\", number: \"324\" },\n  { code: \"GW\", code3: \"GNB\", name: \"Guinea-Bissau\", number: \"624\" },\n  { code: \"GY\", code3: \"GUY\", name: \"Guyana\", number: \"328\" },\n  { code: \"HT\", code3: \"HTI\", name: \"Haiti\", number: \"332\" },\n  { code: \"HM\", code3: \"HMD\", name: \"Heard Island and McDonald Islands\", number: \"334\" },\n  { code: \"VA\", code3: \"VAT\", name: \"Holy See (Vatican City State)\", number: \"336\" },\n  { code: \"HN\", code3: \"HND\", name: \"Honduras\", number: \"340\" },\n  { code: \"HK\", code3: \"HKG\", name: \"Hong Kong\", number: \"344\" },\n  { code: \"HU\", code3: \"HUN\", name: \"Hungary\", number: \"348\" },\n  { code: \"IS\", code3: \"ISL\", name: \"Iceland\", number: \"352\" },\n  { code: \"IN\", code3: \"IND\", name: \"India\", number: \"356\" },\n  { code: \"ID\", code3: \"IDN\", name: \"Indonesia\", number: \"360\" },\n  { code: \"IR\", code3: \"IRN\", name: \"Iran, Islamic Republic Of\", number: \"364\" },\n  { code: \"IQ\", code3: \"IRQ\", name: \"Iraq\", number: \"368\" },\n  { code: \"IE\", code3: \"IRL\", name: \"Ireland\", number: \"372\" },\n  { code: \"IM\", code3: \"IMN\", name: \"Isle of Man\", number: \"833\" },\n  { code: \"IL\", code3: \"ISR\", name: \"Israel\", number: \"376\" },\n  { code: \"IT\", code3: \"ITA\", name: \"Italy\", number: \"380\" },\n  { code: \"JM\", code3: \"JAM\", name: \"Jamaica\", number: \"388\" },\n  { code: \"JP\", code3: \"JPN\", name: \"Japan\", number: \"392\" },\n  { code: \"JE\", code3: \"JEY\", name: \"Jersey\", number: \"832\" },\n  { code: \"JO\", code3: \"JOR\", name: \"Jordan\", number: \"400\" },\n  { code: \"KZ\", code3: \"KAZ\", name: \"Kazakhstan\", number: \"398\" },\n  { code: \"KE\", code3: \"KEN\", name: \"Kenya\", number: \"404\" },\n  { code: \"KI\", code3: \"KIR\", name: \"Kiribati\", number: \"296\" },\n  { code: \"KP\", code3: \"PRK\", name: \"Korea, Democratic People's Republic of\", number: \"408\" },\n  { code: \"KR\", code3: \"KOR\", name: \"Korea, Republic of\", number: \"410\" },\n  { code: \"KW\", code3: \"KWT\", name: \"Kuwait\", number: \"414\" },\n  { code: \"KG\", code3: \"KGZ\", name: \"Kyrgyzstan\", number: \"417\" },\n  { code: \"LA\", code3: \"LAO\", name: \"Lao People's Democratic Republic\", number: \"418\" },\n  { code: \"LV\", code3: \"LVA\", name: \"Latvia\", number: \"428\" },\n  { code: \"LB\", code3: \"LBN\", name: \"Lebanon\", number: \"422\" },\n  { code: \"LS\", code3: \"LSO\", name: \"Lesotho\", number: \"426\" },\n  { code: \"LR\", code3: \"LBR\", name: \"Liberia\", number: \"430\" },\n  { code: \"LY\", code3: \"LBY\", name: \"Libya\", number: \"434\" },\n  { code: \"LI\", code3: \"LIE\", name: \"Liechtenstein\", number: \"438\" },\n  { code: \"LT\", code3: \"LTU\", name: \"Lithuania\", number: \"440\" },\n  { code: \"LU\", code3: \"LUX\", name: \"Luxembourg\", number: \"442\" },\n  { code: \"MO\", code3: \"MAC\", name: \"Macao\", number: \"446\" },\n  { code: \"MG\", code3: \"MDG\", name: \"Madagascar\", number: \"450\" },\n  { code: \"MW\", code3: \"MWI\", name: \"Malawi\", number: \"454\" },\n  { code: \"MY\", code3: \"MYS\", name: \"Malaysia\", number: \"458\" },\n  { code: \"MV\", code3: \"MDV\", name: \"Maldives\", number: \"462\" },\n  { code: \"ML\", code3: \"MLI\", name: \"Mali\", number: \"466\" },\n  { code: \"MT\", code3: \"MLT\", name: \"Malta\", number: \"470\" },\n  { code: \"MH\", code3: \"MHL\", name: \"Marshall Islands\", number: \"584\" },\n  { code: \"MQ\", code3: \"MTQ\", name: \"Martinique\", number: \"474\" },\n  { code: \"MR\", code3: \"MRT\", name: \"Mauritania\", number: \"478\" },\n  { code: \"MU\", code3: \"MUS\", name: \"Mauritius\", number: \"480\" },\n  { code: \"YT\", code3: \"MYT\", name: \"Mayotte\", number: \"175\" },\n  { code: \"MX\", code3: \"MEX\", name: \"Mexico\", number: \"484\" },\n  { code: \"FM\", code3: \"FSM\", name: \"Micronesia, Federated States of\", number: \"583\" },\n  { code: \"MD\", code3: \"MDA\", name: \"Moldova, Republic of\", number: \"498\" },\n  { code: \"MC\", code3: \"MCO\", name: \"Monaco\", number: \"492\" },\n  { code: \"MN\", code3: \"MNG\", name: \"Mongolia\", number: \"496\" },\n  { code: \"ME\", code3: \"MNE\", name: \"Montenegro\", number: \"499\" },\n  { code: \"MS\", code3: \"MSR\", name: \"Montserrat\", number: \"500\" },\n  { code: \"MA\", code3: \"MAR\", name: \"Morocco\", number: \"504\" },\n  { code: \"MZ\", code3: \"MOZ\", name: \"Mozambique\", number: \"508\" },\n  { code: \"MM\", code3: \"MMR\", name: \"Myanmar\", number: \"104\" },\n  { code: \"NA\", code3: \"NAM\", name: \"Namibia\", number: \"516\" },\n  { code: \"NR\", code3: \"NRU\", name: \"Nauru\", number: \"520\" },\n  { code: \"NP\", code3: \"NPL\", name: \"Nepal\", number: \"524\" },\n  { code: \"NL\", code3: \"NLD\", name: \"Netherlands\", number: \"528\" },\n  { code: \"NC\", code3: \"NCL\", name: \"New Caledonia\", number: \"540\" },\n  { code: \"NZ\", code3: \"NZL\", name: \"New Zealand\", number: \"554\" },\n  { code: \"NI\", code3: \"NIC\", name: \"Nicaragua\", number: \"558\" },\n  { code: \"NE\", code3: \"NER\", name: \"Niger\", number: \"562\" },\n  { code: \"NG\", code3: \"NGA\", name: \"Nigeria\", number: \"566\" },\n  { code: \"NU\", code3: \"NIU\", name: \"Niue\", number: \"570\" },\n  { code: \"NF\", code3: \"NFK\", name: \"Norfolk Island\", number: \"574\" },\n  { code: \"MP\", code3: \"MNP\", name: \"Northern Mariana Islands\", number: \"580\" },\n  { code: \"NO\", code3: \"NOR\", name: \"Norway\", number: \"578\" },\n  { code: \"OM\", code3: \"OMN\", name: \"Oman\", number: \"512\" },\n  { code: \"PK\", code3: \"PAK\", name: \"Pakistan\", number: \"586\" },\n  { code: \"PW\", code3: \"PLW\", name: \"Palau\", number: \"585\" },\n  { code: \"PS\", code3: \"PSE\", name: \"Palestinian Territory, Occupied\", number: \"275\" },\n  { code: \"PA\", code3: \"PAN\", name: \"Panama\", number: \"591\" },\n  { code: \"PG\", code3: \"PNG\", name: \"Papua New Guinea\", number: \"598\" },\n  { code: \"PY\", code3: \"PRY\", name: \"Paraguay\", number: \"600\" },\n  { code: \"PE\", code3: \"PER\", name: \"Peru\", number: \"604\" },\n  { code: \"PH\", code3: \"PHL\", name: \"Philippines\", number: \"608\" },\n  { code: \"PN\", code3: \"PCN\", name: \"Pitcairn\", number: \"612\" },\n  { code: \"PL\", code3: \"POL\", name: \"Poland\", number: \"616\" },\n  { code: \"PT\", code3: \"PRT\", name: \"Portugal\", number: \"620\" },\n  { code: \"PR\", code3: \"PRI\", name: \"Puerto Rico\", number: \"630\" },\n  { code: \"QA\", code3: \"QAT\", name: \"Qatar\", number: \"634\" },\n  { code: \"MK\", code3: \"MKD\", name: \"Macedonia, The Former Yugoslav Republic of\", number: \"807\" },\n  { code: \"RO\", code3: \"ROU\", name: \"Romania\", number: \"642\" },\n  { code: \"RU\", code3: \"RUS\", name: \"Russian Federation\", number: \"643\" },\n  { code: \"RW\", code3: \"RWA\", name: \"Rwanda\", number: \"646\" },\n  { code: \"RE\", code3: \"REU\", name: \"Reunion\", number: \"638\" },\n  { code: \"BL\", code3: \"BLM\", name: \"Saint Barthélemy\", number: \"652\" },\n  { code: \"SH\", code3: \"SHN\", name: \"Saint Helena\", number: \"654\" },\n  { code: \"KN\", code3: \"KNA\", name: \"Saint Kitts and Nevis\", number: \"659\" },\n  { code: \"LC\", code3: \"LCA\", name: \"Saint Lucia\", number: \"662\" },\n  { code: \"MF\", code3: \"MAF\", name: \"Saint Martin (French part)\", number: \"663\" },\n  { code: \"PM\", code3: \"SPM\", name: \"Saint Pierre and Miquelon\", number: \"666\" },\n  { code: \"VC\", code3: \"VCT\", name: \"Saint Vincent and the Grenadines\", number: \"670\" },\n  { code: \"WS\", code3: \"WSM\", name: \"Samoa\", number: \"882\" },\n  { code: \"SM\", code3: \"SMR\", name: \"San Marino\", number: \"674\" },\n  { code: \"ST\", code3: \"STP\", name: \"Sao Tome and Principe\", number: \"678\" },\n  { code: \"SA\", code3: \"SAU\", name: \"Saudi Arabia\", number: \"682\" },\n  { code: \"SN\", code3: \"SEN\", name: \"Senegal\", number: \"686\" },\n  { code: \"RS\", code3: \"SRB\", name: \"Serbia\", number: \"688\" },\n  { code: \"SC\", code3: \"SYC\", name: \"Seychelles\", number: \"690\" },\n  { code: \"SL\", code3: \"SLE\", name: \"Sierra Leone\", number: \"694\" },\n  { code: \"SG\", code3: \"SGP\", name: \"Singapore\", number: \"702\" },\n  { code: \"SX\", code3: \"SXM\", name: \"Sint Maarten (Dutch part)\", number: \"534\" },\n  { code: \"SK\", code3: \"SVK\", name: \"Slovakia\", number: \"703\" },\n  { code: \"SI\", code3: \"SVN\", name: \"Slovenia\", number: \"705\" },\n  { code: \"SB\", code3: \"SLB\", name: \"Solomon Islands\", number: \"090\" },\n  { code: \"SO\", code3: \"SOM\", name: \"Somalia\", number: \"706\" },\n  { code: \"ZA\", code3: \"ZAF\", name: \"South Africa\", number: \"710\" },\n  { code: \"GS\", code3: \"SGS\", name: \"South Georgia and the South Sandwich Islands\", number: \"239\" },\n  { code: \"SS\", code3: \"SSD\", name: \"South Sudan\", number: \"728\" },\n  { code: \"ES\", code3: \"ESP\", name: \"Spain\", number: \"724\" },\n  { code: \"LK\", code3: \"LKA\", name: \"Sri Lanka\", number: \"144\" },\n  { code: \"SD\", code3: \"SDN\", name: \"Sudan\", number: \"729\" },\n  { code: \"SR\", code3: \"SUR\", name: \"Suriname\", number: \"740\" },\n  { code: \"SJ\", code3: \"SJM\", name: \"Svalbard and Jan Mayen\", number: \"744\" },\n  { code: \"SE\", code3: \"SWE\", name: \"Sweden\", number: \"752\" },\n  { code: \"CH\", code3: \"CHE\", name: \"Switzerland\", number: \"756\" },\n  { code: \"SY\", code3: \"SYR\", name: \"Syrian Arab Republic\", number: \"760\" },\n  { code: \"TW\", code3: \"TWN\", name: \"Taiwan\", number: \"158\" },\n  { code: \"TJ\", code3: \"TJK\", name: \"Tajikistan\", number: \"762\" },\n  { code: \"TZ\", code3: \"TZA\", name: \"Tanzania, United Republic of\", number: \"834\" },\n  { code: \"TH\", code3: \"THA\", name: \"Thailand\", number: \"764\" },\n  { code: \"TL\", code3: \"TLS\", name: \"Timor-Leste\", number: \"626\" },\n  { code: \"TG\", code3: \"TGO\", name: \"Togo\", number: \"768\" },\n  { code: \"TK\", code3: \"TKL\", name: \"Tokelau\", number: \"772\" },\n  { code: \"TO\", code3: \"TON\", name: \"Tonga\", number: \"776\" },\n  { code: \"TT\", code3: \"TTO\", name: \"Trinidad and Tobago\", number: \"780\" },\n  { code: \"TN\", code3: \"TUN\", name: \"Tunisia\", number: \"788\" },\n  { code: \"TR\", code3: \"TUR\", name: \"Turkey\", number: \"792\" },\n  { code: \"TM\", code3: \"TKM\", name: \"Turkmenistan\", number: \"795\" },\n  { code: \"TC\", code3: \"TCA\", name: \"Turks and Caicos Islands\", number: \"796\" },\n  { code: \"TV\", code3: \"TUV\", name: \"Tuvalu\", number: \"798\" },\n  { code: \"UG\", code3: \"UGA\", name: \"Uganda\", number: \"800\" },\n  { code: \"UA\", code3: \"UKR\", name: \"Ukraine\", number: \"804\" },\n  { code: \"AE\", code3: \"ARE\", name: \"United Arab Emirates\", number: \"784\" },\n  { code: \"GB\", code3: \"GBR\", name: \"United Kingdom\", number: \"826\" },\n  { code: \"UM\", code3: \"UMI\", name: \"United States Minor Outlying Islands\", number: \"581\" },\n  { code: \"US\", code3: \"USA\", name: \"United States\", number: \"840\" },\n  { code: \"UY\", code3: \"URY\", name: \"Uruguay\", number: \"858\" },\n  { code: \"UZ\", code3: \"UZB\", name: \"Uzbekistan\", number: \"860\" },\n  { code: \"VU\", code3: \"VUT\", name: \"Vanuatu\", number: \"548\" },\n  { code: \"VE\", code3: \"VEN\", name: \"Venezuela\", number: \"862\" },\n  { code: \"VN\", code3: \"VNM\", name: \"Vietnam\", number: \"704\" },\n  { code: \"VG\", code3: \"VGB\", name: \"Virgin Islands, British\", number: \"092\" },\n  { code: \"VI\", code3: \"VIR\", name: \"Virgin Islands, U.S.\", number: \"850\" },\n  { code: \"WF\", code3: \"WLF\", name: \"Wallis and Futuna\", number: \"876\" },\n  { code: \"EH\", code3: \"ESH\", name: \"Western Sahara\", number: \"732\" },\n  { code: \"YE\", code3: \"YEM\", name: \"Yemen\", number: \"887\" },\n  { code: \"ZM\", code3: \"ZMB\", name: \"Zambia\", number: \"894\" },\n  { code: \"ZW\", code3: \"ZWE\", name: \"Zimbabwe\", number: \"716\" },\n  { code: \"AX\", code3: \"ALA\", name: \"Åland Islands\", number: \"248\" },\n];\n\nexport const TEST_EMPTY_OBJECT = {\n  employee_demographics: {\n    email: \"\",\n    firstName: \"\",\n    lastName: \"\",\n    dob: \"\",\n    phoneNumber: \"+1\",\n    address: \"\",\n    employeeType: \"Staff\",\n    isVaccinated: false,\n    whiteGlove: false,\n    isoCode: \"US\",\n    city: \"\",\n    country: \"\",\n    state: \"\",\n    street: \"\",\n    street2: \"\",\n    zip: \"\",\n    isLucira: false,\n    sex: \"\",\n    testerDes: \"\",\n    idNumber: \"\",\n  },\n  createdAt: \"\",\n  result: null,\n  sequenceNo: \"\",\n  clientID: \"\",\n  clientName: \"\",\n  siteID: \"\",\n  site_name: \"\",\n  labID: \"\",\n  labName: \"\",\n  test_type: \"PCR\",\n  isLucira: false,\n  emailSend: false,\n  isFalsePositive: false,\n  phoneNumber: \"\",\n  email: \"\",\n  employeeID: \"\",\n  status: \"Pending\",\n  result: \"No Result\",\n  testerPhone: \"\",\n  tester_name: \"\",\n  releaseDate: \"\",\n};\n\nexport const ORDER_EMPTY_OBJECT = {\n  employee_demographics: {\n    email: \"\",\n    firstName: \"\",\n    lastName: \"\",\n    dob: \"\",\n    phoneNumber: \"+1\",\n    address: \"\",\n    isoCode: \"US\",\n    city: \"\",\n    country: \"\",\n    state: \"\",\n    street: \"\",\n    street2: \"\",\n    zip: \"\",\n    sex: \"\",\n    idNumber: \"\",\n  },\n  createdAt: \"\",\n  result: null,\n  sequenceNo: \"\",\n  clientID: \"\",\n  clientName: \"\",\n  siteID: \"\",\n  site_name: \"\",\n  test_type: \"PCR\",\n  isNew: true,\n  phoneNumber: \"\",\n  email: \"\",\n  employeeID: \"\",\n  status: \"Pending\",\n  testerPhone: \"\",\n  tester_name: \"\",\n};\n\nexport const TRANSITION_STATUS_OPT = [\n  { value: \"Accepted\", label: \"Accepted\" },\n  { value: \"In-transit\", label: \"In-transit\" },\n  { value: \"Pending\", label: \"Pending\" },\n];\n\nexport const GRAPH_COLOR_VALUES = [\n  \"rgb(72, 139, 194)\",\n  \"rgb(96, 79, 951)\",\n  \"rgb(139, 12, 129)\",\n  \"rgb(199, 18, 140)\",\n  \"rgb(159, 190, 87)\",\n  \"rgb(210, 179, 63)\",\n  \"rgb(131, 126, 49)\",\n  \"rgb(417, 33, 93)\",\n  \"rgb(210, 99, 12)\",\n  \"rgb(174, 91, 12)\",\n  \"rgb(227, 18, 23)\",\n  \"rgb(217, 33, 62)\",\n  \"rgb(217, 163, 152)\",\n  \"rgb(120, 28, 129)\",\n  \"rgba(255, 99, 132, 200)\",\n  \"rgba(54, 162, 235, 400)\",\n  \"rgba(255, 206, 86, 300)\",\n  \"rgba(75, 192, 192, 15)\",\n  \"rgba(153, 102, 255, 76)\",\n  \"rgba(255, 159, 64, 912)\",\n  \"rgb(64, 67, 153)\",\n  \"rgb(72, 139, 194)\",\n  \"rgb(107, 178, 140)\",\n  \"rgb(159, 190, 87)\",\n  \"rgb(210, 179, 63)\",\n  \"rgb(231, 126, 49)\",\n  \"rgb(217, 33, 23)\",\n  \"rgb(210, 33, 12)\",\n  \"rgb(117, 13, 12)\",\n  \"rgb(227, 18, 23)\",\n  \"rgb(217, 33, 62)\",\n  \"rgb(713, 23,534)\",\n  \"rgb(545, 234, 341)\",\n  \"rgb(570, 8, 42)\",\n  \"rgb(171, 65, 34)\",\n  \"rgb(874, 28, 21)\",\n  \"rgb(172, 13, 19)\",\n  \"rgb(324, 45, 43)\",\n  \"rgb(435, 23, 84)\",\n  \"rgb(143, 67, 98)\",\n  \"rgb(317, 23, 32)\",\n  \"rgb(117, 73, 82)\",\n  \"rgb(181, 128, 229)\",\n  \"rgb(112, 108, 149)\",\n  \"rgb(132, 112, 987)\",\n  \"rgb(190, 198, 876)\",\n  \"rgb(100, 280, 290)\",\n  \"rgb(145, 182, 312)\",\n  \"rgb(900, 432, 672)\",\n  \"rgb(233, 984, 111)\",\n  \"rgb(340,190, 789)\",\n  \"rgb(353, 176, 349)\",\n  \"rgb(654, 532, 785)\",\n  \"rgb(384, 763, 346)\",\n  \"rgb(263, 943, 439)\",\n  \"rgb(893, 675, 653)\",\n];\n\nexport const GRAPH_WEEKDAYS_LABELS = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const sliderSettings = [\n  {\n    // breakpoint: 1366,\n    settings: {\n      loop: false,\n      autoPlay: true,\n      infinite: false,\n      speed: 500,\n    },\n  },\n];\n\nexport const LAB_ADMIN_ROLE = [\"Admin\", \"Client\", \"Lab\"];\n\nexport const ADMIN_USER = [\"+18888888888\", \"+12222222222\", \"+18322958840\"];\n\nexport const EDIT_PERMISSION_ROLE = [\"Admins\", \"Labs\", \"LabTechs\", \"LabTech\", \"Lab\"];\n\nexport const RESULT_SETTINGS_OPT = [\n  { value: \"Inconclusive\", label: \"Inconclusive\" },\n  { value: \"Invalid\", label: \"Invalid\" },\n  { value: \"Indeterminate\", label: \"Indeterminate\" },\n  { value: \"Detected\", label: \"Detected\" },\n  { value: \"Not Detected\", label: \"Not Detected\" },\n];\nexport const RESULT_SETTINGS_OPT_QUALITATIVE = [\n  { value: \"Invalid\", label: \"Invalid\" },\n  { value: \"Indeterminate\", label: \"Indeterminate\" },\n  { value: \"Detected\", label: \"Detected\" },\n  { value: \"Not Detected\", label: \"Not Detected\" },\n];\nexport const PANEL_QUESTION_ANSWERS_OPTIONS = [\n  { value: \"radio\", label: \"Yes / No\" },\n  { value: \"dropdown\", label: \"Dropdown Options\" },\n  { value: \"input\", label: \"Text Input\" },\n];\n\nexport const NOT_INC_KEYS = [\n  \"updatedBy\",\n  \"updatedByName\",\n  \"_version\",\n  \"employee_demographics\",\n  \"updatedAt\",\n  \"clientID\",\n  \"siteID\",\n  \"labID\",\n  \"createdBy\",\n  \"barcode\",\n  \"status\",\n  \"submittedBy\",\n  \"submittedByName\",\n  \"StampBy\",\n  \"StampByName\",\n  \"emailSend\",\n  \"resultDate\",\n  \"resultDate\",\n  \"resultDateTime\",\n  \"labelPrinted\",\n  \"insuranceDetails\",\n  \"scanByTesterID\",\n  \"scanByTesterName\",\n  \"scanByLabUserID\",\n  \"scanByLabUserName\",\n];\n\nexport const TEST_KEYS_PARSE = {\n  id: \"ID\",\n  first: \"First Name\",\n  last: \"Last Name\",\n  firstName: \"First Name\",\n  lastName: \"Last Name\",\n  email: \"Email\",\n  dob: \"DateOfBirth\",\n  phoneNumber: \"Phone\",\n  clientID: \"Client\",\n  siteID: \"Show\",\n  site_name: \"Show\",\n  labID: \"Lab\",\n  status: \"Status\",\n  result: \"Result\",\n  test_type: \"Test Type\",\n  reason: \"Reason\",\n  sequenceNo: \"Sequence\",\n  tester_name: \"Tester\",\n  emailSend: \"Result Sent\",\n  updatedAt: \"Date Processed\",\n  createdAt: \"Date Collected\",\n  resultDate: \"Date Processed\",\n  batch: \"Date Tested\",\n  validUntil: \"Valid Until\",\n  isQuarantined: \"Quarantined\",\n  show: \"Show\",\n  resultDates: \"Last Positive Test Date\",\n  quarantinedStart: \"Expected End Date\",\n  daysCount: \"Days Count\",\n  hippaConsent: \"Hippa Consent\",\n  referenceID: \"ReferenceID\",\n  accession_no: \"Accession No\",\n  phone_number: \"Phone\",\n  sex: \"Gender\",\n  id_number: \"ID Number\",\n  street: \"Street\",\n  city: \"City\",\n  showName: \"Show Name\",\n  testSendQty: \"Send Quantity\",\n  isVaccinated: \"Vaccinated\",\n  vaccinationType: \"Vaccination Type\",\n  vaccinationDate: \"Vaccination Date\",\n  isFalsePositive: \"isFalsePositive\",\n  isExternalTest: \"External Test\",\n  externalTestType: \"External Test Type\",\n  externalTestDate: \"External Test Date\",\n  externalTestResult: \"External Test Resut\",\n  step: \"Status\",\n  orderStatus: \"Order Status\",\n  barcode: \"Barcode\",\n  employeeType: \"Employee Type\",\n  capcity: \"Capacity\",\n  designation: \"Designation\",\n  whiteGlove: \"White Glove\",\n  patternTestAnswer: \"Pattern Test\",\n};\n\nexport let IR_COLUMN_INDEX = {\n  Well: 0,\n  Fluor: 1,\n  Target: 2,\n  Content: 3,\n  Sample: 4,\n  Cq: 5,\n  Call: 6,\n};\n\nexport const RESULTS_COLOR = {\n  positive: \"red\",\n  negative: \"black\",\n  invalid: \"red\",\n  inconclusive: \"red\",\n  indeterminate: \"red\",\n  detected: \"red\",\n};\n\nexport const SYMPTOMS = {\n  nasal: \"nasal\",\n  oral: \"oral\",\n  yes: \"yes\",\n  no: \"no\",\n  fever: \"FEVER / CHILLS\",\n  cough: \"COUGH\",\n  headache: \"HEADACHE\",\n  fatigue: \"FATIGUE\",\n  soreThroat: \"SORE THROAT\",\n  diarrhea: \"DIARRHEA\",\n  shortnessOfBreath: \"SHORTNESS OF BREATH\",\n  muscelBodyAches: \"MUSCLE / BODY ACHES\",\n  lossOfTaste: \"NEW LOSS OF TASTE / SMELL\",\n  congestion: \"CONGESTION / RUNNY NOSE\",\n  nausea: \"NAUSEA / VOMITING\",\n  noSymptoms: \"NO SYMPTOMS / ASYMPTOMATIC\",\n  other: \"OTHER\",\n};\n\nexport const EXPORT_TO_CALREDIE = {\n  patient_id: \"\",\n  patient_last_name: \"\",\n  patient_first_name: \"\",\n  patient_middle_name: \"\",\n  patient_street: \"\",\n  patient_street2: \"\",\n  patient_city: \"\",\n  patient_state: \"\",\n  patient_zip_code: \"\",\n  patient_county: \"\",\n  patient_phone_number: \"\",\n  patient_dob: \"\",\n  patient_gender: \"\",\n  patient_race: \"UNK\",\n  patient_ethnicity: \"UNK\",\n  patient_preferred_language: \"\",\n  patient_email: \"\",\n  accession_number: \"\",\n  equipment_model_name: \"Logix Smart Coronavirus Disease 2019 (COVID-19) Kit\",\n  test_performed_code: \"94534-5\",\n  test_ordered_code: \"94534-5\",\n  test_result: \"\",\n  order_test_date: \"\",\n  specimen_collection_date: \"\",\n  testing_lab_specimen_received_date: \"\",\n  test_result_date: \"\",\n  date_result_released: \"\",\n  specimen_type: \"258529004\",\n  ordering_provider_id: \"1003876038\",\n  ordering_provider_last_name: \"Dasghaib\",\n  ordering_provider_first_name: \"Holly\",\n  ordering_provider_middle_name: \"\",\n  ordering_provider_street: \"620 W Covina Blvd\",\n  ordering_provider_street2: \"\",\n  ordering_provider_city: \"San Dimas\",\n  ordering_provider_state: \"CA\",\n  ordering_provider_zip_code: \"91773\",\n  ordering_provider_phone_number: \"626-695-2426\",\n  testing_lab_clia: \"05D2255279\",\n  testing_lab_name: \"Biolab Mobile\",\n  testing_lab_street: \"14738 Pipeline Ave E\",\n  testing_lab_street2: \"\",\n  testing_lab_city: \"Chino Hills\",\n  testing_lab_state: \"CA\",\n  testing_lab_zip_code: \"91709\",\n  testing_lab_phone_number: \"909-407-4912\",\n  pregnant: \"\",\n  employed_in_healthcare: \"\",\n  symptomatic_for_disease: \"\",\n  illness_onset_date: \"\",\n  resident_congregate_setting: \"\",\n  residence_type: \"\",\n  hospitalized: \"\",\n  icu: \"\",\n  ordering_facility_name: \"\",\n  ordering_facility_street: \"\",\n  ordering_facility_street2: \"\",\n  ordering_facility_city: \"\",\n  ordering_facility_state: \"\",\n  ordering_facility_zip_code: \"\",\n  ordering_facility_phone_number: \"\",\n  comment: \"\",\n  test_result_status: \"\",\n};\n\nexport const EXPORT_TO_CALREDIE_RESULT = {\n  positive: \"Positive\",\n  negative: \"Negative\",\n  indeterminate: \"Invalid Result\",\n  invalid: \"Invalid Result\",\n};\n\nexport const SWAB_TYPES_OPT = [\n  { label: \"Oral\", value: \"oral\", name: \"swabTypes\", id: \"oralSwabTyp\" },\n  { label: \"Nasal\", value: \"nasal\", name: \"swabTypes\", id: \"nasalSwabType\" },\n];\nexport const WORKER_OPT = [\n  { label: \"Yes\", value: \"yes\", name: \"worker\", id: \"yesWorker\" },\n  { label: \"No\", value: \"no\", name: \"worker\", id: \"noWorker\" },\n];\nexport const POSSIBLE_EXPOSURE_OPT = [\n  { label: \"Yes\", value: \"yes\", name: \"possibleexposure\", id: \"yespossibleexposure\" },\n  { label: \"No\", value: \"no\", name: \"possibleexposure\", id: \"nopossibleexposure\" },\n];\nexport const CONFIRMED_EXPOSURE_OPT = [\n  { label: \"Yes\", value: \"yes\", name: \"confirmedexposure\", id: \"yesconfirmedexposure\" },\n  { label: \"No\", value: \"no\", name: \"confirmedexposure\", id: \"noconfirmedexposure\" },\n];\nexport const RADIO_OPTION_REF_INTERVAL = [\n  { label: \"Numeric\", value: \"ctscore\", name: \"refinterval\", id: \"CtScore\" },\n  { label: \"Alpha\", value: \"alphabet\", name: \"refinterval\", id: \"Alphabet\" },\n];\n\nexport const ELIGIBILITY_STATUS_VALUE = {\n  Eligibile: \"Pass\",\n  eligibile: \"Pass\",\n  Ineligibile: \"Fail\",\n  ineligibile: \"Fail\",\n  \"Not Eligibile\": \"Fail\",\n};\n\nexport const ELIGIBILITY_STATUS_COLOR = {\n  Pass: \"green\",\n  pass: \"green\",\n  Eligibile: \"green\",\n  Fail: \"maroon\",\n  fail: \"maroon\",\n  \"Not Eligibile\": \"maroon\",\n  \"Not Checked\": \"yellow\",\n  \"not checked\": \"yellow\",\n};\n\nexport const PANEL_RESULT_TYPE = [\n  {\n    value: \"alpha\",\n    label: \"Alpha\",\n    id: \"alpha\",\n  },\n];\nexport const SYMPTOMS_OPT = [\n  {\n    value: \"FEVER / CHILLS\",\n    label: \"FEVER / CHILLS\",\n    id: \"fever\",\n  },\n  {\n    value: \"COUGH\",\n    label: \"COUGH\",\n    id: \"cough\",\n  },\n  {\n    value: \"HEADACHE\",\n    label: \"HEADACHE\",\n    id: \"headache\",\n  },\n  {\n    value: \"FATIGUE\",\n    label: \"FATIGUE\",\n    id: \"fatigue\",\n  },\n  {\n    value: \"SORE THROAT\",\n    label: \"SORE THROAT\",\n    id: \"soreThroat\",\n  },\n  {\n    value: \"DIARRHEA\",\n    label: \"DIARRHEA\",\n    id: \"diarrhea\",\n  },\n  {\n    value: \"SHORTNESS OF BREATH\",\n    label: \"SHORTNESS OF BREATH\",\n    id: \"shortnessOfBreath\",\n  },\n  {\n    value: \"MUSCLE / BODY ACHES\",\n    label: \"MUSCLE / BODY ACHES\",\n    id: \"muscel\",\n  },\n  {\n    value: \"NEW LOSS OF TASTE / SMELL\",\n    label: \"NEW LOSS OF TASTE / SMELL\",\n    id: \"newLossOfTaste\",\n  },\n  {\n    value: \"CONGESTION / RUNNY NOSE\",\n    label: \"CONGESTION / RUNNY NOSE\",\n    id: \"congestion\",\n  },\n  {\n    value: \"NAUSEA / VOMITING\",\n    label: \"NAUSEA / VOMITING\",\n    id: \"nausea\",\n  },\n  {\n    value: \"NO SYMPTOMS / ASYMPTOMATIC\",\n    label: \"NO SYMPTOMS / ASYMPTOMATIC\",\n    id: \"noSymptoms\",\n  },\n  {\n    value: \"OTHER\",\n    label: \"OTHER\",\n    id: \"other\",\n  },\n];\n\nexport const UN_RESULT = \"No Result\";\n\nexport const TABLE_QUICK_TOOLS = {\n  checkbox: \"checkbox\",\n  edit: \"edit\",\n  notes: \"notes\",\n  delete: \"delete\",\n  view: \"view\",\n};\n\nexport const currencyformatter = new Intl.NumberFormat(\"en-US\", {\n  style: \"currency\",\n  currency: \"USD\",\n\n  // These options are needed to round to whole numbers if that's what you want.\n  //minimumFractionDigits: 0, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)\n  //maximumFractionDigits: 0, // (causes 2500.99 to be printed as $2,501)\n});\n\nexport const EMP_INS_OBJECT = {\n  insuranceCompany: \"\",\n  insuranceCompanyCode: \"\",\n  medicalNo: \"\",\n  insuranceType: \"\",\n  insuranceGroupId: \"\",\n  medicareNo: \"\",\n  deductible: 0,\n  copay: 0,\n  isActive: true,\n  isNew: true,\n};\n\nexport const COLUMNS = {\n  1: \"Primary\",\n  2: \"Secondary\",\n  3: \"Third\",\n  4: \"Fourth\",\n  5: \"Fifth\",\n  6: \"Sixth\",\n  7: \"Seventh\",\n  8: \"Eighth\",\n  9: \"Ninth\",\n  10: \"Tenth\",\n  11: \"Eleventh\",\n  12: \"Twelfth\",\n};\n\nexport const MEDICATRE_IDS = [\n  \"00831\",\n  \"02001\",\n  \"10111\",\n  \"10112\",\n  \"26119\",\n  \"ISA01\",\n  \"07101\",\n  \"07102\",\n  \"03101\",\n  \"03102\",\n  \"BTHS1\",\n  \"01911\",\n  \"01111\",\n  \"01102\",\n  \"01192\",\n  \"33070\",\n  \"04111\",\n  \"04102\",\n  \"ISA02\",\n  \"ISA03\",\n  \"ISA04\",\n  \"ISA05\",\n  \"13102\",\n  \"12201\",\n  \"12202\",\n  \"12301\",\n  \"12101\",\n  \"12102\",\n  \"16003\",\n  \"17003\",\n  \"18003\",\n  \"19003\",\n  \"ISA06\",\n  \"ISA07\",\n  \"09101\",\n  \"09102\",\n  \"10211\",\n  \"10212\",\n  \"ISA08\",\n  \"15004\",\n  \"06014\",\n  \"1100H\",\n  \"01211\",\n  \"01202\",\n  \"05101\",\n  \"05102\",\n  \"02202\",\n  \"06101\",\n  \"00952\",\n  \"08101\",\n  \"08102\",\n  \"04901\",\n  \"ISA09\",\n  \"05201\",\n  \"05202\",\n  \"ISA10\",\n  \"15101\",\n  \"15102\",\n  \"07201\",\n  \"07202\",\n  \"ISA11\",\n  \"ISA12\",\n  \"14211\",\n  \"14212\",\n  \"12302\",\n  \"14011\",\n  \"14112\",\n  \"ISA13\",\n  \"05901\",\n  \"12M65\",\n  \"08201\",\n  \"08202\",\n  \"06201\",\n  \"06202\",\n  \"05301\",\n  \"05302\",\n  \"07301\",\n  \"00512\",\n  \"03201\",\n  \"03001\",\n  \"11501\",\n  \"11502\",\n  \"03302\",\n  \"05401\",\n  \"05402\",\n  \"14312\",\n  \"14013\",\n  \"12401\",\n  \"12402\",\n  \"04211\",\n  \"04202\",\n  \"12M07\",\n  \"12M82\",\n  \"12M83\",\n  \"12M45\",\n  \"12M30\",\n  \"01312\",\n  \"01302\",\n  \"13201\",\n  \"13202\",\n  \"13292\",\n  \"13282\",\n  \"15201\",\n  \"15202\",\n  \"04311\",\n  \"04302\",\n  \"02302\",\n  \"12501\",\n  \"12502\",\n  \"09202\",\n  \"ISA14\",\n  \"ISA15\",\n  \"00882\",\n  \"14411\",\n  \"14412\",\n  \"ISA16\",\n  \"45552\",\n  \"11001\",\n  \"11202\",\n  \"03402\",\n  \"ISA17\",\n  \"ISA18\",\n  \"ISA19\",\n  \"MCAMA\",\n  \"10311\",\n  \"10312\",\n  \"04411\",\n  \"04402\",\n  \"ISA20\",\n  \"09302\",\n  \"03501\",\n  \"03502\",\n  \"12004\",\n  \"11302\",\n  \"14512\",\n  \"02402\",\n  \"06001\",\n  \"06302\",\n  \"11402\",\n  \"11003\",\n  \"03602\",\n];\n\nexport const CUSTOM_INS = [\"00001\", \"00002\", \"00003\"];\n\nexport const IGNORE_INS = [\"00000\", \"00001\", \"00002\", \"00003\"];\n\nexport const CUSTOM_INS_ADV_PLAN = [\"00001\", \"00002\", \"00003\", \"01192\", \"00882\", \"57016\", \"12302\"];\n\nexport const PATIENT_BILL = [\"00001\", \"00003\"];\n\nexport const ON_HOLD_CPT = \"11111\";\n\nexport const CLAIM_SUBMIT_STATUS = {\n  draft: \"draft\",\n  submitted: \"submitted\",\n  rejected: \"rejected\",\n  approved: \"approved\",\n  paid: \"paid\",\n  denied: \"denied\",\n  cancel: \"cancel\",\n  partial: \"partial\",\n  rejectedanddenied: \"rejectedanddenied\",\n  unpaid: \"unpaid\",\n};\n\nexport const DIAGNOSIS_ITEMS = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\"];\n\nexport const PARSE_ALPHA_INTO_NUM = {\n  A: \"1\",\n  B: \"2\",\n  C: \"3\",\n  D: \"4\",\n  E: \"5\",\n  F: \"6\",\n  G: \"7\",\n  H: \"8\",\n};\n\nexport const PARSE_CLAIM_ERROR_KEY = {\n  prov_npi: \"Rendering NPI\",\n  ref_npi: \"Referring NPI\",\n  ord_prov_npi: \"Ordering NPI\",\n  ins_number: \"Medicare policy number\",\n};\n\nexport const PREV_CLAIM_ACTIONS = {\n  auto: \"auto\",\n  update: \"update\",\n  new: \"new\",\n};\nexport const INSURANCE_TYPE = {\n  primary: \"primary\",\n  secondary: \"secondary\",\n};\n\nexport const HOSPICE_MODFIRE = {\n  GW: \"GW\",\n  GV: \"GV\",\n};\n\nexport const ProcTooltipHeader = [\"Code\", \"Description\"];\n\nexport const claimSubmitStatusColorOpts = {\n  draft: \"gray\",\n  submitted: \"#3939ff\",\n  partial: \"green\",\n  rejected: \"red\",\n  approved: \"green\",\n  sent: \"green\",\n  paid: \"green\",\n  denied: \"#ff5f5f\",\n  cancelled: \"#95614c\",\n  sent: \"#3939ff\",\n  pending: \"orange\",\n};\n\nexport const CONFIRMATION_TYPE = {\n  DELETE: \"delete\",\n  PROGRAM_START: \"programstart\",\n  ASSIGN_PROGRAM: \"assignprogram\",\n  UPDATE_TIME: \"updateTime\",\n  AUTO_SHIPMENT: \"autoshipment\",\n  PUBLIC_ORDER: \"publicOrder\",\n  SUBMIT_CLAIM: \"submitClaim\",\n  RESUBMIT_CLAIM: \"reSubmitClaim\",\n  UPDATE_PATIENT: \"updatePatient\",\n  CREATE_PATIENT: \"createPatient\",\n};\n\nexport const PROCEDURE_CODE_STATES = {\n  PLUS: \"pluc\",\n  ADD: \"add\",\n  UPDATE: \"update\",\n};\n\nexport const PREV_CLAIM_TABLE = [\n  \"Date of Service\",\n  \"Procedure Code\",\n  \"Payer Name\",\n  \"Amount Billed\",\n  \"Rendering Provider\",\n  \"Status\",\n];\n\nexport const PROCEDURE_CODE_HEADER = [\n  \"Date of Service\",\n  \"Place of Service\",\n  \"Procedure\",\n  \"Modifier1\",\n  \"Modifier2\",\n  \"Modifier3\",\n  \"Modifier4\",\n  \"Diag1\",\n  \"Diag2\",\n  \"Diag3\",\n  \"Diag4\",\n  \"Billed\",\n  \"Units\",\n];\n\nexport const RECEIVED_BYLAB = \"Received By Lab\";\n\nexport const NEW_PROVIDER_OBJECT = {\n  name: \"\",\n  clientID: CONFIG.clientID,\n  firstName: \"\",\n  middleName: \"\",\n  lastName: \"\",\n  code: \"\",\n  npi: \"\",\n  taxid: \"\",\n  speciality: \"\",\n  email: \"\",\n  phoneNumber: \"\",\n  street: \"\",\n  street2: \"\",\n  city: \"\",\n  state: \"\",\n  isActive: true,\n};\n\nexport const NPI_TYPE_OPTIONS = [\n  {\n    label: \"NPI-1\",\n    value: \"NPI-1\",\n  },\n  {\n    label: \"NPI-2\",\n    value: \"NPI-2\",\n  },\n];\n\nexport const NEW_DISCOVERY_ID = \"ad1dd8c8-e32a-4f75-86e6-9be7c019af25\";\nexport const BIO_LAB_ID = \"456ba480-b8dd-47ea-a07a-940693f686ea\";\nexport const ALTA_ID = \"d1c2436f-f841-48b8-b834-9bce0471ea94\";\nexport const ALTA_NEW_ID = \"8183365e-32a5-4268-8e4e-87a292b9346a\";\nexport const DEMO_CLIENT_ID = \"f7c5f396-e927-4ebb-86e7-b97b16b37c36\";\nexport const SEROCLINIX_ID = \"e33ea32c-7cc2-4609-b3b2-35d8309df342\";\nexport const SEROCLINIX_TEST = \"9befb863-67fd-4d28-8f2d-7c5cbb1df522\";\nexport const CALIBER_ID = \"e6319b9f-3d5e-46ea-9c9b-0a3c84079ab5\";\nexport const FUTURE_GENERATION_ID = \"4bc78a52-e432-4bc0-8846-78e2d576dea3\";\nexport const LIFE_CARE_ID = \"f2e5bd7d-63d9-4e6d-8795-ddb8f1198289\";\nexport const VENTUURE_DX = \"bb2bd1ea-f6ad-422d-b6df-ea8f10627eec\";\n\nexport const LAB_ID = {\n  inc: \"8cd1a74a-392c-4378-a8a0-15480ee37a1e\",\n  mobile: \"9a41b680-4f5f-4914-a8f6-2229740dca0b\",\n  discovery: \"3eaf991b-b876-4897-8e39-47aef2247dcd\",\n  alta: \"6d8ec4ef-f634-4237-9984-c5b337e36546\",\n  seroclinix: \"655f8008-f306-4052-a932-3f5622a39925\",\n  seroclinix_test: \"a2172c3b-2997-4eee-9cc4-ff4cc38fd203\",\n  caliber: \"ff763f06-3dd9-4101-bc52-34dc97c31385\",\n  future_generation: \"4d519d64-f8db-4e6e-9396-fc723b70ae7e\",\n  demo_lab: \"391fad16-d800-42b5-9ada-e7851f2202da\",\n};\n\nexport const REQ_TEMPLATES = {\n  ALTA_TOX: \"altaNewToxFormPdf\",\n};\n\nexport const PHY_SIGN = \"https://medflow-images.s3.eu-west-1.amazonaws.com/phy.png\";\n\nexport const UPLOAD_CSV_FILE = {\n  manualtest: \"manualtest\",\n  test: \"test\",\n  employee: \"employee\",\n};\n\nexport const EOS_MODAL_GROUPS = [\n  { value: \"eos\", label: \"Scheduled\", title: \"Scheduled\" },\n  { value: \"neos\", label: \"Not Scheduled\", title: `Not Scheduled` },\n];\n\nexport const ETHINICITY_OPTIONS = [\n  { value: \"Hispanic/Latino\", label: \"Hispanic/Latino\" },\n  { value: \"Non Hispanic/Latino\", label: \"Non Hispanic/Latino\" },\n];\n\nexport const ANTIBIOTIC_RESISTANCE_GENES_TYPE = [\n  { value: \"Associated Test\", label: \"Associated Test\" },\n  { value: \"Organism\", label: \"Bacteria/Organism\" },\n  { value: \"Resistance\", label: \"Resistance Genes\" },\n  { value: \"Additional Variable\", label: \"Additional Variable\" },\n];\n\nexport const ANTIBIOTIC_RESISTANCE_TYPE = {\n  ORGANISM: \"Organism\",\n  RESISTANCE: \"Resistance\",\n  ASSOCIATED: \"Associated Test\",\n  ADDITIONAL: \"Additional Variable\",\n};\n\nexport const ELEMENT_TYPE = {\n  \"Bacteria/Organisms\": \"Organism\",\n  \"Resistance Genes\": \"Resistance\",\n  \"Associated Test\": \"Associated Test\",\n  \"Additional Variable\": \"Additional Variable\",\n};\n\nexport const NOTIFICATION_STATUS = {\n  pass: \"pass\",\n  fail: \"fail\",\n  pending: \"pending\",\n  Parsed: \"Parsed\",\n};\n\nexport const CRUD_TYPE = {\n  UPDATE: \"UPDATE\",\n  INSERT: \"INSERT\",\n};\n\nexport const ORDER_STATUS = {\n  Pending: \"yellow\",\n  Processing: \"orange\",\n  Processed: \"green\",\n  pass: \"green\",\n  Cancel: \"maroon\",\n  Cancelled: \"maroon\",\n  Rejected: \"maroon\",\n};\n\nexport const TEST_NO_COLOR = {\n  Pending: \"black\",\n  Processing: \"orange\",\n  Processed: \"green\",\n  pass: \"green\",\n  Cancel: \"maroon\",\n  Cancelled: \"maroon\",\n  Rejected: \"maroon\",\n};\n\nexport const TESTS_DONE_STATUS = {\n  Pending: \"yellow\",\n  Accepted: \"green\",\n  sendOut: \"green\",\n  Cancel: \"maroon\",\n  Cancelled: \"maroon\",\n  Rejected: \"maroon\",\n  Processed: \"green\",\n};\n\nexport const ORDER_CANCELLED_RESASON = {\n  \"COVID positive\": \"COVID positive\",\n  Discharged: \"Discharged\",\n  Refused: \"Refused\",\n  \"Out of Facility\": \"Out of Facility\",\n};\n\nexport const BCC_VALUE = {\n  DEDUCTIBLE: \"C\",\n  OUT_OF_POCKET: \"G\",\n};\n\nexport const CPT_CODE_SEARCH_TYPE = {\n  CPT: \"cpt\",\n  ICT: \"ict\",\n  TEST: \"test\",\n};\n\nconst StatusLabel = ({ label, color, icon = \"crossIcon\" }) => (\n  <div className=\"star-icon-wrapper\">\n    <Status type=\"circle\" size=\"md\" color={color} {...{ [icon]: true }} /> {label}\n  </div>\n);\n\nconst STATUS_OPTIONS = {\n  Yes: { label: \"Yes\", color: \"green\", icon: \"tickIcon\" },\n  No: { label: \"No\", color: \"maroon\" },\n  active: { label: \"Active\", color: \"green\", icon: \"tickIcon\" },\n  inactive: { label: \"In Active\", color: \"maroon\" },\n  \"in network\": { label: \"In Network\", color: \"green\", icon: \"tickIcon\" },\n  \"out of network\": { label: \"Out Of Network\", color: \"maroon\" },\n  eligibile: { label: \"Eligible\", color: \"green\", icon: \"tickIcon\" },\n  ineligibile: { label: \"In Eligible\", color: \"maroon\" },\n  invalid: { label: \"In Eligible\", color: \"maroon\" },\n  Pending: { label: \"Pending\", color: \"yellow\", icon: \"questionIcon\" },\n  Processing: { label: \"Processing\", color: \"orange\" },\n  Processed: { label: \"Processed\", color: \"green\", icon: \"tickIcon\" },\n  Rejected: { label: \"Rejected\", color: \"maroon\" },\n  Cancelled: { label: \"Cancelled\", color: \"maroon\" },\n};\n\nconst generateStatusOptions = (statusKeys) =>\n  statusKeys.map((key) => ({\n    value: key,\n    label: (\n      <StatusLabel\n        label={STATUS_OPTIONS[key].label}\n        color={STATUS_OPTIONS[key].color}\n        icon={STATUS_OPTIONS[key].icon || \"crossIcon\"}\n      />\n    ),\n  }));\n\nexport const OPTION_YES_NO = generateStatusOptions([\"Yes\", \"No\"]);\nexport const ELIGIBILITY_STATUS = generateStatusOptions([\"eligibile\", \"invalid\"]);\nexport const ORDER_STATUS_DROPDOWN = generateStatusOptions([\n  \"Pending\",\n  \"Processing\",\n  \"Processed\",\n  \"Cancelled\",\n  \"Rejected\",\n]);\n\nexport const EMPLOYEE_STATUS = generateStatusOptions([\"active\", \"inactive\"]);\nexport const NETWORK_STATUS = generateStatusOptions([\"in network\", \"out of network\"]);\nexport const ORDER_STATUS_OPT = generateStatusOptions([\"Pending\", \"Processing\", \"Processed\", \"Rejected\", \"Cancelled\"]);\n\nexport const BILLING_OPT = [\n  {\n    value: \"stat\",\n    label: \"STAT\",\n    id: \"stat\",\n  },\n  {\n    value: \"fax\",\n    label: \"FAX\",\n    id: \"cough\",\n  },\n  {\n    value: \"call\",\n    label: \"CALL\",\n    id: \"call\",\n  },\n  {\n    value: \"fasting\",\n    label: \"FASTING\",\n    id: \"fasting\",\n  },\n  {\n    value: \"random\",\n    label: \"RANDOM\",\n    id: \"random\",\n  },\n];\n\nexport const TEST_SETTING_TYPES = {\n  TEST_LABEL: \"testLabel\",\n  SOURCE: \"source\",\n  DEPARTMENT: \"department\",\n  UNIT: \"unit\",\n  CANCEL_REASON: \"cancel_reason\",\n  OPTIONS: \"options\",\n  INSTRUMENT: \"instrumentPlatform\",\n  SPECIMEN_CONTAINER: \"specimenContainer\",\n  ROLE: \"role\",\n};\n\nexport const SPECIMEN_CONTAINER_TYPE = [\n  {\n    value: \"Containers\",\n    label: \"Containers\",\n  },\n  {\n    value: \"Dippers\",\n    label: \"Dippers\",\n  },\n  {\n    value: \"Jar\",\n    label: \"Jar\",\n  },\n  {\n    value: \"Vial\",\n    label: \"Vial\",\n  },\n];\nexport const DICTIONARY_OPTIONS = [\n  {\n    label: \"Cancelled/Rejected Reason\",\n    value: \"cancelled\",\n  },\n  {\n    label: \"Department\",\n    value: \"department\",\n  },\n  {\n    label: \"Panel Element\",\n    value: \"testPanels\",\n  },\n  {\n    label: \"Source\",\n    value: \"source\",\n  },\n\n  {\n    label: \"Unit\",\n    value: \"unit\",\n  },\n  {\n    label: \"Associated Instrument\",\n    value: \"instrumentPlatform\",\n  },\n  {\n    label: \"Specimen Container\",\n    value: \"specimenContainer\",\n  },\n];\n\nexport const TEST_ASSAY_LOGS_SLUG = {\n  TEST_CREATED: \"Test Assay Created\",\n  TEST_UPDATED: \"Test Assay Updated\",\n  TEST_ARCHIVED: \"Test Assay Archived\",\n};\n\nexport const PERMISSIONS_LIST = [\n  {\n    label: \"Client Base Role \",\n    value: \"clientBaseRole\",\n    disabled: true,\n  },\n  {\n    label: \"Patient \",\n    value: \"employee\",\n    subObject: [\n      {\n        label: \"Create New Patients\",\n        value: \"createPatient\",\n      },\n      {\n        label: \"Archive Patients\",\n        value: \"archivePatient\",\n      },\n      {\n        label: \"Edit Patient Records\",\n        value: \"editPatientRecord\",\n      },\n      {\n        label: \"Add Patient Notes\",\n        value: \"addPatientNote\",\n      },\n    ],\n  },\n  {\n    label: \"Orders\",\n    value: \"orders\",\n    subObject: [\n      {\n        label: \"Add Orders\",\n        value: \"addOrders\",\n      },\n      {\n        label: \"Edit Orders\",\n        value: \"editOrders\",\n      },\n      {\n        label: \"Load Orders\",\n        value: \"loadOrders\",\n      },\n      {\n        label: \"Archive Orders\",\n        value: \"archiveOrders\",\n      },\n    ],\n  },\n  {\n    label: \"Tests\",\n    value: \"test\",\n    subObject: [\n      {\n        label: \"Create Tests\",\n        value: \"createTest\",\n      },\n      {\n        label: \"Edit Test Information\",\n        value: \"editTest\",\n      },\n      {\n        label: \"Result Tests\",\n        value: \"resultTest\",\n      },\n      {\n        label: \"Finalize/Send Results\",\n        value: \"finalizeSendResult\",\n      },\n      {\n        label: \"Archive Test\",\n        value: \"archiveTest\",\n      },\n    ],\n  },\n  { label: \"Pending Results \", value: \"pendingResults\" },\n  { label: \"Completed Tests\", value: \"completedTests\" },\n  { label: \"Check Eligibility\", value: \"checkEligibility\", write: true, delete: true },\n  { label: \"Settings\", value: \"settings\" },\n  { label: \"Provider Management\", value: \"providerManagement\", write: true, delete: true },\n  { label: \"Client Management\", value: \"clientManagement\", write: true, delete: true },\n  { label: \"Payer Management\", value: \"payerManagement\", write: true },\n  { label: \"Diagnosis Codes\", value: \"diagnosisCodes\", write: true },\n  { label: \"Procedure Codes\", value: \"procedureCodes\", write: true },\n  // { label: \"Archived Tests\", value: \"archivedTests\", access: true },\n  // { label: \"Archived Orders\", value: \"archivedOrders\", access: true },\n  {\n    label: \"System Users\",\n    value: \"systemUsers\",\n    subObject: [\n      {\n        label: \"Create New User\",\n        value: \"createNewUser\",\n        checked: true,\n      },\n      {\n        label: \" Archive Users\",\n        value: \"archiveUser\",\n        checked: true,\n      },\n      {\n        label: \"Edit User Credentials and Access\",\n        value: \"editUserCredentials\",\n        checked: true,\n      },\n      {\n        label: \"Create New User Role\",\n        value: \"createNewUserRole\",\n        checked: true,\n      },\n    ],\n  },\n  { label: \"Tests Management\", value: \"testsManagement\", write: true },\n  { label: \"Tests Dictionary\", value: \"testsDictionary\", write: true, delete: true },\n  { label: \"Message Template\", value: \"messageTemplate\", write: true, delete: true },\n];\n\n// export const DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS = {\n//   employee: { access: true, write: true, delete: true },\n//   orders: { access: true, write: true, delete: true },\n//   pendingResults: { access: true, write: true, delete: true },\n//   completedTests: { access: true, write: true, delete: true },\n//   checkEligibility: { access: true, write: true, delete: true },\n//   settings: { access: true },\n//   providerManagement: { access: true, write: true, delete: true },\n//   clientManagement: { access: true, write: true, delete: true },\n//   payerManagement: { access: true, write: true },\n//   diagnosisCodes: { access: true, write: true },\n//   procedureCodes: { access: true, write: true },\n//   systemUsers: { access: true, write: true, delete: true },\n//   testsManagement: { access: true, write: true },\n//   testsDictionary: { access: true, write: true, delete: true },\n// };\nexport const DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS = {\n  employee: {\n    access: true,\n    addPatientNote: true,\n    archivePatient: true,\n    createPatient: true,\n    delete: true,\n    editPatientRecord: true,\n    write: true,\n  },\n  orders: {\n    access: true,\n    addOrders: true,\n    archiveOrders: true,\n    delete: true,\n    editOrders: true,\n    loadOrders: true,\n    write: true,\n  },\n  pendingResults: { access: true },\n  completedTests: { access: true },\n  checkEligibility: { access: true, write: true, delete: true },\n  settings: { access: true },\n  providerManagement: { access: true, write: true, delete: true },\n  clientManagement: { access: true, write: true, delete: true },\n  payerManagement: { access: true, write: true, delete: true },\n  diagnosisCodes: { access: true, write: true, delete: true },\n  procedureCodes: { access: true, write: true, delete: true },\n  archivedTests: { access: true },\n  archivedOrders: { access: true },\n  systemUsers: {\n    access: true,\n    archiveUser: true,\n    createNewUser: true,\n    createNewUserRole: true,\n    delete: true,\n    editUserCredentials: true,\n    write: true,\n  },\n  test: {\n    access: true,\n    archiveTest: true,\n    createTest: true,\n    editTest: true,\n    finalizeSendResult: true,\n    resultTest: true,\n  },\n  testsManagement: { access: true, write: true, delete: true },\n  testsDictionary: { access: true, write: true, delete: true },\n  messageTemplate: { access: true, write: true, delete: true },\n};\n\nexport const WHITE_LABEL_ROTUES = {\n  \"/order\": \"orders\",\n  \"/patient\": \"employee\",\n  \"/senttest\": \"pendingResults\",\n  \"/alltests\": \"completedTests\",\n  \"/checkeligibility\": \"checkEligibility\",\n  \"/testtypes\": \"settings\",\n  \"/archivedTests\": \"archivedTests\",\n  \"/archivedOrders\": \"archivedOrders\",\n};\nexport const EMPLOYEE = \"employee\";\nexport const ORDER = \"orders\";\nexport const PENDING_RESULTS = \"pendingResults\";\nexport const COMPLETED_TESTS = \"completedTests\";\nexport const SETTINGS = \"settings\";\nexport const PROVIDER_MANAGEMENT = \"providerManagement\";\nexport const CLIENT_MANAGEMENT = \"clientManagement\";\nexport const PAYER_MANAGEMENT_VALUE = \"payerManagement\";\nexport const DIAGNOSIS_CODES = \"diagnosisCodes\";\nexport const PROCEDURE_CODES = \"procedureCodes\";\nexport const SYSTEM_USERS_VALUE = \"systemUsers\";\nexport const TESTS_MANAGEMENT = \"testsManagement\";\nexport const TESTS_DICTIONARY = \"testsDictionary\";\nexport const MESSAGE_TEMPLATE_VALUE = \"messageTemplate\";\nexport const REFERENCE_VALUE = \"reference\";\nexport const TAB_SETTINGS = \"settings\";\n\nexport const dependentPermissionsList = [\n  \"providerManagement\",\n  \"clientManagement\",\n  \"payerManagement\",\n  \"diagnosisCodes\",\n  \"procedureCodes\",\n  \"systemUsers\",\n  \"testsManagement\",\n  \"testsDictionary\",\n  \"messageTemplate\",\n];\n\nexport const TEST_PANEL_TYPES = {\n  PANEL: \"panel\",\n  QUALITATIVE_WITH_PATHOGEN: \"qualitativeWithPathogen\",\n  QUALITATIVE_WITHOUT_PATHOGEN: \"qualitativeWithOutPathogen\",\n  QUANTITATIVE_WITHOUT_PATHOGEN: \"quantitativeWithOutPathogen\",\n  QUANTITATIVE_WITH_PATHOGEN: \"quantitativeWithPathogen\",\n  BOTH: \"both\",\n};\n\nexport const TYPE_OF_TEST = {\n  QUANTITATIVE: \"Quantitative\",\n  QUALITATIVE: \"Qualitative\",\n  BOTH: \"Both\",\n  EXTERNAL: \"External Source\",\n};\n\nexport const CHECKELIGIBILITY = \"checkEligibility\";\n\nexport const ELIGIBILITY_HEADERS = [\"firstName\", \"lastName\", \"dob\", \"medicareNo\", \"medicareAgent\"];\n\nexport const PAYER_NETWORK_OPTIONS = [\n  { value: \"In Network\", label: \"In Network\" },\n  { value: \"Out of Network\", label: \"Out of Network\" },\n];\nexport const DEFAULT_USER_PERSONALIZATION = {\n  checkEligibility:\n    '[{\"id\":1,\"width\":176},{\"id\":2,\"width\":144},{\"id\":3,\"width\":142},{\"id\":6,\"width\":113},{\"id\":7,\"width\":150},{\"id\":9,\"width\":142},{\"id\":10,\"width\":121},{\"id\":11,\"width\":108},{\"id\":12,\"width\":151},{\"id\":13,\"width\":148},{\"id\":14,\"width\":101},{\"id\":15,\"width\":160},{\"id\":16,\"width\":158}]',\n  completedtest:\n    '[{\"id\":1,\"width\":149},{\"id\":2,\"width\":147},{\"id\":3,\"width\":145},{\"id\":4,\"width\":106},{\"id\":5,\"width\":115},{\"id\":6,\"width\":121},{\"id\":7,\"width\":123},{\"id\":8,\"width\":110},{\"id\":9,\"width\":166},{\"id\":10,\"width\":121},{\"id\":11,\"width\":124},{\"id\":12,\"width\":106},{\"id\":13,\"width\":135},{\"id\":14,\"width\":126}]',\n\n  employee:\n    '[{\"id\":1,\"width\":160},{\"id\":2,\"width\":158},{\"id\":3,\"width\":326},{\"id\":4,\"width\":184},{\"id\":10,\"width\":175},{\"id\":11,\"width\":140},{\"id\":12,\"width\":160},{\"id\":13,\"width\":169},{\"id\":16,\"width\":155},{\"id\":17,\"width\":137}]',\n  insurance:\n    '[{\"id\":1,\"width\":71},{\"id\":2,\"width\":69},{\"id\":3,\"width\":90},{\"id\":4,\"width\":63},{\"id\":5,\"width\":71},{\"id\":6,\"width\":55},{\"id\":7,\"width\":127},{\"id\":8,\"width\":59},{\"id\":9,\"width\":80},{\"id\":10,\"width\":125},{\"id\":11,\"width\":121},{\"id\":12,\"width\":63},{\"id\":13,\"width\":117},{\"id\":14,\"width\":117},{\"id\":15,\"width\":103},{\"id\":16,\"width\":91},{\"id\":17,\"width\":92},{\"id\":18,\"width\":92},{\"id\":19,\"width\":75}]',\n  labClient:\n    '[{\"id\":1,\"width\":197},{\"id\":2,\"width\":275},{\"id\":13,\"width\":231},{\"id\":14,\"width\":273},{\"id\":15,\"width\":269},{\"id\":16,\"width\":211},{\"id\":17,\"width\":320}]',\n  orderpersonalize:\n    '[{\"id\":1,\"width\":186},{\"id\":2,\"width\":165},{\"id\":3,\"width\":163},{\"id\":4,\"width\":124},{\"id\":5,\"width\":145},{\"id\":6,\"width\":92},{\"id\":7,\"width\":135},{\"id\":8,\"width\":158},{\"id\":9,\"width\":174},{\"id\":10,\"width\":139},{\"id\":11,\"width\":182},{\"id\":12,\"width\":158}]',\n  pendingtest:\n    '[{\"id\":1,\"width\":132},{\"id\":2,\"width\":131},{\"id\":3,\"width\":129},{\"id\":4,\"width\":90},{\"id\":5,\"width\":99},{\"id\":6,\"width\":105},{\"id\":7,\"width\":94},{\"id\":8,\"width\":150},{\"id\":9,\"width\":165},{\"id\":10,\"width\":138},{\"id\":11,\"width\":141},{\"id\":12,\"width\":108},{\"id\":13,\"width\":110},{\"id\":14,\"width\":168}]',\n  preregistration: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 24, 25, 26],\n  provider:\n    '[{\"id\":1,\"width\":208},{\"id\":2,\"width\":196},{\"id\":3,\"width\":156},{\"id\":4,\"width\":139},{\"id\":5,\"width\":178},{\"id\":6,\"width\":303},{\"id\":7,\"width\":94},{\"id\":8,\"width\":191},{\"id\":9,\"width\":165},{\"id\":10,\"width\":95},{\"id\":11,\"width\":213},{\"id\":12,\"width\":143},{\"id\":13,\"width\":259},{\"id\":14,\"width\":145},{\"id\":15,\"width\":153},{\"id\":16,\"width\":109},{\"id\":17,\"width\":144}]',\n  diagnosis:\n    '[{\"id\":0,\"width\":\"100%\"},{\"id\":1,\"width\":\"100%\"},{\"id\":2,\"width\":\"100%\"},{\"id\":2,\"width\":\"100%\"},{\"id\":2,\"width\":\"100%\"},{\"id\":4,\"width\":\"100%\"}]',\n};\n\nexport const MESSAGE_TEMPLATE_CATGORY = [\n  { value: \"Patient Profile Created\", label: \"Patient Profile Created\" },\n  { value: \"Order Placed\", label: \"Order Placed\" },\n  { value: \"Order Rejected\", label: \"Order Rejected\" },\n  { value: \"Test Performed\", label: \"Test Performed\" },\n  { value: \"Test Resulted\", label: \"Test Resulted\" },\n];\n\nexport const archstone_STATUS_OPT = [\n  {\n    value: \"Processed\",\n    label: (\n      <div className=\"star-icon-wrapper\">\n        <Status type=\"circle\" size=\"md\" color=\"green\" tickIcon />\n      </div>\n    ),\n  },\n  {\n    value: \"Pending\",\n    label: (\n      <div className=\"star-icon-wrapper\">\n        <Status type=\"circle\" size=\"md\" color=\"maroon\" crossIcon />\n      </div>\n    ),\n  },\n];\n\nexport const RELEASE_STATUS_OPTION = [\n  {\n    value: \"Confirmed\",\n    label: (\n      <div className=\"star-icon-wrapper\">\n        <Status type=\"circle\" size=\"md\" color=\"green\" tickIcon />\n      </div>\n    ),\n  },\n  {\n    value: \"Pending\",\n    label: (\n      <div className=\"star-icon-wrapper\">\n        <Status type=\"circle\" size=\"md\" color=\"maroon\" crossIcon />\n      </div>\n    ),\n  },\n];\nexport const BATCH_OPTIONS_COMPLETED_TEST = [\n  {\n    value: \"yes\",\n    label: (\n      <div className=\"star-icon-wrapper\">\n        <Status type=\"circle\" size=\"md\" color=\"green\" tickIcon />\n      </div>\n    ),\n  },\n  {\n    value: \"no\",\n    label: (\n      <div className=\"star-icon-wrapper\">\n        <Status type=\"circle\" size=\"md\" color=\"maroon\" crossIcon />\n      </div>\n    ),\n  },\n];\n\nexport const RESULT_EMAILED_OPTION = [\n  { value: true, label: \"Yes\" },\n  { value: false, label: \"No\" },\n];\n\nexport const TYPE_TO_SHOW = {\n  panel: \"Panel\",\n  qualitativeWithPathogen: \"Qualitative With Pathogen\",\n  qualitativeWithOutPathogen: \"Qualitative Without Pathogen\",\n  quantitativeWithOutPathogen: \"Quantitative Without Pathogen\",\n  quantitativeWithPathogen: \"Quantitative With Pathogen\",\n};\n\nexport const OPTIONS_PLACEHOLDER = {\n  Unit: \"Enter Units\",\n  Department: \"Enter Department Name\",\n};\n\nexport const rangeDataOptions = [\n  {\n    label: \"Age Filter\",\n    value: \"Age Filter\",\n    keyType: \"age\",\n  },\n  {\n    label: \"Diabetic\",\n    value: \"Diabetic\",\n    keyType: \"diabetic\",\n  },\n  {\n    label: \"Female\",\n    value: \"Female\",\n    keyType: \"gender\",\n  },\n  {\n    label: \"Fasting\",\n    value: \"Fasting\",\n    keyType: \"fasting\",\n  },\n  {\n    label: \"Male\",\n    value: \"Male\",\n    keyType: \"gender\",\n  },\n  {\n    label: \"Non Diabetic\",\n    value: \"Non Diabetic\",\n    keyType: \"diabetic\",\n  },\n  {\n    label: \"Non Fasting\",\n    value: \"Non Fasting\",\n    keyType: \"fasting\",\n  },\n  {\n    label: \"Not Specified\",\n    value: \"Not Specified\",\n    keyType: \"gender\",\n  },\n  {\n    label: \"Non Binary\",\n    value: \"Non Binary\",\n    keyType: \"gender\",\n  },\n];\n\nexport const PRINTER_SETTINGS_OPTIONS = [\n  { value: \"zebra\", label: \"Zebra\" },\n  { value: \"dymo\", label: \"Dymo\" },\n];\n\nexport const PRINTER_LABEL_SIZE_OPTIONS = {\n  dymo: [\n    {\n      label: \"Small (1.2 in x 1.0 in)\",\n      value: \"DymoSmall\",\n    },\n    {\n      label: \"Medium (2.25 in x 1.25 in)\",\n      value: \"DymoMedium\",\n    },\n    {\n      label: \"Small (1 in x 2.125 in)\",\n      value: \"Dymo30336\",\n    },\n  ],\n  zebra: [\n    {\n      label: \"Medium (1.5 in x 1.0 in)\",\n      value: \"ZebraMedium\",\n    },\n    {\n      label: \"Large (2.1 in x 1.5 in)\",\n      value: \"ZebraLarge\",\n    },\n  ],\n};\n\nexport const validationRules = {\n  first: true,\n  last: true,\n  email: true,\n  phone_number: true,\n  dob: true,\n  sex: true,\n  insuranceCompanyCode: true,\n  provider: true,\n};\n\nexport const CSVValidationRules = {\n  first_name: true,\n  last_name: true,\n  phone_number: true,\n  dob: true,\n  gender: true,\n  referringProviderNpi: true,\n  p_payer: true,\n  p_member_id: true,\n};\n\nexport const Sero_CSVValidationRules = {\n  first_name: true,\n  last_name: true,\n  phone_number_email: true,\n  dob: true,\n  gender: true,\n  address: true,\n  city: true,\n  state: true,\n  zip: true,\n};\nexport const REPORT_OPTIONS = [\n  { label: \"Turnaround time\", value: \"Turnaround time\" },\n  { label: \"Positivity rate\", value: \"Positivity rate\" },\n];\n","export default __webpack_public_path__ + \"static/media/login_logo.91f986b6.png\";","export default __webpack_public_path__ + \"static/media/alta.e71a44eb.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIaADAAQAAAABAAAAIQAAAAAWQIAAAAADeklEQVRYCcVY3UsUURS/d2Y/hMRKfagknNnVXWFBDdsILFGDgqTHDfsH6qGg3uo5iPBPqKD3XOiltwqMqEA28Qsfdtll1bAP80UJ11Fnbr+7eqdp3J0P0N0Lyz33nHPP7zd3zrl37lJiawlFOaVROkAYa2OE6IRSw+bif8iYRAmREWslzNjHhcXFn9YgsO21VColz2YyKQA3SOHw22w2+13YDquPx+NnDE27inhabzI5nk6ndTM2JxBV1XsxVe0xlUcocByOx3FNmJiijMZVtdtU1EDgRDoV5RaHkngO8FeQLRbnaoBtQuSKxVkMwhxf4knIc8C01lDguGV8XgVHkYRenqWMC/xAuQy9zLD4THZdaNnc1J6gtK4QwppRejOowqdDy9PvLW6eRI4v+d0HPqvn2kslbR7gdxhhHQjSzBgbRqx3E0rvA0/IVifsQ5J17EXe1o1nAD1dyZcyY2xC6euqZHPS+SKBJz2BFbhWLSBjJESZfqOavZreFwkqkc5qgYQeryguZK+9LxLYz7NIRsezhBKa9Qou/HyRuJif3EAivhGT7T0IlIJB+bVd7zb2RYIHCwXJbUpp8WBgisOI3u/PTxUO2pw1vkn0F+ZWWeNJnDN0DE+e2SNEXwUk1j+4PPPCGa6yNVBZ7awdWvjwBx6PnL28Wz2T4MfuTCZzHjkxhPBNSNB5Q5aXA4xpu4bRiiXtNihtxTEwJYdCn3K53IpXGp5IxGKxtulM5i4ItIjAkAeJrpPdfUW5ZLBRoA3r29uD0fb28cLS0oTwd+pdcyIajZ5lOzsPrQScAu7b+HEwGotErnvwJa4kJF0fMRgLewlm98G8kb5I5Lhdbx+7ksAKKPZJXsc4YwLrkhR183clgWU95hakgt3cVUHkEFaCsaAAQUUsCtmh38Le8c2074rUNTUHBNeVQMAdMQskfgi5Wg//X1abLMt8T3FsEuramYgsP8YrmQIBHWv836WlYmRK93woXUXgl9lC4WtFP6EEfgDB/337C4Olz+fzvzF8nkgkGhtKJXmdsVbKyp90/F03oQJCILkBeZ3/JMP4QkKhNWxWaxjDBASHxvFph6re5DtcPT52+Y0MG9slid8N969mDnyPxsRxOb7EL6dYkq163MDwaBrHLydlTzKZRiEN1IoIx8HHx2V+KeZrbGZNPW/lJgnx1uvx/8RfqwNPK44gLhwAAAAASUVORK5CYII=\"","import { TEST_SOURCE_OPTIONS } from \"constant\";\nimport { DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS } from \"constant\";\nimport {\n  AMAZON_CLIENT_RESULT,\n  CONFIG,\n  CUSTOM_INS,\n  ELIGIBILITY_STATUS_COLOR,\n  ELIGIBILITY_STATUS_VALUE,\n  EXPORT_TO_CALREDIE,\n  EXPORT_TO_CALREDIE_RESULT,\n  LAB_ORDER_STATUS,\n  NOT_INC_KEYS,\n  PRE_REG_PERSONALIZE,\n  RECEIVED_BYLAB,\n  RESULT_COLOR,\n  RESULT_PDF,\n  TEST_TYPE_VALUE,\n  defaultPersonalization,\n  ALTA_ID,\n  ALTA_NEW_ID,\n  NEW_DISCOVERY_ID,\n  FUTURE_GENERATION_ID,\n  TAB_NAMES,\n} from \"constant\";\nimport { PROVIDER_PERSONALIZE } from \"constants/personalization\";\nimport { ORDER_PERSONALIZE, TEST_DONE_MODAL_COLUMN_DETAILS } from \"constants/personalization\";\nimport { COMPLETED_RESULT_PERSONALIZE } from \"constants/personalization\";\nimport { PENDING_RESULT_PERSONALIZE } from \"constants/personalization\";\nimport { LAB_CLIENT_PERSONALIZE } from \"constants/personalization\";\nimport { LAB_MEMBER_PERSONALIZE } from \"constants/personalization\";\nimport FileSaver from \"file-saver\";\nimport parsePhoneNumber, { AsYouType, isValidNumber } from \"libphonenumber-js\";\nimport moment from \"moment\";\nimport Papa from \"papaparse\";\nimport postalCodes from \"postal-codes-js\";\nimport { jsonToCSV } from \"react-papaparse\";\nimport { formatPhoneNumberIntl, isPossiblePhoneNumber } from \"react-phone-number-input\";\nimport { customKeyBy } from \"util/customLodash\";\nimport { customCloneDeep } from \"util/customLodash\";\nimport { customPick } from \"util/customLodash\";\nimport { customIsJsonString } from \"util/customLodash\";\nimport {\n  PROFILE_REQUESTED,\n  INDIVIDUAL_REQUESTED,\n  MICROBIOLOGY,\n  MICROBIOLOGY_CEROCLINIX,\n  CYTOLOGY,\n  BIOPSY,\n  PRESUMPTIVE_ELIGIBILITY,\n} from \"biolabRequisitionFormConstant\";\nimport { TYPE_OF_TEST } from \"constant\";\nimport { PANEL_RESULT_TEST_PERSONALIZE } from \"constants/personalization\";\nimport { TEST_PANEL_TYPES } from \"constant\";\nimport { TEST_HISTORY_MODAL_COLUMN } from \"constants/personalization\";\nimport { CALIBER_ID } from \"constant\";\nimport { SEROCLINIX_ID, ANTIBIOTIC_RESISTANCE_GENES_TYPE, SEROCLINIX_TEST } from \"constant\";\nimport {\n  findBestMatchingRange,\n  genderOBJ,\n  getGroupMatchScore,\n  getMatchScore,\n  isWithinAgeRange,\n} from \"./util/rangeUtil\";\nimport { ANTIBIOTIC_RESISTANCE_TYPE, LIFE_CARE_ID } from \"./constant\";\nimport { customGroupBy } from \"util/customLodash\";\nimport { customFlatMap } from \"util/customLodash\";\nimport { customFind } from \"util/customLodash\";\n\nconst { v4: uuidv4 } = require(\"uuid\");\n\nexport const SYSTEM_TIME_ZONE = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\nexport const formatPhoneNumber = (phone_number_value, ccCode, viewAbel) => {\n  try {\n    let phone_number = phone_number_value;\n    if (!phone_number?.includes(\"+\")) {\n      phone_number = ccCode ? `${ccCode}${phone_number}` : `+1${phone_number}`;\n    }\n    const phone = formatPhoneNumberIntl(phone_number);\n    if (viewAbel) return phone;\n    return phone.replace(/\\s/g, \"\");\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n  return phone_number_value;\n};\n\nexport const getValidSpaces = (name) => {\n  if (!name) return \"\";\n  return name.replace(/  +/g, \" \");\n};\n\nexport const formatPhone = (phone_number_value, ccCode) => {\n  try {\n    if (!phone_number_value) return \"\";\n\n    let phone_number = phone_number_value?.replace(/[^0-9+]/g, \"\");\n    if (!phone_number?.includes(\"+\")) {\n      phone_number = ccCode ? `${ccCode}${phone_number}` : `+1${phone_number}`;\n    }\n    const phone = parsePhoneNumber(phone_number);\n    return phone?.formatNational() || \"\";\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n  return phone_number_value;\n};\n\nexport const formatPhoneWithOutSpaces = (phone_number_value, ccCode) => {\n  try {\n    let phone_number = phone_number_value;\n    if (!phone_number?.includes(\"+\")) {\n      phone_number = ccCode ? `${ccCode}${phone_number}` : `+1${phone_number}`;\n    }\n    return phone_number;\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n  return phone_number_value;\n};\n\nexport const processAndAddColumnsIntoCsvFiles = async (files, additionalObj, uploadStatus) => {\n  return await Promise.all(\n    files.map((file, index) => {\n      return new Promise((resolve, reject) => {\n        Papa.parse(file, {\n          complete: (results) => {\n            const modifiedData = results.data\n              .filter((row) => Object.keys(row).length > 0) // Filter out completely empty rows\n              .map((row) => {\n                let newRow = {\n                  ...row,\n                  ...additionalObj,\n                  localID: uuidv4(),\n                  fileID: uploadStatus[index].id,\n                };\n                return newRow;\n              });\n            resolve({ index, items: modifiedData });\n          },\n          header: true,\n        });\n      });\n    })\n  );\n};\n\nexport const phoneFormatter = (phone) => {\n  if (phone) {\n    const d = setPhoneNo(phone);\n    return new AsYouType(\"US\").input(d);\n  }\n  return phone;\n};\n\nexport const getValidName = (name) => {\n  if (!name) return \"\";\n  return capitalizeLetter(name.replace(/  +/g, \" \"));\n};\n\nexport const isValidPhone = (phone) => isValidNumber(phone, \"US\");\n\nexport const isValidPhoneWithCode = (phone) => {\n  if (phone) return isPossiblePhoneNumber(phone);\n  return false;\n};\nexport const isValidZipCode = (code, zip) => {\n  if (!zip) return false;\n  const validate = postalCodes.validate(`${code}`, `${zip}`);\n\n  return typeof validate !== \"string\" ? validate : false;\n};\nexport const zipCodeValidationUS = (zip) => {\n  if (!zip || !zip.trim()) return false;\n  const zipCode = zip.replace(/[^0-9]/g, \"\");\n  if (zipCode.length === 5 || zipCode.length === 9) return true;\n  return false;\n};\n\nexport const getPageNumbers = (items) => {\n  const pageNumbers = [];\n  for (let i = 1; i <= Math.ceil(items.length / usersPerPage); i++) {\n    pageNumbers.push(i);\n  }\n  return pageNumbers;\n};\n\nexport const parseBooleanValue = (val) => (val ? \"Yes\" : \"No\");\n\nexport const parseIntValue = (val) => {\n  if (typeof variable === \"undefined\" || variable === null) {\n    return \"0\";\n  }\n  parseInt(val).toString();\n};\n\nexport const parseBooleanVal = (val) => {\n  if (val) {\n    if (typeof val === \"string\" && val === \"false\") return false;\n    return true;\n  }\n  return false;\n};\n\nexport const isValidIDNumber = (val) => {\n  if (!val) return false;\n  if (new RegExp(/^(?=.*[0-9])([a-zA-Z0-9]{8,})+$/).test(val)) {\n    return true;\n  }\n  return false;\n};\n\nexport const convertToUpper = (val) => {\n  if (val) return val.toUpperCase();\n  return val;\n};\n\nexport const convertToLower = (val) => {\n  const trimmedVal = val.trim();\n  return trimmedVal ? trimmedVal.toLowerCase() : \"\";\n};\n\nexport const formattedString = (str) => {\n  if (typeof str !== \"string\" || !str.trim()) {\n    return \"\";\n  }\n\n  if (str.length <= 3) {\n    return str.toUpperCase();\n  }\n\n  return str.replace(/(\\b\\w{1,3}\\b|\\b\\w{4,}\\b)/g, (word) => {\n    return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n  });\n};\n\nexport const capitalizeLetter = (str) => {\n  if (typeof str !== \"string\" || !str.trim()) {\n    return \"\";\n  }\n  if (str.length <= 3) {\n    return str.toUpperCase();\n  }\n\n  return str\n    .split(\" \")\n    .map((word) => {\n      if (!word) return word;\n      return word[0].toUpperCase() + word.slice(1).toLowerCase();\n    })\n    .join(\" \");\n};\n\nexport const getCrewsName = (empDemos) => {\n  if (!empDemos) return \"\";\n  let parsed = typeof empDemos === \"string\" ? JSON.parse(empDemos) : empDemos;\n  let first = parsed.firstName.charAt(0).toUpperCase() + parsed.firstName.slice(1).toLowerCase();\n  let last = parsed.lastName.charAt(0).toUpperCase() + parsed.lastName.slice(1).toLowerCase();\n  return `${first} ${last}`;\n};\n\nexport const testAppVersion = (test) => {\n  if (test.appVer) return test.appVer;\n\n  const val = test.sr_no;\n  if (!val) return \"-\";\n  if (!isNaN(val)) return \"-\";\n  try {\n    const obj = typeof val === \"string\" ? JSON.parse(val) : val;\n    if (obj.version) {\n      return obj.version;\n    }\n  } catch (error) {\n    console.log(\"Error \", error);\n  }\n  return \"-\";\n};\n\nexport const removeSpaceIns = (name) => {\n  if (!name) return \"\";\n  return name.toLowerCase().replace(/\\s/g, \"\");\n};\n\nexport const setProceduresFromDate = (claimToBeEdited, date) => {\n  const claim = { ...claimToBeEdited };\n  const proc_arr_to_save = claim.proc_array || [];\n  for (let i = 0; i < proc_arr_to_save.length; i++) {\n    const obj = { ...proc_arr_to_save[i] };\n    obj.from_date = date;\n    proc_arr_to_save.splice(i, 1, obj);\n  }\n  Object.assign(claimToBeEdited, {\n    proc_array: proc_arr_to_save,\n    from_date_1: date,\n  });\n  return claimToBeEdited;\n};\n\nexport const parseErrorMessageString = (input) => {\n  if (!input) return [];\n  const errorMessages = input.split(\"|\");\n  let parsedData = [];\n\n  errorMessages.forEach((errorMessage) => {\n    const [code, _, field, message] = errorMessage.split(\":\");\n    const obj = { code, field, message };\n    if (errorMessage.includes(\"(resolve)\")) {\n      Object.assign(obj, { resolve: \"(resolve)\" });\n    }\n    parsedData.push(obj);\n  });\n\n  if (parsedData.length === 1 && !parsedData[0].field && !parsedData[0].messages) {\n    const errorMessages = input.split(\",\");\n    const nestedPushed = [];\n    errorMessages.forEach((errorMessage) => {\n      const [code, _, field, message] = errorMessage.split(\":\");\n      const obj = { code, field, message };\n      if (errorMessage.includes(\"(resolve)\")) {\n        Object.assign(obj, { resolve: \"(resolve)\" });\n      }\n      nestedPushed.push(obj);\n    });\n    parsedData = nestedPushed;\n  }\n\n  return parsedData;\n};\n\nexport const createErrorMessageString = (input) => {\n  if (!input || !Array.isArray(input) || input.length === 0) return \"\";\n\n  const errorMessages = input.map((error) => {\n    if (!error) return \"\";\n    const { code, field, message, resolve } = error;\n    return `${code ? `${code}:` : \"\"}${field ? `${field}:` : \"\"}${message || \"\"}${resolve || \"\"}`;\n  });\n\n  return errorMessages.join(\"|\");\n};\n\nexport const isJSONString = (string) => {\n  if (!string || !string.trim()) return false;\n  try {\n    JSON.parse(string);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nexport const getDiagonosisCode = (str) => {\n  return isJSONString(str) ? JSON.parse(str).code : str || \"\";\n};\n\nexport const getDiagonosisInternalCodeValue = (str) => {\n  return isJSONString(str) ? JSON.parse(str).internalCode || JSON.parse(str).code : str || \"\";\n};\n\nexport const getIntVal = (val) => {\n  if (!val) return 0;\n  try {\n    return parseInt(val);\n  } catch (err) {\n    return 0;\n  }\n};\n\nexport const parseStringIntoFloat = (str) => {\n  if (!str || !str.trim()) return;\n  return str.replace(/[^0-9.]/g, \"\");\n};\n\nexport const formatTest = (testData, clients, employees) => {\n  let demos = parseJSONObject(testData.employee_demographics);\n\n  let resultDetails = parseStringToJSON(testData.resultDetails);\n\n  let name;\n  let firstName;\n  let lastName;\n  let dob;\n  let isVaccinated;\n  let employeeType;\n  let preRegTest;\n  let labStatusTest;\n  let transitionStatus;\n  let note;\n  let clinicalComments;\n  let labComments;\n  let orderDate;\n  let orderNo;\n  const { providerID, providerName } = demos || {};\n\n  if (demos) {\n    name = demos.firstName + \" \" + demos.lastName;\n    firstName = capitalizeLetter(demos.firstName);\n    lastName = capitalizeLetter(demos.lastName);\n    dob = formatDateOfBirthDOB(demos.dob);\n    isVaccinated = demos?.isVaccinated;\n    employeeType = demos?.employeeType;\n    clinicalComments = demos?.clinicalcomment;\n    labComments = demos?.comment;\n    orderDate = demos?.orderDate;\n    orderNo = demos?.orderNo;\n  }\n  testData.labOrderDetail = parseStringToJSON(testData.labOrderDetail);\n\n  if (employees) {\n    const emp = employees.find((e) => e.id === testData.employeeID);\n\n    if (emp) {\n      employeeType = emp.employeeType;\n    } else {\n      console.log(\"Employee not found \", testData);\n    }\n  }\n\n  if (typeof employeeType === \"undefined\") {\n    if (testData?.employeeType) {\n      employeeType = testData?.employeeType;\n    }\n  }\n\n  const test = { ...testData };\n\n  preRegTest = test.createSource === \"PR\" ? true : false;\n  labStatusTest = LAB_ORDER_STATUS[test.labOrderDetail?.status] || \"0\";\n  Object.assign(test, { preRegTest, labStatusTest });\n  test.viewedResult = testData.result;\n  if (clients && clients.length > 0) {\n    const client = clients.find((c) => c.id === test.clientID);\n    if (client && client.resultType === \"P/F\") {\n      test.viewedResult = AMAZON_CLIENT_RESULT[test.result];\n    }\n  }\n\n  if (testData.result) {\n    test.pcrStatus = RECEIVED_BYLAB;\n  }\n\n  if (test.test_type === \"PCR\") {\n    if (test.scanByLabUserName) {\n      transitionStatus = \"Accepted\";\n    } else if (test.scanByTesterName) {\n      transitionStatus = \"In-transit\";\n    } else {\n      transitionStatus = \"Pending\";\n    }\n  } else {\n    transitionStatus = \"\";\n  }\n\n  if (!CONFIG.isWhiteLabel) {\n    test.status =\n      testData.status?.toLowerCase() === \"pending\" && testData.test_type === \"PCR\" && !testData.result\n        ? \"New\"\n        : testData.status;\n  } else {\n    if (testData.status?.toLowerCase() === \"sent\") {\n      test.status = \"Processing\";\n    }\n\n    if (testData.result && testData.result !== \"Cancelled\") {\n      test.status = \"Completed\";\n    }\n  }\n  test.pcrStatus = getValidDep(test.pcrStatus);\n  test.test_type = testData.test_type === \"Other\" ? \"Rapid PCR\" : testData.test_type;\n\n  let receivedDate = \"\";\n\n  try {\n    const arr = JSON.parse(test.sr_no);\n    if (\n      test.pcrStatus === \"Received By Lab\" ||\n      ((test.pcrStatus === \"Send Out\" || test.pcrStatus === \"Sample Received\") && test.scanByLabUserName)\n    ) {\n      receivedDate = arr.length > 1 ? arr[1]?.date : arr[0]?.date;\n    }\n    if (arr.length === 1) {\n      dateOfReceive = moment(arr[0]?.date).add(\"30\", \"minutes\").toISOString();\n    }\n  } catch (error) {}\n\n  return {\n    ...test,\n    resultDetails,\n    ...(test.StampByName && { stampByName: test.StampByName }),\n    note,\n    name,\n    firstName,\n    lastName,\n    dob,\n    sex: demos?.sex,\n    street: demos?.street,\n    street2: demos?.street2,\n    state: demos?.state,\n    city: demos?.city,\n    idNumber: demos?.idNumber,\n    zip: demos?.zip,\n    isReview: demos?.isReview,\n    employee_demographics: demos,\n    isVaccinated,\n    employeeType,\n    phoneNumber: formatPhoneNumber(test.phoneNumber, demos?.countryCode),\n    transitionStatus,\n    receivedDate,\n    providerID,\n    providerName,\n    clinicalComments,\n    labComments,\n    orderDate,\n    orderNo,\n    testDate: test?.timerStatus ? test?.resultDateTime : null,\n  };\n};\n\nexport const formatOrders = (orderData, isSiteUser) => {\n  let demos =\n    typeof orderData.employee_demographics === \"string\"\n      ? JSON.parse(orderData.employee_demographics)\n      : orderData.employee_demographics;\n\n  let testsToDo = typeof orderData.testsToDo === \"string\" ? JSON.parse(orderData.testsToDo) : orderData.testsToDo;\n\n  let eligibilityStatus =\n    typeof orderData.eligibilityStatus === \"string\"\n      ? JSON.parse(orderData.eligibilityStatus)\n      : orderData.eligibilityStatus;\n\n  const isArray = testsToDo && Array.isArray(testsToDo);\n  const testList = (isArray ? testsToDo : testsToDo?.test) || [];\n  const test = testList[0] || {};\n  const { result, testID } = test;\n\n  const testType = testList && testList?.length > 1 ? \"Multi\" : testList[0] ? testList[0]?.label : null;\n\n  const processedTest = testList.filter((f) => f.result)?.length || 0;\n  const releasedTest = testList.filter((f) => f.result && f.releaseStatus === \"Confirmed\")?.length || 0;\n\n  delete demos?.status;\n  delete demos?.id;\n\n  return {\n    ...orderData,\n    ...demos,\n    tests: testList.length,\n    processedTest,\n    releasedTest,\n    test_type: testType,\n    testsToDo,\n    eligibilityStatus,\n    testID,\n    result,\n    employee_demographics: demos,\n  };\n};\n\nexport const calculateStringSimilarity = (str1, str2) => {\n  const matrix = [];\n\n  if (!str1 && !str2) return 0;\n\n  for (let i = 0; i <= str1.length; i++) {\n    matrix[i] = [i];\n    for (let j = 1; j <= str2.length; j++) {\n      if (i === 0) {\n        matrix[i][j] = j;\n      } else {\n        const cost = str1[i - 1] !== str2[j - 1] ? 1 : 0;\n        matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost);\n      }\n    }\n  }\n\n  const maxLen = Math.max(str1.length, str2.length);\n  const distance = matrix[str1.length][str2.length];\n  return 1 - distance / maxLen;\n};\n\nexport const isSimilarPayer = (provider, payerName) => {\n  const similarityThreshold = 0.8;\n  const { label, payer_alt_names } = provider;\n\n  if (label.toLowerCase() === payerName.toLowerCase()) {\n    return true;\n  }\n\n  if (calculateStringSimilarity(label.toLowerCase(), payerName.toLowerCase()) > similarityThreshold) {\n    return true;\n  }\n\n  if (payer_alt_names) {\n    const similarAltNames = payer_alt_names.some(\n      (altName) =>\n        altName.alt_payer_name &&\n        calculateStringSimilarity(altName.alt_payer_name.toLowerCase(), payerName.toLowerCase()) > similarityThreshold\n    );\n\n    if (similarAltNames) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nexport const formatCurrency = (val) => {\n  if (!val) return \"$0.00\";\n  const obj = new Intl.NumberFormat(\"en-US\", {\n    style: \"currency\",\n    currency: \"USD\",\n\n    // These options are needed to round to whole numbers if that's what you want.\n    //minimumFractionDigits: 0, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)\n    //maximumFractionDigits: 0, // (causes 2500.99 to be printed as $2,501)\n  });\n  return obj.format(val);\n};\n\nexport const formatPercentage = (val) => {\n  if (val == null) return \"0%\";\n  const formatter = new Intl.NumberFormat(\"en-US\", {\n    style: \"percent\",\n    minimumFractionDigits: 2,\n    maximumFractionDigits: 2,\n  });\n  return formatter.format(val);\n};\n\nexport const parseCurrency = (val) => {\n  if (!val) return 0;\n  const parsedValue = val.toString().replace(/[^0-9.]/g, \"\");\n  return parseFloat(parsedValue) || 0;\n};\n\nexport const formatExternalTest = (testData, clients) => {\n  let demos =\n    typeof testData.employee_demographics === \"string\"\n      ? JSON.parse(testData.employee_demographics)\n      : testData.employee_demographics;\n  let name;\n  let firstName;\n  let lastName;\n  let phoneNumber = testData.phoneNumber;\n  if (demos) {\n    name = demos.firstName + \" \" + demos.lastName;\n    firstName = capitalizeLetter(demos.firstName);\n    lastName = capitalizeLetter(demos.lastName);\n    phoneNumber = `${demos.countryCode}${demos.phoneNumber}`;\n  }\n\n  const testType = TEST_TYPE_VALUE[testData.test_type];\n\n  return {\n    ...testData,\n    phoneNumber,\n    name,\n    firstName,\n    lastName,\n    test_type: testType || testData.test_type,\n  };\n};\n\nexport const getAMPM = (date) => {\n  if (!date) return \"\";\n  const hours = new Date(date).getHours();\n  return hours >= 12 ? \"PM\" : \"AM\";\n};\n\nexport const toLowerCase = (val) => {\n  if (val) val.toLowerCase();\n  return val;\n};\n\nexport const validSpace = (value) => {\n  if (!value) return \"\";\n  return value.replace(/  +/g, \" \");\n};\n\nexport const isValidName = (name) => {\n  return true;\n  if (!name) return false;\n  if (new RegExp(/^(?!.*([a-z])\\1{2})[A-Za-z ]{2,75}$/i).test(name) && window.navigator.language === \"en-US\") {\n    return true;\n  }\n  if (window.navigator.language === \"ja-JP\" && new RegExp(/^.{2,75}$/i).test(name)) return true;\n  return true;\n};\nexport const isValidState = (state) => {\n  return true;\n  if (!state) return false;\n  if (new RegExp(/^[A-Z]{2}$/).test(state)) {\n    return true;\n  } else return false;\n};\nexport const isValidIdNum = (id) => {\n  return true;\n  if (!id) return false;\n  if (new RegExp(/^(?!.*([a-zA-Z0-9])\\1{4})[a-zA-Z0-9]{5,16}$/).test(id)) {\n    return true;\n  } else return false;\n};\nexport const isValidDigits = (num) => {\n  if (!num) return false;\n  if (new RegExp(/^[1-9]\\d*$/g).test(num)) {\n    return true;\n  }\n  return false;\n};\nexport const isValidBarcodeNumber = (num) => {\n  if (!num) return false;\n  if (new RegExp(/^\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])(?!0000)\\d{4}$/).test(num)) {\n    return true;\n  }\n  return false;\n};\n\nexport const testTypeValid = (test, TestTypeDuaration) => {\n  if (!test) return \"\";\n  if (!TestTypeDuaration) return \"\";\n  const { employee_demographics } = test;\n  const findval = JSON.parse(TestTypeDuaration).find((c) => c.testType === employee_demographics.externalTestType);\n  if (!findval) return \"\";\n  const date = new Date(test.createdAt);\n  date.setHours(date.getHours() + parseInt(findval.hours));\n  if (date <= new Date()) {\n    return \"EXPIRED\";\n  }\n  return moment(date).format(\"MM-DD-YYYY HH:mm:ss\");\n};\nexport const getDropDownValue = (val) => {\n  if (val === null || val === undefined) return null;\n  if (val) return { value: true, label: \"Yes\" };\n  return { value: false, label: \"No\" };\n};\n\nexport const getDemoGraphics = (test) => {\n  if (!test) return;\n\n  const demos = parseJSONObject(test.employee_demographics);\n  const ins = parseJSONObject(demos.insuranceDetails);\n  const eligStatus = parseJSONObject(demos.eligibilityStatus);\n  const insDetails = parseInsDetails(ins, demos);\n\n  return {\n    ...demos,\n    insuranceDetails: insDetails,\n    // ...(!demos?.swabtype && { swabtype: \"oral\" }),\n    eligibilityStatus: eligStatus,\n  };\n};\n\nexport const formatDateOfBirth = (dob) =>\n  dob ? `${dob.substring(0, 2)}/${dob.substring(2, 4)}/${dob.substring(4)}` : \"\";\n\nexport const getAge = (dob) => {\n  const val = formatDateOfBirthDOB(dob);\n  return dob ? moment().diff(val, \"years\") : \"\";\n};\nexport const isValidDate = (val) => {\n  const date = val.replace(/\\/|-|,/g, \"\");\n  if (date?.length === 8) {\n    const day = date.substring(0, 2);\n    const month = date.substring(2, 4);\n    const year = date.substring(4);\n    const testDate = moment(`${year}-${month}-${day}`).format(\"YYYY-MM-DD\");\n    if (testDate !== \"Invalid date\") {\n      return true;\n    }\n    return false;\n  }\n  return false;\n};\n\nexport const isValidDobField = (dob, format) => {\n  if (!dob) return false;\n  return moment(dob, `${format}`, true).isValid();\n};\nexport const setDate = (val) => {\n  if (!val) return;\n  const date = val.replace(/\\/|-|,/g, \"\");\n  const day = date.substring(0, 2);\n  const month = date.substring(2, 4);\n  const year = date.substring(4);\n  return moment(`${year}-${month}-${day}`).format();\n};\n\nexport const formatDate = (date) => (date ? moment(date).format(\"DD/MM/YYYY\") : \"\");\n\nexport const formatDOB = (date) => (date ? moment(date).format(\"MM/DD/YYYY\") : \"\");\n\nexport const formatDateMDY = (date) => (date ? moment(date).format(\"MM/DD/YYYY\") : \"\");\n\nexport const formatTimeFromDate = (date) => (date ? moment(date).format(\"hh:mm A\") : \"\");\n\nexport const formatUTCDate = (date) => (date ? moment(date).format(\"MM-DD-YYYY\") : \"\");\n\nexport const formatLogDate = (date) => (date ? moment(date).format(\"MM-DD-YYYY HH:mm:ss\") : \"\");\n\nexport const formatOrderDate = (date) => (date ? moment(date).format(\"MM-DD-YYYY hh:mm A\") : \"\");\n\nexport const formatReportDate = (date) => (date ? moment(date).format(\"MM-DD-YYYY HH:mm\") : \"\");\n\nexport const formateDateLL = (date) => (date ? moment(date).format(\"LL\") : \"\");\n\nexport const formateDateDDMMMYYYY = (date) => (date ? moment(date).format(\"MMM DD, YYYY\") : \"\");\n\nexport const formateDatellll = (date) => (date ? moment(date).format(\"llll\") : \"\");\n\nexport const currentDate = () => moment().format(\"MM/DD/YYYY\");\n\nexport const formatPDFName = (demos) => {\n  let name = \"\";\n  if (demos.lastName) name = `${demos.lastName.substring(0, 1)}${demos.lastName.substring(1).toLowerCase()}`;\n  if (name) name = `${name}, `;\n  if (demos.firstName) name = `${name}${demos.firstName.substring(0, 1)}${demos.firstName.substring(1).toLowerCase()}`;\n  return name;\n};\n\nexport const sortByAlphaOrder = (list, key) => {\n  return [...list].sort((a, b) => {\n    const testerB = b[key] ?? \"\";\n    const testerA = a[key] ?? \"\";\n    return testerB < testerA ? 1 : testerA < testerB ? -1 : 0;\n  });\n};\n\nexport const changeSort = (\n  sortByKey,\n  sortDescending,\n  filteredTests,\n  setFilteredTests,\n  getSiteName,\n  getLabName,\n  getClientName,\n  parseTestResult\n) => {\n  let sortBy = sortByKey;\n\n  if (sortByKey === \"client\") sortBy = \"site_name\";\n\n  switch (sortBy) {\n    case \"dob\":\n      setFilteredTests(\n        [...filteredTests].sort((a, b) => {\n          const dobA = moment(a[sortBy], [\"MM/DD/YYYY\", \"YYYY-MM-DD\"]).valueOf();\n          const dobB = moment(b[sortBy], [\"MM/DD/YYYY\", \"YYYY-MM-DD\"]).valueOf();\n          return sortDescending ? dobB - dobA : dobA - dobB;\n        })\n      );\n      break;\n    case \"employee_demographics\":\n      setFilteredTests(\n        sortDescending\n          ? [...filteredTests].sort((a, b) =>\n              getDemoGraphics(b).lastName < getDemoGraphics(a).lastName\n                ? 1\n                : getDemoGraphics(a).lastName < getDemoGraphics(b).lastName\n                ? -1\n                : 0\n            )\n          : [...filteredTests].sort((a, b) =>\n              getDemoGraphics(b).lastName > getDemoGraphics(a).lastName\n                ? 1\n                : getDemoGraphics(a).lastName > getDemoGraphics(b).lastName\n                ? -1\n                : 0\n            )\n      );\n      break;\n    case \"clientID\":\n      setFilteredTests(\n        sortDescending\n          ? [...filteredTests].sort((a, b) =>\n              getClientName(b[sortBy]) < getClientName(a[sortBy])\n                ? 1\n                : getClientName(a[sortBy]) < getClientName(b[sortBy])\n                ? -1\n                : 0\n            )\n          : [...filteredTests].sort((a, b) =>\n              getClientName(b[sortBy]) > getClientName(a[sortBy])\n                ? 1\n                : getClientName(a[sortBy]) > getClientName(b[sortBy])\n                ? -1\n                : 0\n            )\n      );\n      break;\n    case \"siteID\":\n      setFilteredTests(\n        sortDescending\n          ? [...filteredTests].sort((a, b) =>\n              getSiteName(b[sortBy]) < getSiteName(a[sortBy])\n                ? 1\n                : getSiteName(a[sortBy]) < getSiteName(b[sortBy])\n                ? -1\n                : 0\n            )\n          : [...filteredTests].sort((a, b) =>\n              getSiteName(b[sortBy]) > getSiteName(a[sortBy])\n                ? 1\n                : getSiteName(a[sortBy]) > getSiteName(b[sortBy])\n                ? -1\n                : 0\n            )\n      );\n      break;\n    case \"labID\":\n      setFilteredTests(\n        sortDescending\n          ? [...filteredTests].sort((a, b) =>\n              getLabName(b[sortBy]) < getLabName(a[sortBy]) ? 1 : getLabName(a[sortBy]) < getLabName(b[sortBy]) ? -1 : 0\n            )\n          : [...filteredTests].sort((a, b) =>\n              getLabName(b[sortBy]) > getLabName(a[sortBy]) ? 1 : getLabName(a[sortBy]) > getLabName(b[sortBy]) ? -1 : 0\n            )\n      );\n      break;\n    case \"result\":\n      setFilteredTests(\n        sortDescending\n          ? [...filteredTests].sort((a, b) =>\n              parseTestResult(b) < parseTestResult(a) ? 1 : parseTestResult(a) < parseTestResult(b) ? -1 : 0\n            )\n          : [...filteredTests].sort((a, b) =>\n              parseTestResult(b) > parseTestResult(a) ? 1 : parseTestResult(a) > parseTestResult(b) ? -1 : 0\n            )\n      );\n      break;\n    case \"employeeID\":\n    case \"status\":\n    case \"test_type\":\n    case \"barcode\":\n    case \"phoneNumber\":\n    case \"phone\":\n    case \"email\":\n    case \"name\":\n    case \"firstName\":\n    case \"lastName\":\n    case \"site_name\":\n    case \"tester_name\":\n    case \"scanByLabUserName\":\n    case \"providerName\":\n    case \"isExternalTest\":\n      setFilteredTests(\n        sortDescending\n          ? [...filteredTests].sort((a, b) => {\n              const testerB = (b[sortBy] ?? \"\").toString().toLowerCase();\n              const testerA = (a[sortBy] ?? \"\").toString().toLowerCase();\n              return testerB < testerA ? 1 : testerA < testerB ? -1 : 0;\n            })\n          : [...filteredTests].sort((a, b) => {\n              const testerB = (b[sortBy] ?? \"\").toString().toLowerCase();\n              const testerA = (a[sortBy] ?? \"\").toString().toLowerCase();\n              return testerB > testerA ? 1 : testerA > testerB ? -1 : 0;\n            })\n      );\n      break;\n    case \"sequenceNo\":\n      setFilteredTests(\n        sortDescending\n          ? [...filteredTests].sort((a, b) => {\n              return parseInt(b[sortBy]) < parseInt(a[sortBy]) ? 1 : parseInt(a[sortBy]) < parseInt(b[sortBy]) ? -1 : 0;\n            })\n          : [...filteredTests].sort((a, b) => {\n              return parseInt(b[sortBy]) > parseInt(a[sortBy]) ? 1 : parseInt(a[sortBy]) > parseInt(b[sortBy]) ? -1 : 0;\n            })\n      );\n      break;\n    case \"resultDate\":\n      setFilteredTests(\n        sortDescending\n          ? [...filteredTests].sort((a, b) => {\n              const testerB = b[sortBy] ? b[sortBy] : b.createdAt;\n              const testerA = a[sortBy] ? a[sortBy] : a.createdAt;\n              return testerB < testerA ? 1 : testerA < testerB ? -1 : 0;\n            })\n          : [...filteredTests].sort((a, b) => {\n              const testerB = b[sortBy] ? b[sortBy] : b.createdAt;\n              const testerA = a[sortBy] ? a[sortBy] : a.createdAt;\n              return testerB > testerA ? 1 : testerA > testerB ? -1 : 0;\n            })\n      );\n      break;\n    case \"totalTests\":\n      setFilteredTests(\n        sortDescending\n          ? [...filteredTests].sort((a, b) =>\n              parseTestResult(b.id) < parseTestResult(a.id) ? 1 : parseTestResult(a.id) < parseTestResult(b.id) ? -1 : 0\n            )\n          : [...filteredTests].sort((a, b) =>\n              parseTestResult(b.id) > parseTestResult(a.id) ? 1 : parseTestResult(a.id) > parseTestResult(b.id) ? -1 : 0\n            )\n      );\n      break;\n    default:\n      setFilteredTests(\n        sortDescending\n          ? [...filteredTests].sort((a, b) => (b[sortBy] < a[sortBy] ? 1 : a[sortBy] < b[sortBy] ? -1 : 0))\n          : [...filteredTests].sort((a, b) => (b[sortBy] > a[sortBy] ? 1 : a[sortBy] > b[sortBy] ? -1 : 0))\n      );\n  }\n};\n\nexport const sortTestList = (\n  sortBy,\n  sortDescending,\n  filteredTests,\n  getSiteName,\n  getLabName,\n  getClientName,\n  parseTestResult\n) => {\n  switch (sortBy) {\n    case \"employee_demographics\":\n      return sortDescending\n        ? [...filteredTests].sort((a, b) =>\n            getDemoGraphics(b).lastName < getDemoGraphics(a).lastName\n              ? 1\n              : getDemoGraphics(a).lastName < getDemoGraphics(b).lastName\n              ? -1\n              : 0\n          )\n        : [...filteredTests].sort((a, b) =>\n            getDemoGraphics(b).lastName > getDemoGraphics(a).lastName\n              ? 1\n              : getDemoGraphics(a).lastName > getDemoGraphics(b).lastName\n              ? -1\n              : 0\n          );\n\n    case \"clientID\":\n      return sortDescending\n        ? [...filteredTests].sort((a, b) =>\n            getClientName(b[sortBy]) < getClientName(a[sortBy])\n              ? 1\n              : getClientName(a[sortBy]) < getClientName(b[sortBy])\n              ? -1\n              : 0\n          )\n        : [...filteredTests].sort((a, b) =>\n            getClientName(b[sortBy]) > getClientName(a[sortBy])\n              ? 1\n              : getClientName(a[sortBy]) > getClientName(b[sortBy])\n              ? -1\n              : 0\n          );\n    case \"siteID\":\n      return sortDescending\n        ? [...filteredTests].sort((a, b) =>\n            getSiteName(b[sortBy]) < getSiteName(a[sortBy])\n              ? 1\n              : getSiteName(a[sortBy]) < getSiteName(b[sortBy])\n              ? -1\n              : 0\n          )\n        : [...filteredTests].sort((a, b) =>\n            getSiteName(b[sortBy]) > getSiteName(a[sortBy])\n              ? 1\n              : getSiteName(a[sortBy]) > getSiteName(b[sortBy])\n              ? -1\n              : 0\n          );\n    case \"labID\":\n      return sortDescending\n        ? [...filteredTests].sort((a, b) =>\n            getLabName(b[sortBy]) < getLabName(a[sortBy]) ? 1 : getLabName(a[sortBy]) < getLabName(b[sortBy]) ? -1 : 0\n          )\n        : [...filteredTests].sort((a, b) =>\n            getLabName(b[sortBy]) > getLabName(a[sortBy]) ? 1 : getLabName(a[sortBy]) > getLabName(b[sortBy]) ? -1 : 0\n          );\n    case \"result\":\n      return sortDescending\n        ? [...filteredTests].sort((a, b) =>\n            parseTestResult(b) < parseTestResult(a) ? 1 : parseTestResult(a) < parseTestResult(b) ? -1 : 0\n          )\n        : [...filteredTests].sort((a, b) =>\n            parseTestResult(b) > parseTestResult(a) ? 1 : parseTestResult(a) > parseTestResult(b) ? -1 : 0\n          );\n    case \"employeeID\":\n    case \"status\":\n    case \"test_type\":\n    case \"barcode\":\n    case \"phoneNumber\":\n    case \"phone\":\n    case \"email\":\n    case \"name\":\n    case \"firstName\":\n    case \"lastName\":\n    case \"tester_name\":\n      return sortDescending\n        ? [...filteredTests].sort((a, b) => {\n            const testerB = b[sortBy] ?? \"\";\n            const testerA = a[sortBy] ?? \"\";\n            return testerB < testerA ? 1 : testerA < testerB ? -1 : 0;\n          })\n        : [...filteredTests].sort((a, b) => {\n            const testerB = b[sortBy] ?? \"\";\n            const testerA = a[sortBy] ?? \"\";\n            return testerB > testerA ? 1 : testerA > testerB ? -1 : 0;\n          });\n    case \"sequenceNo\":\n      return sortDescending\n        ? [...filteredTests].sort((a, b) => {\n            return parseInt(b[sortBy]) < parseInt(a[sortBy]) ? 1 : parseInt(a[sortBy]) < parseInt(b[sortBy]) ? -1 : 0;\n          })\n        : [...filteredTests].sort((a, b) => {\n            return parseInt(b[sortBy]) > parseInt(a[sortBy]) ? 1 : parseInt(a[sortBy]) > parseInt(b[sortBy]) ? -1 : 0;\n          });\n    case \"totalTests\":\n      return sortDescending\n        ? [...filteredTests].sort((a, b) =>\n            b.tests?.length < a.tests?.length ? 1 : a.tests?.length < b.tests?.length ? -1 : 0\n          )\n        : [...filteredTests].sort((a, b) =>\n            b.tests?.length > a.tests?.length ? 1 : a.tests?.length > b.tests?.length ? -1 : 0\n          );\n    default:\n      return sortDescending\n        ? [...filteredTests].sort((a, b) => (b[sortBy] < a[sortBy] ? 1 : a[sortBy] < b[sortBy] ? -1 : 0))\n        : [...filteredTests].sort((a, b) => (b[sortBy] > a[sortBy] ? 1 : a[sortBy] > b[sortBy] ? -1 : 0));\n  }\n};\n\nexport const isValidEmail = (email) =>\n  new RegExp(\n    /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n  ).test(email);\nexport const checkValidity = (name) => {\n  if (!name) return \"\";\n  return name.replace(/[^A-Z0-9]/gi, \"\");\n};\nexport const isValidFile = (file) => {\n  const fileName = file.name;\n\n  const exts = [\"png\", \"jpg\", \"jpeg\", \"gif\"];\n\n  if (fileName) {\n    let getExt = fileName.split(\".\");\n    getExt = getExt.reverse();\n\n    if (!exts.includes(getExt[0].toLowerCase())) {\n      return \"only image files are allowed\";\n    }\n\n    if (file.size / 1024 / 1020 > 10) {\n      return \"max. 10MB file size allow\";\n    }\n\n    return \"\";\n  }\n  return \"\";\n};\n\nexport const setPhoneNo = (phone) => {\n  if (!phone) return null;\n  return phone.includes(\"+1\") ? `+${phone.replace(/\\D/g, \"\")}` : `+1${phone.replace(/\\D/g, \"\")}`;\n};\n\nexport const formatZipCode = (id) => {\n  if (id && id.length > 6) {\n    return `${id.substring(0, 5)}`;\n  }\n  return id;\n};\n\nexport const formatZip = (val) => {\n  if (!val) {\n    return \"\";\n  }\n\n  const input = val.replace(/[^0-9]+/g, \"\");\n  const length = input.length;\n\n  if (length < 9 && length > 5) {\n    return input.substring(0, 5);\n  }\n\n  if (length > 5) {\n    if (input.substring(5) === \"0000\") return input.substring(0, 5);\n    return `${input.substring(0, 5)}-${input.substring(5)}`;\n  }\n\n  if (length === 5) {\n    return input;\n  }\n\n  return input;\n};\n\nexport const medFlowInLocalStorage = {\n  save: (type) => localStorage.setItem(\"medFlow\", type),\n  get: () => localStorage.getItem(\"medFlow\") || null,\n  clear: () => {\n    const ServicePort = localStorage.getItem(\"ServicePort\");\n    const ServiceHost = localStorage.getItem(\"ServiceHost\");\n    const printerName = localStorage.getItem(\"printerName\");\n    \n    localStorage.clear();\n    if (ServiceHost) {\n      localStorage.setItem(\"ServicePort\", ServicePort);\n      localStorage.setItem(\"ServiceHost\", ServiceHost);\n    }\n    if(printerName){\n      localStorage.setItem(\"printerName\", printerName);\n    }\n  },\n};\n\nexport const medFlowPortalTitle = {\n  save: (type) => localStorage.setItem(\"medFlowTitle\", type),\n  get: () => localStorage.getItem(\"medFlowTitle\") || null,\n  clear: () => localStorage.clear(),\n};\n\nexport const roleInLocalStorage = {\n  save: (type) => localStorage.setItem(\"role\", type),\n  get: () => localStorage.getItem(\"role\") || null,\n  clear: () => localStorage.clear(),\n};\n\nexport const connectedIDInLocalStorage = {\n  save: (type) => localStorage.setItem(\"connectedID\", type),\n  get: () => localStorage.getItem(\"connectedID\") || null,\n  clear: () => localStorage.removeItem(\"connectedID\"),\n};\n\nexport const clientIDInLocalStorage = {\n  save: (type) => localStorage.setItem(\"clientID\", type),\n  get: () => localStorage.getItem(\"clientID\") || null,\n  clear: () => localStorage.removeItem(\"clientID\"),\n};\n\nexport const printerLocalStorage = {\n  save: (type) => localStorage.setItem(\"printerName\", type),\n  get: () => localStorage.getItem(\"printerName\") || null,\n  clear: () => localStorage.removeItem(\"printerName\"),\n};\n\nexport const registrationShowSelectInLocalStorage = {\n  save: (data) => localStorage.setItem(\"showSelected\", data),\n  get: () => JSON.parse(localStorage.getItem(\"showSelected\")) || null,\n  clear: () => localStorage.removeItem(\"showSelected\"),\n};\n\nexport const sortingFilterInLC = {\n  save: (obj) => localStorage.setItem(\"medflowmd\", JSON.stringify(obj)),\n  get: () => {\n    if (localStorage.getItem(\"medflowmd\")) {\n      return JSON.parse(localStorage.getItem(\"medflowmd\"));\n    }\n    return {\n      alltests: {},\n      unprocessedtest: {},\n      senttest: {},\n      pendingreleasetest: {},\n      totaltests: {},\n      totaltest: {},\n      expiredtests: {},\n      processing: {},\n      processedtests: {},\n      positivetest: {},\n      quarantine: {},\n      tests: {},\n      sites: {},\n      labs: {},\n      clients: {},\n      users: {},\n      crews: {},\n      crewhs: {},\n      employees: {},\n      crewprofile: {},\n    };\n  },\n  clear: () => localStorage.removeItem(\"medflowmd\"),\n};\n\nexport const uploadPatientRecordInLC = {\n  save: (data) => localStorage.setItem(\"uploadStatusRecord\", data),\n  get: () => JSON.parse(localStorage.getItem(\"uploadStatusRecord\")) || null,\n  clear: () => localStorage.removeItem(\"uploadStatusRecord\"),\n};\n\nexport const showsInSS = {\n  save: (obj) => sessionStorage.setItem(\"medflowSs\", JSON.stringify(obj)),\n  get: () => {\n    if (sessionStorage.getItem(\"medflowSs\")) {\n      return JSON.parse(sessionStorage.getItem(\"medflowSs\"));\n    }\n    return {\n      selectedShow: {},\n    };\n  },\n  clear: () => sessionStorage.removeItem(\"medflowSs\"),\n};\n\nexport const personalisationInLC = {\n  save: (key, obj) => {\n    const dataInLc = localStorage.getItem(\"medflowpersonalisation\");\n    let newObj = obj;\n    if (key && dataInLc && dataInLc !== \"undefined\") {\n      const data = typeof dataInLc === \"string\" ? JSON.parse(dataInLc) : dataInLc;\n      Object.assign(data, { [key]: obj });\n      newObj = data;\n    } else if (key) {\n      newObj = { [key]: obj };\n    }\n    localStorage.setItem(\"medflowpersonalisation\", JSON.stringify(newObj));\n  },\n  saveAs: (arr, key) => {\n    const selectedSetting = JSON.stringify(\n      arr\n        .filter((f) => f.isCheck)\n        .map((f) => {\n          return { id: f.id, width: f.width };\n        })\n    );\n\n    let objData = JSON.parse(localStorage.getItem(\"medflowpersonalisation\"));\n    if (objData) {\n      objData[key] = selectedSetting;\n      localStorage.setItem(\"medflowpersonalisation\", JSON.stringify(objData));\n      return objData;\n    }\n    const persolizeToMap = defaultPersonalization();\n    if (persolizeToMap) {\n      persolizeToMap[key] = selectedSetting;\n      localStorage.setItem(\"medflowpersonalisation\", JSON.stringify(persolizeToMap));\n      return persolizeToMap;\n    }\n  },\n\n  get: (key) => {\n    const dataInLC = localStorage.getItem(\"medflowpersonalisation\");\n    if (!key) return dataInLC;\n\n    const persolizeToMap = getPersonalizationData(key);\n\n    if (dataInLC) {\n      const data = JSON.parse(dataInLC);\n      if (data[key] && Array.isArray(data[key])) {\n        return persolizeToMap.map((d) => {\n          return { ...d, isCheck: data[key].indexOf(d.id) !== -1 };\n        });\n      }\n\n      if (data[key] && !Array.isArray(data[key])) {\n        const arrData = typeof data[key] === \"string\" ? JSON.parse(data[key]) : data[key];\n\n        if (arrData.length === 0) return persolizeToMap;\n\n        const arrDataMap = new Map(arrData.map((item) => [item.id, item]));\n\n        const sortedPersolizeToMap = persolizeToMap.slice().sort((a, b) => {\n          return arrData.findIndex((item) => item.id === a.id) - arrData.findIndex((item) => item.id === b.id);\n        });\n        return sortedPersolizeToMap.map((d) => {\n          const obj = arrDataMap.get(d.id);\n          if (key === \"testDetailsDone\") {\n            return { ...d, isCheck: true, width: obj?.width || d.width };\n          }\n          return { ...d, isCheck: obj ? true : false, width: obj?.width || d.width };\n        });\n      }\n    }\n    return persolizeToMap;\n  },\n  clear: () => localStorage.removeItem(\"medflowpersonalisation\"),\n};\n\nexport const qrResponseJOSN = (obj, empID, type) => {\n  if (!obj || Object.keys(obj).length === 0) return \"\";\n  let ph = obj.phone_number || obj.phoneNumber;\n  ph = ph?.replace(obj?.countryCode ? obj.countryCode : \"+1\", \"\");\n\n  return {\n    firstName: obj.first || obj.firstName,\n    lastName: obj.lastName || obj.last,\n    phone: ph,\n    employeeID: empID,\n    email: obj.email,\n    countryCode: obj.countryCode,\n    dob: obj.dob,\n    type: type || \"MD\",\n  };\n};\n\nexport const formatDateOfBirthDOB = (dob) => {\n  if (!dob || dob == \"\") return \"\";\n  if (dob.includes(\"-\")) {\n    const index = dob.indexOf(\"-\");\n    let dateFormat = \"MM-DD-YYYY\";\n    if (index !== 2) {\n      dateFormat = \"YYYY-MM-DD\";\n    }\n    return moment(dob, dateFormat).format(\"MM/DD/YYYY\");\n  }\n  if (!dob.includes(\"-\")) {\n    const dobDate = FormatAWSDate(dob);\n    return moment(dobDate).format(\"MM/DD/YYYY\");\n  }\n  return moment(dob, \"MM-DD-YYYY\").format(\"MM/DD/YYYY\");\n};\n\nexport const formatAddress = (val) => {\n  if (!val || (!val.city && !val.state && !val.zip)) return \"\";\n  let arr = [];\n  if (val.city) arr.push(val.city);\n  if (val.state) arr.push(val.state);\n  arr = [arr.join(\",\")];\n  if (val.zip) arr.push(val.zip);\n  if (val.zipcode) arr.push(val.zipcode);\n  return arr.join(\" \");\n};\n\nexport const formatDoBForDemo = (dob) => {\n  if (!dob || dob == \"\") return \"\";\n  if (dob.includes(\"-\")) {\n    const index = dob.indexOf(\"-\");\n    let dateFormat = \"MM-DD-YYYY\";\n    if (index !== 2) {\n      dateFormat = \"YYYY-MM-DD\";\n    }\n    return moment(dob, dateFormat).format(\"MMDDYYYY\");\n  }\n  return dob;\n};\nexport const FormatAWSDate = (dobFromID) => {\n  if (dobFromID && !dobFromID?.includes(\"-\")) {\n    const awsdob = [];\n    awsdob.push(dobFromID.substring(4));\n    awsdob.push(dobFromID.substring(0, 2));\n    awsdob.push(dobFromID.substring(2, 4));\n    return awsdob.join(\"-\");\n  }\n  return dobFromID;\n};\nexport const formatQuaratineDate = (value) => {\n  if (!value || value == \"\") return value;\n  return moment(value).format(\"YYYY-MM-DD\");\n};\n\nexport const formatQuaratineDisplayDate = (value) => {\n  if (!value || value == \"\") return \"-\";\n  return moment(value).format(\"MM-DD-YYYY\");\n};\n\nexport const calculateTdWidth = (width, numberOfCol) => Math.ceil(width / numberOfCol);\n\nexport const toTitleCase = (str) => {\n  if (typeof str !== \"string\" || !str.trim()) {\n    return \"\";\n  }\n\n  if (str.length <= 3) {\n    return str.toUpperCase();\n  }\n\n  return str\n    .split(\" \")\n    .map((word) => {\n      if (!word) return word;\n      return word[0].toUpperCase() + word.slice(1).toLowerCase();\n    })\n    .join(\" \");\n};\n\nexport const nameToTitleCase = (str) => {\n  if (typeof str !== \"string\" || !str.trim()) {\n    return \"\";\n  }\n\n  if (str.length <= 2) {\n    return str.toUpperCase();\n  }\n\n  return str.replace(/(\\b\\w{1,3}\\b|\\b\\w{4,}\\b)/g, (word) => {\n    return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n  });\n};\n\nexport const parseTestType = (test_type) => {\n  if (!test_type) return \"\";\n  return test_type === \"Other\" ? \"Rapid PCR\" : test_type;\n};\n\nexport const getPersonalizationIds = (key) => {\n  if (!key) return [];\n  if (key === \"preregistration\") return PRE_REG_PERSONALIZE.map((c) => c.id);\n  if (key === \"employee\") return LAB_MEMBER_PERSONALIZE.map((m) => ({ id: m.id, width: \"100%\" }));\n};\n\nexport const getPersonalizationData = (key) => {\n  if (!key) return [];\n  if (key === \"preregistration\") return PRE_REG_PERSONALIZE;\n  if (key === \"employee\") return LAB_MEMBER_PERSONALIZE;\n  if (key === \"labClient\") return LAB_CLIENT_PERSONALIZE;\n  if (key === \"provider\") return PROVIDER_PERSONALIZE;\n  if (key === \"pendingtest\") return PENDING_RESULT_PERSONALIZE;\n  if (key === \"completedtest\") return COMPLETED_RESULT_PERSONALIZE;\n  if (key === \"orderpersonalize\") return ORDER_PERSONALIZE;\n  if (key === \"testDetailsDone\") return TEST_DONE_MODAL_COLUMN_DETAILS;\n  if (key === \"testHistory\") return TEST_HISTORY_MODAL_COLUMN;\n  return [];\n};\n\nexport const removeWhitespaceAndParentheses = (str) => {\n  // Remove white spaces\n  if (!str || !str.trim()) return \"\";\n  str = str.replace(/\\s/g, \"\");\n\n  // Remove parentheses and their inner values\n  str = str.replace(/\\([^)]*\\)/g, \"\");\n\n  // Remove the file extension\n  const lastDotIndex = str.lastIndexOf(\".\");\n  if (lastDotIndex >= 0) {\n    str = str.substring(0, lastDotIndex);\n  }\n\n  return str.toUpperCase();\n};\n\nexport const getValidDep = (name) => {\n  if (!name || !name.trim()) return \"\";\n  if (CONFIG.lifeCarePrimaryPharmacy) {\n    return name;\n  }\n  return capitalizeLetter(name.replace(/  +/g, \" \"));\n  // return toTitleCase(name.replace(/  +/g, \" \"));\n};\n\nexport const getPhoneNo = (phone_number_value, ccCode) => {\n  try {\n    let phone_number = phone_number_value?.replace(/\\+(\\d+)\\+\\1/g, \"+$1\");\n\n    if (!phone_number?.includes(\"+\")) {\n      phone_number = ccCode ? `${ccCode}${phone_number}` : `+1${phone_number}`;\n    }\n\n    const phone = formatPhoneNumberIntl(phone_number);\n    const phoneArr = phone.split(\" \");\n    const countryCode = phoneArr[0];\n    phoneArr.splice(0, 1);\n    const phoneNo = phoneArr.join(\"\");\n    return [countryCode, phoneNo, phone];\n  } catch (err) {\n    console.log(\"Error\", err);\n  }\n  return [\"\", phone_number_value, phone_number_value];\n};\n\nexport const parseIntVal = (val) => {\n  if (val) return parseInt(val);\n  return 0;\n};\n\nexport const searchPhone = (phone) => {\n  if (!phone) return null;\n  return phone.includes(\"+\") ? `${phone.replace(/\\D/g, \"\")}` : `+1${phone.replace(/\\D/g, \"\")}`;\n};\n\nexport const makeAlphabetInput = (value) => {\n  if (!value) return null;\n  return getValidName(value);\n};\n\nexport const makeBarcode = (id_number, sequenceNo) => {\n  if (!id_number) {\n    id_number = moment().valueOf().toString();\n  }\n  if (id_number && sequenceNo) {\n    return id_number.concat(\"-\", sequenceNo.toString());\n  }\n  return \"\";\n};\n\n// Generate Track URL\nexport const DeliveryTrackUrl = (company, trackingNo) => {\n  if (!company || !trackingNo) return null;\n  if (company && trackingNo) {\n    if (company === \"DHL\") {\n      return `https://www.dhl.com/us-en/home/tracking/tracking-global-forwarding.html?submit=1&tracking-id=${trackingNo}`;\n    } else if (company === \"FedEx\") {\n      return `https://www.fedex.com/fedextrack/?trknbr=${trackingNo}`;\n    } else if (company === \"UPS\") {\n      return `https://wwwapps.ups.com/WebTracking/track?track=yes&trackNums=${trackingNo}`;\n    } else {\n      return \"\";\n    }\n  }\n  return \"\";\n};\n\n// Generate Track URL\nexport const siteStatus = (status) => {\n  if (status === 0) return \"Pending\";\n  if (status === 1) return \"Active\";\n  if (status === 2) return \"Hold\";\n  return \"Active\";\n};\n\n// image url validation\nexport const isValidUrl = (file) => {\n  if (!file) return false;\n  return new Promise((resolve, reject) => {\n    const img = new Image();\n    img.src = typeof file === \"object\" ? URL.createObjectURL(file) : file;\n    img.onload = () => {\n      resolve(true);\n    };\n    img.onerror = () => {\n      resolve(false);\n    };\n  });\n};\n\n//Get Connected ID From URL\nexport const connectedIDByURL = (url) => {\n  let urlparams = url.split(\"/\");\n  let connectedID = \"\";\n  let testID = \"\";\n\n  if (urlparams.length === 4) {\n    connectedID = urlparams[3];\n  }\n  if (urlparams.length === 5) {\n    connectedID = urlparams[3];\n    testID = urlparams[4];\n  }\n  return { connectedID, testID };\n};\n\nexport const openSite = (siteID) => {\n  // console.log(\"siiteID::\", siteID);\n  let url = `${window.location.origin}/site/tests/${siteID}`;\n  window.open(url);\n};\n\nexport const getConnectedToValue = (val) => {\n  let parentEmployeeRelation = val || [];\n  if (typeof parentEmployeeRelation === \"string\") {\n    parentEmployeeRelation = JSON.parse(parentEmployeeRelation);\n  }\n  return parentEmployeeRelation;\n};\n\nexport const ChangeObject = (newReord, oldRecord, testNewRecord, testOldRecord) => {\n  const prevRecord = { ...oldRecord, ...testOldRecord };\n  const record = { ...newReord, ...testNewRecord };\n\n  return Object.keys(record).reduce((obj, item) => {\n    if (\n      record.hasOwnProperty(item) &&\n      (record[item] || prevRecord[item]) &&\n      record[item] !== prevRecord[item] &&\n      !NOT_INC_KEYS.includes(item)\n    ) {\n      obj[item] = `${prevRecord[item] || \"\"} to ${record[item] || \"\"}`;\n    }\n    return obj;\n  }, {});\n};\n\nexport const createChangeObjForLogs = ({ oldRecord, newRecord, fieldsName }) => {\n  const keysToPick = Object.keys(fieldsName);\n\n  const changesArr = [];\n\n  const findChanges = (oldObj, newObj, parentKey = \"\") => {\n    const allKeys = new Set([...Object.keys(oldObj || {}), ...Object.keys(newObj || {})]);\n\n    allKeys.forEach((key) => {\n      const fullKey = parentKey ? `${parentKey}.${key}` : key;\n      const oldVal = oldObj?.[key];\n      const newVal = newObj?.[key];\n\n      if (typeof oldVal === \"object\" && oldVal !== null && typeof newVal === \"object\" && newVal !== null) {\n        findChanges(oldVal, newVal, fullKey);\n      }\n      // else if (oldVal !== newVal) {\n      else if (oldVal !== newVal && keysToPick.includes(fullKey)) {\n        if (newVal === undefined) {\n          const changeObj = {\n            name: fieldsName[fullKey],\n            key: fullKey,\n            newResult: \"\",\n            oldResult: oldVal,\n          };\n          changesArr.push(changeObj);\n        } else if (oldVal === undefined) {\n          const changeObj = {\n            name: fieldsName[fullKey],\n            key: fullKey,\n            newResult: newVal,\n            oldResult: \"\",\n          };\n          changesArr.push(changeObj);\n        } else {\n          const changeObj = {\n            name: fieldsName[fullKey],\n            key: fullKey,\n            newResult: newVal,\n            oldResult: oldVal,\n          };\n          changesArr.push(changeObj);\n        }\n      }\n    });\n  };\n\n  findChanges(oldRecord, newRecord);\n\n  return changesArr;\n};\n\nexport const createOrderChangeObjForLogs = ({ oldRecord, newRecord, fieldsName }) => {\n  const keysToPick = Object.keys(fieldsName);\n\n  const changesArr = [];\n\n  const findChanges = (oldObj, newObj, parentKey = \"\") => {\n    const allKeys = new Set([...Object.keys(oldObj || {}), ...Object.keys(newObj || {})]);\n\n    allKeys.forEach((key) => {\n      const fullKey = parentKey ? `${parentKey}.${key}` : key;\n      const oldVal = oldObj?.[key];\n      const newVal = newObj?.[key];\n\n      if (typeof oldVal === \"object\" && oldVal !== null && typeof newVal === \"object\" && newVal !== null) {\n        findChanges(oldVal, newVal, fullKey);\n      } else if (oldVal !== newVal && keysToPick.includes(fullKey)) {\n        if (newVal === undefined) {\n          const changeObj = {\n            name: fieldsName[fullKey] || \"\",\n            newResult: \"\",\n            oldResult: oldVal,\n          };\n          changesArr.push(changeObj);\n        } else if (oldVal === undefined) {\n          const changeObj = {\n            name: fieldsName[fullKey] || \"\",\n            newResult: newVal,\n            oldResult: \"\",\n          };\n          changesArr.push(changeObj);\n        } else {\n          const changeObj = {\n            name: fieldsName[fullKey] || \"\",\n            newResult: newVal,\n            oldResult: oldVal,\n          };\n          changesArr.push(changeObj);\n        }\n      }\n    });\n  };\n\n  findChanges(oldRecord, newRecord);\n\n  return changesArr;\n};\n\nexport const removeSpecialCharacters = (inputString) => {\n  if (!inputString) return \"\";\n  const val = inputString.replace(/[^a-zA-Z0-9. ]/g, \"\");\n  if (val) {\n    return val.trim().toLowerCase();\n  }\n  return \"\";\n};\n\nexport const isValidAccessionNo = (inputString) => {\n  if (!inputString) return \"\";\n  const val = inputString.replace(/[^0-9 ]/g, \"\");\n  return val ? true : false;\n};\n\nexport const arePropsEqual = (prevProps, nextProps) => {\n  if (JSON.stringify(prevProps) === JSON.stringify(nextProps)) return true;\n  return false;\n};\n\nconst parseDateOfBirth = (dob) => {\n  if (dob.includes(\"-\")) {\n    let index = dob.indexOf(\"-\");\n    let dateFormat = \"MM-DD-YYYY\";\n    if (index !== 2) {\n      dateFormat = \"YYYY-MM-DD\";\n    }\n    return moment(dob, dateFormat).format(\"MM/DD/YYYY\");\n  }\n  return moment(dob, \"MMDDYYYY\").format(\"MM/DD/YYYY\");\n};\n\nconst parseSrNoObjectRecviedDate = (test) => {\n  let arr = [];\n  try {\n    arr = JSON.parse(test.sr_no);\n  } catch (er) {\n    return test.createdAt;\n  }\n  if (arr.length > 0) {\n    return arr[0]?.date;\n  }\n  return test.createdAt;\n};\n\nexport const getRecviedDateFromSrNo = (test, onlyDate) => {\n  if (!test?.scanByLabUserID) return null;\n  try {\n    const arr = JSON.parse(test.sr_no);\n    const date = test.receivedDate || arr[0]?.date;\n    if (onlyDate) {\n      return date;\n    }\n    return moment(date).format(\"YYYY-MM-DDTHH:mm\");\n  } catch (error) {\n    return null;\n  }\n};\n\nexport const formatPhoneForCalRedie = (phoneNumber) => {\n  if (!phoneNumber) return \"\";\n\n  let phone = formatPhoneNumber(phoneNumber);\n  phone = phone.replace(/\\D/g, \"\").replace(/^1/, \"\");\n  const match = phone.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\n  if (match) {\n    phone = `${match[1]}-${match[2]}-${match[3]}`;\n  }\n\n  return phone;\n};\n\nexport const parseLabAddress = (lab) => {\n  const address = lab.city_state_zip;\n\n  let phone = formatPhoneForCalRedie(lab.phone_number);\n\n  // Regular expression pattern to match city, state, and ZIP code\n  const regex = /(.*),\\s+(\\w{2})\\s+(\\d{5})/;\n\n  const matches = address.match(regex);\n\n  if (matches) {\n    const city = matches[1].trim(); // Extracted city\n    const state = matches[2]; // Extracted state\n    const zipCode = matches[3]; // Extracted ZIP code\n\n    return {\n      city: city,\n      state: state,\n      zip: zipCode,\n      phone: phone,\n    };\n  } else {\n    return {\n      city: \"\",\n      state: \"\",\n      zip: \"\",\n      phone: \"\",\n    };\n  }\n};\n\nexport const formatDateTimeTZ = (testDate, timeZone, date, time) => {\n  try {\n    const testFormatedDateTimeToLocalStr = new Date(testDate)\n      .toLocaleString(\"en-US\", {\n        timeZone: timeZone ? timeZone : \"America/Los_Angeles\",\n        ...(date && {\n          year: \"numeric\",\n          month: \"2-digit\",\n          day: \"2-digit\",\n        }),\n        ...(time && {\n          hour: \"2-digit\",\n          minute: \"2-digit\",\n        }),\n      })\n      .replace(\",\", \"\");\n\n    if (testFormatedDateTimeToLocalStr) return testFormatedDateTimeToLocalStr;\n  } catch (error) {\n    console.log(\"error:::::\", error);\n  }\n};\n\nexport const exportToCalRedie = (list, labRecord, siteProvider) => {\n  const labAddress = parseLabAddress(labRecord);\n  return list.map((e) => {\n    const obj = { ...EXPORT_TO_CALREDIE };\n    const demo = JSON.parse(e.employee_demographics);\n    let phone = formatPhoneForCalRedie(demo.phoneNumber);\n\n    const defaultProvider = siteProvider[e.siteID];\n\n    // if Site has Provider Set Default Provider into Ordering Provider\n\n    if (defaultProvider) {\n      Object.assign(obj, {\n        ordering_provider_id: defaultProvider.npi,\n        ordering_provider_last_name: defaultProvider.lastName,\n        ordering_provider_first_name: defaultProvider.firstName,\n        ordering_provider_middle_name: defaultProvider.middleName,\n        ordering_provider_street: defaultProvider.street,\n        ordering_provider_street2: defaultProvider.street2,\n        ordering_provider_city: defaultProvider.city,\n        ordering_provider_state: defaultProvider.state,\n        ordering_provider_zip_code: defaultProvider.zip,\n        ordering_provider_phone_number: formatPhoneForCalRedie(defaultProvider.phoneNumber),\n      });\n    }\n    const { fluor, swabtype } = demo;\n    obj.patient_id = `BRM-002-${demo.mdID || e.sequenceNo}`;\n    obj.patient_last_name = capitalizeLetter(demo.firstName);\n    obj.patient_first_name = capitalizeLetter(demo.lastName);\n    obj.patient_street = demo?.street;\n    obj.patient_street2 = demo?.street2 || \"\";\n    obj.patient_city = demo.city;\n    obj.patient_state = demo.state;\n    obj.patient_zip_code = formatZip(demo.zip);\n    obj.patient_county = \"Los Angeles\";\n    obj.accession_number = e.barcode;\n    obj.patient_phone_number = phone;\n    obj.patient_dob = parseDateOfBirth(demo.dob);\n    obj.patient_gender = demo.sex || \"UNK\";\n    obj.test_result = EXPORT_TO_CALREDIE_RESULT[e.result?.toLowerCase()];\n    obj.order_test_date = formatDateTimeTZ(e.createdAt, e.timeZone, \"date\");\n    obj.specimen_collection_date = formatDateTimeTZ(e.createdAt, e.timeZone, \"date\");\n    obj.testing_lab_specimen_received_date = formatDateTimeTZ(parseSrNoObjectRecviedDate(e), e.timeZone, \"date\");\n    obj.test_result_date = moment(e.resultDateTime).format(\"MM/DD/YYYY\");\n    obj.date_result_released = moment(e.resultDateTime).format(\"MM/DD/YYYY\");\n    obj.testing_lab_clia = labRecord.clia_number;\n    obj.testing_lab_name = labRecord.name;\n    obj.testing_lab_street = labRecord.street;\n    obj.testing_lab_street2 = \"\";\n    obj.testing_lab_city = labAddress.city;\n    obj.testing_lab_state = labAddress.state;\n    obj.testing_lab_zip_code = labAddress.zip;\n    obj.testing_lab_phone_number = labAddress.phone;\n\n    if (fluor && fluor.toLowerCase() === \"cy5\") {\n      obj.equipment_model_name = \"CDC 2019-nCoV Real-Time RT-PCR Diagnostic Panel (CDC)\";\n      obj.test_performed_code = \"94309-2\";\n      obj.test_ordered_code = \"94309-2\";\n    }\n\n    if (swabtype && swabtype === \"nasal\") {\n      obj.specimen_type = \"258500001\";\n    }\n\n    return { ...obj };\n  });\n};\n\nexport const tdEmail = (email) => (\n  <td\n    key={email}\n    className=\"table-column ellipsis text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n    onMouseOver={(e) => {\n      e.target.style.cursor = \"pointer\";\n      e.target.style.textDecoration = \"none\";\n    }}\n    onMouseLeave={(e) => {\n      e.target.style.textDecoration = \"underline\";\n    }}\n    onClick={() => email && window.open(`mailto:${email}`)}\n    title={email}\n  >\n    {email}\n  </td>\n);\n\nexport const getResultToShow = (testCreate) => {\n  const { resultDetails, result, releaseStatus } = testCreate;\n\n  if (resultDetails != null) {\n    return { label: \"View Detail\", labelColor: RESULT_COLOR[\"detail\"] };\n  }\n\n  const resultKey = result ? result.toLowerCase() : \"detail\";\n  return {\n    label: result || \"-\",\n    labelColor: RESULT_COLOR[resultKey],\n    releaseStatus,\n  };\n};\n\nconst getResultLabel = (appContext, result) => {\n  if ((appContext?.user?.isSite() && result?.releaseStatus === \"Confirmed\") || !appContext?.user?.isSite()) {\n    return result.label;\n  }\n  return \"\";\n};\n\nexport const tdResult = ({ index, result, handleCellClick, appContext, row }) => {\n  const resultLabel = getResultLabel(appContext, result);\n  const color = getResultColors(row);\n\n  return (\n    <td\n      key={`result_${index}`}\n      className=\"text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none text-center\"\n      style={{\n        color: color,\n      }}\n      onClick={() => resultLabel && handleCellClick()}\n      title={resultLabel}\n    >\n      {resultLabel}\n    </td>\n  );\n};\n\nexport const tdPhone = (phoneNumber) => (\n  <td\n    key={phoneNumber + Math.random()}\n    className=\"table-column ellipsis text-dark-danger text-dark-danger-hover cursor-pointer text-decoration-none\"\n    onMouseOver={(e) => {\n      e.target.style.cursor = \"pointer\";\n      e.target.style.textDecoration = \"none\";\n    }}\n    onMouseLeave={(e) => {\n      e.target.style.textDecoration = \"underline\";\n    }}\n    onClick={() => phoneNumber && window.open(`tel:+${phoneNumber.replace(/\\D/g, \"\")}`)}\n    title={formatPhoneNumber(phoneNumber, \"\".true)}\n  >\n    {formatPhoneNumber(phoneNumber, \"\", true)}\n  </td>\n);\n\nexport const isAllowToArchive = (phone_number) => {\n  const validPhone = [\n    \"+14105980783\",\n    \"+14436870662\",\n    \"+18185730434\",\n    \"+16265413922\",\n    \"+17602186687\",\n    \"+18322958840\",\n    \"+923004991004\",\n    \"+18888888888\",\n  ];\n  return validPhone.includes(phone_number);\n};\n\nexport const formatFileSize = (size) => {\n  if (size === 0) return \"0 Bytes\";\n  const k = 1024;\n  const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n  const i = Math.floor(Math.log(size) / Math.log(k));\n  return parseFloat((size / Math.pow(k, i)).toFixed(2)) + \" \" + sizes[i];\n};\n\nexport const parseInsDetails = (insuranceDetails, user) => {\n  if (!insuranceDetails) return [];\n\n  if (Array.isArray(insuranceDetails)) {\n    return insuranceDetails;\n  }\n  if (!user.insuranceCompanyCode) return [];\n  const primary = {\n    id: \"prefix_\" + Math.random().toString(36).slice(2, 9),\n    insuranceCompany: user.insuranceCompanyCode,\n    insuranceCompanyCode: user.insurance_name,\n    insuranceType: user.insuranceType,\n    copay: user.copay,\n    deductible: user.deductible,\n    insuranceGroupId: user.insuranceGroupId,\n    isMedicare: user.isMedicare,\n    medicalNo: user.insurance_number,\n    medicareNo: user.medicalNo,\n    isActive: true,\n  };\n  const insDetails = [primary];\n  if (insuranceDetails?.insuranceCompany) {\n    insDetails.push({\n      ...insuranceDetails,\n      isActive: true,\n      id: \"prefix_\" + Math.random().toString(36).slice(2, 9),\n    });\n  }\n  return insDetails;\n};\n\nexport const parseTestResultForPDF = (test) => {\n  return test.result && RESULT_PDF[test.result.toLowerCase()];\n};\n\nexport const formatPatientIntoPgData = (emp) => {\n  if (!emp) return emp;\n\n  return {\n    ...emp,\n    eligibilityStatus: parseStringToJSON(emp.eligibilityStatus),\n    provider: parseStringToJSON(emp.provider),\n    firstName: emp.first,\n    lastName: emp.last,\n    phoneNumber: emp.phone_number,\n    mdID: emp.id,\n  };\n};\n\nexport const getBarCodeFromTest = (test) => {\n  try {\n    let arr = [];\n    try {\n      arr = JSON.parse(test.sr_no);\n    } catch (er) {\n      return test.barcode;\n    }\n    if (arr.length > 0) {\n      return arr.map((r) => r.accession_no).join(\"\\n\");\n    }\n    return test.barcode;\n  } catch (e) {\n    return test.barcode;\n  }\n};\n\nexport const patientInsuranceType = (test) => {\n  const insuranceDemographics = test?.employee_demographics;\n  const EMPTY_OBJECT = {\n    CLIENT: \"\",\n    PATIENT: \"\",\n    INSURANCE: \"\",\n    MEDICARE: \"\",\n    MEDICADE: \"\",\n    CASH: \"\",\n  };\n  const { insuranceCompanyCode, insurance_name, insurance_number } = insuranceDemographics;\n\n  if (!insurance_name) {\n    return EMPTY_OBJECT;\n  }\n\n  if (insurance_name?.includes(\"Medicare\")) {\n    return { ...EMPTY_OBJECT, MEDICARE: insurance_number };\n  }\n\n  if (insurance_name?.includes(\"Medicaid\")) {\n    return { ...EMPTY_OBJECT, MEDICADE: insurance_number };\n  }\n\n  if (insuranceCompanyCode === \"00001\" || insurance_name?.includes(\"Bill Patient\")) {\n    return { ...EMPTY_OBJECT, PATIENT: \"Patient\" };\n  }\n\n  if (insuranceCompanyCode === \"00002\" || insurance_name?.includes(\"Bill Client\")) {\n    return { ...EMPTY_OBJECT, CLIENT: \"Client\" };\n  }\n\n  if (insuranceCompanyCode === \"00003\" || insurance_name?.includes(\"Cash Patient\")) {\n    return { ...EMPTY_OBJECT, CASH: \"Cash\" };\n  }\n\n  return { ...EMPTY_OBJECT, INSURANCE: insurance_number };\n};\n\nexport const parseTestDates = (dates) => {\n  try {\n    if (!dates) return;\n\n    const list = dates.split(\",\");\n\n    const newList = list.map((d) => {\n      let r = d.trim();\n      const date = moment(r.padStart(6, 0), \"MMDDYY\").format(\"MM/DD/YYYY\");\n      return date;\n    });\n\n    return newList;\n  } catch (ex) {\n    console.log(\"[parseTestDates]\", ex);\n  }\n  return null;\n};\n\nexport const mileageOptions = () => {\n  const array = [];\n  for (let i = 1; i <= 100; i++) {\n    array.push({ value: i, label: i });\n  }\n  return array;\n};\n\nexport const isTenDigitNumber = (str) => {\n  return /^\\d{11}$/.test(str);\n};\nexport const convertYYYYMMDDToDate = (str, format) => {\n  if (!str) return \"\";\n  if (str.length === 8) {\n    const year = str.slice(0, 4);\n    const month = str.slice(4, 6);\n    const day = str.slice(6, 8);\n\n    return moment(`${year}-${month}-${day}`).format(format || \"MMM DD,YYYY\");\n  }\n  return moment(str).format(format || \"MMM DD,YYYY\");\n};\n\nexport const hideElementsByClassName = (className) => {\n  const elements = document.getElementsByClassName(className);\n  for (let i = 0; i < elements.length; i++) {\n    elements[i].style.display = \"none\";\n  }\n};\n\nexport const eligibilityMessage = (item, row) => {\n  if (row && (CUSTOM_INS.includes(row?.insuranceCompanyCode) || CUSTOM_INS.includes(row?.insuranceCompany))) {\n    return \"Eligibile\";\n  }\n\n  if (!item) return \"Not Eligibile\";\n  let message = item?.status || item?.message;\n\n  if (message && message.toLowerCase() === \"ineligibile\") message = \"Not Eligibile\";\n  return message || \"Not Eligibile\";\n};\n\nexport const eligibilityMessageColor = (message) => {\n  const msg = message === \"Eligibile\" ? \"Eligibile\" : \"Not Eligibile\";\n  return ELIGIBILITY_STATUS_COLOR[msg];\n};\n\nexport const parseJSONObject = (obj) => {\n  if (!obj) return {};\n  return typeof obj === \"string\" ? JSON.parse(obj) : obj;\n};\n\nexport const parseStringToJSON = (obj) => {\n  if (!obj) return obj;\n  return typeof obj === \"string\" ? JSON.parse(obj) : obj;\n};\n\nexport const getSelectedColumn = (items) =>\n  items?.filter((item) => item?.isCheck).map((m) => ({ itemKey: m.itemKey, title: m.title }));\n\nexport const isLabImageExist = (testsLab) => {\n  if (\n    testsLab?.id === \"8cd1a74a-392c-4378-a8a0-15480ee37a1e\" ||\n    testsLab?.id === \"9a41b680-4f5f-4914-a8f6-2229740dca0b\" ||\n    testsLab?.id === \"3eaf991b-b876-4897-8e39-47aef2247dcd\" ||\n    testsLab?.id === \"2ce90d8b-daa3-4b3c-a685-6bec0dfecb43\" ||\n    testsLab?.id === \"6d8ec4ef-f634-4237-9984-c5b337e36546\" ||\n    testsLab?.id === \"b63c398e-dc3f-412c-871e-ad89a94ddb0e\" ||\n    testsLab?.id === \"655f8008-f306-4052-a932-3f5622a39925\"\n  ) {\n    return true;\n  }\n  return false;\n};\n// add new\n\nexport const parseInvoiceData = async (data, loginUser, clients) => {\n  const [setting, employeeData] = await Promise.all([\n    getCompanySetting(),\n    api.getEmployeeByID({ id: data.employeeID }),\n  ]);\n\n  const outStandingBalance = employeeData?.setting?.outstanding_balance;\n\n  let claimClients = clients;\n  let errorMessage = \"\";\n  let invoiceAlreadySent = false;\n  const { invoiceID, invoiceNo, invoiceSendDate } = data?.toData?.find((f) => f.invoiceNo) || {};\n\n  if (invoiceSendDate && moment(invoiceSendDate).isSame(moment(), \"day\")) {\n    errorMessage = \"Invoice Already Sent.\";\n    invoiceAlreadySent = true;\n  }\n\n  let sendTo = data.payerid === \"00001\" ? \"Patient\" : \"Client\";\n\n  let toData = {};\n\n  let barCode = data.remote_claimid.replace(\"CL-\", \"\");\n\n  if (data.payerid === \"00002\") {\n    if (!claimClients) {\n      claimClients = await getDefaultProvidersForInvoice({ ids: [data.provider.ref_id] });\n    }\n    const client = claimClients[data.provider.ref_id];\n    toData = {\n      id: client.id,\n      isActive: true,\n      payerid: data.payerid,\n      payer_name: data.payer_name,\n      firstName: client?.name || \"\",\n      lastName: \"\",\n      street: client?.street || \"\",\n      state: client?.state ? `${client.state},` : \"\",\n      zip: client?.zip || \"\",\n      city: client?.city || \"\",\n      country: client?.country || \"\",\n      email: client?.email,\n      sendToType: client?.setting?.billType,\n      sendTo: sendTo,\n      barCode,\n    };\n  } else {\n    toData = {\n      id: data.employeeID,\n      isActive: true,\n      payerid: data.payerid,\n      payer_name: data.payer_name,\n      firstName: data.pat_name_f,\n      lastName: data.pat_name_l,\n      street: data.pat_addr_1,\n      street2: data.pat_addr_2,\n      city: data.pat_city,\n      state: data.pat_state,\n      faxSubject: \"\",\n      country: data.pat_country,\n      zip: data.pat_zip,\n      pcn: data.pcn,\n      email: data.pat_email,\n      sendTo: sendTo,\n      barCode,\n      outStandingBalance,\n    };\n  }\n\n  let paramData = {\n    id: invoiceID,\n    invoiceSendDate: moment().toISOString(),\n    invoiceDate: moment().toISOString(),\n    dueDate: moment().add(10, \"days\").toISOString(),\n    sendToType: data.sendToType,\n    sendTo: sendTo,\n    employeeID: data.employeeID,\n    details: data.proc_array,\n    invoiceAmount: generateInvoiceOutStanding(data),\n    minAmount: data.minimumAmount ? Number(parseFloat(data.minimumAmount).toFixed(2)) : 0,\n    claimID: data.id,\n    local_id: data.id,\n    clientID: userCompanyID.get() || CONFIG.generalClient,\n    companyID: data.locationID,\n    subAgentID: data.subAgentID,\n    reSubmissionDate: data.reSubmissionDate,\n    status: \"pending\",\n    claimStatus: data.status,\n    errorMessage: errorMessage,\n    invoiceAlreadySent,\n    udpatedBy: loginUser?.sub,\n    updatedByName: loginUser?.name,\n    message: INVOICE_DEFAULT_MESSAGE,\n    invoiceNo: invoiceNo ?? \"00000\",\n    payer_name: data.payer_name,\n    firstName: data.pat_name_f,\n    lastName: data.pat_name_l,\n    toData: toData,\n    fromData: {\n      id: setting.id,\n      companyName: setting.name,\n      street: setting.street,\n      street2: setting.street2,\n      city: setting.city,\n      state: setting.state,\n      zip: setting.zip,\n      phone: setting.phoneNumber,\n    },\n  };\n\n  return paramData;\n};\nexport const userCompanyID = {\n  save: (id) => localStorage.setItem(\"cid\", id),\n  get: () => localStorage.getItem(\"cid\") || null,\n  clear: () => localStorage.removeItem(\"cid\"),\n};\nexport const draggablePersonalizationLocalStorage = {\n  save: (obj) => localStorage.setItem(\"medflowpersonalisation\", obj),\n  saveAs: (arr, key) => {\n    const selectedSetting = JSON.stringify(\n      arr\n        .filter((f) => f.isCheck)\n        .map((f) => {\n          return { id: f.id, width: f.width };\n        })\n    );\n\n    const objData = JSON.parse(localStorage.getItem(\"medflowpersonalisation\"));\n    objData[key] = selectedSetting;\n    localStorage.setItem(\"medflowpersonalisation\", JSON.stringify(objData));\n    return objData;\n  },\n  get: (user, key, NEW_PERSONALIZE) => {\n    let arrData = null; //[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"21\",\"22\"];\n    let objData = null;\n    try {\n      const lcObj = localStorage.getItem(\"medflowpersonalisation\");\n      if (lcObj && lcObj !== \"undefined\") {\n        objData = localStorage.getItem(\"medflowpersonalisation\");\n      } else {\n        return NEW_PERSONALIZE;\n      }\n      objData = JSON.parse(objData);\n      arrData = JSON.parse(objData[key]);\n    } catch (err) {}\n\n    if (!Array.isArray(arrData)) return NEW_PERSONALIZE;\n\n    let objToReturn = arrData?.map((f) => {\n      const obj = NEW_PERSONALIZE.find((obj) => obj.id == f.id) || null;\n      return {\n        ...obj,\n        isCheck: NEW_PERSONALIZE.findIndex((obj) => obj.id == f.id) !== -1,\n        width: f.width,\n      };\n    });\n\n    const lsData = arrData?.map((obj) => obj.id);\n    if (!lsData) return NEW_PERSONALIZE;\n    const nonCheckedData = NEW_PERSONALIZE.filter((obj) => !lsData.includes(obj.id));\n    objToReturn = [\n      ...objToReturn,\n      ...nonCheckedData.map((data) => {\n        return { ...data, isCheck: false, width: \"100%\" };\n      }),\n    ];\n    return objToReturn;\n  },\n  clear: () => localStorage.removeItem(\"medflowpersonalisation\"),\n};\nexport const RemoveSpaceAndChar = (name) => {\n  if (!name) return \"\";\n  return name.replace(/[^A-Z0-9]/gi, \"\");\n};\nexport const downloadDataAsCSV = async (data, fileName) => {\n  const content = jsonToCSV(data);\n  const fileContent = new Blob([content], { type: \"csv\" });\n  await FileSaver.saveAs(fileContent, `${fileName}.csv`);\n};\nexport const downloadFileFromS3 = async (filePath, fileName, bucket) => {\n  let alink = null;\n  let fileURL = null;\n\n  try {\n    const data = await Storage.get(filePath, { bucket: bucket });\n    const response = await fetch(data);\n\n    if (!response.ok) {\n      return false;\n    }\n\n    const blob = await response.blob();\n\n    if (blob.size === 0) {\n      return false;\n    }\n\n    fileURL = window.URL.createObjectURL(blob);\n    alink = document.createElement(\"a\");\n    alink.href = fileURL;\n    alink.download = fileName;\n    document.body.appendChild(alink);\n    alink.click();\n\n    return true;\n  } catch (error) {\n    console.error(\"Error downloading requisition zip:\", error);\n    return false;\n  } finally {\n    if (alink) {\n      document.body.removeChild(alink);\n      window.URL.revokeObjectURL(fileURL);\n    }\n  }\n};\nexport const emailMsgToCreatedMember = (firstName, userName, password) => {\n  const msg = `Thank you ${firstName} for signing up with SafeCamp LTC powered by Tackl Health. We are excited to partner with you and help you explore ways to stay safe and monitor your health.<br><br>\n\n        Please login to <a href=\"https://www.ltc.safecampmd.com/member-login\">https://www.ltc.safecampmd.com/member-login</a> To view your profile, order tests and update your insurance information.<br><br>\n\n        Username: ${userName}<br>\n        Password: ${password}<br><br>\n\n        We thank you again for choosing us to service your critical healthcare needs<br><br>\n\n        Best Regards,<br>\n        SafeCamp LTC Team`;\n\n  return msg;\n};\nexport const formatEmployeeClaim = (claim, setting, isMulti, isSecondary, era) => {\n  const data = { ...claim, ...(claim.provider || {}) };\n\n  const primaryIns = findMaxValueObject(data.toData, \"status_code\");\n\n  const keysToDelete = [\n    \"mod1_2\",\n    \"mod2_2\",\n    \"mod3_2\",\n    \"mod4_2\",\n    \"proc_code_2\",\n    \"thru_date_2\",\n    \"units_2\",\n    \"place_of_service_2\",\n    \"proc_code_2\",\n    \"remote_chgid_2\",\n  ];\n  if (data) {\n    keysToDelete.forEach((key) => {\n      if (data.hasOwnProperty(key)) {\n        delete data[key];\n      }\n    });\n  }\n  let procArray = [];\n  let totalCharge = 0;\n  if (data.proc_array.length > 0 && !isMulti) {\n    for (let i = 0; i < data.proc_array.length; i++) {\n      const proc = data.proc_array[i];\n\n      let eraCPT = null;\n\n      if (isSecondary && era) {\n        eraCPT = era.charge.find((f) => f.proc_code === proc.proc_code);\n      }\n\n      const obj = {\n        diag_ref_1: proc.diag_ref_1,\n        diag_ref_2: proc.diag_ref_2,\n        diag_ref_3: proc.diag_ref_3,\n        diag_ref_4: proc.diag_ref_4,\n      };\n\n      const ttlCharge = getTotalCharge(proc);\n\n      totalCharge = totalCharge + ttlCharge;\n\n      const index = i + 1;\n      Object.assign(data, {\n        [`diag_ref_${index}`]: Object.values(obj)\n          .filter((f) => f)\n          .join(\",\"),\n        [`from_date_${index}`]: proc.from_date,\n        [`thru_date_${index}`]: proc.from_date,\n        [`charge_${index}`]: ttlCharge,\n        [`units_${index}`]: proc.units,\n        [`proc_code_${index}`]: proc.proc_code,\n        [`place_of_service_${index}`]: proc.place_of_service,\n        [`remote_chgid_${index}`]: `${data.remote_claimid}-${index}`,\n        [`mod1_${index}`]: proc.mod1,\n        [`mod2_${index}`]: proc.mod2,\n        [`mod3_${index}`]: proc.mod3,\n        [`mod4_${index}`]: proc.mod4,\n        ...(isSecondary && {\n          [`primary_paid_amount_${index}`]: proc.paid,\n          [`primary_paid_date_${index}`]: data.checkDate,\n        }),\n      });\n\n      if (isSecondary && eraCPT && eraCPT.adjustment && eraCPT.adjustment.length > 0) {\n        eraCPT?.adjustment?.forEach((item, i) => {\n          const childIndex = i + 1;\n          data[`adj_amt_${childIndex}_${index}`] = item.amount;\n          data[`adj_code_${childIndex}_${index}`] = item.group + item.code; // or any other value you want to assign\n        });\n      }\n\n      procArray.push({ ...proc, remote_chgid: `${data.remote_claimid}-${index}` });\n    }\n  }\n\n  const [countryCode, phoneNo] = getPhoneNo(data.bill_phone);\n\n  Object.assign(data, {\n    ...(totalCharge > 0 && { total_charge: totalCharge, proc_array: procArray }),\n    bill_phone: phoneNo,\n    accept_assign: \"Y\",\n    pat_country: \"\",\n    pat_rel: \"18\",\n    payer_icn: claim.status === CLAIM_SUBMIT_STATUS.denied && claim.payerid !== \"01192\" ? claim.claimNo : \"\",\n    assigned_comment: claim.assign_details?.message.replace(/'/g, \"\") || \"\",\n    ...(isSecondary && {\n      other_ins_name_l: data.pat_name_l,\n      other_ins_name_f: data.pat_name_f,\n      other_ins_name_m: data.pat_name_m,\n      other_ins_dob: data.pat_dob,\n      other_ins_sex: data.pat_sex,\n      other_ins_payment_date: data.checkDate,\n      other_payerid: primaryIns?.payerid,\n      payer_order: \"secondary\",\n      primary_allowed_amount: era?.total_allowed,\n      other_payer_name: primaryIns?.payer_name,\n      other_ins_number: primaryIns?.ins_number,\n    }),\n  });\n\n  if (\n    isSecondary &&\n    data.payerid !== primaryIns?.payerid &&\n    data.status === CLAIM_SUBMIT_STATUS.submitted &&\n    !CUSTOM_INS.includes(data.payerid)\n  ) {\n    Object.assign(data, {\n      toData: [\n        ...(data.toData || []),\n        {\n          payer_name: data.payer_name,\n          payerid: data.payerid,\n          ins_number: data.ins_number,\n          submissionDate: moment().toISOString(),\n          status_code: (primaryIns?.status_code || 0) + 1,\n        },\n      ],\n    });\n  }\n\n  // set the billing information according to the NPI set at insurnace level\n  addCompanyInusranceNPI(data, setting);\n  return data;\n};\n\nexport const formatEmployeesData = (employees, subAgents, locations, companies, providers) => {\n  if (employees.length === 0) return [];\n\n  return employees.map((emp) => {\n    const subAgent = subAgents?.find((s) => s.id === emp.subAgent);\n    const location = locations?.find((s) => s.id === emp.companyID);\n    const client = companies?.find((c) => c.id === emp.clientID);\n    const provider = providers?.find((p) => p.id === emp.renderingProvider);\n    const refProvider = providers?.find((p) => p.id === emp.referringProvider);\n    const ordProvider = providers?.find((p) => p.id === emp.orderingProvider);\n    return {\n      ...emp,\n      phoneNumber: `${emp.countryCode}${emp.phoneNumber}`,\n      subAgent: subAgent ? { ...subAgent, value: subAgent.id, label: subAgent.name } : null,\n      location: location ? { ...location, value: location.id, label: location.name } : null,\n      client: client ? { ...client, value: client.id, label: client.name } : null,\n      gender: emp.sex,\n      secondaryInsurance: emp.insuranceDetails?.insuranceCompany || \"\",\n      secondaryInsNumber: emp.insuranceDetails?.medicalNo || \"\",\n      clientName: client ? client.name : \"N/A\",\n      locationName: location ? location.name : \"N/A\",\n      subAgentName: subAgent ? subAgent.name : \"N/A\",\n      subAgentID: subAgent ? subAgent.id : null,\n      providerName: provider?.name,\n      providerFirstName: provider?.firstName,\n      providerLastName: provider?.lastName,\n      providerMidName: provider?.middleName,\n      providerID: provider?.id,\n      providerNpi: provider?.npi,\n      providerTaxId: provider?.taxId,\n      refProviderID: refProvider?.id,\n      refProviderFirstName: refProvider?.firstName,\n      refProviderName: refProvider?.name,\n      refProviderLastName: refProvider?.lastName,\n      refProviderMiddleName: refProvider?.middleName,\n      refProviderNpi: refProvider?.npi,\n      ordProviderID: ordProvider?.id,\n      ordProviderFirstName: ordProvider?.firstName,\n      ordProviderName: ordProvider?.name,\n      ordProviderLastName: ordProvider?.lastName,\n      ordProviderMiddleName: ordProvider?.middleName,\n      ordProviderNpi: ordProvider?.npi,\n    };\n  });\n};\nexport const getFloatVal = (val) => {\n  if (!val) return 0;\n  try {\n    return +parseFloat(val).toFixed(2);\n  } catch (err) {\n    return 0;\n  }\n};\nexport const removeKeysFromObject = (obj, keysToRemove) => {\n  if (!obj || typeof obj !== \"object\" || !Array.isArray(keysToRemove)) {\n    return obj;\n  }\n\n  keysToRemove.forEach((key) => {\n    if (obj.hasOwnProperty(key)) {\n      delete obj[key];\n    }\n  });\n\n  return obj;\n};\nexport const formatNumber = (num) => {\n  if (!num) return 0;\n\n  return parseInt(num).toLocaleString(\"en-US\");\n};\n\nexport const patientDataInLocalStorage = {\n  save: (obj) => localStorage.setItem(\"client\", JSON.stringify(obj)),\n  get: () => {\n    if (localStorage.getItem(\"client\")) {\n      return JSON.parse(localStorage.getItem(\"client\"));\n    }\n    return newRegisterObj;\n  },\n  clear: () => localStorage.clear(),\n};\n\nexport const formatTimeZone = (Tz) => {\n  if (!Tz) return \"\";\n  if (Tz === \"Pakistan Standard Time\") return \"PKT\";\n  return Tz.match(/\\b\\w/g).join(\"\");\n};\nexport const formatInvoice = (items) => {\n  try {\n    return items.map((obj) => {\n      let item = { ...obj };\n      item[\"toData\"] = parseObject(item, \"toData\");\n      item[\"details\"] = parseObject(item, \"details\");\n\n      return { ...item, discount: item.discount || 0 };\n    });\n  } catch (ex) {\n    console.log(\"[formatInvoice]\", ex);\n  }\n  return items;\n};\nexport const formatLocations = (locations, companies) => {\n  if (locations.length === 0) return [];\n\n  return locations.map((emp) => {\n    const client = companies.find((s) => s.id === emp.companyID);\n\n    return {\n      ...emp,\n      clientName: client ? client.name : \"N/A\",\n      client,\n    };\n  });\n};\nexport const formatClaims = (models) => {\n  let claims = [...models];\n  claims = claims.map((obj) => {\n    let m = { ...obj };\n    m[\"provider\"] = parseObject(m, \"provider\");\n    m[\"proc_array\"] = parseObject(m, \"proc_array\");\n    m[\"acknowledgeBy\"] = parseObject(m, \"acknowledgeBy\");\n    m[\"assign_details\"] = parseObject(m, \"assign_details\");\n    m[\"paid_insurance\"] = parseObject(m, \"paid_insurance\");\n\n    if (m.status?.toLowerCase() === CLAIM_SUBMIT_STATUS.submitted) {\n      m.status = CLAIM_SUBMIT_STATUS.sent;\n    }\n\n    let subBy = m.submittedByName || m.updatedByName;\n    if (subBy === \"0\") subBy = m.updatedByName;\n\n    const toData = m.toData && typeof m.toData === \"string\" ? JSON.parse(m.toData) : m.toData ?? [];\n\n    return {\n      ...m,\n      invoiceID: toData?.find((f) => f.invoiceID)?.invoiceNo,\n      toData,\n      partialAmount: m.status?.toLowerCase() === CLAIM_SUBMIT_STATUS.partial ? true : false,\n      reSubmissionDate: m.reSubmissionDate || m.createdAt,\n      paid_ins_processed: m.paid_insurance?.payer_name || \"\",\n      submittedByName: subBy,\n    };\n  });\n  return claims;\n};\nexport const formatOrder = (obj, employees) => {\n  const address = [];\n  const orderObj = { ...obj };\n  const emp = (employees || []).find((f) => f.id === obj.employeeID);\n\n  orderObj.details = typeof orderObj.details === \"string\" ? JSON.parse(orderObj.details) : orderObj.details;\n  orderObj.employee_demographics =\n    typeof orderObj.employee_demographics === \"string\"\n      ? JSON.parse(orderObj.employee_demographics)\n      : orderObj.employee_demographics;\n  orderObj.testsToDo = typeof orderObj.testsToDo === \"string\" ? JSON.parse(orderObj.testsToDo) : orderObj.testsToDo;\n  orderObj.provider =\n    orderObj.provider && typeof orderObj.provider === \"string\" ? JSON.parse(orderObj.provider) : orderObj.provider;\n\n  address.push(orderObj.details?.street || \"\");\n\n  if (orderObj.details?.street2) address.push(orderObj.details?.street2 || \"\");\n  address.push(orderObj.details?.city || \"\");\n\n  return {\n    ...orderObj,\n    lastName: orderObj.lastName,\n    firstName: orderObj.firstName,\n    phoneNumber: orderObj.phoneNumber ? `${orderObj.countryCode}${orderObj.phoneNumber}` : \"\",\n    email: orderObj.email,\n    siteName: orderObj.locationName,\n    medicalNo: orderObj.medicalNo,\n    orderId: orderObj.orderId === \"-1\" ? \"-\" : orderObj.orderId,\n    address: address.join(\",\"),\n    employeeClaimID: orderObj.employeeClaimID || \"\",\n    claim: orderObj.claimSubmitDate ? \"1\" : \"0\",\n    employeeStatus: emp?.status,\n    note: {\n      ...(orderObj.note ? orderObj.note : {}),\n      message: emp?.note || orderObj.note?.message || \"\",\n    },\n  };\n};\nexport const formatOrderedDateAws = (date) =>\n  date ? `${date.substring(0, 4)}-${date.substring(4, 6)}-${date.substring(6, 8)}` : \"\";\n\nexport const getPhoneNumber = (phone) => {\n  if (!phone) return \"\";\n  const countryCode = phone.substring(0, 1);\n\n  if (countryCode !== \"+\") {\n    const phoneNumber = `+${phone.replace(/\\D/g, \"\")}`;\n    return phoneNumber;\n  }\n  return phone;\n};\nexport const getValidGender = (gen) => {\n  if (gen.toLowerCase() == \"male\" || gen.toLowerCase() == \"m\") return \"M\";\n  if (gen.toLowerCase() == \"female\" || gen.toLowerCase() == \"f\") return \"F\";\n  if (gen.toLowerCase() == \"x\") return \"X\";\n  return \"\";\n};\n\nexport const personalizationLocalStorage = {\n  save: (obj) => localStorage.setItem(\"personalisation\", obj),\n  saveAs: (arr, key) => {\n    const selectedSetting = arr\n      .filter((f) => f.isCheck)\n      .map((f) => f.id)\n      .join(\",\");\n\n    const objData = JSON.parse(localStorage.getItem(\"personalisation\"));\n    objData[key] = selectedSetting;\n    localStorage.setItem(\"personalisation\", JSON.stringify(objData));\n    return objData;\n  },\n  get: (user, key, NEW_PERSONALIZE) => {\n    let arrData = null;\n    let objData = null;\n    try {\n      const lcObj = localStorage.getItem(\"personalisation\");\n      if (lcObj && lcObj !== \"undefined\") {\n        objData = localStorage.getItem(\"personalisation\");\n      } else {\n        return NEW_PERSONALIZE;\n      }\n      objData = JSON.parse(objData);\n      arrData = objData[key].split(\",\");\n    } catch (err) {}\n\n    return NEW_PERSONALIZE.map((f) => {\n      return { ...f, isCheck: arrData?.indexOf(f.id.toString()) !== -1 };\n    });\n  },\n  clear: () => localStorage.removeItem(\"personalisation\"),\n};\nexport const convertLabClientObject = (loc, clientID) => {\n  const phone_number = formatPhoneNumberIntl(loc.client_phone);\n  const fax = formatPhoneNumberIntl(loc.client_fax);\n  const contactFax = formatPhoneNumberIntl(loc.client_main_contact_fax);\n\n  const obj = {\n    uuid: uuidv4(),\n    clientID: clientID,\n    practiceID: loc.client_payer_id || \"\",\n    name: loc.client_name || \"\",\n    street: loc.client_address || \"\",\n    street2: loc.client_address_2 || \"\",\n    city: loc.client_city || \"\",\n    state: loc.client_state || \"\",\n    zip: loc.client_zip || \"\",\n    phone_number: phone_number || null,\n    fax: fax || null,\n    email: loc.client_email || null,\n    contact_name: `${loc.client_main_contact_first_name || \"\"} ${loc.client_main_contact_last_name || \"\"}`,\n    contact_fax: contactFax || null,\n    contact_email: loc.client_main_contact_email || null,\n    commission: loc.percent_claims_commission || null,\n    discount: loc.percent_discount_list_price || null,\n    setting: {\n      primaryBillType: loc.primary_invoice_method || \"email\",\n      ...(loc.secondary_invoice_method && { secondaryBillType: loc.secondary_invoice_method }),\n    },\n  };\n\n  return Object.fromEntries(\n    Object.entries(obj).map(([key, value]) => [key, typeof value === \"string\" ? value.trim() : value])\n  );\n};\n\nexport const emailMsgToCreatedFacility = (firstName, userName, password) => {\n  const msg = `Thank you ${firstName} for signing up with SafeCamp LTC powered by Tackl Health. We are excited to partner with you and help you explore ways to stay safe and monitor your client’s and members health.<br><br>\n  \n  Please login to <a href=\"${CONFIG.appURL}\">${CONFIG.appURL}</a> To order tests, add members, add sub agents, track shipments, and update any information required.<br><br>\n  \n  Username: ${userName}<br>\n  Password: ${password}<br><br>\n\n  We thank you again for choosing us to service your critical healthcare needs<br><br>\n\n  Best Regards,<br>\n  SafeCamp LTC Team`;\n\n  return msg;\n};\n\nexport const getPreRegistrationLink = (id, type = \"\") => {\n  if (CONFIG.isLive) {\n    return `https://ltc.safecampmd.com/order-test${type}/${id}`;\n  }\n  return `https://staging.ltc.safecampmd.com/order-test${type}/${id}`;\n};\nexport const getValidReg = (reg) => {\n  if (!reg) return \"\";\n  if (CONFIG.lifeCarePrimaryPharmacy) {\n    return reg;\n  }\n  return toTitleCase(reg.replace(/  +/g, \" \"));\n};\n\nexport const tdLink = (item, dates, itemID, filterKey) => (\n  <td\n    className=\"ellipsis\"\n    style={{\n      textAlign: \"center\",\n      textOverflow: \"none\",\n    }}\n  >\n    {item > 0 ? (\n      <Link\n        style={{ color: \"#42cef5\" }}\n        to={{\n          pathname: \"/admin/orders\",\n          state: {\n            name: itemID,\n            term: filterKey,\n            filterName: dates,\n            filterTerm: dates,\n          },\n        }}\n      >\n        {formatNumber(item)}\n      </Link>\n    ) : (\n      item\n    )}\n  </td>\n);\nexport const getStateLength = (obj) => {\n  if (\n    !obj.country ||\n    obj.isoCode === \"US\" ||\n    obj.isoCode === \"CA\" ||\n    obj.country === \"United States\" ||\n    obj.country === \"Canada\"\n  ) {\n    return 2;\n  }\n  return 8;\n};\n\nexport const generatePassword = (email, phone) => {\n  // Extracting 2 characters from the email and phone number\n  const emailChars = email.slice(0, 2);\n  const phoneChars = phone.slice(-2);\n\n  // Generating 4 random characters\n  const randomChars = Array.from({ length: 4 }, () => Math.random().toString(36)[2]).join(\"\");\n\n  // Combining the extracted and random characters\n  let password = emailChars + phoneChars + randomChars;\n\n  // If the password length is less than 8, add random characters to make it 8\n  if (password.length < 8) {\n    password += Math.random()\n      .toString(36)\n      .slice(2, 10 - password.length);\n  }\n\n  return password;\n};\n\nexport const getFileType = (filename) => {\n  const parts = filename.split(\".\");\n  return parts.pop();\n};\n\nexport const getFileName = (filename) => {\n  const parts = filename.split(\".\");\n  parts.pop();\n  return parts.join(\".\");\n};\n\nexport const getSplitValue = (data, idx) => {\n  const parts = data.split(\",\");\n  return parts[idx] ? parts[idx] : \"\";\n};\n\nexport const formatTestDemo = (employee) => {\n  return {\n    city: employee.city,\n    dob: moment(employee.dob).format(\"MMDDYYYY\"),\n    email: employee.email,\n    firstName: employee.firstName,\n    lastName: employee.lastName,\n    idNumber: employee.lastName,\n    idNumber: employee.idNumber,\n    insurance_name: employee.insurance_name,\n    insurance_number: employee.insurance_number,\n    insuranceCompanyCode: employee.insuranceCompanyCode,\n    isVaccinated: employee.isVaccinated || false,\n    phoneNumber: employee.phone_number,\n    countryCode: employee.countryCode,\n    sex: employee.sex,\n    state: employee.state,\n    street: employee.street,\n    street2: employee.street2,\n    whiteGlove: employee.whiteGlove || false,\n    employeeType: employee.employeeType,\n    testerDes: employee.testerDes,\n    swabtype: employee.swabtype,\n    worker: employee.worker,\n    possibleexposure: employee.possibleexposure,\n    confirmedexposure: employee.confirmedexposure,\n    relatedsymptoms: employee.relatedsymptoms,\n    symptoms: employee.symptoms,\n    othercomment: employee.othercomment,\n    comment: employee.comment,\n    clinicalcomment: employee.clinicalcomment,\n    docUploaded: employee.docUploaded || false,\n    id: employee.id,\n    zip: employee.zip,\n    mdID: employee.mdID || \"\",\n    ...(employee.fluor && { fluor: employee.fluor }),\n    isReview: employee.isReview || false,\n    venipuncture: employee.venipuncture || \"\",\n    distance: employee.distance || 0,\n    isEligible: employee.isEligible || false,\n    stat: employee.stat || false,\n    testTypeID: employee.testTypeID,\n    providerID: employee.providerID,\n    providerName: employee.providerName,\n    orderDate: employee.orderDate,\n    orderNo: employee.orderNo || \"\",\n  };\n};\n\nexport const getUUID = () => uuidv4();\n\n// export const generateRefInterval = ({ minValue, maxValue, minValueF, maxValueF }) => {\n//   const hasMin = minValue !== undefined && minValue !== null && minValue !== \"\";\n//   const hasMax = maxValue !== undefined && maxValue !== null && maxValue !== \"\";\n\n//   return hasMin && hasMax\n//     ? `${minValue}-${maxValue}` // Display the range\n//     : hasMin\n//     ? `>${minValue}`\n//     : hasMax\n//     ? `<${maxValue}`\n//     : \"Not Estab.\";\n// };\n\nconst getUserDataFromLocalStorage = (suffix) => {\n  const keys = Object.keys(localStorage);\n  const userDataKey = keys.find((key) => key.endsWith(suffix));\n  if (userDataKey) {\n    const userData = localStorage.getItem(userDataKey);\n    return JSON.parse(userData); // Parse once when the key is found\n  }\n  return null;\n};\n\nconst processUserData = (attributes) => {\n  const attrMap = attributes.reduce((map, attr) => {\n    map[attr.Name] = attr.Value;\n    return map;\n  }, {});\n\n  const id = attrMap[\"sub\"];\n  const firstName = attrMap[\"custom:firstName\"];\n  const lastName = attrMap[\"custom:lastName\"];\n  const name = `${firstName} ${lastName}`;\n\n  return { userID: id, userName: name };\n};\n\nexport const getLoginUserInfoFromLocal = () => {\n  const userData = getUserDataFromLocalStorage(\".userData\");\n  if (userData && userData.UserAttributes) {\n    return processUserData(userData.UserAttributes);\n  }\n  return null;\n};\n\nexport const mergeUniqueCptCodes = (data) => {\n  if (!data) return [];\n\n  const uniqueCodesMap = new Map();\n\n  data.forEach((item) => {\n    item.cptCodes.forEach((cptCode) => {\n      if (!uniqueCodesMap.has(cptCode.code)) {\n        uniqueCodesMap.set(cptCode.code, cptCode);\n      }\n    });\n  });\n\n  return Array.from(uniqueCodesMap.values());\n};\n\nexport const uniqueObject = (data, id) => {\n  return Object.values(\n    data.reduce((acc, obj) => {\n      acc[obj[id]] = obj;\n      return acc;\n    }, {})\n  );\n};\nexport const isTestCodeMatch = (sourceTest, testToMatch) => {\n  if (!sourceTest) return \"\";\n\n  const order = sourceTest.order || {};\n  const testsToDo = order.testsToDo || {};\n  const test = testsToDo.test || [];\n\n  if (!Array.isArray(test) || test.length === 0) return false;\n\n  return test.some((item) => item?.label?.toLowerCase() === testToMatch?.title?.toLowerCase());\n};\n\nexport const getTestName = (sourceTest) => {\n  if (!sourceTest) return \"\";\n\n  const order = sourceTest.order || {};\n  const testsToDo = order.testsToDo || {};\n  const test = testsToDo.test || [];\n\n  if (test.length > 0) {\n    return test.map((item) => item.label).join(\", \");\n  }\n\n  return sourceTest.test_type;\n};\n\nexport const formatTwoFaErrorMessage = (error) => {\n  const errorData = error?.response?.data;\n\n  if (typeof errorData?.error === \"string\") {\n    return errorData.error;\n  } else if (Array.isArray(errorData?.errors)) {\n    return errorData.errors.map((err) => err.code).join(\", \");\n  } else {\n    return \"Unknown error\";\n  }\n};\n\nexport const getClientSpecificString = () => {\n  const DEFAULT_CONFIG = {\n    // roomno: \"Room No\",\n    roomno: \"Apt/Unit #\",\n    isShowRoom: true,\n    isShowFloor: true,\n    isShowSendToLab: true,\n    isShowCancelReason: true,\n    isShowResultFile: false,\n    eligibilityBucket: CONFIG.eligibilityBucket,\n    isTestCreationFromEmployee: false,\n  };\n\n  switch (CONFIG.clientID) {\n    case SEROCLINIX_TEST:\n    case SEROCLINIX_ID:\n      return {\n        ...DEFAULT_CONFIG,\n        eligibilityBucket: process.env.REACT_APP_ALTA_BUCKET,\n        roomno: \"Apt/Unit #\",\n        isShowFloor: false,\n        isShowSendToLab: false,\n        isShowCancelReason: false,\n        isShowResultFile: true,\n        isTestCreationFromEmployee: true,\n      };\n    case FUTURE_GENERATION_ID:\n    case ALTA_NEW_ID:\n    case CALIBER_ID:\n    case ALTA_ID:\n    case LIFE_CARE_ID:\n      return {\n        ...DEFAULT_CONFIG,\n        eligibilityBucket: process.env.REACT_APP_ALTA_BUCKET,\n        roomno: \"Apt/Unit #\",\n        isShowFloor: false,\n        isShowSendToLab: false,\n        isShowCancelReason: false,\n        isShowResultFile: true,\n      };\n    case NEW_DISCOVERY_ID:\n      return {\n        ...DEFAULT_CONFIG,\n        roomno: \"Apt/Unit #\",\n        isShowSendToLab: false,\n        isShowFloor: false,\n        isShowCancelReason: false,\n      };\n    default:\n      return DEFAULT_CONFIG;\n  }\n};\n\nexport const formatPersonalization = ({ personalize, defaultConfig, userClientData, isSiteUser }) => {\n  return personalize\n    .filter((item) => {\n      if (item.itemKey === \"street2\" && !defaultConfig.isShowRoom) return false;\n      if (item.itemKey === \"floor\" && !defaultConfig.isShowFloor) return false;\n      if (item.itemKey === \"eligibilityStatus\" && !userClientData?.setting?.eligibility) return false;\n      if (item.itemKey === \"providerStatus\" && !isSiteUser) return false;\n      if (item.itemKey === \"status\" && isSiteUser) return false;\n      return true;\n    })\n    .map((f) => {\n      if (f.itemKey === \"street2\" && defaultConfig.isShowRoom) {\n        return { ...f, title: defaultConfig.roomno };\n      }\n      if (f.itemKey === \"eligibilityStatus\") {\n        return { ...f, filterKey: \"eligibilityStatus\" };\n      }\n      return f;\n    });\n};\n\nexport const getDiagnosisCode = (order) => {\n  const ictSet = new Set();\n  order?.testsToDo?.test?.forEach(({ ictCodes = [] }) =>\n    ictCodes.forEach(({ code: ictCode, cptCodes = [] }) => {\n      ictSet.add(ictCode);\n    })\n  );\n  const ictCodes = Array.from(ictSet.values());\n\n  return ictCodes.reduce((acc, diagCode, index) => {\n    acc[`diag_${index + 1}`] = diagCode;\n    return acc;\n  }, {});\n};\n\nexport const getTestSource = (source) => {\n  if (!source) return TEST_SOURCE_OPTIONS;\n\n  const sourcesArray = Array.isArray(source) ? source : [source];\n\n  return sourcesArray\n    .map((source) => ({\n      ...source,\n      label: toTitleCase(source.label.trim()),\n      value: toTitleCase(source.value.trim()),\n    }))\n    .sort((a, b) => a.label.localeCompare(b.label));\n};\n\nexport const getDefaultTestSource = (source) => {\n  if (!source) return null;\n\n  return Array.isArray(source) ? source[0] : source;\n};\n\n// export const getRangeName = (result, ranges) => {\n//   const rangeKeys = Object.keys(ranges);\n//   console.log(\"RangeKes\", rangeKeys);\n//   for (let i = 0; i < rangeKeys.length; i += 2) {\n//     const lowKey = rangeKeys[i];\n//     const highKey = rangeKeys[i + 1];\n//     const lowValue = parseInt(ranges[lowKey]);\n//     const highValue = parseInt(ranges[highKey]);\n\n//     console.log(\"LowValue\", lowValue);\n\n//     console.log(\"HighValue\", highValue);\n\n//     console.log(\"Result\", result);\n\n//     if (result >= lowValue && result <= highValue) {\n//       return lowKey.replace(/([A-Z][a-z]+)/g, \"$1 \").trim();\n//     }\n//   }\n//   return null;\n\n// };\n\nconst expectedOrder = [\n  \"NormalLow\",\n  \"NormalHigh\",\n  // \"HighLow\",\n  // \"HighHigh\",\n  // \"PanicLow\",\n  // \"PanicHigh\",\n  // \"RepeatLow\",\n  // \"RepeatHigh\",\n  // \"LowLow\",\n  // \"LowHigh\",\n  // \"DefaultHigh\",\n  // \"DefaultLow\",\n];\n\nconst LABEL_COLOR = {\n  Low: \"blue\",\n  Normal: \"green\",\n  High: \"red\",\n  Panic: \"red\",\n  Repeat: \"red\",\n  Indeterminate: \"blue\",\n  Detected: \"red\",\n  \"Not Detected\": \"black\",\n  Invalid: \"blue\",\n};\n\nconst NORMAL_RANGES_KEY = [\"NormalLow\", \"NormalHigh\", \"minValue\", \"maxValue\", \"minValueM\", \"maxValueM\"];\nconst NORMAL_RANGES_KEY_NEW = [\"NormalLow\", \"NormalHigh\", \"minValue\", \"maxValue\", \"minValueM\", \"maxValueM\"];\n\nconst getOrderedRanges = (ranges) => {\n  return customPick(ranges, expectedOrder);\n};\n\nexport const getMinMaxFromRanges = ({ ranges }) => {\n  const values = Object.values(customPick(ranges, NORMAL_RANGES_KEY))\n    .filter((value) => value !== \"\")\n    .map((value) => parseFloat(value))\n    .filter((value) => !isNaN(value));\n\n  if (values.length === 0 || values.length === 1) {\n    return false;\n  }\n\n  const minimumValue = Math.min(...values);\n  const maximumValue = Math.max(...values);\n  if (!isNaN(minimumValue) || !isNaN(maximumValue)) {\n    return `${minimumValue} - ${maximumValue}`;\n  }\n  return false;\n};\n\nexport const getMinMaxFromRangesNew = (ranges) => {\n  const values = Object.values(customPick(ranges, NORMAL_RANGES_KEY_NEW))\n    .filter((value) => value !== \"\")\n    .map((value) => parseFloat(value))\n    .filter((value) => !isNaN(value));\n\n  if (values.length === 0 || values.length === 1) {\n    return false;\n  }\n\n  const minimumValue = Math.min(...values);\n  const maximumValue = Math.max(...values);\n\n  if (!isNaN(minimumValue) || !isNaN(maximumValue)) {\n    return `${minimumValue} - ${maximumValue}`;\n  }\n  return false;\n};\n\nexport const getRefInterval = (targetRanges, testType) => {\n  return targetRanges.map((item) => {\n    const refInterval = testType === TYPE_OF_TEST.QUALITATIVE ? \"Not Detected\" : getMinMaxFromRangesNew(item.ranges[0]);\n\n    return {\n      ...item,\n      refInterval,\n      typeOfTest: testType,\n    };\n  });\n};\n\nexport const getRangeName = (result, ranges) => {\n  const orderedRanges = getOrderedRanges(ranges);\n\n  const rangeKeys = Object.keys(orderedRanges);\n\n  let lowValue;\n  let highValue;\n\n  for (let i = 0; i < rangeKeys.length; i += 2) {\n    const lowKey = rangeKeys[i];\n\n    const highKey = rangeKeys[i + 1];\n\n    lowValue = parseFloat(orderedRanges[lowKey]);\n\n    highValue = parseFloat(orderedRanges[highKey]);\n\n    if (!isNaN(lowValue) && !isNaN(highValue) && result >= lowValue && result <= highValue) {\n      return lowKey\n        .replace(/([A-Z][a-z]+)/g, \"$1 \")\n        .trim()\n        .split(\" \")[0];\n    }\n  }\n\n  lowValue = lowValue || 0;\n  highValue = highValue || 0;\n\n  if (parseFloat(result) < lowValue) return \"Low\";\n\n  if (parseFloat(result) > highValue) return \"High\";\n\n  return result;\n};\n\nexport const generateRefInterval = ({ minValue, maxValue, minValueM, maxValueM, ranges, isAssociatedPanel }) => {\n  const rangeStr = getMinMaxFromRangesNew(ranges ?? {});\n\n  // const rangeStr = getMinMaxFromRanges({ minValue, maxValue, minValueM, maxValueM, ranges });\n\n  if (rangeStr) return rangeStr;\n\n  const actualMinValue = minValue !== undefined && minValue !== null && minValue !== \"\" ? minValue : minValueM;\n  const actualMaxValue = maxValue !== undefined && maxValue !== null && maxValue !== \"\" ? maxValue : maxValueM;\n\n  const hasMin = actualMinValue !== undefined && actualMinValue !== null && actualMinValue !== \"\";\n  const hasMax = actualMaxValue !== undefined && actualMaxValue !== null && actualMaxValue !== \"\";\n\n  return hasMin && hasMax\n    ? `${actualMinValue}-${actualMaxValue}` // Display the range\n    : hasMin\n    ? `>${actualMinValue}`\n    : hasMax\n    ? `<${actualMaxValue}`\n    : \"Not Estab.\";\n};\n\nexport const generateRefIntervalByRanges = (ranges) => {\n  const normalRanges = ranges?.[0];\n  const { NormalLow, NormalHigh } = normalRanges;\n  if (!NormalLow || !NormalHigh) return \"\";\n  return `${NormalLow} - ${NormalHigh}`;\n};\n\nconst getRange = (rangeObject, resultValue) => {\n  const result = Number(resultValue);\n\n  const orderedRanges = [\n    { name: \"Repeat\", low: rangeObject.RepeatLow, high: rangeObject.RepeatHigh },\n    { name: \"Panic\", low: rangeObject.PanicLow, high: rangeObject.PanicHigh },\n    { name: \"Normal\", low: rangeObject.NormalLow, high: rangeObject.NormalHigh },\n    { name: \"Low\", low: rangeObject.LowLow, high: rangeObject.LowHigh },\n    { name: \"High\", low: rangeObject.HighLow, high: rangeObject.HighHigh },\n  ];\n\n  for (const range of orderedRanges) {\n    const low = Number(range.low);\n    const high = Number(range.high);\n\n    if (result >= low && result <= high) {\n      return ` = ${low} - ${high}`;\n    }\n  }\n\n  const repeatHigh = Number(rangeObject.RepeatHigh);\n  if (result > repeatHigh) {\n    return `>= ${repeatHigh}`;\n  }\n\n  console.log(\"range not match\");\n  return \"\";\n};\n\nexport const generateTagLineQualitativeWithPanleTests = ({ panel }) => {\n  const { ranges, resultValue } = panel;\n  const rangeToShow = getRange(ranges[0], resultValue);\n  return rangeToShow;\n};\n\nexport const analyzeResultValue = (range, result, refInterval, testRange) => {\n  if (!result) return { label: \"\", color: \"black\", fontWeight: \"500\", orginalResult: result };\n\n  const panelRanges = testRange && testRange.length > 0 ? testRange[0] : {};\n  const defaultPanelValues = {\n    ...panelRanges,\n    DefaultLow: range.minValue,\n    DefaultHigh: range.maxValue,\n  };\n\n  const labelValue = getRangeName(result, defaultPanelValues);\n\n  if (customIsJsonString(result)) {\n    const parsedJSONString = JSON.parse(result);\n\n    if (parsedJSONString.value !== refInterval) {\n      return {\n        label: \"\",\n        color: LABEL_COLOR[parsedJSONString.value],\n        fontWeight: \"bold\",\n        orginalResult: parsedJSONString.label.toUpperCase(),\n        resRange: \"high\",\n      };\n    }\n\n    return {\n      label: \"\",\n      color: \"black\",\n      fontWeight: \"bold\",\n      orginalResult: parsedJSONString.label.toUpperCase(),\n      resRange: \"normal\",\n    };\n  }\n\n  return {\n    label: labelValue,\n    color: LABEL_COLOR[labelValue],\n    fontWeight: \"bold\",\n    orginalResult: result,\n    resRange: LABEL_COLOR[labelValue] === \"red\" ? \"high\" : \"low\",\n  };\n};\n\nexport const parseTestResult = (testResult) => {\n  const result = customIsJsonString(testResult);\n\n  if (result) {\n    const parsed = JSON.parse(testResult);\n\n    return parsed.label;\n  }\n  return testResult;\n};\n\nexport const parseTestUnit = (units) => {\n  if (Array.isArray(units) && units.length > 0) {\n    return units[0].label;\n  }\n  return units?.label || \"\";\n};\n\nexport const showTestResult = (item, isQualtitave) => {\n  const result = parseTestResult(item.testResult);\n  if (isQualtitave && result === \"Detected\") {\n    return `${result} :: >=10K ${item?.unit || \"\"}`;\n  }\n  return result;\n};\n\n// export const isResultInRange = (intervalString, result) => {\n//   let intervals = intervalString.split(\" \");\n\n//   if (intervals.length === 1) {\n//     const interval = parseTestResult(result);\n//     return interval === intervals[0] ? true : false;\n//   } else {\n//     for (let interval of intervals) {\n//       let [start, end] = interval.split(\" - \").map(Number);\n\n//       if (parseFloat(result) >= parseFloat(start) && parseFloat(result) <= parseFloat(end)) {\n//         return true;\n//       }\n//     }\n\n//     return false;\n//   }\n// };\n\nexport const isResultInRange = (intervalString, result) => {\n  let intervals = intervalString.split(\"-\");\n\n  if (intervals.length === 1) {\n    const interval = parseTestResult(result);\n\n    return interval === intervals[0] ? true : false;\n  } else {\n    let [start, end] = intervals.map(Number).filter(Boolean);\n\n    if (parseFloat(result) >= parseFloat(start) && parseFloat(result) <= parseFloat(end)) {\n      return true;\n    }\n\n    return false;\n  }\n};\nexport const showAlphaResult = (resultData, resRange) => {\n  const { refInterval, testResult, units } = resultData;\n\n  const isInRange = isResultInRange(refInterval, testResult);\n\n  if (isInRange) {\n    return \"Not Detected\";\n  }\n\n  return `DETECTED :: ${resRange === \"high\" ? \">=\" : \"<=\"} ${testResult} ${units.label}`;\n\n  // let intervals = intervalString.split(\"-\");\n\n  // if (intervals.length === 1) {\n  //   const interval = parseTestResult(result);\n\n  //   return interval === intervals[0] ? true : false;\n  // } else {\n  //   let [start, end] = intervals.map(Number).filter(Boolean);\n\n  //   if (parseFloat(result) >= parseFloat(start) && parseFloat(result) <= parseFloat(end)) {\n  //     return true;\n  //   }\n\n  //   return false;\n  // }\n};\n\nexport function mergeArraysById(arrayToMap, arrayToSearch) {\n  return arrayToMap.map((obj) => {\n    const matchingObject = arrayToSearch?.find((e) => e.id === obj.id);\n    return { ...matchingObject, ...obj };\n  });\n}\n\nexport function numberWithCommas(x) {\n  return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\nexport const mergeUserPermissions = (customPermissions) => {\n  const updatedPermissions = { ...DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS };\n\n  for (const key in customPermissions) {\n    if (customPermissions.hasOwnProperty(key)) {\n      if (typeof customPermissions[key] === \"object\" && customPermissions[key] !== null) {\n        updatedPermissions[key] = {\n          ...DEFAULT_WHITE_LABEL_USRERS_PERMISSIONS[key],\n          ...customPermissions[key],\n        };\n      } else {\n        updatedPermissions[key] = customPermissions[key];\n      }\n    }\n  }\n\n  return updatedPermissions;\n};\n\nexport const formatSite = (obj) => {\n  if (!obj) return obj;\n  return {\n    ...obj,\n    setting: obj.setting ? JSON.parse(obj.setting) : null,\n    messageReTest: obj.messageReTest ? JSON.parse(obj.messageReTest) : null,\n    uploadFileStatus: obj.uploadFileStatus ? JSON.parse(obj.uploadFileStatus) : null,\n    safeCampAdmin: obj.safeCampAdmin ? JSON.parse(obj.safeCampAdmin) : null,\n  };\n};\n\nexport const transformSubObjectToPermissionObject = (subObject) => {\n  const result = {};\n\n  subObject.forEach((item) => {\n    result[item.value] = false;\n    result.access = false;\n    result.write = false;\n    result.delete = false;\n  });\n\n  return result;\n};\n\nexport const detectChangeInPersonalization = (oldPersonalize, newPersonalize) => {\n  if (oldPersonalize.length === 0) return false;\n  if (oldPersonalize.length !== newPersonalize.length) {\n    return true;\n  }\n\n  for (let i = 0; i < oldPersonalize.length; i++) {\n    const obj1 = oldPersonalize[i];\n    const obj2 = newPersonalize[i];\n\n    if (obj1.width !== obj2.width || obj1.isCheck !== obj2.isCheck || obj1.id !== obj2.id) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nexport const getStartAndEndDateFromEligibility = (dateString) => {\n  if (!dateString) return { startDate: null, endDate: null };\n  const [startDateString, endDateString] = dateString.split(\"-\");\n\n  const startDate = moment(startDateString, \"YYYYMMDD\").format(\"YYYY-MM-DD\");\n  const endDate =\n    !endDateString || endDateString === \"99991231\"\n      ? moment().format(\"YYYY-MM-DD\")\n      : moment(endDateString, \"YYYYMMDD\").format(\"YYYY-MM-DD\");\n\n  return { startDate, endDate };\n};\n\n// export const isTestDataComplete = (testData) => {\n//   console.log('TestData', testData)\n//   const isCompleted = Object.keys(testData).every(\n//     (key) => key === \"cpt\" || (testData[key] !== \"\" && testData[key] !== undefined && testData[key] !== null)\n//   );\n//   console.log(\"isCOmplated\", isCompleted);\n//   return isCompleted;\n// };\n\nexport const isTestDataComplete = (testData) => {\n  const skipKeys = [\"cpt\", \"sampleContainer\"];\n\n  const isCompleted = Object.keys(testData).every((key) => {\n    if (skipKeys.includes(key)) {\n      return true;\n    }\n\n    const value = testData[key];\n    return value !== \"\" && value !== undefined && value !== null;\n  });\n\n  return isCompleted;\n};\n\nconst newEmptyTestData = {\n  test: \"\",\n  cpt: \"\",\n  source: \"\",\n  unit: \"\",\n  refCharge: \"\",\n};\n\nexport const updateOrderData = (array, isTestCreationFromEmployee) => {\n  let hasUpdated = false;\n\n  const updatedArray = array.map((item) => {\n    if (item.description !== null && isTestCreationFromEmployee === false) {\n      // const isAllKeysFilled = item.orderData.every(\n      //   (dataItem) => dataItem.test && dataItem.unit && dataItem.source && dataItem.ict\n      // );\n\n      const isAllKeysFilled = item.orderData.every(\n        (dataItem) => dataItem?.test && dataItem.unit && dataItem.source && (isTestCreationFromEmployee || dataItem.ict)\n      );\n\n      if (isAllKeysFilled) {\n        item.orderData.push({ ...newEmptyTestData });\n        hasUpdated = true;\n      }\n    } else if ((item.description !== null || isTestCreationFromEmployee) && item.orderData.length) {\n      const isAllKeysFilled = item.orderData.every(\n        (dataItem) =>\n          dataItem?.test &&\n          dataItem?.test !== \"\" &&\n          dataItem.unit &&\n          dataItem.unit !== \"\" &&\n          dataItem.source &&\n          dataItem.source !== \"\" &&\n          (isTestCreationFromEmployee || dataItem.ict)\n      );\n\n      if (isAllKeysFilled) {\n        item.orderData.push({ ...newEmptyTestData });\n        hasUpdated = true;\n      }\n    }\n\n    return item;\n  });\n\n  return { updatedArray, hasUpdated };\n};\n\nexport const getDiagListFromOrderTest = (orderTestData) => {\n  return orderTestData.reduce((acc, item, index) => {\n    if (item.description && item.description.code) {\n      acc[`diag_${index + 1}`] = item.description.code;\n    } else {\n      acc[`diag_${index + 1}`] = null;\n    }\n    return acc;\n  }, {});\n};\n\nconst findItemAndIndexTest = (array, id) => {\n  const index = array.findIndex((item) => item.id === id);\n  if (index !== -1) {\n    return { index, item: array[index] };\n  } else {\n    return null;\n  }\n};\n\nconst findItemAndIndexIct = (array, id) => {\n  const index = array.findIndex((item) => item.code === id);\n  if (index !== -1) {\n    return { index, item: array[index] };\n  } else {\n    return null;\n  }\n};\n\nexport const getTestListFromOrderTest = (orderTestData, isTestCreationFromEmployee) => {\n  const testArr = [];\n\n  let diagnosisData = orderTestData.filter((item) => item.description).map((item) => item.description);\n\n  if ((diagnosisData.length === 0 || orderTestData[0].description === null) && isTestCreationFromEmployee === false) {\n    return { error: \"Add Diagnosis One.\" };\n  }\n\n  for (const item of orderTestData) {\n    if (item.description || isTestCreationFromEmployee === true) {\n      for (const orderLevelTestItem of item.orderData) {\n        const testItem = {\n          ...orderLevelTestItem,\n          test: {\n            ...orderLevelTestItem.test,\n            sources: Array.isArray(orderLevelTestItem.source)\n              ? orderLevelTestItem.source\n              : orderLevelTestItem.source\n              ? [orderLevelTestItem.source]\n              : null,\n            selectedContainer: orderLevelTestItem?.sampleContainer || \"\",\n            sampleContainer: orderLevelTestItem?.sampleContainer ? [orderLevelTestItem.sampleContainer] : [],\n          },\n        };\n\n        const exist = findItemAndIndexTest(testArr, testItem.test.id);\n\n        if (!exist && isTestDataComplete(testItem)) {\n          // const cptArr = [\n          //   {\n          //     ...testItem?.cpt,\n          //     unit: testItem?.unit,\n          //     referenceCharge: testItem?.refCharge,\n          //     source: testItem.source,\n          //   },\n\n          // ];\n          const cptArray = Array.isArray(testItem?.cpt) ? testItem?.cpt : [testItem?.cpt];\n\n          const cptArr = cptArray.map((item) => ({\n            ...item,\n            unit: testItem?.unit,\n            referenceCharge: testItem?.refCharge,\n            source: testItem?.source,\n          }));\n\n          // const ictObj = {\n          //   ...item.description,\n          //   cptCodes: cptArr,\n          // };\n\n          const filteredIcdData = diagnosisData.filter((diagData) =>\n            testItem?.ict?.some((test) => test.value === diagData.code || test.label === diagData.title)\n          );\n\n          testArr.push({\n            ...testItem.test,\n            cptCodes: cptArr,\n            ictCodes: filteredIcdData,\n            sourceSite: testItem?.sourceSite || \"\",\n          });\n        } else if (exist && isTestDataComplete(testItem)) {\n          const cloneItem = { ...exist.item };\n          const isIctExist = findItemAndIndexIct(cloneItem?.ictCodes || [], item.description.code);\n          if (!isIctExist) {\n            const cptCodeArr = [\n              {\n                ...testItem.cpt,\n                unit: testItem.unit,\n                referenceCharge: testItem.refCharge,\n                source: testItem.source,\n              },\n            ];\n            const ictObj = {\n              ...item.description,\n              cptCodes: cptCodeArr,\n            };\n            cloneItem.cptCodes.push(cptCodeArr[0]);\n\n            cloneItem.ictCodes.push(ictObj);\n            testArr[exist.index] = cloneItem;\n          } else {\n            const cptObj = {\n              ...testItem.cpt,\n              unit: testItem.unit,\n              referenceCharge: testItem.refCharge,\n              source: testItem.source,\n            };\n\n            cloneItem.ictCodes[isIctExist.index].cptCodes.push(cptObj);\n            cloneItem.cptCodes.push(cptObj);\n\n            testArr[exist.index] = cloneItem;\n          }\n        }\n      }\n    }\n  }\n  return testArr;\n};\n\nexport const ictAlreadyExist = (orderTestData, code) => {\n  return orderTestData.some((item) => item?.description?.code === code);\n};\n\nconst formatIctForOrder = (ict, diagIct) => {\n  return ict.map((item) => {\n    let label = \"\";\n\n    const diagIndex = diagIct.indexOf(item.value);\n\n    if (diagIndex !== -1) {\n      label = String.fromCharCode(65 + diagIndex);\n    }\n\n    return {\n      label: label,\n      value: item.value,\n    };\n  });\n};\n\nexport const formatTestForOrder = (order, orderIcd) => {\n  // console.log(\"🚀 ~ formatTestForOrder ~ order:\", order)\n  let cloneOrderIcd = customCloneDeep(orderIcd);\n\n  let orderIcdKeyBy = customKeyBy(cloneOrderIcd, \"id\");\n\n  const keysToPick = [\"diag_1\", \"diag_2\", \"diag_3\", \"diag_4\", \"diag_5\", \"diag_6\", \"diag_7\", \"diag_8\"];\n\n  const diagIct = Object.values(customPick(order, keysToPick));\n\n  const tests = order?.testsToDo?.test || [];\n\n  tests.forEach((testItem) => {\n    const orderTestData = {\n      test: testItem,\n      cpt: testItem?.cptCodes || [],\n      source: testItem?.swabtype ? [{ label: testItem.swabtype, value: testItem.swabtype }] : testItem.sources,\n      unit: testItem?.unit || 1,\n      refCharge: testItem?.cptCodes?.[0]?.referenceCharge || 0,\n      ict: formatIctForOrder(testItem?.ictCodes || [], diagIct),\n      sampleContainer: testItem?.selectedContainer || null,\n    };\n    orderIcdKeyBy[1].orderData.push(orderTestData);\n  });\n\n  // Add Diagcode\n\n  const uniqueIctItemsMap = new Map();\n\n  tests.forEach((test) => {\n    test?.ictCodes?.forEach((ictItem) => {\n      uniqueIctItemsMap.set(ictItem.code, ictItem);\n    });\n  });\n\n  const uniqueIctItemsArray = Array.from(uniqueIctItemsMap.values());\n\n  uniqueIctItemsArray.forEach((ictItem) => {\n    const ictIndex = diagIct.indexOf(ictItem.code);\n    if (ictIndex !== -1) {\n      orderIcdKeyBy[ictIndex + 1].description = ictItem;\n    }\n  });\n\n  // tests.forEach((testItem) => {\n  //   testItem?.ictCodes?.forEach((ictItem) => {\n  //     const ictIndex = diagIct.indexOf(ictItem.code);\n  //     orderIcdKeyBy[ictIndex + 1].description = ictItem;\n  //     ictItem?.cptCodes?.forEach((cptItem) => {\n  //       const orderTestData = {\n  //         test: testItem,\n  //         cpt: cptItem,\n  //         source: cptItem?.source || {},\n  //         unit: cptItem.unit,\n  //         refCharge: cptItem.referenceCharge || 0,\n  //         ict: [],\n  //       };\n\n  //       orderIcdKeyBy[ictIndex + 1].orderData.push(orderTestData);\n  //     });\n  //   });\n  // });\n\n  return Object.values(orderIcdKeyBy);\n};\n\nexport const getFileNameFromDocuments = (path) => {\n  if (!path) return \"\";\n\n  const fullFileName = path.split(\"/\").pop();\n\n  if (!fullFileName) return path;\n\n  const fileName = fullFileName.split(/[-$]/).pop();\n  return fileName;\n};\n\nexport const splitArrayIntoChunks = (array, chunkSizes, INDIVIDUAL_REQUESTED) => {\n  const chunks = [];\n  let currentIndex = 0;\n\n  chunkSizes.forEach((size, index) => {\n    let chunk = array.slice(currentIndex, currentIndex + size);\n\n    if (chunk.length < size) {\n      const currentIndexTests = INDIVIDUAL_REQUESTED[index] || [];\n      const missingCount = size - chunk.length;\n      const defaultTest = currentIndexTests.slice(0, missingCount);\n      chunk = [...chunk, ...defaultTest];\n    }\n\n    chunks.push(chunk);\n    currentIndex += size;\n  });\n\n  return chunks;\n};\n\nexport const loadReqFormTest = async ({ clientID, getTestTypes, tests = [] }) => {\n  if (clientID === ALTA_NEW_ID) {\n    const allLabTests = tests && tests.length > 0 ? tests : await getTestTypes();\n\n    const microbiologyTests = allLabTests.filter((test) => test.category === \"Microbiology\");\n    const otherTests = allLabTests.filter((test) => test.category !== \"Microbiology\");\n\n    const formattedMicrobiologyTests = microbiologyTests.map((t) => {\n      return {\n        internalCode: t.code,\n        title: t.name,\n        type: t?.setting?.labelID?.label,\n      };\n    });\n\n    const formattedOtherTest = otherTests.map((t) => {\n      return {\n        internalCode: t.code,\n        title: t.name,\n        type: t?.setting?.labelID?.label,\n      };\n    });\n\n    const individualRequestedChunkSizes = [\n      INDIVIDUAL_REQUESTED[0].length,\n      INDIVIDUAL_REQUESTED[1].length,\n      INDIVIDUAL_REQUESTED[2].length,\n    ];\n\n    const splitFormattedOtherTest = splitArrayIntoChunks(\n      formattedOtherTest,\n      individualRequestedChunkSizes,\n      INDIVIDUAL_REQUESTED\n    );\n\n    const finalIndividualRequested = splitFormattedOtherTest.map((chunk, index) => {\n      return chunk.length === 0 ? INDIVIDUAL_REQUESTED[index] : chunk;\n    });\n\n    return {\n      MICROBIOLOGY: formattedMicrobiologyTests.length ? formattedMicrobiologyTests : MICROBIOLOGY,\n      INDIVIDUAL_REQUESTED: finalIndividualRequested,\n    };\n  }\n\n  return {\n    MICROBIOLOGY: clientID === \"e33ea32c-7cc2-4609-b3b2-35d8309df342\" ? MICROBIOLOGY_CEROCLINIX : MICROBIOLOGY,\n    INDIVIDUAL_REQUESTED: INDIVIDUAL_REQUESTED,\n  };\n};\n\nexport const getTestBasedUponCpt = ({ changeObj, testResponse }) => {\n  const selectedCpt = changeObj?.id || null;\n\n  const { tests, rows } = testResponse;\n\n  if (!selectedCpt) return [];\n\n  // let data = rows?.filter((testItem) => testItem?.cptCodes?.some((cpt) => cpt.code == selectedCpt));\n  return rows?.filter((testItem) => testItem?.id == selectedCpt);\n};\n\nexport const countTotalCpt = (cptArr) =>\n  cptArr.reduce((count, item) => (isTestDataComplete(item) ? count + 1 : count), 0);\n\nexport const renderSourcesCell = (item, row) => {\n  if (!Array.isArray(row?.sources)) {\n    return (\n      <td key={`source_${item.id}`} title=\"\">\n        {\" \"}\n      </td>\n    );\n  }\n\n  const title = row.sources.map((source) => source.label).join(\", \");\n\n  const value = row.sources.length > 1 ? \"Multi\" : row.sources.length === 1 ? row.sources[0].label : \"\";\n\n  return (\n    <td key={`source_${item.id}`} style={{ cursor: \"pointer\" }} title={title}>\n      {value}\n    </td>\n  );\n};\n\nexport const renderPlatformCell = (row) => {\n  const value = row?.setting?.platform?.map((item) => item.title).join(\", \");\n\n  return (\n    <td key={`platform_${row.id}`} style={{ cursor: \"pointer\" }} title={value}>\n      {value}\n    </td>\n  );\n};\n\nexport const formatValueFloatInput = (val) => {\n  if (val === \"\") return val;\n\n  const isValid = /^-?\\d*\\.?\\d*$/.test(val);\n  if (!isValid) return \"\";\n\n  if (val.startsWith(\".\")) val = \"0\" + val;\n  if (val === \".\") val = \"0.\";\n\n  return val;\n};\n\nexport const onHandleDownloadSample = async (type = 2) => {\n  // if template info\n  if (type === 1) {\n    const data = [\n      { \"Field Name\": \"client_payer_id\", STATUS: \"( required )\", VALUE: \"221\" },\n      { \"Field Name\": \"client_name\", STATUS: \"( required )\", VALUE: \"Client 1\" },\n      { \"Field Name\": \"client_address\", STATUS: \"( required )\", VALUE: \"7365 Douglas Drives\" },\n      { \"Field Name\": \"client_address_2\", STATUS: \"( optional )\", VALUE: \"\" },\n      { \"Field Name\": \"client_city\", STATUS: \"( required )\", VALUE: \"Bechtelarland\" },\n      { \"Field Name\": \"client_state\", STATUS: \"( required )\", VALUE: \"UT\" },\n      { \"Field Name\": \"client_zip\", STATUS: \"( required )\", VALUE: \"10013\" },\n      { \"Field Name\": \"client_phone\", STATUS: \"( required )\", VALUE: \"561-555-7689\" },\n      { \"Field Name\": \"client_email\", STATUS: \"( optional )\", VALUE: \"\" },\n      { \"Field Name\": \"client_main_contact_first_name\", STATUS: \"( optional )\", VALUE: \"\" },\n      { \"Field Name\": \"client_main_contact_last_name\", STATUS: \"( optional )\", VALUE: \"\" },\n      { \"Field Name\": \"client_main_contact_email\", STATUS: \"( optional )\", VALUE: \"\" },\n      { \"Field Name\": \"percent_claims_commission\", STATUS: \"( optional )\", VALUE: \"\" },\n      { \"Field Name\": \"percent_discount_list_price\", STATUS: \"( optional )\", VALUE: \"\" },\n      { \"Field Name\": \"primary_invoice_method\", STATUS: \"( optional )\", VALUE: \"email\" },\n      { \"Field Name\": \"secondary_invoice_method\", STATUS: \"( optional )\", VALUE: \"\" },\n    ];\n\n    await downloadDataAsCSV(data, \"Import Client Template Info\");\n  } else {\n    const data = [\n      {\n        client_payer_id: \"payer_id_1\",\n        client_name: \"Acme Corporation\",\n        client_address: \"123 Main St\",\n        client_address_2: \"\",\n        client_city: \"Springfield\",\n        client_state: \"IL\",\n        client_zip: \"62701\",\n        phone_number: \"555-1234\",\n        fax: \"555-5678\",\n        email: \"contact@acme.com\",\n        client_main_contact_first_name: \"John\",\n        client_main_contact_last_name: \"Doe\",\n        contact_fax: \"\",\n        contact_email: \"john.doe@acme.com\",\n        percent_claims_commission: 10,\n        percent_discount_list_price: 5,\n        primary_invoice_method: \"email\",\n        secondary_invoice_method: \"\",\n      },\n      {\n        client_payer_id: \"payer_id_2\",\n        client_name: \"Global Tech\",\n        client_address: \"456 Elm St\",\n        client_address_2: \"Apt 5\",\n        client_city: \"Metropolis\",\n        client_state: \"NY\",\n        client_zip: \"10001\",\n        phone_number: \"555-9876\",\n        fax: \"555-4321\",\n        email: \"info@globaltech.com\",\n        client_main_contact_first_name: \"Jane\",\n        client_main_contact_last_name: \"Smith\",\n        contact_fax: \"\",\n        contact_email: \"jane.smith@globaltech.com\",\n        percent_claims_commission: 15,\n        percent_discount_list_price: 7,\n        primary_invoice_method: \"email\",\n        secondary_invoice_method: \"phone\",\n      },\n      {\n        client_payer_id: \"payer_id_3\",\n        client_name: \"Example LLC\",\n        client_address: \"789 Oak St\",\n        client_address_2: \"\",\n        client_city: \"Gotham\",\n        client_state: \"CA\",\n        client_zip: \"90210\",\n        phone_number: \"555-2468\",\n        fax: \"\",\n        email: \"support@example.com\",\n        client_main_contact_first_name: \"Bob\",\n        client_main_contact_last_name: \"Johnson\",\n        contact_fax: \"\",\n        contact_email: \"bob.johnson@example.com\",\n        percent_claims_commission: 20,\n        percent_discount_list_price: 10,\n        primary_invoice_method: \"email\",\n        secondary_invoice_method: \"\",\n      },\n    ];\n\n    await downloadDataAsCSV(data, \"Import Client Sample Info\");\n  }\n};\n\nexport const getUniqueSources = (targetRanges) => {\n  const uniqueSourcesMap = new Map();\n\n  targetRanges?.forEach(({ sources }) => {\n    sources?.forEach((source) => {\n      const label = source.label?.trim();\n      if (!uniqueSourcesMap?.has(label)) {\n        uniqueSourcesMap?.set(label, source);\n      }\n    });\n  });\n\n  return Array.from(uniqueSourcesMap.values());\n};\n\nexport const makeUniqueSources = (data) => {\n  if (!data) return [];\n\n  const normalize = (str) => str.replace(/[^a-zA-Z0-9]/g, \"\").toLowerCase();\n\n  const uniqueData = Array.from(new Map(data.map((item) => [normalize(item.label), item])).values());\n  return uniqueData;\n};\n\nexport const infectionResultBasedUponRange = ({ resultValue, ranges }) => {\n  const numValue = Number(resultValue);\n\n  if ((numValue >= Number(ranges.LowLow) && numValue <= Number(ranges.LowHigh)) || numValue < Number(ranges.LowLow)) {\n    return \"Low\";\n  } else if (numValue >= Number(ranges.NormalLow) && numValue <= Number(ranges.NormalHigh)) {\n    return \"Normal\";\n  } else if (numValue >= Number(ranges.HighLow) && numValue <= Number(ranges.HighHigh)) {\n    return \"High\";\n  } else if (numValue >= Number(ranges.PanicLow) && numValue <= Number(ranges.PanicHigh)) {\n    return \"Panic\";\n  } else if (\n    (numValue >= Number(ranges.RepeatLow) && numValue <= Number(ranges.RepeatHigh)) ||\n    numValue > Number(ranges.RepeatHigh)\n  ) {\n    return \"Repeat\";\n  } else {\n    return \"Infection Confirmed\";\n  }\n};\n\nexport const isAnyRangeEmpty = (ranges) => {\n  return ranges.some((range) => {\n    const filteredValues = Object.entries(range)\n      .filter(([key, value]) => key !== \"id\")\n      .map(([key, value]) => value);\n    return filteredValues.every((value) => value === \"\");\n  });\n};\n\nexport const getContentType = (fileExtension) => {\n  switch (fileExtension) {\n    case \"pdf\":\n      return \"application/pdf\";\n    case \"jpg\":\n    case \"jpeg\":\n      return \"image/jpeg\";\n    case \"png\":\n      return \"image/png\";\n    case \"gif\":\n      return \"image/gif\";\n    case \"txt\":\n      return \"text/plain\";\n    case \"doc\":\n    case \"docx\":\n      return \"application/msword\";\n    case \"xls\":\n    case \"xlsx\":\n      return \"application/vnd.ms-excel\";\n    default:\n      return \"application/octet-stream\"; // default to binary data\n  }\n};\n\nexport const capitalizeBCBSOrTitleCase = (name) => {\n  if (name.toLowerCase().includes(\"bcbs\")) {\n    return name.replace(/bcbs/gi, \"BCBS\");\n  } else {\n    return nameToTitleCase(name);\n  }\n};\n\nexport const formatLabelID = (id) => {\n  if (!id) return \"\";\n  const splitId = id.split(\"-\");\n  return splitId[splitId.length - 1];\n};\n\nexport const formatTestForLabReport = (array) => {\n  if (!array) return [];\n  const result = [];\n  let currentGroup = null;\n\n  array?.forEach((item) => {\n    if (item.testName) {\n      if (currentGroup) {\n        result.push(currentGroup);\n      }\n      currentGroup = { testName: item.testName, targetRange: [] };\n    } else if (currentGroup) {\n      currentGroup.targetRange.push(item);\n    }\n  });\n\n  // Add the last group if exists\n  if (currentGroup) {\n    result.push(currentGroup);\n  }\n\n  return result;\n};\n\nexport const formatTestNewDiscovery = ({ results, type, code }) => {\n  if (type === TEST_PANEL_TYPES.QUALITATIVE_WITH_PATHOGEN || type === TEST_PANEL_TYPES.QUANTITATIVE_WITH_PATHOGEN) {\n    const { antibioticTests, pathogenisTests } = results?.reduce(\n      (acc, item) => {\n        const parsedResult = parseTestResult(item.testResult);\n        if (item?.antibioticResistanceType === \"Resistance\") {\n          acc.antibioticTests.push({ ...item, parsedResult });\n        } else {\n          acc.pathogenisTests.push({ ...item, parsedResult });\n        }\n        return acc;\n      },\n      { antibioticTests: [], pathogenisTests: [] }\n    );\n\n    return {\n      testName: results?.[0].panelName,\n      code,\n      pathogenisTests,\n      antibioticTests,\n    };\n  }\n  return null;\n};\n\nexport const getPanelElementType = (option) => {\n  if (!option) return null;\n  return ANTIBIOTIC_RESISTANCE_GENES_TYPE.find((t) => t.value === option);\n};\n\nexport const getSpecificResultPersonalize = (tests) => {\n  const isAnyQualtitative = tests?.some((item) => item?.possibleValues === \"Qualitative\");\n\n  // const testType = tests?.[0]?.typeOfTest;\n\n  // return testType === TYPE_OF_TEST.QUALITATIVE || isAnyQualtitative\n  //   ? PANEL_RESULT_TEST_PERSONALIZE\n  //   : PANEL_RESULT_TEST_PERSONALIZE.filter((item) => item.itemKey !== 'testResultMarks');\n\n  return isAnyQualtitative\n    ? PANEL_RESULT_TEST_PERSONALIZE\n    : PANEL_RESULT_TEST_PERSONALIZE.filter((item) => item.itemKey !== \"testResultMarks\");\n};\n\nexport const getTestPanelType = (typeOfTest, isAssociatedPanel) => {\n  if (typeOfTest === TYPE_OF_TEST.EXTERNAL) {\n    return TEST_PANEL_TYPES.EXTERNAL;\n  } else if (typeOfTest === TYPE_OF_TEST.QUALITATIVE) {\n    return isAssociatedPanel\n      ? TEST_PANEL_TYPES.QUALITATIVE_WITH_PATHOGEN\n      : TEST_PANEL_TYPES.QUALITATIVE_WITHOUT_PATHOGEN;\n  } else if (typeOfTest === TYPE_OF_TEST.QUANTITATIVE) {\n    return isAssociatedPanel\n      ? TEST_PANEL_TYPES.QUANTITATIVE_WITH_PATHOGEN\n      : TEST_PANEL_TYPES.QUANTITATIVE_WITHOUT_PATHOGEN;\n  } else {\n    return TEST_PANEL_TYPES.BOTH;\n  }\n};\n\nexport const formatTargetRanges = (targetRanges, typeOfTest, isAssociatedPanel) => {\n  if (!isAssociatedPanel) return [];\n\n  const targetArr = [];\n\n  targetRanges?.forEach((item) => {\n    const refInterval = generateRefInterval({ ranges: item?.ranges?.[0] ?? null });\n\n    const finalTargetObj = {\n      ...item,\n      refInterval: typeOfTest === TYPE_OF_TEST.QUALITATIVE ? \"Not Detected\" : refInterval,\n      typeOfTest,\n    };\n    targetArr.push(finalTargetObj);\n  });\n\n  const sortedArray = targetArr.sort((a, b) => {\n    const typeA = (a.antibioticResistanceType || \"\").toLowerCase();\n    const typeB = (b.antibioticResistanceType || \"\").toLowerCase();\n\n    // Sort by antibioticResistanceType\n    if (typeA < typeB) return -1;\n    if (typeA > typeB) return 1;\n\n    // If antibioticResistanceType is the same, sort by 'name'\n    const nameA = (a.name || \"\").toLowerCase();\n    const nameB = (b.name || \"\").toLowerCase();\n    return nameA.localeCompare(nameB);\n  });\n\n  return sortedArray;\n};\n\nexport const env = process.env.REACT_APP_ENV === \"dev\" ? \"test\" : \"live\";\n\nexport const isLocalhost = () => {\n  return window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\";\n};\n\nexport const vhToPixels = (vh) => {\n  return Math.round(window.innerHeight * (vh / 100));\n};\nexport const formatSelectedSource = (selectedSource) => {\n  return selectedSource?.length > 0\n    ? [...new Set(selectedSource.map((srcItem) => srcItem.label?.trim()))].join(\",\") || \"\"\n    : \"\";\n};\n\nexport const filterSourcesBySwabType = (sources, swabType) => {\n  if (!swabType) return [];\n\n  if (Array.isArray(swabType)) {\n    swabType = swabType.map((item) => item.label).join(\",\");\n  }\n\n  const swabTypesArray = swabType\n    .toLowerCase()\n    .split(\",\")\n    .map((type) => type.trim());\n\n  return swabType ? sources.filter((source) => swabTypesArray.includes(source.label.trim().toLowerCase())) : null;\n};\n\n// created test obj from order\n\nexport function compareAndReturnNewValues(newTestCreate, order) {\n  let orderProviderID = null;\n  let orderProviderName = null;\n\n  if (typeof order?.provider === \"string\" && !order?.provider?.ref_id) {\n    const parsedProvider = JSON.parse(order.provider);\n    orderProviderID = parsedProvider?.ref_id;\n    orderProviderName = parsedProvider?.ref_name;\n  } else {\n    orderProviderID = order.provider?.ref_id;\n    orderProviderName = order.provider?.ref_name;\n  }\n\n  const obj1 = {\n    ...order?.employee_demographics,\n    siteID: order?.siteID,\n    location: order?.location,\n    providerID: orderProviderID || null,\n    providerName: orderProviderName || null,\n    externalID: order?.externalID,\n    clincialComments: order?.clincialComments,\n    orderDate: order?.orderDate,\n    collectionDate: order?.collectionDate,\n    labReceiveDate: order?.labReceiveDate,\n    collectedBy: order?.collectedBy,\n    collectedByName: order?.collectedByName,\n  };\n\n  const obj2 = {\n    ...newTestCreate?.employee_demographics,\n    siteID: newTestCreate?.siteID,\n    location: newTestCreate?.location,\n    providerID: newTestCreate?.providerID || null,\n    providerName: newTestCreate?.providerName || null,\n    externalID: newTestCreate?.externalID,\n    clincialComments: newTestCreate?.clincialComments,\n    orderDate: newTestCreate?.orderDate,\n    collectionDate: newTestCreate?.collectionDate,\n    labReceiveDate: newTestCreate?.labReceiveDate,\n    collectedBy: newTestCreate?.collectedBy,\n    collectedByName: newTestCreate?.collectedByName,\n  };\n\n  const valueChanges = {};\n  const { testsToDo } = order;\n\n  const isTestCreated = testsToDo?.test?.some((item) => item.barcode !== null && !item.result && item.barcode);\n\n  // Compare values for all common keys\n  Object.keys(obj1)?.forEach((key) => {\n    if (obj1[key] !== obj2[key]) {\n      valueChanges[key] = obj2[key];\n    }\n  });\n\n  // Return null if no new values are found\n  return Object.keys(valueChanges)?.length > 0 ? valueChanges : null;\n}\n\nexport const testObj = {\n  siteID: \"\",\n  invalidResultStatus: \"\",\n  labName: \"\",\n  employee_demographics: {\n    venipuncture: \"\",\n    lastName: \"\",\n    country: \"\",\n    distance: \"\",\n    city: \"\",\n    insurance_number: \"\",\n    employeeID: \"\",\n    idNumber: \"\",\n    docUploaded: \"\",\n    confirmedexposure: \"\",\n    countryCode: \"\",\n    street: \"\",\n    isReview: \"\",\n    isEligible: \"\",\n    state: \"\",\n    street2: \"\",\n    insurance_name: \"\",\n    worker: \"\",\n    email: \"\",\n    providerName: \"\",\n    zip: \"\",\n    stat: \"\",\n    address: \"\",\n    whiteGlove: \"\",\n    orderNo: \"\",\n    othercomment: \"\",\n    sex: \"\",\n    testerDes: \"\",\n    clinicalcomment: \"\",\n    relatedsymptoms: \"\",\n    insuranceCompanyCode: \"\",\n    symptoms: \"\",\n    firstName: \"\",\n    possibleexposure: \"\",\n    swabtype: \"\",\n    testTypeID: \"\",\n    phoneNumber: \"\",\n    employeeType: \"\",\n    isVaccinated: \"\",\n    isoCode: \"\",\n    dob: \"\",\n    providerID: \"\",\n    orderDate: \"\",\n    isLucira: \"\",\n    status: \"\",\n  },\n  testerPhone: \"\",\n  status: \"\",\n  emailSend: \"\",\n  appVer: \"\",\n  email: \"\",\n  createdBy: \"\",\n  clientID: \"\",\n  resultDateTime: \"\",\n  testTypeID: \"\",\n  _version: \"\",\n  expired: \"\",\n  labID: \"\",\n  timerStatus: \"\",\n  test_type: \"\",\n  labelPrinted: \"\",\n  pcrStatus: \"\",\n  baseSiteID: \"\",\n  id: \"\",\n  site_name: \"\",\n  __typename: \"\",\n  barcode: \"\",\n  clientName: \"\",\n  phoneNumber: \"\",\n  _lastChangedAt: \"\",\n  employeeID: \"\",\n  orderID: \"\",\n  releaseStatus: \"\",\n  arkstoneStatus: \"\",\n  createdAt: \"\",\n  isFalsePositive: \"\",\n  result: \"\",\n  resultDate: \"\",\n  StampByName: \"\",\n  createSource: \"\",\n  schrID: \"\",\n  isArchive: \"\",\n  tester_name: \"\",\n  testerID: \"\",\n  sequenceNo: \"\",\n  scanByLabUserName: \"\",\n  updatedAt: \"\",\n  timezone: \"\",\n  scanByLabUserID: \"\",\n  labReceiveDate: \"\",\n  StampBy: \"\",\n  sr_no: \"\",\n};\n\nexport function getUpdatedFields(compareObjValues) {\n  let formattedObj = {};\n\n  if (compareObjValues) {\n    formattedObj = {\n      ...compareObjValues,\n      ...(compareObjValues?.clincialComments && {\n        clinicalcomment: compareObjValues.clincialComments,\n      }), // Add new key if value exists\n      ...(compareObjValues?.street && { address: compareObjValues.street }), // Add new key if value exists\n    };\n  }\n\n  const finalObj = { employee_demographics: {} };\n\n  // Loop through the keys in formattedObj\n  for (const key in formattedObj) {\n    if (testObj.employee_demographics.hasOwnProperty(key)) {\n      // If the key exists in employee_demographics, update it there\n      finalObj.employee_demographics[key] = formattedObj[key];\n    } else if (key === \"collectedByName\") {\n      finalObj[\"tester_name\"] = compareObjValues.collectedByName;\n      finalObj[\"testerID\"] = compareObjValues.collectedBy;\n    } else if (key === \"collectionDate\") {\n      finalObj[\"createdAt\"] = moment(compareObjValues.collectionDate).toISOString();\n    } else if (key === \"labReceiveDate\") {\n      finalObj[\"labReceiveDate\"] = moment(compareObjValues.labReceiveDate).toISOString();\n    } else if (testObj?.hasOwnProperty(key)) {\n      // If the key exists outside employee_demographics, update it outside\n      finalObj[key] = formattedObj[key];\n    }\n  }\n\n  // Remove employee_demographics if no updates were made inside it\n  if (Object.keys(finalObj.employee_demographics).length === 0) {\n    delete finalObj.employee_demographics;\n  }\n\n  return finalObj;\n}\n\n// created order Obj from order\nconst orderObj = {\n  id: \"\",\n  employeeID: \"\",\n  orderNo: \"\",\n  providerID: null,\n  clientID: \"\",\n  clientName: \"\",\n  providerName: null,\n  siteID: \"\",\n  site_name: \"\",\n  employee_demographics: {\n    lastName: \"\",\n    city: \"\",\n    insurance_number: \"\",\n    idNumber: \"\",\n    countryCode: \"\",\n    street: \"\",\n    state: \"\",\n    street2: \"\",\n    insurance_name: \"\",\n    email: \"\",\n    zip: \"\",\n    address: \"\",\n    whiteGlove: false,\n    sex: \"\",\n    testerDes: \"\",\n    insuranceCompanyCode: \"\",\n    firstName: \"\",\n    phoneNumber: \"\",\n    employeeType: \"\",\n    isVaccinated: false,\n    dob: \"\",\n    isLucira: false,\n    status: \"\",\n    othercomment: \"\",\n    clincialComments: \"\",\n  },\n  orderDate: null,\n  status: \"\",\n  createdBy: \"\",\n  createdAt: null,\n  updatedAt: null,\n  barcode: \"\",\n  version: null,\n  test_type: \"\",\n  labID: \"\",\n  result: \"\",\n};\n\nexport const prevTestTypeKey = (obj1, obj2) => {\n  let prevTestTypeID = obj1?.testTypeID;\n  let newTestTypeID = obj2?.testTypeID;\n  if (prevTestTypeID !== newTestTypeID) {\n    return prevTestTypeID;\n  }\n  return null;\n};\n\nexport function compareTestdReturnNewValues(obj1, obj2) {\n  const valueChanges = {};\n\n  // Compare values for all common keys\n  Object.keys(obj1)?.forEach((key) => {\n    if (obj1[key] !== obj2[key]) {\n      valueChanges[key] = obj2[key];\n    }\n  });\n\n  // Return null if no new values are found\n  return Object.keys(valueChanges)?.length > 0 ? valueChanges : null;\n}\n\nexport function convertTestToOrderObj(comapredData) {\n  let finalObject = {};\n  if (comapredData) {\n    finalObject = {\n      ...comapredData,\n      ...(comapredData?.clinicalcomment && { clincialComments: comapredData.clinicalcomment }), // Add new key if value exists\n      ...(comapredData?.street && { address: comapredData.street }),\n      ...(comapredData?.comment && { othercomment: comapredData.comment }),\n    };\n  }\n  const updatedFields = {\n    employee_demographics: {},\n  };\n\n  // Iterate over all keys in finalObject\n  for (let key in finalObject) {\n    if (finalObject.hasOwnProperty(key)) {\n      // Check if key exists in outer fields of orderObj and if the value is different\n      if (orderObj.hasOwnProperty(key) && finalObject[key] !== orderObj[key]) {\n        updatedFields[key] = finalObject[key]; // Add only the updated outer field\n      }\n\n      // Check if key exists in the nested 'employee_demographics' of orderObj\n      if (orderObj.employee_demographics && orderObj.employee_demographics.hasOwnProperty(key)) {\n        if (finalObject[key] !== orderObj.employee_demographics[key]) {\n          updatedFields.employee_demographics[key] = finalObject[key]; // Add only updated nested fields\n        }\n      }\n    }\n  }\n\n  // Remove employee_demographics if no fields inside were updated\n  if (Object.keys(updatedFields.employee_demographics).length === 0) {\n    delete updatedFields.employee_demographics;\n  }\n\n  return updatedFields;\n}\nexport const getResultColors = (test) => {\n  if (test.status === \"Cancel\") return RESULT_COLOR[\"Cancel\"];\n  if (test.resultDetails) return RESULT_COLOR[\"detail\"];\n  else if (test.result === \"Not Detected\") return RESULT_COLOR[\"NotDetected\"];\n  return RESULT_COLOR[test.result?.toLowerCase()];\n};\n\nexport const validatePatientRecordFromClient = (Employee, validationObj, fromReset = false) => {\n  for (const [field, isValid] of Object.entries(validationObj)) {\n    if (!isValid) continue; // Skip fields that don't need validation\n\n    switch (field) {\n      case \"first\":\n        if (!Employee.first) {\n          return \"First name is required\";\n        }\n        if (!isValidName(Employee.first)) {\n          return \"First name is invalid, must contain at least 2 letters and should be realistic\";\n        }\n        break;\n\n      case \"last\":\n        if (!Employee.last) {\n          return \"Last name is required\";\n        }\n        if (!isValidName(Employee.last)) {\n          return \"Last name is invalid, must contain at least 2 letters and should be realistic\";\n        }\n        break;\n\n      case \"email\":\n        if (!Employee.email || !Employee.email.trim()) {\n          return \"Email Address is required\";\n        }\n        if (!isValidEmail(Employee.email)) {\n          return \"Invalid Email Address\";\n        }\n        break;\n\n      case \"phone_number\":\n        if (!Employee.phone_number || Employee.phone_number === \" \") {\n          return \"Phone number is required\";\n        }\n        break;\n\n      case \"dob\":\n        if (!Employee.dob) {\n          return \"Date of Birth is required\";\n        }\n        break;\n\n      case \"sex\":\n        if (!Employee.sex) {\n          return \"Gender is required\";\n        }\n        break;\n\n      case \"insuranceCompanyCode\":\n        if (!fromReset && !Employee.insuranceCompanyCode) {\n          return \"Payer Information is required\";\n        }\n        break;\n\n      case \"referringPyhsician\":\n        if (!Employee.referringPyhsician) {\n          return \"Referring Pyhsician is required\";\n        }\n        break;\n\n      case \"provider\":\n        if (!Employee.provider) {\n          return \"Patient Client is required\";\n        }\n        break;\n      case \"address\":\n        if (!Employee.street) {\n          return \"Address is required\";\n        }\n        break;\n      case \"city\":\n        if (!Employee.city) {\n          return \"City is required\";\n        }\n        break;\n      case \"state\":\n        if (!Employee.state) {\n          return \"State is required\";\n        }\n        break;\n      case \"zip\":\n        if (!Employee.zip) {\n          return \"Zipcode is required\";\n        }\n        break;\n      case \"siteID\":\n        if (!Employee.siteID) {\n          return \"Client is required\";\n        }\n        break;\n      default:\n        break;\n    }\n  }\n\n  // Additional validation logic for Medicare, Insurance Number, etc. if needed\n  if (!CUSTOM_INS.includes(Employee?.insuranceCompanyCode) && validationObj[\"insuranceCompanyCode\"]) {\n    if (!Employee.insurance_number || !Employee.insurance_number.trim()) {\n      return `Insurance Number is required`;\n    }\n    if (!isValidIDNumber(Employee.insurance_number)) {\n      return `Insurance Number is invalid`;\n    }\n    if (Employee.isMedicare === \"Y\" && !Employee.medicalNo) {\n      return \"Medicare Number should not be empty\";\n    }\n    if (Employee.isMedicare === \"Y\" && !isValidIDNumber(Employee.medicalNo)) {\n      return \"Medicare Number is invalid\";\n    }\n  }\n\n  return null;\n};\n\nexport const hasRejectedReasonChanged = (prevData, updateTest) => {\n  // Check if both arrays have the same length\n  if (prevData.length !== updateTest.length) {\n    return true; // If lengths are different, data has changed\n  }\n\n  // Iterate over the arrays and check if rejectedReason or testStatus has changed\n  for (let i = 0; i < prevData.length; i++) {\n    const prevItem = prevData[i];\n    const updatedItem = updateTest[i];\n\n    // Check if rejectedReason has changed or testStatus is \"Rejected\"\n    const compareItems = {\n      rejectedReason: prevItem.rejectedReason !== updatedItem.rejectedReason,\n      fileName: prevItem.fileName !== updatedItem.fileName,\n      testStatus: prevItem?.testStatus !== \"Rejected\",\n    };\n\n    // Check if any relevant changes exist\n    const hasChanges =\n      updatedItem.testStatus === \"Rejected\" &&\n      (compareItems.rejectedReason || compareItems.fileName || compareItems.testStatus);\n\n    if (hasChanges) {\n      return true; // Return true if labComment has changed or testStatus is \"Rejected\"\n    }\n  }\n  return false;\n};\n\nexport const convertArraytoObject = (arrayOfObjects, key) => {\n  return arrayOfObjects.reduce((acc, current) => {\n    acc[current[key]] = current;\n    return acc;\n  }, {});\n};\n\n// export const getAgeFromDateString = (dateString) => {\n//   const parsedDate = moment(dateString, \"MMDDYYYY\");\n\n//   const age = moment().diff(parsedDate, \"years\");\n\n//   return age;\n// };\n\nexport const getAgeFromDateString = (dateString) => {\n  const formats = [\"MMDDYYYY\", \"YYYY-MM-DD\"];\n\n  const parsedDate = moment(dateString, formats, true);\n\n  if (!parsedDate.isValid()) {\n    throw new Error(\"Invalid date format\");\n  }\n\n  const age = moment().diff(parsedDate, \"years\");\n\n  return age;\n};\n\nexport const getRangeByAgeOrGender = ({ ranges, gender, age }) => {\n  if (!ranges) return null;\n\n  const ageNumber = Number(age);\n\n  const userData = {\n    age: Number(age),\n    gender: { value: genderOBJ[gender] },\n    // diabtic: { value: diabtic.value },\n    // fasting: { value: fasting.value },\n  };\n\n  const isFilterAndRangeKey = ranges.some(\n    (item) => item.hasOwnProperty(\"FilterKey\") && item.hasOwnProperty(\"RangeArr\")\n  );\n  const isFilterKeyOnly = ranges.some((item) => item.hasOwnProperty(\"FilterKey\"));\n\n  if (isFilterAndRangeKey) {\n    const result = findBestMatchingRange(ranges, userData);\n\n    return result;\n  } else if (isFilterKeyOnly) {\n    const scoredItems = ranges.map((item) => ({\n      item,\n      score: getMatchScore(item, userData),\n    }));\n\n    const maxScore = Math.max(...scoredItems.map(({ score }) => score));\n\n    const bestMatches = scoredItems.filter(({ score }) => score === maxScore);\n\n    if (bestMatches.length > 0) {\n      return bestMatches[0].item;\n    }\n\n    return ranges[0];\n  } else {\n    const firstPriority = ranges.find((item) => item.Gender === gender.value && isWithinAgeRange(item, ageNumber));\n\n    if (firstPriority) {\n      return firstPriority;\n    }\n\n    const secondPriority = ranges.find((item) => isWithinAgeRange(item, ageNumber) || item.Gender === gender.value);\n\n    return secondPriority || ranges[0];\n  }\n};\n\nexport const generateSimpleRefIntervalFromRanges = ({ ranges, testType, test }) => {\n  if (\n    (testType === TEST_PANEL_TYPES.QUALITATIVE_WITH_PATHOGEN ||\n      testType === TEST_PANEL_TYPES.QUALITATIVE_WITHOUT_PATHOGEN) &&\n    test.antibioticResistanceType !== ANTIBIOTIC_RESISTANCE_TYPE.ADDITIONAL\n  ) {\n    return `Not Detected`;\n  } else if (ranges) {\n    const rangeArr = ranges?.RangeArr?.[0] || ranges;\n\n    if (Number(rangeArr.NormalLow) === 0 || !rangeArr.NormalLow) {\n      return `≤ ${rangeArr.NormalHigh}`;\n    }\n    if (!rangeArr.NormalHigh) {\n      return `≥ ${rangeArr.NormalLow}`;\n    }\n\n    return `${rangeArr.NormalLow} - ${rangeArr.NormalHigh}`;\n  }\n\n  return `${ranges.NormalLow} - ${ranges.NormalHigh}`;\n};\n\nexport const addRouteIfNotExists = (route, routesArray) => {\n  if (!routesArray.some((existingRoute) => existingRoute.path === route.path)) {\n    routesArray.push(route);\n  }\n};\n\nexport const getRowResultColor = ({ dataRow, value }) => {\n  console.log(\"DataRow\", dataRow);\n  if (typeof value === \"object\" && !Array.isArray(value) && value !== null) {\n    return RESULT_COLOR[value.value];\n  }\n\n  if (!Number(value)) return \"\";\n\n  const refInterval = dataRow?.refInterval;\n  if (refInterval === \"Not Estab.\") {\n    return \"green\";\n  }\n\n  const firstRange = dataRow?.ranges[0] || {};\n  const rangeData = firstRange?.RangeArr?.[0] || firstRange;\n\n  // const { NormalLow = 0, NormalHigh = 0 } = dataRow?.ranges?.[0]?.RangeArr?.[0] || {};\n\n  const { NormalLow = 0, NormalHigh = 0 } = rangeData || {};\n\n  if (NormalLow && !NormalHigh) return Number(value) < NormalLow ? \"red\" : \"green\";\n  if (!NormalLow && NormalHigh) return Number(value) > NormalHigh ? \"red\" : \"green\";\n\n  return Number(value) > NormalHigh || Number(value) < NormalLow ? \"red\" : \"green\";\n};\n\nexport const getOverallTestResultColor = (arr) => {\n  if (arr.some((item) => item.resultColor === \"red\")) {\n    return \"red\";\n  }\n  if (arr.some((item) => item.resultColor === \"blue\")) {\n    return \"blue\";\n  }\n  return \"green\";\n};\n\nexport const isAnySourceExist = ({ orderArray, sourcesArray }) => {\n  return orderArray.some(\n    (item) =>\n      Array.isArray(item?.source) &&\n      item.source.some((sourceItem) =>\n        sourcesArray.some(\n          (secondItem) => sourceItem.label === secondItem.label && sourceItem.value === secondItem.value\n        )\n      )\n  );\n};\n\nexport const hasAtLeastOneDiagnosis = (diagnostics) => {\n  const keysToCheck = [\"diag_1\", \"diag_2\", \"diag_3\", \"diag_4\", \"diag_5\", \"diag_6\", \"diag_7\", \"diag_8\"];\n\n  return keysToCheck.some((key) => diagnostics[key] !== null);\n};\n\nexport const formatTestSource = (sources) => {\n  if (!sources) return null;\n\n  const sortedSources = sources\n    .map((source) => ({\n      ...source,\n      label: toTitleCase(source.label.trim()),\n      value: toTitleCase(source.value.trim()),\n    }))\n    .sort((a, b) => a.label.localeCompare(b.label));\n\n  return sortedSources;\n};\n\nexport const getTestDates = (order) => {\n  const testCreatedAt = order.collectionDate ? moment(order.collectionDate).toISOString() : moment().toISOString();\n\n  const testDate = order.labReceiveDate ? moment(order.labReceiveDate).format(\"YYMMDD\") : moment().format(\"YYMMDD\");\n\n  return {\n    testCreatedAt,\n    testDate,\n  };\n};\n\nexport const isBarcodeRangeAssigned = ({ newRange, clients }) => {\n  const newStart = parseInt(newRange.startRange, 10);\n  const newEnd = parseInt(newRange.endRange, 10);\n\n  if (isNaN(newStart) || isNaN(newEnd)) {\n    return {\n      error: true,\n      message: \"Invalid barcode range: startRange and endRange must be numbers.\",\n    };\n  }\n\n  if (newStart > newEnd) {\n    return {\n      error: true,\n      message: \"Invalid barcode range: startRange is greater than endRange.\",\n    };\n  }\n\n  for (const client of clients) {\n    const existingRange = client.barcodeRange;\n    if (existingRange) {\n      const existingStart = parseInt(existingRange.startRange, 10);\n      const existingEnd = parseInt(existingRange.endRange, 10);\n\n      if (isNaN(existingStart) || isNaN(existingEnd)) {\n        continue;\n      }\n\n      if (existingStart > existingEnd) {\n        continue;\n      }\n\n      if (\n        (newStart >= existingStart && newStart <= existingEnd) ||\n        (newEnd >= existingStart && newEnd <= existingEnd) ||\n        (existingStart >= newStart && existingStart <= newEnd)\n      ) {\n        return {\n          error: true,\n          message: `${client.name} already has this range`,\n        };\n      }\n    }\n  }\n\n  return {\n    error: false,\n    message: \"Barcode range is available.\",\n  };\n};\n\nexport const viewBarcodeRange = (barcodeObj) => {\n  if (!barcodeObj) return \"\";\n\n  return `${barcodeObj?.startRange} -  ${barcodeObj?.endRange}`;\n};\n\nexport const parseResultDataToJsonForAlta = (csvData) => {\n  const headerKeys = [\"Sample Name\", \"Target Name\"];\n\n  const data = csvData.map((item) => item.data);\n\n  const headerIndex = data.findIndex((row) => headerKeys.every((key) => row.includes(key)));\n\n  const rowsStartIndex = headerIndex !== -1 ? headerIndex + 1 : -1;\n\n  if (headerIndex !== -1) {\n    const header = data[headerIndex];\n    const rows = data.slice(rowsStartIndex);\n\n    const jsonResult = rows.map((row) =>\n      header.reduce((acc, key, index) => {\n        acc[key] = row[index] || \"\";\n        return acc;\n      }, {})\n    );\n\n    return jsonResult;\n  }\n\n  return null;\n};\n\nexport const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const processAltaResultSamples = ({ data, tests, appContext, testTypes }) => {\n  const barcodesSet = new Set(tests.map((test) => test.barcode));\n\n  const incrementCount = (obj, key) => {\n    obj[key] = (obj[key] || 0) + 1;\n  };\n\n  let responseMessage = {};\n\n  const filteredData = data.filter((sample) => barcodesSet.has(sample[\"Sample Name\"]));\n\n  const invalidData = data.filter((sample) => !barcodesSet.has(sample[\"Sample Name\"]));\n\n  const groupedSamples = customGroupBy(filteredData, \"Sample Name\");\n\n  const groupedSamplesInvalid = customGroupBy(invalidData, \"Sample Name\");\n\n  responseMessage[\"Valid Accession No\"] = Object.keys(groupedSamples).length;\n\n  responseMessage[\"Invalid Accession No\"] = Object.keys(groupedSamplesInvalid).length;\n\n  const processed = customFlatMap(groupedSamples, (sampleGroup) => {\n    const sampleName = sampleGroup[0][\"Sample Name\"];\n\n    const testObj = tests.find((test) => test.barcode === sampleName);\n\n    if (!testObj) {\n      return [];\n    }\n\n    const testID = testObj.id;\n\n    const testTypeID = testObj.employee_demographics?.testTypeID || null;\n\n    const selectedTestType = testTypes.find((item) => item.id === testTypeID);\n\n    const selectedTargetRanges = selectedTestType?.targetRanges || [];\n\n    const formattedGroup = sampleGroup.map((obj, index, arr) => {\n      let result;\n\n      if (index === 0) {\n        const rpTest = customFind(arr, { \"Target Name\": \"RP\" });\n        arr.rpCTNumber = parseFloat(rpTest?.CT);\n        arr.isInvalidGroup = !rpTest || isNaN(arr.rpCTNumber);\n      }\n\n      if (arr.isInvalidGroup) {\n        result = \"Invalid\";\n      } else {\n        const ctValue = obj.CT;\n\n        if (ctValue === \"Undetermined\") {\n          result = \"Not Detected\";\n        } else {\n          const selectedElement = selectedTargetRanges.find(\n            (item) => item.name === obj[\"Target Name\"] || item.csv_name === obj[\"Target Name\"]\n          );\n\n          const ctNumberToCheck = selectedTestType.setting?.ctValue || selectedElement?.setting?.ctValue || 34;\n\n          const ctNumber = parseFloat(ctValue);\n\n          if (isNaN(ctNumber)) {\n            result = \"Invalid\";\n          } else {\n            result = ctNumber < parseFloat(ctNumberToCheck) ? \"Detected\" : \"Not Detected\";\n          }\n        }\n      }\n      return {\n        testID,\n        accession_number: obj[\"Sample Name\"],\n        testTypeID,\n        test_name: obj[\"Target Name\"],\n        result,\n        labID: CONFIG.whiteLabelID,\n        StampBy: appContext.user.sub,\n        StampByName: appContext.user.name,\n      };\n    });\n\n    if (formattedGroup.some((item) => item.result === \"Detected\")) {\n      incrementCount(responseMessage, \"Detected\");\n    } else if (formattedGroup.some((item) => item.result === \"Not Detected\")) {\n      incrementCount(responseMessage, \"Not Detected\");\n    } else if (formattedGroup.some((item) => item.result === \"Invalid\")) {\n      incrementCount(responseMessage, \"Invalid\");\n    }\n\n    return formattedGroup;\n  });\n\n  return { processed, responseMessageArray: responseMessage };\n};\n\n// export const createFilterMapping = (items) => {\n//   const temp = items.reduce((acc, { title, category, isSkipFilter }) => {\n//     if (!isSkipFilter) {\n//       const key = category || \"Others\";\n//       if (!acc[key]) {\n//         acc[key] = [];\n//       }\n//       acc[key].push(title);\n//     }\n//     return acc;\n//   }, {});\n//   const { Others, ...rest } = temp;\n//   return Others ? { ...rest, Others } : rest;\n// };\n\nexport const createFilterMapping = (items, filterTab) => {\n  const groupedItems = items.reduce((acc, item) => {\n    const { title, category, isSkipFilter } = item;\n    if (!isSkipFilter) {\n      const key = category || TAB_NAMES[filterTab] || \"Other\";\n      if (!acc[key]) {\n        acc[key] = [];\n      }\n      acc[key].push(item);\n    }\n    return acc;\n  }, {});\n\n  Object.keys(groupedItems).forEach((key) => {\n    groupedItems[key].sort((a, b) => {\n      const aIndex = a.sortedIndex ?? a.id ?? Infinity;\n      const bIndex = b.sortedIndex ?? b.id ?? Infinity;\n      return aIndex - bIndex;\n    });\n\n    groupedItems[key] = groupedItems[key].map((item) => item.title);\n  });\n\n  const { Demographic, Other, ...rest } = groupedItems;\n\n  return {\n    ...(Demographic ? { Demographic } : {}),\n    ...rest,\n    ...(Other ? { Other } : {}),\n  };\n};\n\nexport const sortSettingsList = (sortBy, sortDescending, arr) => {\n  switch (sortBy) {\n    // strings\n    case \"npi\":\n    case \"name\":\n    case \"street\":\n    case \"city\":\n    case \"state\":\n    case \"fax\":\n    case \"npiType\":\n    case \"taxid\":\n    case \"phoneNumber\":\n    case \"speciality\":\n      return sortDescending\n        ? [...arr].sort((a, b) => {\n            if (a[sortBy] === undefined || a[sortBy] === \"\") return 1;\n            if (b[sortBy] === undefined || b[sortBy] === \"\") return -1;\n            const valB = b[sortBy] ?? \"\"; // Fallback to an empty string if undefined or null\n            const valA = a[sortBy] ?? \"\";\n            return valB.localeCompare(valA); // Use localeCompare for descending order\n          })\n        : [...arr].sort((a, b) => {\n            if (a[sortBy] === undefined || a[sortBy] === \"\") return 1;\n            if (b[sortBy] === undefined || b[sortBy] === \"\") return -1;\n            const valB = b[sortBy] ?? \"\";\n            const valA = a[sortBy] ?? \"\";\n            return valA.localeCompare(valB); // Use localeCompare for ascending order\n          });\n\n    case \"orders\":\n    case \"claimAmount\":\n    case \"openAmount\":\n    case \"paid\":\n    case \"totalOrders\":\n    case \"associatedClients\":\n      return [...arr].sort((a, b) => {\n        let valA = a[sortBy] ?? 0; // Set to 0 if missing\n        let valB = b[sortBy] ?? 0; // Set to 0 if missing\n        return sortDescending ? valB - valA : valA - valB;\n      });\n    case \"code\":\n    case \"zip\":\n    case \"practiceID\":\n      return sortDescending\n        ? [...arr].sort((a, b) => {\n            if (a[sortBy] === undefined || a[sortBy] === \"\" || a[sortBy] === null) return 1;\n            if (b[sortBy] === undefined || b[sortBy] === \"\" || b[sortBy] === null) return -1;\n            let valA = a[sortBy] ?? 0;\n            let valB = b[sortBy] ?? 0;\n            return parseInt(valB) < parseInt(valA) ? 1 : parseInt(valA) < parseInt(valB) ? -1 : 0;\n          })\n        : [...arr].sort((a, b) => {\n            if (a[sortBy] === undefined || a[sortBy] === \"\") return 1;\n            if (b[sortBy] === undefined || b[sortBy] === \"\") return -1;\n            let valA = a[sortBy] ?? 0;\n            let valB = b[sortBy] ?? 0;\n            return parseInt(valB) > parseInt(valB) ? 1 : parseInt(valA) > parseInt(valB) ? -1 : 0;\n          });\n    case \"lastOrder\":\n      return [...arr].sort((a, b) => {\n        if (a[sortBy] === undefined) return 1; // Move 'a' (empty) to the end\n        if (b[sortBy] === undefined) return -1; // Move 'b' (empty) to the end\n\n        // Parse the date strings into Date objects\n        const dateA = new Date(a[sortBy]);\n        const dateB = new Date(b[sortBy]);\n        // Sort dates (ascending or descending)\n        return sortDescending\n          ? dateB - dateA // Descending order\n          : dateA - dateB; // Ascending order\n      });\n\n    default:\n      return sortDescending\n        ? [...arr].sort((a, b) => (b[sortBy] < a[sortBy] ? 1 : a[sortBy] < b[sortBy] ? -1 : 0))\n        : [...arr].sort((a, b) => (b[sortBy] > a[sortBy] ? 1 : a[sortBy] > b[sortBy] ? -1 : 0));\n  }\n};\n\nexport const createFilterMappingWithoutGroup = (items) => {\n  return items\n    .filter((item) => !item.isSkipFilter)\n    .sort((a, b) => (a.sortedIndex ?? a.id ?? Infinity) - (b.sortedIndex ?? b.id ?? Infinity))\n    .map((item) => item.title);\n};\n\nexport const combinePermissions = (arr) => {\n  const parsedCodes = arr.map((item, index) => {\n    try {\n      return JSON.parse(item.code);\n    } catch (error) {\n      console.error(`Error parsing JSON for item at index ${index}:`, error);\n      return {};\n    }\n  });\n\n  const combined = {};\n\n  parsedCodes.forEach((code) => {\n    for (const mainKey in code) {\n      if (!combined[mainKey]) {\n        combined[mainKey] = {};\n      }\n\n      for (const subKey in code[mainKey]) {\n        if (combined[mainKey][subKey] === undefined) {\n          combined[mainKey][subKey] = Boolean(code[mainKey][subKey]);\n        } else {\n          combined[mainKey][subKey] = combined[mainKey][subKey] || Boolean(code[mainKey][subKey]);\n        }\n      }\n    }\n  });\n\n  return combined;\n};\n\nexport const checkRoleAssigned = ({ users, roleId }) => {\n  if (!Array.isArray(users)) return false;\n\n  return users.some((user) => {\n    let rolesArray = [];\n\n    if (typeof user.roles === \"string\") {\n      try {\n        rolesArray = JSON.parse(user.roles);\n      } catch (error) {}\n    } else if (Array.isArray(user.roles)) {\n      rolesArray = user.roles;\n    }\n    return rolesArray.some((roleObj) => roleObj.id === roleId);\n  });\n};\n","import React from \"react\";\nconst Status = (props) => {\n  const { type, size, crossIcon, tickIcon, color, title, cssClass, questionIcon } = props;\n  const getCrossType = () => {\n    switch (type) {\n      case \"square\":\n        return \"fa-times\";\n      case \"circle\":\n        return \"fa-times-circle\";\n      default:\n        return \"fa-times-circle\";\n    }\n  };\n  const getTickType = () => {\n    switch (type) {\n      case \"square\":\n        return \"fa-check\";\n      case \"circle\":\n        return \"fa-check-circle\";\n      default:\n        return \"fa-check-circle\";\n    }\n  };\n  const getQuestionType = () => {\n    switch (type) {\n      case \"square\":\n        return \"fa-question\";\n      case \"circle\":\n        return \"fa-question-circle\";\n      default:\n        return \"fa-question-circle\";\n    }\n  };\n  const getColor = () => {\n    switch (color) {\n      case \"maroon\":\n        return \"maroon\";\n      case \"green\":\n        return \"green\";\n      case \"blue\":\n        return \"blue\";\n      case \"yellow\":\n        return \"yellow\";\n      case \"orange\":\n        return \"orange\";\n      case \"black\":\n        return \"black\";\n      case \"red\":\n        return \"red\";\n      default:\n        return \"gray\";\n    }\n  };\n  const getSize = () => {\n    switch (size) {\n      case \"sm\":\n        return \"sm\";\n      case \"md\":\n        return \"md\";\n      case \"lg\":\n        return \"lg\";\n    }\n  };\n  return (\n    <>\n      {crossIcon && <i className={`${cssClass} fas ${getCrossType()} ${getSize()} ${getColor()}`} title={title} />}\n      {tickIcon && <i className={`${cssClass} fas ${getTickType()} ${getSize()} ${getColor()}`} title={title} />}\n      {questionIcon && (\n        <i className={`${cssClass} fas ${getQuestionType()} ${getSize()} ${getColor()}`} title={title} />\n      )}\n    </>\n  );\n};\nexport default Status;\n","export default __webpack_public_path__ + \"static/media/default_profile.c3f59275.png\";","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import { DataStore, Predicates, SortDirection } from \"@aws-amplify/datastore\";\nimport {\n  Client,\n  Site,\n  Lab,\n  Employee,\n  Test,\n  TestTypes,\n  TestConsent,\n  LencoBarcodes,\n  EmployeeTestCounter,\n} from \"./models\";\nimport { Auth, API, Storage, graphqlOperation } from \"aws-amplify\";\nimport * as queries from \"./graphql/queries\";\nimport { setPhoneNo, formatTest, getPhoneNo } from \"utils\";\nimport { TEST_STATUS, RESULT_VALUE } from \"constant\";\nimport axios from \"axios\";\nimport AWS from \"aws-sdk\";\nimport awsconfig from \"./aws-exports\";\nimport { jsonToCSV } from \"react-papaparse\";\nimport moment from \"moment\";\nimport * as uuid from \"uuid\";\nimport * as mutations from \"./graphql/mutations\";\n\nimport { AWS_ENDPOINT } from \"constants/endpoints\";\nimport { ExternalTest } from \"models\";\n\nconst MAX_PAGE_LIMIT = 1000;\nconst PRE_REGISTER_URL = {\n  LIVE: \"https://g8bgbgfb45.execute-api.eu-west-1.amazonaws.com/dev/register\",\n  DEV: \"https://qa3dzt4aoj.execute-api.eu-west-1.amazonaws.com/dev/register\",\n};\n\nconst getTestGQL = async (filterParam) => {\n  let nextToken = null;\n  let tests = [];\n  const params = {\n    filter: filterParam,\n    sort: {\n      field: \"status\",\n      order: SortDirection.ASCENDING,\n    },\n    limit: 1000,\n  };\n  do {\n    if (nextToken) {\n      Object.assign(params, { nextToken: nextToken });\n    }\n    const graphqlData = await API.graphql(graphqlOperation(queries.listTests, params));\n    console.log(\"getTestGraphQL \", graphqlData);\n    tests = tests.concat(graphqlData.data.listTests.items);\n    nextToken = graphqlData.data.listTests.nextToken;\n  } while (nextToken);\n  return tests.filter((c) => !c._deleted);\n};\n\nconst getEmployeeGQL = async () => {\n  let employees = [];\n  let nextToken = null;\n  const params = {\n    limit: 1000,\n  };\n  do {\n    if (nextToken) {\n      Object.assign(params, { nextToken: nextToken });\n    }\n    try {\n      const graphqlData = await API.graphql(graphqlOperation(queries.listEmployees, params));\n      employees = employees.concat(graphqlData.data.listEmployees.items);\n      nextToken = graphqlData.data.listEmployees.nextToken;\n    } catch (err) {\n      console.log(\"Error:- EmployeeGraphQl\", err.message);\n    }\n  } while (nextToken);\n\n  return employees;\n};\n\nconst deleteEmployeeGQL = async (id) => {\n  try {\n    const emp = await getEmployeeByIdGQl(id);\n    const employeeData = {\n      id: id,\n      _version: emp[0]._version,\n    };\n    await API.graphql({ query: mutations.deleteEmployee, variables: { input: employeeData } });\n    return true;\n  } catch (err) {\n    console.log(\"Error:- EmployeeGraphQl\", err.message);\n  }\n  return false;\n};\nconst updateEmployeeGQL = async (employeeData) => {\n  try {\n    const updateEmp = await API.graphql({ query: mutations.updateEmployee, variables: { input: employeeData } });\n    const { data } = updateEmp;\n    return data.updateEmployee;\n  } catch (err) {\n    console.log(\"Error:- UpdateEmployeeGraphQl\", err.message);\n  }\n};\n\nconst getEmployeeByIdGQl = async (id) => {\n  let employees = [];\n\n  const params = {\n    id,\n  };\n  try {\n    const graphqlData = await API.graphql(graphqlOperation(queries.getEmployee, params));\n    employees = [graphqlData.data.getEmployee];\n  } catch (err) {\n    console.log(\"Error:- EmployeeGraphQl\", err.message);\n  }\n  return employees;\n};\nconst getOrderByIdGQl = async (id) => {\n  const params = {\n    id,\n  };\n  try {\n    const graphqlData = await API.graphql(graphqlOperation(queries.getOrder, params));\n    return graphqlData.data.getOrder;\n  } catch (err) {\n    console.log(\"Error:- getOrderByIdGQl\", err.message);\n  }\n  return null;\n};\n\nconst getTestByIdGQL = async (id) => {\n  let nextToken = null;\n  let tests = [];\n  const params = {\n    filter: {\n      id: {\n        eq: id,\n      },\n    },\n    limit: 1000,\n  };\n  do {\n    if (nextToken) {\n      Object.assign(params, { nextToken: nextToken });\n    }\n    const graphqlData = await API.graphql(graphqlOperation(queries.listTests, params));\n    console.log(\"getTestGraphQLINloop \", graphqlData);\n    tests = tests.concat(graphqlData.data.listTests.items);\n    nextToken = graphqlData.data.listTests.nextToken;\n  } while (nextToken);\n  console.log(\"getTestGraphQLAfterLoop \", tests);\n  return tests;\n};\nconst getTestBySequenceNoGQL = async (sequenceNo) => {\n  let nextToken = null;\n  let tests = [];\n  const params = {\n    filter: {\n      sequenceNo: {\n        eq: sequenceNo,\n      },\n    },\n    limit: 1000,\n  };\n  do {\n    if (nextToken) {\n      Object.assign(params, { nextToken: nextToken });\n    }\n    const graphqlData = await API.graphql(graphqlOperation(queries.listTests, params));\n\n    tests = tests.concat(graphqlData.data.listTests.items);\n    nextToken = graphqlData.data.listTests.nextToken;\n  } while (nextToken);\n  console.log(\"getTestGraphQLAfterLoop \", tests);\n  return tests;\n};\n\nconst deleteTestGQL = async (id) => {\n  try {\n    const filter = {\n      id: id,\n    };\n    await API.graphql({ query: mutations.deleteTest, variables: { input: filter } });\n    return true;\n  } catch (err) {\n    console.log(\"Error:- Delete GraphQl\", err.message);\n  }\n  return false;\n};\n\nconst createOrderGQL = async (orderData) => {\n  try {\n    const createOrder = await API.graphql({ query: mutations.createOrder, variables: { input: orderData } });\n    const { data } = createOrder;\n    return data.createOrder;\n  } catch (err) {\n    console.log;\n  }\n};\n\nconst updateOrderGQL = async (orderData) => {\n  try {\n    const updateOrder = await API.graphql({ query: mutations.updateOrder, variables: { input: orderData } });\n    const { data } = updateOrder;\n    return data.updateOrder;\n  } catch (err) {\n    console.log(\"updateOrder Error:-\", err.message);\n  }\n};\n\nexport default {\n  getEmployeeGQL,\n  getTestGQL,\n  deleteEmployeeGQL,\n  getEmployeeByIdGQl,\n  updateEmployeeGQL,\n  getTestByIdGQL,\n  deleteTestGQL,\n  getTestBySequenceNoGQL,\n  createOrderGQL,\n  getOrderByIdGQl,\n  updateOrderGQL,\n};\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const createLab = /* GraphQL */ `\n  mutation CreateLab(\n    $input: CreateLabInput!\n    $condition: ModelLabConditionInput\n  ) {\n    createLab(input: $input, condition: $condition) {\n      id\n      name\n      logo\n      contact_name\n      contact_phone\n      phone_number\n      fax_number\n      user_id\n      contact_email\n      tubes_provided\n      lab_director\n      country\n      referredDoctor\n      clia_number\n      testing_notes\n      street\n      city_state_zip\n      lab_contacts\n      default_antigen\n      antigen_notes\n      default_molecular\n      default_other\n      default_rapidflu\n      default_lucira\n      molecular_notes\n      custom_notes\n      invalid_notes\n      indeterminate_notes\n      other_notes\n      lucira_notes\n      rapidflu_notes\n      sendInsurance\n      barCodeProvided\n      barCodeAlertLimit\n      whiteLabel\n      whiteLabelPackage\n      showOnSummaryScreen\n      orderCodes\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      pendingRelease\n      logourl\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const updateLab = /* GraphQL */ `\n  mutation UpdateLab(\n    $input: UpdateLabInput!\n    $condition: ModelLabConditionInput\n  ) {\n    updateLab(input: $input, condition: $condition) {\n      id\n      name\n      logo\n      contact_name\n      contact_phone\n      phone_number\n      fax_number\n      user_id\n      contact_email\n      tubes_provided\n      lab_director\n      country\n      referredDoctor\n      clia_number\n      testing_notes\n      street\n      city_state_zip\n      lab_contacts\n      default_antigen\n      antigen_notes\n      default_molecular\n      default_other\n      default_rapidflu\n      default_lucira\n      molecular_notes\n      custom_notes\n      invalid_notes\n      indeterminate_notes\n      other_notes\n      lucira_notes\n      rapidflu_notes\n      sendInsurance\n      barCodeProvided\n      barCodeAlertLimit\n      whiteLabel\n      whiteLabelPackage\n      showOnSummaryScreen\n      orderCodes\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      pendingRelease\n      logourl\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const deleteLab = /* GraphQL */ `\n  mutation DeleteLab(\n    $input: DeleteLabInput!\n    $condition: ModelLabConditionInput\n  ) {\n    deleteLab(input: $input, condition: $condition) {\n      id\n      name\n      logo\n      contact_name\n      contact_phone\n      phone_number\n      fax_number\n      user_id\n      contact_email\n      tubes_provided\n      lab_director\n      country\n      referredDoctor\n      clia_number\n      testing_notes\n      street\n      city_state_zip\n      lab_contacts\n      default_antigen\n      antigen_notes\n      default_molecular\n      default_other\n      default_rapidflu\n      default_lucira\n      molecular_notes\n      custom_notes\n      invalid_notes\n      indeterminate_notes\n      other_notes\n      lucira_notes\n      rapidflu_notes\n      sendInsurance\n      barCodeProvided\n      barCodeAlertLimit\n      whiteLabel\n      whiteLabelPackage\n      showOnSummaryScreen\n      orderCodes\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      pendingRelease\n      logourl\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const createSite = /* GraphQL */ `\n  mutation CreateSite(\n    $input: CreateSiteInput!\n    $condition: ModelSiteConditionInput\n  ) {\n    createSite(input: $input, condition: $condition) {\n      id\n      name\n      clientID\n      contact_name\n      contactName\n      contact_phone\n      phone_number\n      email\n      contact_email\n      safeCampAdmin\n      antigen\n      automateTestType\n      user_id\n      show_contacts\n      insurance_required\n      sendInsuranceCard\n      isInsurance\n      resetTestDay\n      startDate\n      endDate\n      orderKitDate\n      orderKitType\n      orderQuantity\n      enableShipment\n      showOnSummaryScreen\n      messageTested\n      messageResulted\n      messagePositive\n      messageReTest\n      printLabel\n      isArchive\n      isActive\n      isLucira\n      isPCRCustody\n      vaccinationCard\n      externalTest\n      externalTestType\n      externalTestDuration\n      externalTestAdmit\n      patternTesting\n      isHRPR\n      patternHippa\n      preRegistration\n      admit\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      totalPR\n      totalOrdered\n      totalExtTest\n      totalCheckIn\n      totalGuest\n      totalStaff\n      status\n      companyID\n      sendIdentification\n      isAutoSubmitClaim\n      sendExternalRequisition\n      sendPrescription\n      sendAuthorization\n      sendOtherDocuments\n      startBarCode\n      uploadFileStatus\n      hippa\n      hippaFile\n      resultTemplate\n      isTesting\n      street\n      city\n      state\n      zipcode\n      countryCode\n      country\n      setting\n      defaultProvider\n      practiceID\n      labLocalID\n      fax\n      contact_fax\n      discount\n      commission\n      totalOrders\n      totalBilledAmount\n      claimAmount\n      openAmount\n      paid\n      lastOrder\n      note\n      createdBy\n      createdByName\n      updatedByName\n      siteType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const updateSite = /* GraphQL */ `\n  mutation UpdateSite(\n    $input: UpdateSiteInput!\n    $condition: ModelSiteConditionInput\n  ) {\n    updateSite(input: $input, condition: $condition) {\n      id\n      name\n      clientID\n      contact_name\n      contactName\n      contact_phone\n      phone_number\n      email\n      contact_email\n      safeCampAdmin\n      antigen\n      automateTestType\n      user_id\n      show_contacts\n      insurance_required\n      sendInsuranceCard\n      isInsurance\n      resetTestDay\n      startDate\n      endDate\n      orderKitDate\n      orderKitType\n      orderQuantity\n      enableShipment\n      showOnSummaryScreen\n      messageTested\n      messageResulted\n      messagePositive\n      messageReTest\n      printLabel\n      isArchive\n      isActive\n      isLucira\n      isPCRCustody\n      vaccinationCard\n      externalTest\n      externalTestType\n      externalTestDuration\n      externalTestAdmit\n      patternTesting\n      isHRPR\n      patternHippa\n      preRegistration\n      admit\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      totalPR\n      totalOrdered\n      totalExtTest\n      totalCheckIn\n      totalGuest\n      totalStaff\n      status\n      companyID\n      sendIdentification\n      isAutoSubmitClaim\n      sendExternalRequisition\n      sendPrescription\n      sendAuthorization\n      sendOtherDocuments\n      startBarCode\n      uploadFileStatus\n      hippa\n      hippaFile\n      resultTemplate\n      isTesting\n      street\n      city\n      state\n      zipcode\n      countryCode\n      country\n      setting\n      defaultProvider\n      practiceID\n      labLocalID\n      fax\n      contact_fax\n      discount\n      commission\n      totalOrders\n      totalBilledAmount\n      claimAmount\n      openAmount\n      paid\n      lastOrder\n      note\n      createdBy\n      createdByName\n      updatedByName\n      siteType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const deleteSite = /* GraphQL */ `\n  mutation DeleteSite(\n    $input: DeleteSiteInput!\n    $condition: ModelSiteConditionInput\n  ) {\n    deleteSite(input: $input, condition: $condition) {\n      id\n      name\n      clientID\n      contact_name\n      contactName\n      contact_phone\n      phone_number\n      email\n      contact_email\n      safeCampAdmin\n      antigen\n      automateTestType\n      user_id\n      show_contacts\n      insurance_required\n      sendInsuranceCard\n      isInsurance\n      resetTestDay\n      startDate\n      endDate\n      orderKitDate\n      orderKitType\n      orderQuantity\n      enableShipment\n      showOnSummaryScreen\n      messageTested\n      messageResulted\n      messagePositive\n      messageReTest\n      printLabel\n      isArchive\n      isActive\n      isLucira\n      isPCRCustody\n      vaccinationCard\n      externalTest\n      externalTestType\n      externalTestDuration\n      externalTestAdmit\n      patternTesting\n      isHRPR\n      patternHippa\n      preRegistration\n      admit\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      totalPR\n      totalOrdered\n      totalExtTest\n      totalCheckIn\n      totalGuest\n      totalStaff\n      status\n      companyID\n      sendIdentification\n      isAutoSubmitClaim\n      sendExternalRequisition\n      sendPrescription\n      sendAuthorization\n      sendOtherDocuments\n      startBarCode\n      uploadFileStatus\n      hippa\n      hippaFile\n      resultTemplate\n      isTesting\n      street\n      city\n      state\n      zipcode\n      countryCode\n      country\n      setting\n      defaultProvider\n      practiceID\n      labLocalID\n      fax\n      contact_fax\n      discount\n      commission\n      totalOrders\n      totalBilledAmount\n      claimAmount\n      openAmount\n      paid\n      lastOrder\n      note\n      createdBy\n      createdByName\n      updatedByName\n      siteType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const createClient = /* GraphQL */ `\n  mutation CreateClient(\n    $input: CreateClientInput!\n    $condition: ModelClientConditionInput\n  ) {\n    createClient(input: $input, condition: $condition) {\n      id\n      name\n      contact_name\n      contact_phone\n      phone_number\n      country\n      timezone\n      fax_number\n      street\n      city\n      state\n      zipcode\n      contact_email\n      hippa\n      hippaFile\n      resultType\n      showOnSummaryScreen\n      whiteLabel\n      whiteLabelPackage\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      resultTypes\n      brmSetting\n      setting\n      pgName\n      colLabId\n      uploadFileStatus\n      orderCounter\n      requiredKeys\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Sites {\n        items {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Employees {\n        items {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const updateClient = /* GraphQL */ `\n  mutation UpdateClient(\n    $input: UpdateClientInput!\n    $condition: ModelClientConditionInput\n  ) {\n    updateClient(input: $input, condition: $condition) {\n      id\n      name\n      contact_name\n      contact_phone\n      phone_number\n      country\n      timezone\n      fax_number\n      street\n      city\n      state\n      zipcode\n      contact_email\n      hippa\n      hippaFile\n      resultType\n      showOnSummaryScreen\n      whiteLabel\n      whiteLabelPackage\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      resultTypes\n      brmSetting\n      setting\n      pgName\n      colLabId\n      uploadFileStatus\n      orderCounter\n      requiredKeys\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Sites {\n        items {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Employees {\n        items {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const deleteClient = /* GraphQL */ `\n  mutation DeleteClient(\n    $input: DeleteClientInput!\n    $condition: ModelClientConditionInput\n  ) {\n    deleteClient(input: $input, condition: $condition) {\n      id\n      name\n      contact_name\n      contact_phone\n      phone_number\n      country\n      timezone\n      fax_number\n      street\n      city\n      state\n      zipcode\n      contact_email\n      hippa\n      hippaFile\n      resultType\n      showOnSummaryScreen\n      whiteLabel\n      whiteLabelPackage\n      isArchive\n      positiveCount\n      negativeCount\n      postitiveDate\n      totalTest\n      resultTypes\n      brmSetting\n      setting\n      pgName\n      colLabId\n      uploadFileStatus\n      orderCounter\n      requiredKeys\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Sites {\n        items {\n          id\n          name\n          clientID\n          contact_name\n          contactName\n          contact_phone\n          phone_number\n          email\n          contact_email\n          safeCampAdmin\n          antigen\n          automateTestType\n          user_id\n          show_contacts\n          insurance_required\n          sendInsuranceCard\n          isInsurance\n          resetTestDay\n          startDate\n          endDate\n          orderKitDate\n          orderKitType\n          orderQuantity\n          enableShipment\n          showOnSummaryScreen\n          messageTested\n          messageResulted\n          messagePositive\n          messageReTest\n          printLabel\n          isArchive\n          isActive\n          isLucira\n          isPCRCustody\n          vaccinationCard\n          externalTest\n          externalTestType\n          externalTestDuration\n          externalTestAdmit\n          patternTesting\n          isHRPR\n          patternHippa\n          preRegistration\n          admit\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          totalPR\n          totalOrdered\n          totalExtTest\n          totalCheckIn\n          totalGuest\n          totalStaff\n          status\n          companyID\n          sendIdentification\n          isAutoSubmitClaim\n          sendExternalRequisition\n          sendPrescription\n          sendAuthorization\n          sendOtherDocuments\n          startBarCode\n          uploadFileStatus\n          hippa\n          hippaFile\n          resultTemplate\n          isTesting\n          street\n          city\n          state\n          zipcode\n          countryCode\n          country\n          setting\n          defaultProvider\n          practiceID\n          labLocalID\n          fax\n          contact_fax\n          discount\n          commission\n          totalOrders\n          totalBilledAmount\n          claimAmount\n          openAmount\n          paid\n          lastOrder\n          note\n          createdBy\n          createdByName\n          updatedByName\n          siteType\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Employees {\n        items {\n          id\n          first\n          last\n          middleName\n          dob\n          id_number\n          clientID\n          employeeFND\n          street\n          street2\n          city\n          state\n          county\n          zip\n          country\n          countryCode\n          phone_number\n          sex\n          email\n          isVaccinated\n          insurance_name\n          insurance_number\n          insuranceGroupId\n          insurance_img_front\n          insurance_img_back\n          subID\n          site_name\n          isNew\n          isPreRegistered\n          medflowDomain\n          mdID\n          schrID\n          whiteGlove\n          employeeType\n          profileImage\n          vaccinationCardUpload\n          vaccinationCardImage\n          vaccinationDetails\n          vaccinationType\n          vaccinationDate\n          vaccinationLocation\n          vaccinationDateS\n          vaccinationLocationS\n          isBooster\n          BoosterShotCardImage\n          isExternalTest\n          externalTestImage\n          externalTestDate\n          externalTestType\n          externalTestResult\n          preRegisterShowId\n          patternConsent\n          hippaConsent\n          insuranceScan\n          createdAt\n          updatedBy\n          updatedByName\n          lastUpdatedTest\n          autoRelease\n          lastUsed\n          isPrimaryProfile\n          parentRelation\n          note\n          sendSMS\n          sendEmail\n          totalTest\n          connectedTo\n          createdBy\n          createdByName\n          insuranceDetails\n          insuranceCompanyCode\n          medicalNo\n          postGridID\n          noteAddedBy\n          status\n          isHospice\n          snf\n          isInsHousing\n          eligibilityStatus\n          requestedDetails\n          primaryCarePhysician\n          referringPyhsician\n          renderingProvider\n          referringProvider\n          orderingProvider\n          codes\n          testTwo\n          siteID\n          setting\n          ssn\n          ethinicity\n          provider\n          externalID\n          _version\n          _deleted\n          _lastChangedAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const createEmployee = /* GraphQL */ `\n  mutation CreateEmployee(\n    $input: CreateEmployeeInput!\n    $condition: ModelEmployeeConditionInput\n  ) {\n    createEmployee(input: $input, condition: $condition) {\n      id\n      first\n      last\n      middleName\n      dob\n      id_number\n      clientID\n      employeeFND\n      street\n      street2\n      city\n      state\n      county\n      zip\n      country\n      countryCode\n      phone_number\n      sex\n      email\n      isVaccinated\n      insurance_name\n      insurance_number\n      insuranceGroupId\n      insurance_img_front\n      insurance_img_back\n      subID\n      site_name\n      isNew\n      isPreRegistered\n      medflowDomain\n      mdID\n      schrID\n      whiteGlove\n      employeeType\n      profileImage\n      vaccinationCardUpload\n      vaccinationCardImage\n      vaccinationDetails\n      vaccinationType\n      vaccinationDate\n      vaccinationLocation\n      vaccinationDateS\n      vaccinationLocationS\n      isBooster\n      BoosterShotCardImage\n      isExternalTest\n      externalTestImage\n      externalTestDate\n      externalTestType\n      externalTestResult\n      preRegisterShowId\n      patternConsent\n      hippaConsent\n      insuranceScan\n      createdAt\n      updatedBy\n      updatedByName\n      lastUpdatedTest\n      autoRelease\n      lastUsed\n      isPrimaryProfile\n      parentRelation\n      note\n      sendSMS\n      sendEmail\n      totalTest\n      connectedTo\n      createdBy\n      createdByName\n      insuranceDetails\n      insuranceCompanyCode\n      medicalNo\n      postGridID\n      noteAddedBy\n      status\n      isHospice\n      snf\n      isInsHousing\n      eligibilityStatus\n      requestedDetails\n      primaryCarePhysician\n      referringPyhsician\n      renderingProvider\n      referringProvider\n      orderingProvider\n      codes\n      testTwo\n      siteID\n      setting\n      ssn\n      ethinicity\n      provider\n      externalID\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      Client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const updateEmployee = /* GraphQL */ `\n  mutation UpdateEmployee(\n    $input: UpdateEmployeeInput!\n    $condition: ModelEmployeeConditionInput\n  ) {\n    updateEmployee(input: $input, condition: $condition) {\n      id\n      first\n      last\n      middleName\n      dob\n      id_number\n      clientID\n      employeeFND\n      street\n      street2\n      city\n      state\n      county\n      zip\n      country\n      countryCode\n      phone_number\n      sex\n      email\n      isVaccinated\n      insurance_name\n      insurance_number\n      insuranceGroupId\n      insurance_img_front\n      insurance_img_back\n      subID\n      site_name\n      isNew\n      isPreRegistered\n      medflowDomain\n      mdID\n      schrID\n      whiteGlove\n      employeeType\n      profileImage\n      vaccinationCardUpload\n      vaccinationCardImage\n      vaccinationDetails\n      vaccinationType\n      vaccinationDate\n      vaccinationLocation\n      vaccinationDateS\n      vaccinationLocationS\n      isBooster\n      BoosterShotCardImage\n      isExternalTest\n      externalTestImage\n      externalTestDate\n      externalTestType\n      externalTestResult\n      preRegisterShowId\n      patternConsent\n      hippaConsent\n      insuranceScan\n      createdAt\n      updatedBy\n      updatedByName\n      lastUpdatedTest\n      autoRelease\n      lastUsed\n      isPrimaryProfile\n      parentRelation\n      note\n      sendSMS\n      sendEmail\n      totalTest\n      connectedTo\n      createdBy\n      createdByName\n      insuranceDetails\n      insuranceCompanyCode\n      medicalNo\n      postGridID\n      noteAddedBy\n      status\n      isHospice\n      snf\n      isInsHousing\n      eligibilityStatus\n      requestedDetails\n      primaryCarePhysician\n      referringPyhsician\n      renderingProvider\n      referringProvider\n      orderingProvider\n      codes\n      testTwo\n      siteID\n      setting\n      ssn\n      ethinicity\n      provider\n      externalID\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      Client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const deleteEmployee = /* GraphQL */ `\n  mutation DeleteEmployee(\n    $input: DeleteEmployeeInput!\n    $condition: ModelEmployeeConditionInput\n  ) {\n    deleteEmployee(input: $input, condition: $condition) {\n      id\n      first\n      last\n      middleName\n      dob\n      id_number\n      clientID\n      employeeFND\n      street\n      street2\n      city\n      state\n      county\n      zip\n      country\n      countryCode\n      phone_number\n      sex\n      email\n      isVaccinated\n      insurance_name\n      insurance_number\n      insuranceGroupId\n      insurance_img_front\n      insurance_img_back\n      subID\n      site_name\n      isNew\n      isPreRegistered\n      medflowDomain\n      mdID\n      schrID\n      whiteGlove\n      employeeType\n      profileImage\n      vaccinationCardUpload\n      vaccinationCardImage\n      vaccinationDetails\n      vaccinationType\n      vaccinationDate\n      vaccinationLocation\n      vaccinationDateS\n      vaccinationLocationS\n      isBooster\n      BoosterShotCardImage\n      isExternalTest\n      externalTestImage\n      externalTestDate\n      externalTestType\n      externalTestResult\n      preRegisterShowId\n      patternConsent\n      hippaConsent\n      insuranceScan\n      createdAt\n      updatedBy\n      updatedByName\n      lastUpdatedTest\n      autoRelease\n      lastUsed\n      isPrimaryProfile\n      parentRelation\n      note\n      sendSMS\n      sendEmail\n      totalTest\n      connectedTo\n      createdBy\n      createdByName\n      insuranceDetails\n      insuranceCompanyCode\n      medicalNo\n      postGridID\n      noteAddedBy\n      status\n      isHospice\n      snf\n      isInsHousing\n      eligibilityStatus\n      requestedDetails\n      primaryCarePhysician\n      referringPyhsician\n      renderingProvider\n      referringProvider\n      orderingProvider\n      codes\n      testTwo\n      siteID\n      setting\n      ssn\n      ethinicity\n      provider\n      externalID\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      Client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const createTest = /* GraphQL */ `\n  mutation CreateTest(\n    $input: CreateTestInput!\n    $condition: ModelTestConditionInput\n  ) {\n    createTest(input: $input, condition: $condition) {\n      id\n      status\n      clientID\n      labID\n      employeeID\n      siteID\n      orderID\n      baseSiteID\n      testTypeID\n      batch\n      barcode\n      owner\n      result\n      resultDetails\n      resultDate\n      resultDateTime\n      receiveDateTime\n      employee_demographics\n      labOrderDetail\n      site_name\n      clientName\n      labName\n      phoneNumber\n      test_number\n      email\n      tester_name\n      testerID\n      isAntigen\n      referenceID\n      test_type\n      createdBy\n      testerPhone\n      submittedBy\n      submittedByName\n      StampBy\n      StampByName\n      emailSend\n      quarantinedStart\n      quarantinedEnd\n      startTimeStamp\n      timerStatus\n      startDate\n      expired\n      beenTimed\n      done\n      sr_no\n      appVer\n      sequenceNo\n      createSource\n      isFalsePositive\n      isRestated\n      invalidResultStatus\n      isLucira\n      patternTestAnswer\n      schrID\n      schrTestID\n      createdAt\n      updatedAt\n      timezone\n      pcrStatus\n      scanByTesterID\n      scanByTesterName\n      scanByLabUserID\n      scanByLabUserName\n      labelPrinted\n      isExternalTest\n      externalTestFile\n      testLocation\n      isArchive\n      arkstoneID\n      arkstoneStatus\n      sendToID\n      sendToName\n      sentToLabDate\n      verifiedBy\n      verifiedByName\n      releaseDate\n      releaseStatus\n      resultPDF\n      resultColor\n      cancelReason\n      note\n      claimID\n      restatedNote\n      sampleContainer\n      externalID\n      chartID\n      isSendToInstrument\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      lab {\n        id\n        name\n        logo\n        contact_name\n        contact_phone\n        phone_number\n        fax_number\n        user_id\n        contact_email\n        tubes_provided\n        lab_director\n        country\n        referredDoctor\n        clia_number\n        testing_notes\n        street\n        city_state_zip\n        lab_contacts\n        default_antigen\n        antigen_notes\n        default_molecular\n        default_other\n        default_rapidflu\n        default_lucira\n        molecular_notes\n        custom_notes\n        invalid_notes\n        indeterminate_notes\n        other_notes\n        lucira_notes\n        rapidflu_notes\n        sendInsurance\n        barCodeProvided\n        barCodeAlertLimit\n        whiteLabel\n        whiteLabelPackage\n        showOnSummaryScreen\n        orderCodes\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        pendingRelease\n        logourl\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      order {\n        id\n        employeeID\n        orderNo\n        providerID\n        clientID\n        labID\n        labName\n        clientName\n        providerName\n        siteID\n        site_name\n        employee_demographics\n        testsToDo\n        barcode\n        oldbarcode\n        diag_1\n        diag_2\n        diag_3\n        diag_4\n        diag_5\n        diag_6\n        diag_7\n        diag_8\n        diag_9\n        diag_10\n        diag_11\n        diag_12\n        proc_array\n        provider\n        orderDate\n        collectionDate\n        collectedBy\n        collectedByName\n        testDoneDate\n        labReceiveDate\n        status\n        providerStatus\n        cancelledReason\n        notes\n        isActive\n        isResultEmailed\n        floorNo\n        requestID\n        receivedBy\n        receivedByName\n        receivedDate\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        timezone\n        eligibilityStatus\n        location\n        tdDate\n        externalID\n        clincialComments\n        hippaSignature\n        createdAt\n        updatedAt\n        testOrdered\n        testQuantity\n        cancelledBy\n        isAcknowledged\n        departmentid\n        chartID\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const updateTest = /* GraphQL */ `\n  mutation UpdateTest(\n    $input: UpdateTestInput!\n    $condition: ModelTestConditionInput\n  ) {\n    updateTest(input: $input, condition: $condition) {\n      id\n      status\n      clientID\n      labID\n      employeeID\n      siteID\n      orderID\n      baseSiteID\n      testTypeID\n      batch\n      barcode\n      owner\n      result\n      resultDetails\n      resultDate\n      resultDateTime\n      receiveDateTime\n      employee_demographics\n      labOrderDetail\n      site_name\n      clientName\n      labName\n      phoneNumber\n      test_number\n      email\n      tester_name\n      testerID\n      isAntigen\n      referenceID\n      test_type\n      createdBy\n      testerPhone\n      submittedBy\n      submittedByName\n      StampBy\n      StampByName\n      emailSend\n      quarantinedStart\n      quarantinedEnd\n      startTimeStamp\n      timerStatus\n      startDate\n      expired\n      beenTimed\n      done\n      sr_no\n      appVer\n      sequenceNo\n      createSource\n      isFalsePositive\n      isRestated\n      invalidResultStatus\n      isLucira\n      patternTestAnswer\n      schrID\n      schrTestID\n      createdAt\n      updatedAt\n      timezone\n      pcrStatus\n      scanByTesterID\n      scanByTesterName\n      scanByLabUserID\n      scanByLabUserName\n      labelPrinted\n      isExternalTest\n      externalTestFile\n      testLocation\n      isArchive\n      arkstoneID\n      arkstoneStatus\n      sendToID\n      sendToName\n      sentToLabDate\n      verifiedBy\n      verifiedByName\n      releaseDate\n      releaseStatus\n      resultPDF\n      resultColor\n      cancelReason\n      note\n      claimID\n      restatedNote\n      sampleContainer\n      externalID\n      chartID\n      isSendToInstrument\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      lab {\n        id\n        name\n        logo\n        contact_name\n        contact_phone\n        phone_number\n        fax_number\n        user_id\n        contact_email\n        tubes_provided\n        lab_director\n        country\n        referredDoctor\n        clia_number\n        testing_notes\n        street\n        city_state_zip\n        lab_contacts\n        default_antigen\n        antigen_notes\n        default_molecular\n        default_other\n        default_rapidflu\n        default_lucira\n        molecular_notes\n        custom_notes\n        invalid_notes\n        indeterminate_notes\n        other_notes\n        lucira_notes\n        rapidflu_notes\n        sendInsurance\n        barCodeProvided\n        barCodeAlertLimit\n        whiteLabel\n        whiteLabelPackage\n        showOnSummaryScreen\n        orderCodes\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        pendingRelease\n        logourl\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      order {\n        id\n        employeeID\n        orderNo\n        providerID\n        clientID\n        labID\n        labName\n        clientName\n        providerName\n        siteID\n        site_name\n        employee_demographics\n        testsToDo\n        barcode\n        oldbarcode\n        diag_1\n        diag_2\n        diag_3\n        diag_4\n        diag_5\n        diag_6\n        diag_7\n        diag_8\n        diag_9\n        diag_10\n        diag_11\n        diag_12\n        proc_array\n        provider\n        orderDate\n        collectionDate\n        collectedBy\n        collectedByName\n        testDoneDate\n        labReceiveDate\n        status\n        providerStatus\n        cancelledReason\n        notes\n        isActive\n        isResultEmailed\n        floorNo\n        requestID\n        receivedBy\n        receivedByName\n        receivedDate\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        timezone\n        eligibilityStatus\n        location\n        tdDate\n        externalID\n        clincialComments\n        hippaSignature\n        createdAt\n        updatedAt\n        testOrdered\n        testQuantity\n        cancelledBy\n        isAcknowledged\n        departmentid\n        chartID\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const deleteTest = /* GraphQL */ `\n  mutation DeleteTest(\n    $input: DeleteTestInput!\n    $condition: ModelTestConditionInput\n  ) {\n    deleteTest(input: $input, condition: $condition) {\n      id\n      status\n      clientID\n      labID\n      employeeID\n      siteID\n      orderID\n      baseSiteID\n      testTypeID\n      batch\n      barcode\n      owner\n      result\n      resultDetails\n      resultDate\n      resultDateTime\n      receiveDateTime\n      employee_demographics\n      labOrderDetail\n      site_name\n      clientName\n      labName\n      phoneNumber\n      test_number\n      email\n      tester_name\n      testerID\n      isAntigen\n      referenceID\n      test_type\n      createdBy\n      testerPhone\n      submittedBy\n      submittedByName\n      StampBy\n      StampByName\n      emailSend\n      quarantinedStart\n      quarantinedEnd\n      startTimeStamp\n      timerStatus\n      startDate\n      expired\n      beenTimed\n      done\n      sr_no\n      appVer\n      sequenceNo\n      createSource\n      isFalsePositive\n      isRestated\n      invalidResultStatus\n      isLucira\n      patternTestAnswer\n      schrID\n      schrTestID\n      createdAt\n      updatedAt\n      timezone\n      pcrStatus\n      scanByTesterID\n      scanByTesterName\n      scanByLabUserID\n      scanByLabUserName\n      labelPrinted\n      isExternalTest\n      externalTestFile\n      testLocation\n      isArchive\n      arkstoneID\n      arkstoneStatus\n      sendToID\n      sendToName\n      sentToLabDate\n      verifiedBy\n      verifiedByName\n      releaseDate\n      releaseStatus\n      resultPDF\n      resultColor\n      cancelReason\n      note\n      claimID\n      restatedNote\n      sampleContainer\n      externalID\n      chartID\n      isSendToInstrument\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      lab {\n        id\n        name\n        logo\n        contact_name\n        contact_phone\n        phone_number\n        fax_number\n        user_id\n        contact_email\n        tubes_provided\n        lab_director\n        country\n        referredDoctor\n        clia_number\n        testing_notes\n        street\n        city_state_zip\n        lab_contacts\n        default_antigen\n        antigen_notes\n        default_molecular\n        default_other\n        default_rapidflu\n        default_lucira\n        molecular_notes\n        custom_notes\n        invalid_notes\n        indeterminate_notes\n        other_notes\n        lucira_notes\n        rapidflu_notes\n        sendInsurance\n        barCodeProvided\n        barCodeAlertLimit\n        whiteLabel\n        whiteLabelPackage\n        showOnSummaryScreen\n        orderCodes\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        pendingRelease\n        logourl\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      client {\n        id\n        name\n        contact_name\n        contact_phone\n        phone_number\n        country\n        timezone\n        fax_number\n        street\n        city\n        state\n        zipcode\n        contact_email\n        hippa\n        hippaFile\n        resultType\n        showOnSummaryScreen\n        whiteLabel\n        whiteLabelPackage\n        isArchive\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        resultTypes\n        brmSetting\n        setting\n        pgName\n        colLabId\n        uploadFileStatus\n        orderCounter\n        requiredKeys\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Sites {\n          nextToken\n          startedAt\n          __typename\n        }\n        Employees {\n          nextToken\n          startedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      order {\n        id\n        employeeID\n        orderNo\n        providerID\n        clientID\n        labID\n        labName\n        clientName\n        providerName\n        siteID\n        site_name\n        employee_demographics\n        testsToDo\n        barcode\n        oldbarcode\n        diag_1\n        diag_2\n        diag_3\n        diag_4\n        diag_5\n        diag_6\n        diag_7\n        diag_8\n        diag_9\n        diag_10\n        diag_11\n        diag_12\n        proc_array\n        provider\n        orderDate\n        collectionDate\n        collectedBy\n        collectedByName\n        testDoneDate\n        labReceiveDate\n        status\n        providerStatus\n        cancelledReason\n        notes\n        isActive\n        isResultEmailed\n        floorNo\n        requestID\n        receivedBy\n        receivedByName\n        receivedDate\n        updatedBy\n        updatedByName\n        createdBy\n        createdByName\n        timezone\n        eligibilityStatus\n        location\n        tdDate\n        externalID\n        clincialComments\n        hippaSignature\n        createdAt\n        updatedAt\n        testOrdered\n        testQuantity\n        cancelledBy\n        isAcknowledged\n        departmentid\n        chartID\n        isSendToExternalClient\n        _version\n        _deleted\n        _lastChangedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const createLencoBarcodes = /* GraphQL */ `\n  mutation CreateLencoBarcodes(\n    $input: CreateLencoBarcodesInput!\n    $condition: ModelLencoBarcodesConditionInput\n  ) {\n    createLencoBarcodes(input: $input, condition: $condition) {\n      id\n      labID\n      clientID\n      barcode\n      available\n      isActive\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateLencoBarcodes = /* GraphQL */ `\n  mutation UpdateLencoBarcodes(\n    $input: UpdateLencoBarcodesInput!\n    $condition: ModelLencoBarcodesConditionInput\n  ) {\n    updateLencoBarcodes(input: $input, condition: $condition) {\n      id\n      labID\n      clientID\n      barcode\n      available\n      isActive\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteLencoBarcodes = /* GraphQL */ `\n  mutation DeleteLencoBarcodes(\n    $input: DeleteLencoBarcodesInput!\n    $condition: ModelLencoBarcodesConditionInput\n  ) {\n    deleteLencoBarcodes(input: $input, condition: $condition) {\n      id\n      labID\n      clientID\n      barcode\n      available\n      isActive\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createTestConsent = /* GraphQL */ `\n  mutation CreateTestConsent(\n    $input: CreateTestConsentInput!\n    $condition: ModelTestConsentConditionInput\n  ) {\n    createTestConsent(input: $input, condition: $condition) {\n      id\n      employeeID\n      siteID\n      isConsent\n      isInsuranceCardScan\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const updateTestConsent = /* GraphQL */ `\n  mutation UpdateTestConsent(\n    $input: UpdateTestConsentInput!\n    $condition: ModelTestConsentConditionInput\n  ) {\n    updateTestConsent(input: $input, condition: $condition) {\n      id\n      employeeID\n      siteID\n      isConsent\n      isInsuranceCardScan\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const deleteTestConsent = /* GraphQL */ `\n  mutation DeleteTestConsent(\n    $input: DeleteTestConsentInput!\n    $condition: ModelTestConsentConditionInput\n  ) {\n    deleteTestConsent(input: $input, condition: $condition) {\n      id\n      employeeID\n      siteID\n      isConsent\n      isInsuranceCardScan\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      site {\n        id\n        name\n        clientID\n        contact_name\n        contactName\n        contact_phone\n        phone_number\n        email\n        contact_email\n        safeCampAdmin\n        antigen\n        automateTestType\n        user_id\n        show_contacts\n        insurance_required\n        sendInsuranceCard\n        isInsurance\n        resetTestDay\n        startDate\n        endDate\n        orderKitDate\n        orderKitType\n        orderQuantity\n        enableShipment\n        showOnSummaryScreen\n        messageTested\n        messageResulted\n        messagePositive\n        messageReTest\n        printLabel\n        isArchive\n        isActive\n        isLucira\n        isPCRCustody\n        vaccinationCard\n        externalTest\n        externalTestType\n        externalTestDuration\n        externalTestAdmit\n        patternTesting\n        isHRPR\n        patternHippa\n        preRegistration\n        admit\n        positiveCount\n        negativeCount\n        postitiveDate\n        totalTest\n        totalPR\n        totalOrdered\n        totalExtTest\n        totalCheckIn\n        totalGuest\n        totalStaff\n        status\n        companyID\n        sendIdentification\n        isAutoSubmitClaim\n        sendExternalRequisition\n        sendPrescription\n        sendAuthorization\n        sendOtherDocuments\n        startBarCode\n        uploadFileStatus\n        hippa\n        hippaFile\n        resultTemplate\n        isTesting\n        street\n        city\n        state\n        zipcode\n        countryCode\n        country\n        setting\n        defaultProvider\n        practiceID\n        labLocalID\n        fax\n        contact_fax\n        discount\n        commission\n        totalOrders\n        totalBilledAmount\n        claimAmount\n        openAmount\n        paid\n        lastOrder\n        note\n        createdBy\n        createdByName\n        updatedByName\n        siteType\n        _version\n        _deleted\n        _lastChangedAt\n        createdAt\n        updatedAt\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      employee {\n        id\n        first\n        last\n        middleName\n        dob\n        id_number\n        clientID\n        employeeFND\n        street\n        street2\n        city\n        state\n        county\n        zip\n        country\n        countryCode\n        phone_number\n        sex\n        email\n        isVaccinated\n        insurance_name\n        insurance_number\n        insuranceGroupId\n        insurance_img_front\n        insurance_img_back\n        subID\n        site_name\n        isNew\n        isPreRegistered\n        medflowDomain\n        mdID\n        schrID\n        whiteGlove\n        employeeType\n        profileImage\n        vaccinationCardUpload\n        vaccinationCardImage\n        vaccinationDetails\n        vaccinationType\n        vaccinationDate\n        vaccinationLocation\n        vaccinationDateS\n        vaccinationLocationS\n        isBooster\n        BoosterShotCardImage\n        isExternalTest\n        externalTestImage\n        externalTestDate\n        externalTestType\n        externalTestResult\n        preRegisterShowId\n        patternConsent\n        hippaConsent\n        insuranceScan\n        createdAt\n        updatedBy\n        updatedByName\n        lastUpdatedTest\n        autoRelease\n        lastUsed\n        isPrimaryProfile\n        parentRelation\n        note\n        sendSMS\n        sendEmail\n        totalTest\n        connectedTo\n        createdBy\n        createdByName\n        insuranceDetails\n        insuranceCompanyCode\n        medicalNo\n        postGridID\n        noteAddedBy\n        status\n        isHospice\n        snf\n        isInsHousing\n        eligibilityStatus\n        requestedDetails\n        primaryCarePhysician\n        referringPyhsician\n        renderingProvider\n        referringProvider\n        orderingProvider\n        codes\n        testTwo\n        siteID\n        setting\n        ssn\n        ethinicity\n        provider\n        externalID\n        _version\n        _deleted\n        _lastChangedAt\n        updatedAt\n        Client {\n          id\n          name\n          contact_name\n          contact_phone\n          phone_number\n          country\n          timezone\n          fax_number\n          street\n          city\n          state\n          zipcode\n          contact_email\n          hippa\n          hippaFile\n          resultType\n          showOnSummaryScreen\n          whiteLabel\n          whiteLabelPackage\n          isArchive\n          positiveCount\n          negativeCount\n          postitiveDate\n          totalTest\n          resultTypes\n          brmSetting\n          setting\n          pgName\n          colLabId\n          uploadFileStatus\n          orderCounter\n          requiredKeys\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        Tests {\n          nextToken\n          startedAt\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const createTestTypes = /* GraphQL */ `\n  mutation CreateTestTypes(\n    $input: CreateTestTypesInput!\n    $condition: ModelTestTypesConditionInput\n  ) {\n    createTestTypes(input: $input, condition: $condition) {\n      id\n      code\n      name\n      category\n      custom_notes\n      typeOfTest\n      type\n      totalTime\n      firstAlert\n      secondAlert\n      units\n      minValue\n      maxValue\n      refInterval\n      duration\n      hrCounter\n      siteID\n      clientID\n      sources\n      sampleContainer\n      cptCodes\n      ictCodes\n      targetRanges\n      isActive\n      isArchive\n      isAssociatedPanel\n      isPanelOnly\n      isARKStone\n      lonicCode\n      setting\n      ranges\n      createdByName\n      updatedByName\n      lastUsed\n      location\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateTestTypes = /* GraphQL */ `\n  mutation UpdateTestTypes(\n    $input: UpdateTestTypesInput!\n    $condition: ModelTestTypesConditionInput\n  ) {\n    updateTestTypes(input: $input, condition: $condition) {\n      id\n      code\n      name\n      category\n      custom_notes\n      typeOfTest\n      type\n      totalTime\n      firstAlert\n      secondAlert\n      units\n      minValue\n      maxValue\n      refInterval\n      duration\n      hrCounter\n      siteID\n      clientID\n      sources\n      sampleContainer\n      cptCodes\n      ictCodes\n      targetRanges\n      isActive\n      isArchive\n      isAssociatedPanel\n      isPanelOnly\n      isARKStone\n      lonicCode\n      setting\n      ranges\n      createdByName\n      updatedByName\n      lastUsed\n      location\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteTestTypes = /* GraphQL */ `\n  mutation DeleteTestTypes(\n    $input: DeleteTestTypesInput!\n    $condition: ModelTestTypesConditionInput\n  ) {\n    deleteTestTypes(input: $input, condition: $condition) {\n      id\n      code\n      name\n      category\n      custom_notes\n      typeOfTest\n      type\n      totalTime\n      firstAlert\n      secondAlert\n      units\n      minValue\n      maxValue\n      refInterval\n      duration\n      hrCounter\n      siteID\n      clientID\n      sources\n      sampleContainer\n      cptCodes\n      ictCodes\n      targetRanges\n      isActive\n      isArchive\n      isAssociatedPanel\n      isPanelOnly\n      isARKStone\n      lonicCode\n      setting\n      ranges\n      createdByName\n      updatedByName\n      lastUsed\n      location\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createEmployeeBarCodes = /* GraphQL */ `\n  mutation CreateEmployeeBarCodes(\n    $input: CreateEmployeeBarCodesInput!\n    $condition: ModelEmployeeBarCodesConditionInput\n  ) {\n    createEmployeeBarCodes(input: $input, condition: $condition) {\n      id\n      employeeID\n      barcode\n      phone_number\n      licenceNumber\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateEmployeeBarCodes = /* GraphQL */ `\n  mutation UpdateEmployeeBarCodes(\n    $input: UpdateEmployeeBarCodesInput!\n    $condition: ModelEmployeeBarCodesConditionInput\n  ) {\n    updateEmployeeBarCodes(input: $input, condition: $condition) {\n      id\n      employeeID\n      barcode\n      phone_number\n      licenceNumber\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteEmployeeBarCodes = /* GraphQL */ `\n  mutation DeleteEmployeeBarCodes(\n    $input: DeleteEmployeeBarCodesInput!\n    $condition: ModelEmployeeBarCodesConditionInput\n  ) {\n    deleteEmployeeBarCodes(input: $input, condition: $condition) {\n      id\n      employeeID\n      barcode\n      phone_number\n      licenceNumber\n      createdAt\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createEmployeeTestCounter = /* GraphQL */ `\n  mutation CreateEmployeeTestCounter(\n    $input: CreateEmployeeTestCounterInput!\n    $condition: ModelEmployeeTestCounterConditionInput\n  ) {\n    createEmployeeTestCounter(input: $input, condition: $condition) {\n      id\n      counter\n      employeeCounter\n      orderCounter\n      patternQuestion\n      totalTest\n      employeeUpdate\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateEmployeeTestCounter = /* GraphQL */ `\n  mutation UpdateEmployeeTestCounter(\n    $input: UpdateEmployeeTestCounterInput!\n    $condition: ModelEmployeeTestCounterConditionInput\n  ) {\n    updateEmployeeTestCounter(input: $input, condition: $condition) {\n      id\n      counter\n      employeeCounter\n      orderCounter\n      patternQuestion\n      totalTest\n      employeeUpdate\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteEmployeeTestCounter = /* GraphQL */ `\n  mutation DeleteEmployeeTestCounter(\n    $input: DeleteEmployeeTestCounterInput!\n    $condition: ModelEmployeeTestCounterConditionInput\n  ) {\n    deleteEmployeeTestCounter(input: $input, condition: $condition) {\n      id\n      counter\n      employeeCounter\n      orderCounter\n      patternQuestion\n      totalTest\n      employeeUpdate\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createExternalTest = /* GraphQL */ `\n  mutation CreateExternalTest(\n    $input: CreateExternalTestInput!\n    $condition: ModelExternalTestConditionInput\n  ) {\n    createExternalTest(input: $input, condition: $condition) {\n      id\n      status\n      clientID\n      employeeID\n      siteID\n      owner\n      reason\n      employee_demographics\n      site_name\n      phoneNumber\n      tester_name\n      email\n      vaccineCardFile\n      vaccineCardFileBack\n      test_type\n      result\n      resultDateTime\n      externalTestFile\n      createdAt\n      prID\n      isPosted\n      testNow\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateExternalTest = /* GraphQL */ `\n  mutation UpdateExternalTest(\n    $input: UpdateExternalTestInput!\n    $condition: ModelExternalTestConditionInput\n  ) {\n    updateExternalTest(input: $input, condition: $condition) {\n      id\n      status\n      clientID\n      employeeID\n      siteID\n      owner\n      reason\n      employee_demographics\n      site_name\n      phoneNumber\n      tester_name\n      email\n      vaccineCardFile\n      vaccineCardFileBack\n      test_type\n      result\n      resultDateTime\n      externalTestFile\n      createdAt\n      prID\n      isPosted\n      testNow\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteExternalTest = /* GraphQL */ `\n  mutation DeleteExternalTest(\n    $input: DeleteExternalTestInput!\n    $condition: ModelExternalTestConditionInput\n  ) {\n    deleteExternalTest(input: $input, condition: $condition) {\n      id\n      status\n      clientID\n      employeeID\n      siteID\n      owner\n      reason\n      employee_demographics\n      site_name\n      phoneNumber\n      tester_name\n      email\n      vaccineCardFile\n      vaccineCardFileBack\n      test_type\n      result\n      resultDateTime\n      externalTestFile\n      createdAt\n      prID\n      isPosted\n      testNow\n      _version\n      _deleted\n      _lastChangedAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createEmployeeLogin = /* GraphQL */ `\n  mutation CreateEmployeeLogin(\n    $input: CreateEmployeeLoginInput!\n    $condition: ModelEmployeeLoginConditionInput\n  ) {\n    createEmployeeLogin(input: $input, condition: $condition) {\n      id\n      employeeID\n      deviceID\n      deviceType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateEmployeeLogin = /* GraphQL */ `\n  mutation UpdateEmployeeLogin(\n    $input: UpdateEmployeeLoginInput!\n    $condition: ModelEmployeeLoginConditionInput\n  ) {\n    updateEmployeeLogin(input: $input, condition: $condition) {\n      id\n      employeeID\n      deviceID\n      deviceType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteEmployeeLogin = /* GraphQL */ `\n  mutation DeleteEmployeeLogin(\n    $input: DeleteEmployeeLoginInput!\n    $condition: ModelEmployeeLoginConditionInput\n  ) {\n    deleteEmployeeLogin(input: $input, condition: $condition) {\n      id\n      employeeID\n      deviceID\n      deviceType\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createTestSession = /* GraphQL */ `\n  mutation CreateTestSession(\n    $input: CreateTestSessionInput!\n    $condition: ModelTestSessionConditionInput\n  ) {\n    createTestSession(input: $input, condition: $condition) {\n      id\n      siteID\n      clientID\n      sessionStart\n      sessionEnd\n      activeTester\n      Tester\n      startedBy\n      startedByName\n      status\n      endedBy\n      endedByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateTestSession = /* GraphQL */ `\n  mutation UpdateTestSession(\n    $input: UpdateTestSessionInput!\n    $condition: ModelTestSessionConditionInput\n  ) {\n    updateTestSession(input: $input, condition: $condition) {\n      id\n      siteID\n      clientID\n      sessionStart\n      sessionEnd\n      activeTester\n      Tester\n      startedBy\n      startedByName\n      status\n      endedBy\n      endedByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteTestSession = /* GraphQL */ `\n  mutation DeleteTestSession(\n    $input: DeleteTestSessionInput!\n    $condition: ModelTestSessionConditionInput\n  ) {\n    deleteTestSession(input: $input, condition: $condition) {\n      id\n      siteID\n      clientID\n      sessionStart\n      sessionEnd\n      activeTester\n      Tester\n      startedBy\n      startedByName\n      status\n      endedBy\n      endedByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createDocuments = /* GraphQL */ `\n  mutation CreateDocuments(\n    $input: CreateDocumentsInput!\n    $condition: ModelDocumentsConditionInput\n  ) {\n    createDocuments(input: $input, condition: $condition) {\n      id\n      clientID\n      employeeID\n      testID\n      orderID\n      docType\n      docLabel\n      fileName\n      fileType\n      fileSize\n      notes\n      isActive\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateDocuments = /* GraphQL */ `\n  mutation UpdateDocuments(\n    $input: UpdateDocumentsInput!\n    $condition: ModelDocumentsConditionInput\n  ) {\n    updateDocuments(input: $input, condition: $condition) {\n      id\n      clientID\n      employeeID\n      testID\n      orderID\n      docType\n      docLabel\n      fileName\n      fileType\n      fileSize\n      notes\n      isActive\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteDocuments = /* GraphQL */ `\n  mutation DeleteDocuments(\n    $input: DeleteDocumentsInput!\n    $condition: ModelDocumentsConditionInput\n  ) {\n    deleteDocuments(input: $input, condition: $condition) {\n      id\n      clientID\n      employeeID\n      testID\n      orderID\n      docType\n      docLabel\n      fileName\n      fileType\n      fileSize\n      notes\n      isActive\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createOrder = /* GraphQL */ `\n  mutation CreateOrder(\n    $input: CreateOrderInput!\n    $condition: ModelOrderConditionInput\n  ) {\n    createOrder(input: $input, condition: $condition) {\n      id\n      employeeID\n      orderNo\n      providerID\n      clientID\n      labID\n      labName\n      clientName\n      providerName\n      siteID\n      site_name\n      employee_demographics\n      testsToDo\n      barcode\n      oldbarcode\n      diag_1\n      diag_2\n      diag_3\n      diag_4\n      diag_5\n      diag_6\n      diag_7\n      diag_8\n      diag_9\n      diag_10\n      diag_11\n      diag_12\n      proc_array\n      provider\n      orderDate\n      collectionDate\n      collectedBy\n      collectedByName\n      testDoneDate\n      labReceiveDate\n      status\n      providerStatus\n      cancelledReason\n      notes\n      isActive\n      isResultEmailed\n      floorNo\n      requestID\n      receivedBy\n      receivedByName\n      receivedDate\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      timezone\n      eligibilityStatus\n      location\n      tdDate\n      externalID\n      clincialComments\n      hippaSignature\n      createdAt\n      updatedAt\n      testOrdered\n      testQuantity\n      cancelledBy\n      isAcknowledged\n      departmentid\n      chartID\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const updateOrder = /* GraphQL */ `\n  mutation UpdateOrder(\n    $input: UpdateOrderInput!\n    $condition: ModelOrderConditionInput\n  ) {\n    updateOrder(input: $input, condition: $condition) {\n      id\n      employeeID\n      orderNo\n      providerID\n      clientID\n      labID\n      labName\n      clientName\n      providerName\n      siteID\n      site_name\n      employee_demographics\n      testsToDo\n      barcode\n      oldbarcode\n      diag_1\n      diag_2\n      diag_3\n      diag_4\n      diag_5\n      diag_6\n      diag_7\n      diag_8\n      diag_9\n      diag_10\n      diag_11\n      diag_12\n      proc_array\n      provider\n      orderDate\n      collectionDate\n      collectedBy\n      collectedByName\n      testDoneDate\n      labReceiveDate\n      status\n      providerStatus\n      cancelledReason\n      notes\n      isActive\n      isResultEmailed\n      floorNo\n      requestID\n      receivedBy\n      receivedByName\n      receivedDate\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      timezone\n      eligibilityStatus\n      location\n      tdDate\n      externalID\n      clincialComments\n      hippaSignature\n      createdAt\n      updatedAt\n      testOrdered\n      testQuantity\n      cancelledBy\n      isAcknowledged\n      departmentid\n      chartID\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const deleteOrder = /* GraphQL */ `\n  mutation DeleteOrder(\n    $input: DeleteOrderInput!\n    $condition: ModelOrderConditionInput\n  ) {\n    deleteOrder(input: $input, condition: $condition) {\n      id\n      employeeID\n      orderNo\n      providerID\n      clientID\n      labID\n      labName\n      clientName\n      providerName\n      siteID\n      site_name\n      employee_demographics\n      testsToDo\n      barcode\n      oldbarcode\n      diag_1\n      diag_2\n      diag_3\n      diag_4\n      diag_5\n      diag_6\n      diag_7\n      diag_8\n      diag_9\n      diag_10\n      diag_11\n      diag_12\n      proc_array\n      provider\n      orderDate\n      collectionDate\n      collectedBy\n      collectedByName\n      testDoneDate\n      labReceiveDate\n      status\n      providerStatus\n      cancelledReason\n      notes\n      isActive\n      isResultEmailed\n      floorNo\n      requestID\n      receivedBy\n      receivedByName\n      receivedDate\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      timezone\n      eligibilityStatus\n      location\n      tdDate\n      externalID\n      clincialComments\n      hippaSignature\n      createdAt\n      updatedAt\n      testOrdered\n      testQuantity\n      cancelledBy\n      isAcknowledged\n      departmentid\n      chartID\n      isSendToExternalClient\n      _version\n      _deleted\n      _lastChangedAt\n      Tests {\n        items {\n          id\n          status\n          clientID\n          labID\n          employeeID\n          siteID\n          orderID\n          baseSiteID\n          testTypeID\n          batch\n          barcode\n          owner\n          result\n          resultDetails\n          resultDate\n          resultDateTime\n          receiveDateTime\n          employee_demographics\n          labOrderDetail\n          site_name\n          clientName\n          labName\n          phoneNumber\n          test_number\n          email\n          tester_name\n          testerID\n          isAntigen\n          referenceID\n          test_type\n          createdBy\n          testerPhone\n          submittedBy\n          submittedByName\n          StampBy\n          StampByName\n          emailSend\n          quarantinedStart\n          quarantinedEnd\n          startTimeStamp\n          timerStatus\n          startDate\n          expired\n          beenTimed\n          done\n          sr_no\n          appVer\n          sequenceNo\n          createSource\n          isFalsePositive\n          isRestated\n          invalidResultStatus\n          isLucira\n          patternTestAnswer\n          schrID\n          schrTestID\n          createdAt\n          updatedAt\n          timezone\n          pcrStatus\n          scanByTesterID\n          scanByTesterName\n          scanByLabUserID\n          scanByLabUserName\n          labelPrinted\n          isExternalTest\n          externalTestFile\n          testLocation\n          isArchive\n          arkstoneID\n          arkstoneStatus\n          sendToID\n          sendToName\n          sentToLabDate\n          verifiedBy\n          verifiedByName\n          releaseDate\n          releaseStatus\n          resultPDF\n          resultColor\n          cancelReason\n          note\n          claimID\n          restatedNote\n          sampleContainer\n          externalID\n          chartID\n          isSendToInstrument\n          isSendToExternalClient\n          _version\n          _deleted\n          _lastChangedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const createUploadRequestMain = /* GraphQL */ `\n  mutation CreateUploadRequestMain(\n    $input: CreateUploadRequestMainInput!\n    $condition: ModelUploadRequestMainConditionInput\n  ) {\n    createUploadRequestMain(input: $input, condition: $condition) {\n      id\n      filesStatus\n      employeeID\n      clientID\n      siteID\n      fileName\n      fileType\n      title\n      uploadCallType\n      status\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Items {\n        items {\n          id\n          employeeID\n          clientID\n          siteID\n          requestID\n          fileID\n          fileName\n          fileType\n          floorNo\n          uploadCallType\n          data\n          status\n          reason\n          processingStatus\n          createdBy\n          createdByName\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const updateUploadRequestMain = /* GraphQL */ `\n  mutation UpdateUploadRequestMain(\n    $input: UpdateUploadRequestMainInput!\n    $condition: ModelUploadRequestMainConditionInput\n  ) {\n    updateUploadRequestMain(input: $input, condition: $condition) {\n      id\n      filesStatus\n      employeeID\n      clientID\n      siteID\n      fileName\n      fileType\n      title\n      uploadCallType\n      status\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Items {\n        items {\n          id\n          employeeID\n          clientID\n          siteID\n          requestID\n          fileID\n          fileName\n          fileType\n          floorNo\n          uploadCallType\n          data\n          status\n          reason\n          processingStatus\n          createdBy\n          createdByName\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const deleteUploadRequestMain = /* GraphQL */ `\n  mutation DeleteUploadRequestMain(\n    $input: DeleteUploadRequestMainInput!\n    $condition: ModelUploadRequestMainConditionInput\n  ) {\n    deleteUploadRequestMain(input: $input, condition: $condition) {\n      id\n      filesStatus\n      employeeID\n      clientID\n      siteID\n      fileName\n      fileType\n      title\n      uploadCallType\n      status\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      Items {\n        items {\n          id\n          employeeID\n          clientID\n          siteID\n          requestID\n          fileID\n          fileName\n          fileType\n          floorNo\n          uploadCallType\n          data\n          status\n          reason\n          processingStatus\n          createdBy\n          createdByName\n          _version\n          _deleted\n          _lastChangedAt\n          createdAt\n          updatedAt\n          __typename\n        }\n        nextToken\n        startedAt\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const createUploadRequest = /* GraphQL */ `\n  mutation CreateUploadRequest(\n    $input: CreateUploadRequestInput!\n    $condition: ModelUploadRequestConditionInput\n  ) {\n    createUploadRequest(input: $input, condition: $condition) {\n      id\n      employeeID\n      clientID\n      siteID\n      requestID\n      fileID\n      fileName\n      fileType\n      floorNo\n      uploadCallType\n      data\n      status\n      reason\n      processingStatus\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateUploadRequest = /* GraphQL */ `\n  mutation UpdateUploadRequest(\n    $input: UpdateUploadRequestInput!\n    $condition: ModelUploadRequestConditionInput\n  ) {\n    updateUploadRequest(input: $input, condition: $condition) {\n      id\n      employeeID\n      clientID\n      siteID\n      requestID\n      fileID\n      fileName\n      fileType\n      floorNo\n      uploadCallType\n      data\n      status\n      reason\n      processingStatus\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteUploadRequest = /* GraphQL */ `\n  mutation DeleteUploadRequest(\n    $input: DeleteUploadRequestInput!\n    $condition: ModelUploadRequestConditionInput\n  ) {\n    deleteUploadRequest(input: $input, condition: $condition) {\n      id\n      employeeID\n      clientID\n      siteID\n      requestID\n      fileID\n      fileName\n      fileType\n      floorNo\n      uploadCallType\n      data\n      status\n      reason\n      processingStatus\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createGeneralSettingType = /* GraphQL */ `\n  mutation CreateGeneralSettingType(\n    $input: CreateGeneralSettingTypeInput!\n    $condition: ModelGeneralSettingTypeConditionInput\n  ) {\n    createGeneralSettingType(input: $input, condition: $condition) {\n      id\n      clientID\n      code\n      title\n      label\n      value\n      isActive\n      settingType\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateGeneralSettingType = /* GraphQL */ `\n  mutation UpdateGeneralSettingType(\n    $input: UpdateGeneralSettingTypeInput!\n    $condition: ModelGeneralSettingTypeConditionInput\n  ) {\n    updateGeneralSettingType(input: $input, condition: $condition) {\n      id\n      clientID\n      code\n      title\n      label\n      value\n      isActive\n      settingType\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteGeneralSettingType = /* GraphQL */ `\n  mutation DeleteGeneralSettingType(\n    $input: DeleteGeneralSettingTypeInput!\n    $condition: ModelGeneralSettingTypeConditionInput\n  ) {\n    deleteGeneralSettingType(input: $input, condition: $condition) {\n      id\n      clientID\n      code\n      title\n      label\n      value\n      isActive\n      settingType\n      updatedBy\n      updatedByName\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createUsers = /* GraphQL */ `\n  mutation CreateUsers(\n    $input: CreateUsersInput!\n    $condition: ModelUsersConditionInput\n  ) {\n    createUsers(input: $input, condition: $condition) {\n      id\n      roles\n      firstName\n      lastName\n      note\n      email\n      personalisation\n      phone_number\n      userRole\n      clientID\n      connectedID\n      labID\n      providerID\n      status\n      systemUser\n      appType\n      userPermission\n      is2FaEnabled\n      userID\n      labAdmin\n      createdBy\n      createdByName\n      updatedBy\n      updatedByName\n      provider\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateUsers = /* GraphQL */ `\n  mutation UpdateUsers(\n    $input: UpdateUsersInput!\n    $condition: ModelUsersConditionInput\n  ) {\n    updateUsers(input: $input, condition: $condition) {\n      id\n      roles\n      firstName\n      lastName\n      note\n      email\n      personalisation\n      phone_number\n      userRole\n      clientID\n      connectedID\n      labID\n      providerID\n      status\n      systemUser\n      appType\n      userPermission\n      is2FaEnabled\n      userID\n      labAdmin\n      createdBy\n      createdByName\n      updatedBy\n      updatedByName\n      provider\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteUsers = /* GraphQL */ `\n  mutation DeleteUsers(\n    $input: DeleteUsersInput!\n    $condition: ModelUsersConditionInput\n  ) {\n    deleteUsers(input: $input, condition: $condition) {\n      id\n      roles\n      firstName\n      lastName\n      note\n      email\n      personalisation\n      phone_number\n      userRole\n      clientID\n      connectedID\n      labID\n      providerID\n      status\n      systemUser\n      appType\n      userPermission\n      is2FaEnabled\n      userID\n      labAdmin\n      createdBy\n      createdByName\n      updatedBy\n      updatedByName\n      provider\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createMessageTemplate = /* GraphQL */ `\n  mutation CreateMessageTemplate(\n    $input: CreateMessageTemplateInput!\n    $condition: ModelMessageTemplateConditionInput\n  ) {\n    createMessageTemplate(input: $input, condition: $condition) {\n      id\n      clientID\n      companyID\n      subAgentID\n      name\n      category\n      subject\n      message\n      isActive\n      criteria\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateMessageTemplate = /* GraphQL */ `\n  mutation UpdateMessageTemplate(\n    $input: UpdateMessageTemplateInput!\n    $condition: ModelMessageTemplateConditionInput\n  ) {\n    updateMessageTemplate(input: $input, condition: $condition) {\n      id\n      clientID\n      companyID\n      subAgentID\n      name\n      category\n      subject\n      message\n      isActive\n      criteria\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteMessageTemplate = /* GraphQL */ `\n  mutation DeleteMessageTemplate(\n    $input: DeleteMessageTemplateInput!\n    $condition: ModelMessageTemplateConditionInput\n  ) {\n    deleteMessageTemplate(input: $input, condition: $condition) {\n      id\n      clientID\n      companyID\n      subAgentID\n      name\n      category\n      subject\n      message\n      isActive\n      criteria\n      updatedBy\n      updatedByName\n      createdBy\n      createdByName\n      _version\n      _deleted\n      _lastChangedAt\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\n"],"sourceRoot":""}