{"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,GAA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W,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,IACHzO,EAAG,IACH0O,EAAG,IACHC,EAAG,KAyCQ9mE,IAd0B,GACrCwnD,MAAO,OACPE,UAAW,UACXS,QAAS,QACTj7H,SAAU,MACV26H,SAAU,QACVwT,KAAM,QACNpT,KAAM,QACNF,OAAQ,UACR/xL,UAAW,WAT0B,qBAU/B,WAV+B,wBAW5B,UAGsB,CAC/B+wM,OAAQ,SACRC,cAAe,eACfC,eAAgB,gBAChBC,YAAa,aACbC,cAAe,eACfC,aAAc,cACdC,aAAc,cACdC,eAAgB,gBAChBrnE,eAAgB,gBAChBsnE,eAAgB,kBAGLzrH,GAAwB,CACnCC,KAAM,OACNyrH,IAAK,MACLzvB,OAAQ,UA4BGx1G,GAAiB,kBAEjB2b,GAAsB,CACjCjtH,KAAM,GACNf,SAAUC,EAAOD,SACjBoH,UAAW,GACXy5B,WAAY,GACZx5B,SAAU,GACVggB,KAAM,GACNtF,IAAK,GACLkrG,MAAO,GACPC,WAAY,GACZhqH,MAAO,GACP6M,YAAa,GACbzM,OAAQ,GACRC,QAAS,GACTC,KAAM,GACNC,MAAO,GACPuF,UAAU,GAGCkpE,GAAmB,CAC9B,CACEvqD,MAAO,QACPC,MAAO,SAET,CACED,MAAO,QACPC,MAAO,UAIE2vN,GAAmB,uCACnBx1B,GAAa,uCACby1B,GAAU,uCACVhpD,GAAc,uCAEdxH,GAAgB,uCAChBC,GAAkB,uCAClBwwD,GAAa,uCACbC,GAAuB,uCACvBryB,GAAe,uCAGfpxJ,GAAS,CACpB6nC,IAAK,uCACL67I,OAAQ,uCACRpxL,UAAW,uCACX2N,KAAM,uCACNG,WAAY,uCACZypJ,gBAAiB,uCACjB3pJ,QAAS,uCACTyjL,kBAAmB,uCACnBC,SAAU,wCAGCt2D,GAAgB,CAC3BC,SAAU,qBAKClE,GAAkB,CAC7BwK,WAAY,aACZx4K,KAAM,OACNhN,SAAU,YAaCu2I,GAAmC,CAC9C,CAAEjxH,MAAO,kBAAmBD,MAAO,mBACnC,CAAEC,MAAO,WAAYD,MAAO,qBAC5B,CAAEC,MAAO,aAAcD,MAAO,oBAC9B,CAAEC,MAAO,sBAAuBD,MAAO,wBAG5Bi/G,GAA6B,CACxCqI,SAAU,WACVC,WAAY,aACZC,WAAY,kBACZtI,WAAY,uBAGDpB,GAAe,CAC1B,qBAAsB,WACtB,mBAAoB,aACpB,kBAAmB,kBACnB,sBAAuB,uBAGZ4qC,GAAsB,CACjC0B,KAAM,OACNF,KAAM,OACNpvF,QAAS,UACTq1J,OAAQ,UAGGlwB,GAAY,CACvBC,OAAQ,SACRK,OAAQ,UAGGp1C,GAAe,CAC1B06D,QAAS,SACTjuE,WAAY,SACZv5I,UAAW,QACX+rJ,KAAM,QACNiS,OAAQ,SACRC,UAAW,SACXF,SAAU,UAaCiB,GAAoB,CAC/BwoD,QAAS,SACTuK,SAAU,QACV3pG,QAAS,QACT41C,OAAQ,SACRC,UAAW,SACXF,SAAU,SACV/9J,UAAW,SAUAokJ,GAAY,CACvBO,WAAY,IACZN,cAAe,KAGJvlC,GAAuB,CAClCC,IAAK,MACLkL,IAAK,MACL5I,KAAM,QAGF2wG,GAAc,SAAC,GAAD,IAAGrwN,EAAH,EAAGA,MAAOgtB,EAAV,EAAUA,MAAV,IAAiB8vF,YAAjB,MAAwB,YAAxB,SAClB,sBAAK73F,UAAU,oBAAf,UACE,cAAC,IAAD,aAAQruC,KAAK,SAAS8kC,KAAK,KAAKsR,MAAOA,GAAvC,eAAqD8vF,GAAO,KAD9D,IAC0E98G,IAFxD,EAMdswN,GAAiB,CACrBC,IAAK,CAAEvwN,MAAO,MAAOgtB,MAAO,QAAS8vF,KAAM,YAC3C0zG,GAAI,CAAExwN,MAAO,KAAMgtB,MAAO,UAC1B6pE,OAAQ,CAAE72F,MAAO,SAAUgtB,MAAO,QAAS8vF,KAAM,YACjD2zG,SAAU,CAAEzwN,MAAO,YAAagtB,MAAO,UACvC,aAAc,CAAEhtB,MAAO,aAAcgtB,MAAO,QAAS8vF,KAAM,YAC3D,iBAAkB,CAAE98G,MAAO,iBAAkBgtB,MAAO,UACpD4hJ,UAAW,CAAE5uK,MAAO,WAAYgtB,MAAO,QAAS8vF,KAAM,YACtD4zG,YAAa,CAAE1wN,MAAO,cAAegtB,MAAO,UAC5C26L,QAAS,CAAE3nN,MAAO,cAAegtB,MAAO,UACxC64L,QAAS,CAAE7lN,MAAO,UAAWgtB,MAAO,SAAU8vF,KAAM,gBACpD86B,WAAY,CAAE53I,MAAO,aAAcgtB,MAAO,UAC1C3uB,UAAW,CAAE2B,MAAO,YAAagtB,MAAO,QAAS8vF,KAAM,YACvDs/C,SAAU,CAAEp8J,MAAO,WAAYgtB,MAAO,UACtCsvI,UAAW,CAAEt8J,MAAO,YAAagtB,MAAO,WAGpC2jM,GAAwB,SAACC,GAAD,OAC5BA,EAAWnyO,KAAI,SAACxH,GAAD,MAAU,CACvBgpB,MAAOhpB,EACP+oB,MACE,cAACqwN,GAAD,CACErwN,MAAOswN,GAAer5O,GAAK+oB,MAC3BgtB,MAAOsjM,GAAer5O,GAAK+1C,MAC3B8vF,KAAMwzG,GAAer5O,GAAK6lI,MAAQ,cANzB,GADa,EAYjBnxD,GAAgBglK,GAAsB,CAAC,MAAO,OAC9CzlK,GAAqBylK,GAAsB,CAAC,YAAa,YACzDjlK,GAAwBilK,GAAsB,CACzD,UACA,aACA,YACA,YACA,aAGWxlK,GAAkBwlK,GAAsB,CAAC,SAAU,aACnDvlK,GAAiBulK,GAAsB,CAAC,aAAc,mBACtD1lK,GAAmB0lK,GAAsB,CAAC,UAAW,aAAc,YAAa,WAAY,cA8B5FxxM,GAAqB,CAChCc,WAAY,YACZwoC,OAAQ,SACRF,WAAY,aACZsoK,KAAM,OACNC,cAAe,gBACflwM,QAAS,UACTR,WAAY,qBACZI,mBAAoB,oBACpBpB,KAAM,QAGK+iC,GAA0B,CACrC,CACEliD,MAAO,aACPD,MAAO,cAET,CACEC,MAAO,UACPD,MAAO,WAET,CACEC,MAAO,MACPD,MAAO,OAET,CACEC,MAAO,OACPD,MAAO,SAGE0yH,GAAqB,CAChC,CACE1yH,MAAO,4BACPC,MAAO,aAET,CACED,MAAO,aACPC,MAAO,cAET,CACED,MAAO,gBACPC,MAAO,cAET,CACED,MAAO,SACPC,MAAO,UAGT,CACED,MAAO,OACPC,MAAO,QAET,CACED,MAAO,wBACPC,MAAO,sBAET,CACED,MAAO,qBACPC,MAAO,sBAIEyvH,GAAuB,CAClCC,aAAc,qBACdC,aAAc,qBACdS,cAAe,uBAGJ32B,GAAmB,CAC9B,CACE15F,MAAO,oBACPC,MAAO,iBACPmkB,UAAU,GAEZ,CACEpkB,MAAO,WACPC,MAAO,WACPi5F,UAAW,CACT,CACEl5F,MAAO,sBACPC,MAAO,iBAET,CACED,MAAO,mBACPC,MAAO,kBAET,CACED,MAAO,uBACPC,MAAO,qBAET,CACED,MAAO,oBACPC,MAAO,oBAIb,CACED,MAAO,SACPC,MAAO,SACPi5F,UAAW,CACT,CACEl5F,MAAO,aACPC,MAAO,aAET,CACED,MAAO,cACPC,MAAO,cAET,CACED,MAAO,cACPC,MAAO,cAET,CACED,MAAO,iBACPC,MAAO,mBAIb,CACED,MAAO,QACPC,MAAO,OACPi5F,UAAW,CACT,CACEl5F,MAAO,eACPC,MAAO,cAET,CACED,MAAO,wBACPC,MAAO,YAET,CACED,MAAO,eACPC,MAAO,cAET,CACED,MAAO,wBACPC,MAAO,sBAET,CACED,MAAO,eACPC,MAAO,iBAIb,CAAED,MAAO,mBAAoBC,MAAO,kBACpC,CAAED,MAAO,kBAAmBC,MAAO,kBACnC,CAAED,MAAO,oBAAqBC,MAAO,mBAAoB+wF,OAAO,EAAM7sG,QAAQ,GAC9E,CAAE6b,MAAO,WAAYC,MAAO,YAC5B,CAAED,MAAO,sBAAuBC,MAAO,qBAAsB+wF,OAAO,EAAM7sG,QAAQ,GAClF,CAAE6b,MAAO,oBAAqBC,MAAO,mBAAoB+wF,OAAO,EAAM7sG,QAAQ,GAC9E,CAAE6b,MAAO,mBAAoBC,MAAO,kBAAmB+wF,OAAO,GAC9D,CAAEhxF,MAAO,kBAAmBC,MAAO,iBAAkB+wF,OAAO,GAC5D,CAAEhxF,MAAO,kBAAmBC,MAAO,iBAAkB+wF,OAAO,GAG5D,CACEhxF,MAAO,eACPC,MAAO,cACPi5F,UAAW,CACT,CACEl5F,MAAO,kBACPC,MAAO,gBACP0yB,SAAS,GAEX,CACE3yB,MAAO,iBACPC,MAAO,cACP0yB,SAAS,GAEX,CACE3yB,MAAO,mCACPC,MAAO,sBACP0yB,SAAS,GAEX,CACE3yB,MAAO,uBACPC,MAAO,oBACP0yB,SAAS,KAIf,CAAE3yB,MAAO,mBAAoBC,MAAO,kBAAmB+wF,OAAO,GAC9D,CAAEhxF,MAAO,mBAAoBC,MAAO,kBAAmB+wF,OAAO,EAAM7sG,QAAQ,GAC5E,CAAE6b,MAAO,mBAAoBC,MAAO,kBAAmB+wF,OAAO,EAAM7sG,QAAQ,IAmBjEs1G,GAAyC,CACpD9+G,SAAU,CACRokC,QAAQ,EACRopJ,gBAAgB,EAChBqB,gBAAgB,EAChBC,eAAe,EACftlL,QAAQ,EACRwwK,mBAAmB,EACnB3jE,OAAO,GAET1uE,OAAQ,CACNvD,QAAQ,EACR+qJ,WAAW,EACX+D,eAAe,EACf1pL,QAAQ,EACRsnL,YAAY,EACZE,YAAY,EACZ36E,OAAO,GAETuxG,eAAgB,CAAExjL,QAAQ,GAC1By4K,eAAgB,CAAEz4K,QAAQ,GAC1B5E,iBAAkB,CAAE4E,QAAQ,EAAMiyE,OAAO,EAAM7sG,QAAQ,GACvDqvC,SAAU,CAAEzU,QAAQ,GACpBgyM,mBAAoB,CAAEhyM,QAAQ,EAAMiyE,OAAO,EAAM7sG,QAAQ,GACzD6sO,iBAAkB,CAAEjyM,QAAQ,EAAMiyE,OAAO,EAAM7sG,QAAQ,GACvD8sO,gBAAiB,CAAElyM,QAAQ,EAAMiyE,OAAO,EAAM7sG,QAAQ,GACtDw5F,eAAgB,CAAE5+D,QAAQ,EAAMiyE,OAAO,EAAM7sG,QAAQ,GACrDi5F,eAAgB,CAAEr+D,QAAQ,EAAMiyE,OAAO,EAAM7sG,QAAQ,GACrD+sO,cAAe,CAAEnyM,QAAQ,GACzB6kL,eAAgB,CAAE7kL,QAAQ,GAC1BgqC,YAAa,CACXhqC,QAAQ,EACRuhF,aAAa,EACbD,eAAe,EACfnE,mBAAmB,EACnB/3G,QAAQ,EACR82G,qBAAqB,EACrBjK,OAAO,GAETrpG,KAAM,CACJo3B,QAAQ,EACR+sE,aAAa,EACbzgG,YAAY,EACZ0gG,UAAU,EACVwqD,oBAAoB,EACpBhkE,YAAY,GAEd4+I,gBAAiB,CAAEpyM,QAAQ,EAAMiyE,OAAO,EAAM7sG,QAAQ,GACtDitO,gBAAiB,CAAEryM,QAAQ,EAAMiyE,OAAO,EAAM7sG,QAAQ,GACtDo5F,gBAAiB,CAAEx+D,QAAQ,EAAMiyE,OAAO,EAAM7sG,QAAQ,IAG3Cm+M,GAAqB,CAChC,SAAU,SACV,WAAY,WACZ,YAAa,iBACb,YAAa,iBACb,oBAAqB,mBACrB,aAAc,WACd,iBAAkB,gBAClB,kBAAmB,kBAERpuC,GAAW,WACX2V,GAAQ,SAIR1tD,GAAsB,qBACtBlG,GAAoB,mBACpBpgB,GAAyB,kBACzB9E,GAAkB,iBAClB6G,GAAkB,iBAClBuI,GAAqB,cACrBmwB,GAAmB,kBACnByB,GAAmB,kBACnBgF,GAAyB,kBAEzBC,GAAe,WAEf59B,GAA2B,CACtC,qBACA,mBACA,kBACA,iBACA,iBACA,cACA,kBACA,kBACA,mBAGWxoB,GAAmB,CAC9BC,MAAO,QACPO,0BAA2B,0BAC3BI,6BAA8B,6BAC9BC,8BAA+B,8BAC/BJ,2BAA4B,2BAC5BC,KAAM,QAGKpB,GAAe,CAC1B82C,aAAc,eACd72C,YAAa,cACbmB,KAAM,OACNk1C,SAAU,mBAGC6qG,GAAmB,mBAEnBC,GAAsB,CAAC,YAAa,WAAY,MAAO,aAAc,iBAErE77H,GAAwB,CACnC,CAAEx1F,MAAO,aAAcD,MAAO,cAC9B,CAAEC,MAAO,iBAAkBD,MAAO,mBAEvBggG,GAA+B,CAC1C7lF,iBACE,4RACFo3M,cACE,+SAEF52O,SACE,4NACFk2K,UACE,gZACF1hD,UACE,4JACFqiH,iBACE,kQACFC,YACE,4SACFrH,gBAAiB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IACjHtlN,SACE,+WACFy9M,UACE,qJAGS12B,GAA2B,CACtC,CAAE5rL,MAAO,0BAA2BD,MAAO,2BAC3C,CAAEC,MAAO,eAAgBD,MAAO,gBAChC,CAAEC,MAAO,iBAAkBD,MAAO,kBAClC,CAAEC,MAAO,iBAAkBD,MAAO,kBAClC,CAAEC,MAAO,gBAAiBD,MAAO,kBAGtBqrD,GAAuB,CAClC,CACEprD,MAAO,YACPD,MACE,qBAAKilB,UAAU,oBAAf,SACE,cAAC,IAAD,CAAQruC,KAAK,SAAS8kC,KAAK,KAAKsR,MAAM,QAAQ8S,UAAQ,OAI5D,CACE7/B,MAAO,UACPD,MACE,qBAAKilB,UAAU,oBAAf,SACE,cAAC,IAAD,CAAQruC,KAAK,SAAS8kC,KAAK,KAAKsR,MAAM,SAASqlC,WAAS,QAMnD/G,GAAwB,CACnC,CACErrD,MAAO,YACPD,MACE,qBAAKilB,UAAU,oBAAf,SACE,cAAC,IAAD,CAAQruC,KAAK,SAAS8kC,KAAK,KAAKsR,MAAM,QAAQ8S,UAAQ,OAI5D,CACE7/B,MAAO,UACPD,MACE,qBAAKilB,UAAU,oBAAf,SACE,cAAC,IAAD,CAAQruC,KAAK,SAAS8kC,KAAK,KAAKsR,MAAM,SAASqlC,WAAS,QAKnD9G,GAA+B,CAC1C,CACEtrD,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,QAMnD5G,GAAwB,CACnC,CAAExrD,OAAO,EAAMD,MAAO,OACtB,CAAEC,OAAO,EAAOD,MAAO,OAGZyuG,GAAe,CAC1BlqE,MAAO,QACPmtL,wBAAyB,4BACzBC,2BAA4B,+BAC5BC,4BAA6B,gCAC7BC,yBAA0B,8BAGf78F,GAAsB,CACjCX,KAAM,cACNy9F,WAAY,yBAGDxnG,GAAmB,CAC9B,CACEtqH,MAAO,aACPC,MAAO,aACPoqH,QAAS,OAEX,CACErqH,MAAO,WACPC,MAAO,WACPoqH,QAAS,YAEX,CACErqH,MAAO,SACPC,MAAO,SACPoqH,QAAS,UAEX,CACErqH,MAAO,UACPC,MAAO,UACPoqH,QAAS,WAEX,CACErqH,MAAO,OACPC,MAAO,OACPoqH,QAAS,UAEX,CACErqH,MAAO,eACPC,MAAO,eACPoqH,QAAS,YAEX,CACErqH,MAAO,cACPC,MAAO,cACPoqH,QAAS,WAEX,CACErqH,MAAO,gBACPC,MAAO,gBACPoqH,QAAS,UAEX,CACErqH,MAAO,aACPC,MAAO,aACPoqH,QAAS,WAIA1Z,GAA2B,CACtC,CAAE1wG,MAAO,QAASD,MAAO,SACzB,CAAEC,MAAO,OAAQD,MAAO,SAGb4wG,GAA6B,CACxCukF,KAAM,CACJ,CACEn1L,MAAO,0BACPC,MAAO,aAET,CACED,MAAO,6BACPC,MAAO,cAET,CACED,MAAO,0BACPC,MAAO,cAGX8xN,MAAO,CACL,CACE/xN,MAAO,2BACPC,MAAO,eAET,CACED,MAAO,0BACPC,MAAO,gBAKAmzJ,GAAkB,CAC7Bn4K,OAAO,EACPC,MAAM,EACNK,OAAO,EACPE,cAAc,EACdN,KAAK,EACLK,KAAK,EACLye,sBAAsB,EACtB6K,UAAU,GAGC06J,GAAqB,CAChC1mK,YAAY,EACZC,WAAW,EACXtd,cAAc,EACdN,KAAK,EACLyQ,QAAQ,EACR+zK,sBAAsB,EACtBC,SAAS,EACTC,aAAa,GAGFN,GAA0B,CACrCzmK,YAAY,EACZC,WAAW,EACXi5N,oBAAoB,EACpB72O,KAAK,EACLyQ,QAAQ,EACRwgC,SAAS,EACTvwC,MAAM,EACNC,OAAO,EACPC,KAAK,GAEMu5J,GAAiB,CAC5B,CAAEt1I,MAAO,kBAAmBC,MAAO,mBACnC,CAAED,MAAO,kBAAmBC,MAAO,mB,mCCv8GrC,OAAe,cAA0B,sC,mCCAzC,OAAe,cAA0B,gC,mCCAzC,OAAe,84C,4o2oCCoEf,EAAuB1oB,EAAQ,KAAnBoc,EAAZ,EAAQs+N,GAEKtoN,EAAmBw4M,KAAKC,iBAAiBC,kBAAkBzsN,SAE3Ds3B,EAAoB,SAACglM,EAAoBj2L,EAAQk2L,GAC5D,IAAK,IAAD,EACE12O,EAAey2O,EACf,UAACz2O,SAAD,OAAC,EAAc2K,SAAS,OAC1B3K,EAAewgD,EAAM,UAAMA,GAAN,OAAexgD,GAAf,YAAqCA,IAE5D,IAAMuE,EAAQkzD,YAAsBz3D,GACpC,OAAI02O,EAAiBnyO,EACdA,EAAM8V,QAAQ,MAAO,GAG7B,CAFC,MAAOV,KACPzb,QAAQgE,IAAI,QAASyX,IACtB,CACD,OAAO88N,CACR,EAEY99D,EAAiB,SAACh7K,GAC7B,OAAKA,EACEA,EAAK0c,QAAQ,OAAQ,KADV,EAEnB,EAEY6pC,EAAc,SAACuyL,EAAoBj2L,GAC9C,IAAK,IAAD,EACF,IAAKi2L,EAAoB,MAAO,GAEhC,IAAIz2O,EAAY,OAAGy2O,QAAH,IAAGA,OAAH,EAAGA,EAAoBp8N,QAAQ,WAAY,IACvD,UAACra,SAAD,OAAC,EAAc2K,SAAS,OAC1B3K,EAAewgD,EAAM,UAAMA,GAAN,OAAexgD,GAAf,YAAqCA,IAE5D,IAAMuE,EAAQ8kC,YAAiBrpC,GAC/B,OAAY,OAALuE,QAAK,IAALA,OAAA,EAAAA,EAAOoyO,mBAAoB,EAGnC,CAFC,MAAOh9N,KACPzb,QAAQgE,IAAI,QAASyX,IACtB,CACD,OAAO88N,CACR,EAEYx2L,EAA2B,SAACw2L,EAAoBj2L,GAC3D,IAAK,IAAD,EACExgD,EAAey2O,EAInB,OAHI,UAACz2O,SAAD,OAAC,EAAc2K,SAAS,OAC1B3K,EAAewgD,EAAM,UAAMA,GAAN,OAAexgD,GAAf,YAAqCA,IAErDA,CAGR,CAFC,MAAO2Z,KACPzb,QAAQgE,IAAI,QAASyX,IACtB,CACD,OAAO88N,CACR,EA4BY50F,EAAiB,SAACt9I,GAC7B,GAAIA,EAAO,CACT,IAAMyW,EAAI6/C,GAAWt2D,GACrB,OAAO,IAAIkpN,IAAU,MAAMl/L,MAAMvT,EAClC,CACD,OAAOzW,CACR,EAEYw5C,EAAe,SAACpgD,GAC3B,OAAKA,EACE6oE,EAAiB7oE,EAAK0c,QAAQ,OAAQ,MAD3B,EAEnB,EAEYy8D,EAAe,SAACvyE,GAAD,OAAWqyO,YAAcryO,EAAO,KAAhC,EAEf88C,EAAuB,SAAC98C,GACnC,QAAIA,GAAc6kC,YAAsB7kC,EAEzC,EACY0jJ,EAAiB,SAAChkI,EAAM3jB,GACnC,IAAKA,EAAK,OAAO,EACjB,IAAMu2O,EAAWC,IAAYD,SAAZ,UAAwB5yN,GAAxB,UAAmC3jB,IAEpD,MAA2B,kBAAbu2O,GAAwBA,CACvC,EACYt1L,EAAsB,SAACjhD,GAClC,IAAKA,IAAQA,EAAIu9C,OAAQ,OAAO,EAChC,IAAMk5L,EAAUz2O,EAAI+Z,QAAQ,UAAW,IACvC,OAAuB,IAAnB08N,EAAQh1O,QAAmC,IAAnBg1O,EAAQh1O,MAErC,EAUYm0E,EAAoB,SAAC7pD,GAAD,OAAUA,EAAM,MAAQ,IAAxB,EASpBi6M,EAAkB,SAACj6M,GAC9B,QAAIA,IACiB,kBAARA,GAA4B,UAARA,EAIlC,EAEYwnJ,EAAkB,SAACxnJ,GAC9B,QAAKA,KACD,IAAI03H,OAAO,mCAAmC73I,KAAKmgB,EAIxD,EAEY22B,EAAiB,SAAC32B,GAC7B,OAAIA,EAAYA,EAAIq2B,cACbr2B,CACR,EAEY81B,EAAiB,SAAC91B,GAC7B,IAAM2qN,EAAa3qN,EAAIwxB,OACvB,OAAOm5L,EAAaA,EAAW5+N,cAAgB,EAChD,EAEYsmF,EAAkB,SAAC1e,GAC9B,MAAmB,kBAARA,GAAqBA,EAAIniC,OAIhCmiC,EAAIj+E,QAAU,EACTi+E,EAAIt9B,cAGNs9B,EAAI3lE,QAAQ,6BAA6B,SAACs/I,GAC/C,OAAOA,EAAKxsE,OAAO,GAAGzqC,cAAgBi3G,EAAKx+I,MAAM,GAAG/C,aACrD,IATQ,EAUV,EAEYouD,EAAmB,SAACwZ,GAC/B,MAAmB,kBAARA,GAAqBA,EAAIniC,OAGhCmiC,EAAIj+E,QAAU,EACTi+E,EAAIt9B,cAGNs9B,EACJ3nE,MAAM,KACNrV,KAAI,SAAC22J,GACJ,OAAKA,EACEA,EAAK,GAAGj3G,cAAgBi3G,EAAKx+I,MAAM,GAAG/C,cAD3BuhJ,CAEnB,IACAjxI,KAAK,KAZC,EAaV,EA2BY+vM,EAAiB,SAAC96N,GAC7B,OAAKA,EACEA,EAAKya,cAAciC,QAAQ,MAAO,IADvB,EAEnB,EA4DY48N,EAAe,SAAC3lF,GAC3B,IAAKA,IAAWA,EAAOzzG,OAAQ,OAAO,EACtC,IAEE,OADAv3C,KAAK8V,MAAMk1I,IACJ,CAGR,CAFC,MAAOnzJ,OACP,OAAO,CACR,CACF,EAEYwvM,EAAoB,SAAC3tH,GAChC,OAAOi3J,EAAaj3J,GAAO15E,KAAK8V,MAAM4jE,GAAK/7D,KAAO+7D,GAAO,EAC1D,EAMYk6I,EAAY,SAAC7tM,GACxB,IAAKA,EAAK,OAAO,EACjB,IACE,OAAOrG,SAASqG,EAGjB,CAFC,MAAO1S,KACP,OAAO,CACR,CACF,EAEY2uG,EAAuB,SAACtoC,GACnC,GAAKA,GAAQA,EAAIniC,OACjB,OAAOmiC,EAAI3lE,QAAQ,WAAY,GAChC,EAEYqI,GAAa,SAAC4jB,EAAU8X,EAASv/C,GAAe,IAAD,EAKtDlB,EACAqG,EACAC,EACAvE,EACAyN,EACA4iB,EACA2vH,EACAE,EACAs3F,EAEAC,EACA71J,EACAz1E,EACA01E,EAjBAv0D,EAAQ2mI,GAAgBrtH,EAAS11B,uBAEjC62C,EAAgB2vL,GAAkB9wM,EAASmhB,eAgB/C,EAAqCz6B,GAAS,CAAC,EAAvCvrB,EAAR,EAAQA,WAAYs/E,EAApB,EAAoBA,aAgBpB,GAdI/zD,IACFrvB,EAAOqvB,EAAMhpB,UAAY,IAAMgpB,EAAM/oB,SACrCD,EAAYwiE,EAAiBx5C,EAAMhpB,WACnCC,EAAWuiE,EAAiBx5C,EAAM/oB,UAClCvE,EAAMmyC,GAAqB7kB,EAAMttB,KACjCyN,EAAY,OAAG6f,QAAH,IAAGA,OAAH,EAAGA,EAAO7f,aACtB4iB,EAAY,OAAG/C,QAAH,IAAGA,OAAH,EAAGA,EAAO+C,aACtBonN,EAAgB,OAAGnqN,QAAH,IAAGA,OAAH,EAAGA,EAAO7I,gBAC1Bm9D,EAAW,OAAGt0D,QAAH,IAAGA,OAAH,EAAGA,EAAOi8B,QACrBp9C,EAAS,OAAGmhB,QAAH,IAAGA,OAAH,EAAGA,EAAOnhB,UACnB01E,EAAO,OAAGv0D,QAAH,IAAGA,OAAH,EAAGA,EAAOu0D,SAEnBj7C,EAASnR,eAAiBiiN,GAAkB9wM,EAASnR,gBAEjDt2B,EAAW,CACb,IAAM+N,EAAM/N,EAAU4gD,MAAK,SAACxrC,GAAD,OAAOA,EAAEzV,KAAO8nC,EAASr6B,UAAzB,IAEvBW,EACFmjB,EAAenjB,EAAImjB,aAEnB7xB,QAAQgE,IAAI,sBAAuBokC,EAEtC,CAE2B,qBAAjBvW,GACT,OAAIuW,QAAJ,IAAIA,KAAUvW,eACZA,EAAY,OAAGuW,QAAH,IAAGA,OAAH,EAAGA,EAAUvW,cAI7B,IAkCO,EALmB,EA7BpB7jB,EAAI,eAAQo6B,GAMlB,GAJAo5G,EAAmC,OAAtBxzI,EAAKuE,aAClBmvI,EAAgB6uF,KAAgB,UAACviO,EAAKipB,sBAAN,aAAC,EAAqBluB,SAAW,IACjE+C,OAAOC,OAAOiC,EAAM,CAAEwzI,aAAYE,kBAClC1zI,EAAKmrO,aAAe/wM,EAASjyB,OACzB+pC,GAAWA,EAAQr8C,OAAS,EAAG,CACjC,IAAM1D,EAAS+/C,EAAQqB,MAAK,SAACz7B,GAAD,OAAOA,EAAExlB,KAAO0N,EAAKtP,QAArB,IACxByB,GAAgC,QAAtBA,EAAOC,aACnB4N,EAAKmrO,aAAetxB,IAAqB75M,EAAKmI,QAEjD,EAEGiyB,EAASjyB,SACXnI,EAAK2hB,UAAYohF,MAKfioI,EAFmB,QAAnBhrO,EAAKuF,UACHvF,EAAKwjB,kBACY,WACVxjB,EAAK8uD,iBACK,aAEA,UAGF,GAGhBn+D,IAAOisB,eAM6B,UAAnC,UAAAwd,EAASr/B,cAAT,eAAiBmR,iBACnBlM,EAAKjF,OAAS,cAGZq/B,EAASjyB,QAA8B,cAApBiyB,EAASjyB,SAC9BnI,EAAKjF,OAAS,cAVhBiF,EAAKjF,OACgC,aAAnC,UAAAq/B,EAASr/B,cAAT,eAAiBmR,gBAAsD,QAAvBkuB,EAAS70B,WAAwB60B,EAASjyB,OAEtFiyB,EAASr/B,OADT,MAWRiF,EAAK2hB,UAAY0rF,GAAYrtG,EAAK2hB,WAClC3hB,EAAKuF,UAAmC,UAAvB60B,EAAS70B,UAAwB,YAAc60B,EAAS70B,UAEzE,IAAImmD,EAAe,GAEnB,IACE,IAIE,IAGoB,EAPhBlmC,EAAMprB,KAAK8V,MAAMlQ,EAAKkF,OAC5B,GACqB,oBAAnBlF,EAAK2hB,YACgB,aAAnB3hB,EAAK2hB,WAA+C,oBAAnB3hB,EAAK2hB,YAAoC3hB,EAAKwjB,kBAEjFkoC,EAAelmC,EAAI3vB,OAAS,EAAb,UAAiB2vB,EAAI,UAArB,aAAiB,EAAQrQ,KAAzB,UAAgCqQ,EAAI,UAApC,aAAgC,EAAQrQ,KAEzD,GAAmB,IAAfqQ,EAAI3vB,OACN+zD,cAAgBn2D,IAAM,UAAC+xB,EAAI,UAAL,aAAC,EAAQrQ,MAAMgQ,IAAI,KAAM,WAAWpsB,aAE5C,CAAhB,MAAO9G,OAAS,CAElB,OAAO,uCACF+N,GADL,IAEEu7C,iBACIv7C,EAAKsjB,aAAe,CAAE8nN,YAAaprO,EAAKsjB,cAH9C,IAIEtH,KAtGEA,UAuGFvqB,OACAqG,YACAC,WACAvE,MACAK,IAAG,OAAEitB,QAAF,IAAEA,OAAF,EAAEA,EAAOjtB,IACZG,OAAM,OAAE8sB,QAAF,IAAEA,OAAF,EAAEA,EAAO9sB,OACfC,QAAO,OAAE6sB,QAAF,IAAEA,OAAF,EAAEA,EAAO7sB,QAChBE,MAAK,OAAE2sB,QAAF,IAAEA,OAAF,EAAEA,EAAO3sB,MACdD,KAAI,OAAE4sB,QAAF,IAAEA,OAAF,EAAEA,EAAO5sB,KACb0M,SAAQ,OAAEkgB,QAAF,IAAEA,OAAF,EAAEA,EAAOlgB,SACjBxM,IAAG,OAAE0sB,QAAF,IAAEA,OAAF,EAAEA,EAAO1sB,IACZk6J,SAAQ,OAAExtI,QAAF,IAAEA,OAAF,EAAEA,EAAOwtI,SACjB5pJ,sBAAuBoc,EACvB7f,eACA4iB,eACApjB,YAAa8kC,EAAkBvlC,EAAKS,YAAN,OAAmBqgB,QAAnB,IAAmBA,OAAnB,EAAmBA,EAAO/sB,aACxDi3O,mBACAt/K,eACAn2D,aACAs/E,eACAo2J,mBACA71J,cACAz1E,YACA01E,UACAtiD,SAAc,OAAJ/yB,QAAI,IAAJA,KAAM0F,YAAN,OAAoB1F,QAApB,IAAoBA,OAApB,EAAoBA,EAAMijB,eAAiB,MAExD,EAEYihK,GAAe,SAAC+R,EAAWroG,GAAgB,IAAD,MACjD9sE,EACyC,kBAApCm1K,EAAUvxL,sBACbtK,KAAK8V,MAAM+lL,EAAUvxL,uBACrBuxL,EAAUvxL,sBAEZitK,EAA2C,kBAAxBskB,EAAUtkB,UAAyBv3K,KAAK8V,MAAM+lL,EAAUtkB,WAAaskB,EAAUtkB,UAElG58F,EACqC,kBAAhCkhH,EAAUlhH,kBACb36E,KAAK8V,MAAM+lL,EAAUlhH,mBACrBkhH,EAAUlhH,kBAGVyqB,GADUmyE,GAAavwI,MAAMyJ,QAAQ8mI,GACfA,EAAH,OAAeA,QAAf,IAAeA,OAAf,EAAeA,EAAW3xK,OAAS,GACtDA,EAAOw/F,EAAS,IAAM,CAAC,EACrBr3F,EAAmBnI,EAAnBmI,OAAQ4B,EAAW/J,EAAX+J,OAEVipB,EAAWwsE,IAAoB,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAU3pG,QAAS,EAAI,QAAU2pG,EAAS,GAAT,UAAcA,EAAS,UAAvB,aAAc,EAAannF,MAAQ,KAE3Fi8J,GAAgB,UAAA90E,EAAShtG,QAAO,SAACgM,GAAD,OAAOA,EAAE2J,MAAT,WAAhB,eAAkCtS,SAAU,EAC5Dw1O,GAAe,UAAA7rI,EAAShtG,QAAO,SAACgM,GAAD,OAAOA,EAAE2J,QAA8B,cAApB3J,EAAEoxI,aAArB,WAAhB,eAAqE/5I,SAAU,EAKpG,OAHA,OAAOirB,QAAP,IAAOA,YAAO/lB,OACd,OAAO+lB,QAAP,IAAOA,YAAOxuB,GAEP,uCACF2jM,GACAn1K,GAFL,IAGE5pB,MAAOsoG,EAAS3pG,OAChBy+K,gBACA+2D,eACA9lO,UAAWytB,EACX2+I,YACA58F,oBACAhrE,SACA5B,SACAzD,sBAAuBoc,GAE1B,EAEYwqN,GAA4B,SAACC,EAAMC,GAC9C,IAAMC,EAAS,GAEf,IAAKF,IAASC,EAAM,OAAO,EAE3B,IAAK,IAAIx0O,EAAI,EAAGA,GAAKu0O,EAAK11O,OAAQmB,IAAK,CACrCy0O,EAAOz0O,GAAK,CAACA,GACb,IAAK,IAAI4jI,EAAI,EAAGA,GAAK4wG,EAAK31O,OAAQ+kI,IAChC,GAAU,IAAN5jI,EACFy0O,EAAOz0O,GAAG4jI,GAAKA,MACV,CACL,IAAM8wG,EAAOH,EAAKv0O,EAAI,KAAOw0O,EAAK5wG,EAAI,GAAK,EAAI,EAC/C6wG,EAAOz0O,GAAG4jI,GAAKvrH,KAAK6mC,IAAIu1L,EAAOz0O,EAAI,GAAG4jI,GAAK,EAAG6wG,EAAOz0O,GAAG4jI,EAAI,GAAK,EAAG6wG,EAAOz0O,EAAI,GAAG4jI,EAAI,GAAK8wG,EAC5F,CAEJ,CAED,IAAMC,EAASt8N,KAAK8mC,IAAIo1L,EAAK11O,OAAQ21O,EAAK31O,QAE1C,OAAO,EADU41O,EAAOF,EAAK11O,QAAQ21O,EAAK31O,QACpB81O,CACvB,EAEY7uE,GAAiB,SAAC3/I,EAAUy/I,GACvC,IACQvkJ,EAA2B8E,EAA3B9E,MAAOuzN,EAAoBzuN,EAApByuN,gBAEf,GAAIvzN,EAAMnM,gBAAkB0wJ,EAAU1wJ,cACpC,OAAO,EAGT,GAAIo/N,GAA0BjzN,EAAMnM,cAAe0wJ,EAAU1wJ,eAPjC,GAQ1B,OAAO,EAGT,GAAI0/N,GACsBA,EAAgBl2O,MACtC,SAACm2O,GAAD,OACEA,EAAQC,gBACRR,GAA0BO,EAAQC,eAAe5/N,cAAe0wJ,EAAU1wJ,eAfpD,EAaxB,IAMA,OAAO,EAIX,OAAO,CACR,EAEYsjG,GAAiB,SAACrvF,GAC7B,OAAKA,EACO,IAAIq6M,KAAKsM,aAAa,QAAS,CACzCvoM,MAAO,WACPwzD,SAAU,QAMDr+F,OAAOysB,GATD,OAUlB,EAEY6pJ,GAAmB,SAAC7pJ,GAC/B,OAAW,MAAPA,EAAoB,KACN,IAAIq6M,KAAKsM,aAAa,QAAS,CAC/CvoM,MAAO,UACPwtM,sBAAuB,EACvBC,sBAAuB,IAERt4O,OAAOysB,EACzB,EAEYovF,GAAgB,SAACpvF,GAC5B,IAAKA,EAAK,OAAO,EACjB,IAAMmvF,EAAcnvF,EAAIpS,WAAWI,QAAQ,WAAY,IACvD,OAAO2hH,WAAWxgB,IAAgB,CACnC,EAEYmlG,GAAqB,SAACr6K,EAAU8X,GAC3C,IAIIzgD,EACAqG,EACAC,EANA+oB,EACwC,kBAAnCsZ,EAAS11B,sBACZtK,KAAK8V,MAAMkqB,EAAS11B,uBACpB01B,EAAS11B,sBAIXjE,EAAc25B,EAAS35B,YACvBqgB,IACFrvB,EAAOqvB,EAAMhpB,UAAY,IAAMgpB,EAAM/oB,SACrCD,EAAYwiE,EAAiBx5C,EAAMhpB,WACnCC,EAAWuiE,EAAiBx5C,EAAM/oB,UAClC0I,EAAW,UAAMqgB,EAAM/sB,aAAZ,OAA0B+sB,EAAMrgB,cAG7C,IAAMuyB,EAAWk8B,KAAgB90B,EAAS70B,WAE1C,OAAO,2BACF60B,GADL,IAEE35B,cACAhP,OACAqG,YACAC,WACAwN,UAAWytB,GAAYoH,EAAS70B,WAEnC,EAEYmzC,GAAU,SAACvjC,GACtB,OAAKA,EACS,IAAInY,KAAKmY,GAAMzF,YACb,GAAK,KAAO,KAFV,EAGnB,EAOY6mC,GAAa,SAACj+B,GACzB,OAAKA,EACEA,EAAMnK,QAAQ,OAAQ,KADV,EAEpB,EAEY2mC,GAAc,SAACrjD,GAC1B,OAAO,CAOR,EAQY2jD,GAAe,SAAC9iD,GAC3B,OAAO,CAKR,EACYwmJ,GAAgB,SAACxsH,GAC5B,QAAKA,KACD,IAAIurH,OAAO,eAAe73I,KAAKssB,EAIpC,EACY0lL,GAAuB,SAAC1lL,GACnC,QAAKA,KACD,IAAIurH,OAAO,4DAA4D73I,KAAKssB,EAIjF,EAEY2/M,GAAgB,SAACjsO,EAAMksO,GAClC,IAAKlsO,EAAM,MAAO,GAClB,IAAKksO,EAAmB,MAAO,GAC/B,IAAQxnO,EAA0B1E,EAA1B0E,sBACFynO,EAAU/xO,KAAK8V,MAAMg8N,GAAmB34L,MAAK,SAACz7B,GAAD,OAAOA,EAAEkb,WAAatuB,EAAsB5K,gBAA5C,IACnD,IAAKqyO,EAAS,MAAO,GACrB,IAAMh3N,EAAO,IAAInY,KAAKgD,EAAK9C,WAE3B,OADAiY,EAAKmvD,SAASnvD,EAAKzF,WAAaoK,SAASqyN,EAAQ77J,QAC7Cn7D,GAAQ,IAAInY,KACP,UAEFvJ,IAAO0hB,GAAMzhB,OAAO,sBAC5B,EAOY40C,GAAkB,SAACtoC,GAC9B,GAAKA,EAAL,CAEA,IAAM8gB,EAAQ2mI,GAAgBznJ,EAAK0E,uBAC7Bo6J,EAAMrX,GAAgB3mI,EAAMoD,kBAC5BkoN,EAAa3kF,GAAgB3mI,EAAMi0D,mBACnCwrF,EAAarC,GAAgBY,EAAKh+I,GAExC,OAAO,2BACFA,GADL,IAEEoD,iBAAkBq8I,EAElBxrF,kBAAmBq3J,GAXJ,CAalB,EAKYzjM,GAAS,SAACn1C,GACrB,IAAM2sB,EAAMwlB,GAAqBnyC,GACjC,OAAOA,EAAMC,MAAS22D,KAAKjqC,EAAK,SAAW,EAC5C,EACY0+L,GAAc,SAAC1+L,GAC1B,IAAMhL,EAAOgL,EAAIhS,QAAQ,UAAW,IACpC,GAAqB,KAAb,OAAJgH,QAAI,IAAJA,OAAA,EAAAA,EAAMtf,QAAc,CACtB,IAAM40L,EAAMt1K,EAAKjH,UAAU,EAAG,GACxBm+N,EAAQl3N,EAAKjH,UAAU,EAAG,GAC1BqzJ,EAAOpsJ,EAAKjH,UAAU,GAE5B,MAAiB,iBADAza,IAAO,GAAD,OAAI8tK,EAAJ,YAAY8qE,EAAZ,YAAqB5hD,IAAO/2L,OAAO,aAK3D,CACD,OAAO,CACR,EAEYshD,GAAkB,SAACxhD,EAAKE,GACnC,QAAKF,GACEC,IAAOD,EAAD,UAASE,IAAU,GAAMmvE,SACvC,EACY4B,GAAU,SAACtkD,GACtB,GAAKA,EAAL,CACA,IAAMhL,EAAOgL,EAAIhS,QAAQ,UAAW,IAC9Bs8K,EAAMt1K,EAAKjH,UAAU,EAAG,GACxBm+N,EAAQl3N,EAAKjH,UAAU,EAAG,GAC1BqzJ,EAAOpsJ,EAAKjH,UAAU,GAC5B,OAAOza,IAAO,GAAD,OAAI8tK,EAAJ,YAAY8qE,EAAZ,YAAqB5hD,IAAO/2L,QALzB,CAMjB,EAIY08C,GAAY,SAACj7B,GAAD,OAAWA,EAAO1hB,IAAO0hB,GAAMzhB,OAAO,cAAgB,EAAtD,EAEZkyC,GAAgB,SAACzwB,GAAD,OAAWA,EAAO1hB,IAAO0hB,GAAMzhB,OAAO,cAAgB,EAAtD,EAEhB+kD,GAAqB,SAACtjC,GAAD,OAAWA,EAAO1hB,IAAO0hB,GAAMzhB,OAAO,WAAa,EAAnD,EAErBmoF,GAAgB,SAAC1mE,GAAD,OAAWA,EAAO1hB,IAAO0hB,GAAMzhB,OAAO,cAAgB,EAAtD,EAEhBywF,GAAgB,SAAChvE,GAAD,OAAWA,EAAO1hB,IAAO0hB,GAAMzhB,OAAO,uBAAyB,EAA/D,EAEhBmwD,GAAkB,SAAC1uC,GAAD,OAAWA,EAAO1hB,IAAO0hB,GAAMzhB,OAAO,sBAAwB,EAA9D,EAElB8qD,GAAmB,SAACrpC,GAAD,OAAWA,EAAO1hB,IAAO0hB,GAAMzhB,OAAO,oBAAsB,EAA5D,EAEnB0lJ,GAAgB,SAACjkI,GAAD,OAAWA,EAAO1hB,IAAO0hB,GAAMzhB,OAAO,MAAQ,EAA9C,EAEhBy7L,GAAuB,SAACh6K,GAAD,OAAWA,EAAO1hB,IAAO0hB,GAAMzhB,OAAO,gBAAkB,EAAxD,EAEvB2lJ,GAAkB,SAAClkI,GAAD,OAAWA,EAAO1hB,IAAO0hB,GAAMzhB,OAAO,QAAU,EAAhD,EAElBw1C,GAAc,kBAAMz1C,MAASC,OAAO,aAAtB,EAEdg1C,GAAgB,SAAC5nB,GAC5B,IAAIrvB,EAAO,GAIX,OAHIqvB,EAAM/oB,WAAUtG,EAAI,UAAMqvB,EAAM/oB,SAASmW,UAAU,EAAG,IAAlC,OAAuC4S,EAAM/oB,SAASmW,UAAU,GAAGhC,gBACvFza,IAAMA,EAAI,UAAMA,EAAN,OACVqvB,EAAMhpB,YAAWrG,EAAI,UAAMA,GAAN,OAAaqvB,EAAMhpB,UAAUoW,UAAU,EAAG,IAA1C,OAA+C4S,EAAMhpB,UAAUoW,UAAU,GAAGhC,gBAC9Fza,CACR,EAEY+hD,GAAmB,SAACvpC,EAAM3a,GACrC,OAAO,YAAI2a,GAAM1Y,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,IACxB+lI,EAAO,UAAG/lI,EAAE9nB,UAAL,QAAa,GACpB8tJ,EAAO,UAAGjmI,EAAE7nB,UAAL,QAAa,GAC1B,OAAO6tJ,EAAUC,EAAU,EAAIA,EAAUD,GAAW,EAAI,CACzD,GACF,EAEY3zE,GAAa,SACxB8iK,EACA5mK,EACA/zD,EACAwnE,EACA1P,EACAC,EACAC,EACAjtB,GAEA,IAAI+oB,EAAS6mK,EAIb,OAFkB,WAAdA,IAAwB7mK,EAAS,aAE7BA,GACN,IAAK,MACH0T,EACE,YAAIxnE,GAAepgB,MAAK,SAAC4lB,EAAGC,GAC1B,IAAMm1N,EAAO94O,IAAO0jB,EAAEsuD,GAAS,CAAC,aAAc,eAAeo7E,UACvD2rF,EAAO/4O,IAAO2jB,EAAEquD,GAAS,CAAC,aAAc,eAAeo7E,UAC7D,OAAOn7E,EAAiB8mK,EAAOD,EAAOA,EAAOC,CAC9C,KAEH,MACF,IAAK,wBACHrzJ,EACEzT,EACI,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBkxB,GAAgBlxB,GAAGrf,SAAWuwC,GAAgBnxB,GAAGpf,SAC7C,EACAuwC,GAAgBnxB,GAAGpf,SAAWuwC,GAAgBlxB,GAAGrf,UAChD,EACD,CALkB,IAOxB,YAAI4Z,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBkxB,GAAgBlxB,GAAGrf,SAAWuwC,GAAgBnxB,GAAGpf,SAC7C,EACAuwC,GAAgBnxB,GAAGpf,SAAWuwC,GAAgBlxB,GAAGrf,UAChD,EACD,CALkB,KAQ9B,MACF,IAAK,WACHohF,EACEzT,EACI,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBuyD,EAAcvyD,EAAEquD,IAAWkE,EAAcxyD,EAAEsuD,IACvC,EACAkE,EAAcxyD,EAAEsuD,IAAWkE,EAAcvyD,EAAEquD,KAC1C,EACD,CALkB,IAOxB,YAAI9zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBuyD,EAAcvyD,EAAEquD,IAAWkE,EAAcxyD,EAAEsuD,IACvC,EACAkE,EAAcxyD,EAAEsuD,IAAWkE,EAAcvyD,EAAEquD,KAC1C,EACD,CALkB,KAQ9B,MACF,IAAK,SACH0T,EACEzT,EACI,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBqyD,EAAYryD,EAAEquD,IAAWgE,EAAYtyD,EAAEsuD,IACnC,EACAgE,EAAYtyD,EAAEsuD,IAAWgE,EAAYryD,EAAEquD,KACtC,EACD,CALkB,IAOxB,YAAI9zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBqyD,EAAYryD,EAAEquD,IAAWgE,EAAYtyD,EAAEsuD,IACnC,EACAgE,EAAYtyD,EAAEsuD,IAAWgE,EAAYryD,EAAEquD,KACtC,EACD,CALkB,KAQ9B,MACF,IAAK,QACH0T,EACEzT,EACI,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBsyD,EAAWtyD,EAAEquD,IAAWiE,EAAWvyD,EAAEsuD,IAAW,EAAIiE,EAAWvyD,EAAEsuD,IAAWiE,EAAWtyD,EAAEquD,KAAY,EAAI,CADnF,IAGxB,YAAI9zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBsyD,EAAWtyD,EAAEquD,IAAWiE,EAAWvyD,EAAEsuD,IAAW,EAAIiE,EAAWvyD,EAAEsuD,IAAWiE,EAAWtyD,EAAEquD,KAAY,EAAI,CADnF,KAI9B,MACF,IAAK,SACH0T,EACEzT,EACI,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBslC,EAAgBtlC,GAAKslC,EAAgBvlC,GAAK,EAAIulC,EAAgBvlC,GAAKulC,EAAgBtlC,IAAM,EAAI,CADvE,IAGxB,YAAIzF,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBslC,EAAgBtlC,GAAKslC,EAAgBvlC,GAAK,EAAIulC,EAAgBvlC,GAAKulC,EAAgBtlC,IAAM,EAAI,CADvE,KAI9B,MACF,IAAK,aACL,IAAK,SACL,IAAK,YACL,IAAK,UACL,IAAK,cACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,oBACL,IAAK,eACL,IAAK,iBACH+hE,EACEzT,EACI,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,IAC1B+lI,GAAU,UAAC/lI,EAAEquD,UAAH,QAAc,IAAI13D,WAAW7B,cACvCkxI,GAAU,UAACjmI,EAAEsuD,UAAH,QAAc,IAAI13D,WAAW7B,cAC7C,OAAOixI,EAAUC,EAAU,EAAIA,EAAUD,GAAW,EAAI,CACzD,IACD,YAAIxrI,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,IAC1B+lI,GAAU,UAAC/lI,EAAEquD,UAAH,QAAc,IAAI13D,WAAW7B,cACvCkxI,GAAU,UAACjmI,EAAEsuD,UAAH,QAAc,IAAI13D,WAAW7B,cAC7C,OAAOixI,EAAUC,EAAU,EAAIA,EAAUD,GAAW,EAAI,CACzD,KAEP,MACF,IAAK,aACHhkE,EACEzT,EACI,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAC1B,OAAO0C,SAAS1C,EAAEquD,IAAW3rD,SAAS3C,EAAEsuD,IAAW,EAAI3rD,SAAS3C,EAAEsuD,IAAW3rD,SAAS1C,EAAEquD,KAAY,EAAI,CACzG,IACD,YAAI9zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAC1B,OAAO0C,SAAS1C,EAAEquD,IAAW3rD,SAAS3C,EAAEsuD,IAAW,EAAI3rD,SAAS3C,EAAEsuD,IAAW3rD,SAAS1C,EAAEquD,KAAY,EAAI,CACzG,KAEP,MACF,IAAK,aACH0T,EACEzT,EACI,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAC1B,IAAM+lI,EAAU/lI,EAAEquD,GAAUruD,EAAEquD,GAAUruD,EAAEla,UACpCkgJ,EAAUjmI,EAAEsuD,GAAUtuD,EAAEsuD,GAAUtuD,EAAEja,UAC1C,OAAOigJ,EAAUC,EAAU,EAAIA,EAAUD,GAAW,EAAI,CACzD,IACD,YAAIxrI,GAAepgB,MAAK,SAAC4lB,EAAGC,GAC1B,IAAM+lI,EAAU/lI,EAAEquD,GAAUruD,EAAEquD,GAAUruD,EAAEla,UACpCkgJ,EAAUjmI,EAAEsuD,GAAUtuD,EAAEsuD,GAAUtuD,EAAEja,UAC1C,OAAOigJ,EAAUC,EAAU,EAAIA,EAAUD,GAAW,EAAI,CACzD,KAEP,MACF,IAAK,aACHhkE,EACEzT,EACI,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBslC,EAAgBtlC,EAAE9kB,IAAMoqD,EAAgBvlC,EAAE7kB,IAAM,EAAIoqD,EAAgBvlC,EAAE7kB,IAAMoqD,EAAgBtlC,EAAE9kB,KAAO,EAAI,CADnF,IAGxB,YAAIqf,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBslC,EAAgBtlC,EAAE9kB,IAAMoqD,EAAgBvlC,EAAE7kB,IAAM,EAAIoqD,EAAgBvlC,EAAE7kB,IAAMoqD,EAAgBtlC,EAAE9kB,KAAO,EAAI,CADnF,KAI9B,MACF,QACE6mF,EACEzT,EACI,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OAAWA,EAAEquD,GAAUtuD,EAAEsuD,GAAU,EAAItuD,EAAEsuD,GAAUruD,EAAEquD,IAAW,EAAI,CAApE,IACxB,YAAI9zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OAAWA,EAAEquD,GAAUtuD,EAAEsuD,GAAU,EAAItuD,EAAEsuD,GAAUruD,EAAEquD,IAAW,EAAI,CAApE,KAGnC,EAEY8V,GAAe,SAC1B9V,EACAC,EACA/zD,EACA83D,EACAC,EACAC,EACAjtB,GAEA,OAAQ+oB,GACN,IAAK,wBACH,OAAOC,EACH,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBkxB,GAAgBlxB,GAAGrf,SAAWuwC,GAAgBnxB,GAAGpf,SAC7C,EACAuwC,GAAgBnxB,GAAGpf,SAAWuwC,GAAgBlxB,GAAGrf,UAChD,EACD,CALkB,IAOxB,YAAI4Z,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBkxB,GAAgBlxB,GAAGrf,SAAWuwC,GAAgBnxB,GAAGpf,SAC7C,EACAuwC,GAAgBnxB,GAAGpf,SAAWuwC,GAAgBlxB,GAAGrf,UAChD,EACD,CALkB,IAQ9B,IAAK,WACH,OAAO2tE,EACH,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBuyD,EAAcvyD,EAAEquD,IAAWkE,EAAcxyD,EAAEsuD,IACvC,EACAkE,EAAcxyD,EAAEsuD,IAAWkE,EAAcvyD,EAAEquD,KAC1C,EACD,CALkB,IAOxB,YAAI9zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBuyD,EAAcvyD,EAAEquD,IAAWkE,EAAcxyD,EAAEsuD,IACvC,EACAkE,EAAcxyD,EAAEsuD,IAAWkE,EAAcvyD,EAAEquD,KAC1C,EACD,CALkB,IAO9B,IAAK,SACH,OAAOC,EACH,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBqyD,EAAYryD,EAAEquD,IAAWgE,EAAYtyD,EAAEsuD,IACnC,EACAgE,EAAYtyD,EAAEsuD,IAAWgE,EAAYryD,EAAEquD,KACtC,EACD,CALkB,IAOxB,YAAI9zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBqyD,EAAYryD,EAAEquD,IAAWgE,EAAYtyD,EAAEsuD,IACnC,EACAgE,EAAYtyD,EAAEsuD,IAAWgE,EAAYryD,EAAEquD,KACtC,EACD,CALkB,IAO9B,IAAK,QACH,OAAOC,EACH,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBsyD,EAAWtyD,EAAEquD,IAAWiE,EAAWvyD,EAAEsuD,IAAW,EAAIiE,EAAWvyD,EAAEsuD,IAAWiE,EAAWtyD,EAAEquD,KAAY,EAAI,CADnF,IAGxB,YAAI9zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBsyD,EAAWtyD,EAAEquD,IAAWiE,EAAWvyD,EAAEsuD,IAAW,EAAIiE,EAAWvyD,EAAEsuD,IAAWiE,EAAWtyD,EAAEquD,KAAY,EAAI,CADnF,IAG9B,IAAK,SACH,OAAOC,EACH,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBslC,EAAgBtlC,GAAKslC,EAAgBvlC,GAAK,EAAIulC,EAAgBvlC,GAAKulC,EAAgBtlC,IAAM,EAAI,CADvE,IAGxB,YAAIzF,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OACtBslC,EAAgBtlC,GAAKslC,EAAgBvlC,GAAK,EAAIulC,EAAgBvlC,GAAKulC,EAAgBtlC,IAAM,EAAI,CADvE,IAG9B,IAAK,aACL,IAAK,SACL,IAAK,YACL,IAAK,UACL,IAAK,cACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,YACL,IAAK,WACL,IAAK,cACH,OAAOsuD,EACH,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,IAC1B+lI,EAAO,UAAG/lI,EAAEquD,UAAL,QAAgB,GACvB23E,EAAO,UAAGjmI,EAAEsuD,UAAL,QAAgB,GAC7B,OAAO03E,EAAUC,EAAU,EAAIA,EAAUD,GAAW,EAAI,CACzD,IACD,YAAIxrI,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,IAC1B+lI,EAAO,UAAG/lI,EAAEquD,UAAL,QAAgB,GACvB23E,EAAO,UAAGjmI,EAAEsuD,UAAL,QAAgB,GAC7B,OAAO03E,EAAUC,EAAU,EAAIA,EAAUD,GAAW,EAAI,CACzD,IACP,IAAK,aACH,OAAOz3E,EACH,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAC1B,OAAO0C,SAAS1C,EAAEquD,IAAW3rD,SAAS3C,EAAEsuD,IAAW,EAAI3rD,SAAS3C,EAAEsuD,IAAW3rD,SAAS1C,EAAEquD,KAAY,EAAI,CACzG,IACD,YAAI9zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAC1B,OAAO0C,SAAS1C,EAAEquD,IAAW3rD,SAAS3C,EAAEsuD,IAAW,EAAI3rD,SAAS3C,EAAEsuD,IAAW3rD,SAAS1C,EAAEquD,KAAY,EAAI,CACzG,IACP,IAAK,aACH,OAAOC,EACH,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,mBACtB,UAAAA,EAAElgB,aAAF,eAASrB,SAAT,UAAkBshB,EAAEjgB,aAApB,aAAkB,EAASrB,QAAS,GAAI,UAAAshB,EAAEjgB,aAAF,eAASrB,SAAT,UAAkBuhB,EAAElgB,aAApB,aAAkB,EAASrB,SAAU,EAAI,CAD3D,IAGxB,YAAI8b,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,mBACtB,UAAAA,EAAElgB,aAAF,eAASrB,SAAT,UAAkBshB,EAAEjgB,aAApB,aAAkB,EAASrB,QAAS,GAAI,UAAAshB,EAAEjgB,aAAF,eAASrB,SAAT,UAAkBuhB,EAAElgB,aAApB,aAAkB,EAASrB,SAAU,EAAI,CAD3D,IAG9B,QACE,OAAO6vE,EACH,YAAI/zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OAAWA,EAAEquD,GAAUtuD,EAAEsuD,GAAU,EAAItuD,EAAEsuD,GAAUruD,EAAEquD,IAAW,EAAI,CAApE,IACxB,YAAI9zD,GAAepgB,MAAK,SAAC4lB,EAAGC,GAAJ,OAAWA,EAAEquD,GAAUtuD,EAAEsuD,GAAU,EAAItuD,EAAEsuD,GAAUruD,EAAEquD,IAAW,EAAI,CAApE,IAEjC,EAEY1wB,GAAe,SAACnhD,GAAD,OAC1B,IAAIikJ,OACF,0JACA73I,KAAKpM,EAHmB,EAIfi8H,GAAgB,SAACp+H,GAC5B,OAAKA,EACEA,EAAK0c,QAAQ,cAAe,IADjB,EAEnB,EACYwgC,GAAc,SAAC9iC,GAC1B,IAAMrM,EAAWqM,EAAKpa,KAItB,GAAI+N,EAAU,CACZ,IAAIitO,EAASjtO,EAAS2M,MAAM,KAG5B,OAFAsgO,EAASA,EAAOC,UAJL,CAAC,MAAO,MAAO,OAAQ,OAMxBjuO,SAASguO,EAAO,GAAGvgO,eAIzBL,EAAKkoB,KAAO,KAAO,KAAO,GACrB,4BAGF,GAPE,8BAQV,CACD,MAAO,EACR,EAEY46B,GAAa,SAACt2D,GACzB,OAAKA,EACEA,EAAMoG,SAAS,MAAf,WAA2BpG,EAAM8V,QAAQ,MAAO,KAAhD,YAA6D9V,EAAM8V,QAAQ,MAAO,KADtE,IAEpB,EAEYynI,GAAgB,SAACtjJ,GAC5B,OAAIA,GAAMA,EAAGuD,OAAS,EACd,GAAN,OAAUvD,EAAG4b,UAAU,EAAG,IAErB5b,CACR,EAEYmkD,GAAY,SAACt2B,GACxB,IAAKA,EACH,MAAO,GAGT,IAAMkC,EAAQlC,EAAIhS,QAAQ,WAAY,IAChCtY,EAASwsB,EAAMxsB,OAErB,OAAIA,EAAS,GAAKA,EAAS,EAClBwsB,EAAMnU,UAAU,EAAG,GAGxBrY,EAAS,EACgB,SAAvBwsB,EAAMnU,UAAU,GAAsBmU,EAAMnU,UAAU,EAAG,GACvD,GAAN,OAAUmU,EAAMnU,UAAU,EAAG,GAA7B,YAAmCmU,EAAMnU,UAAU,IAI5CmU,CAIV,EAEYrtB,GAAwB,CACnCgD,KAAM,SAAC/I,GAAD,OAAU8zC,aAAaG,QAAQ,UAAWj0C,EAA1C,EACNgG,IAAK,kBAAM8tC,aAAaC,QAAQ,YAAc,IAAzC,EACL/sC,MAAO,WACL,IAAM02O,EAAc5pM,aAAaC,QAAQ,eACnC4pM,EAAc7pM,aAAaC,QAAQ,eACnCqrK,EAActrK,aAAaC,QAAQ,eAEzCD,aAAa9sC,QACT22O,IACF7pM,aAAaG,QAAQ,cAAeypM,GACpC5pM,aAAaG,QAAQ,cAAe0pM,IAEnCv+B,GACDtrK,aAAaG,QAAQ,cAAemrK,EAEvC,GAGUr3C,GAAqB,CAChCh/J,KAAM,SAAC/I,GAAD,OAAU8zC,aAAaG,QAAQ,eAAgBj0C,EAA/C,EACNgG,IAAK,kBAAM8tC,aAAaC,QAAQ,iBAAmB,IAA9C,EACL/sC,MAAO,kBAAM8sC,aAAa9sC,OAAnB,GAGIghK,GAAqB,CAChCj/J,KAAM,SAAC/I,GAAD,OAAU8zC,aAAaG,QAAQ,OAAQj0C,EAAvC,EACNgG,IAAK,kBAAM8tC,aAAaC,QAAQ,SAAW,IAAtC,EACL/sC,MAAO,kBAAM8sC,aAAa9sC,OAAnB,GAGIyI,GAA4B,CACvC1G,KAAM,SAAC/I,GAAD,OAAU8zC,aAAaG,QAAQ,cAAej0C,EAA9C,EACNgG,IAAK,kBAAM8tC,aAAaC,QAAQ,gBAAkB,IAA7C,EACL/sC,MAAO,kBAAM8sC,aAAa8pM,WAAW,cAA9B,GAGIrhN,GAAyB,CACpCxzB,KAAM,SAAC/I,GAAD,OAAU8zC,aAAaG,QAAQ,WAAYj0C,EAA3C,EACNgG,IAAK,kBAAM8tC,aAAaC,QAAQ,aAAe,IAA1C,EACL/sC,MAAO,kBAAM8sC,aAAa8pM,WAAW,WAA9B,GAGI7+B,GAAsB,CACjCh2M,KAAM,SAAC/I,GAAD,OAAU8zC,aAAaG,QAAQ,cAAej0C,EAA9C,EACNgG,IAAK,kBAAM8tC,aAAaC,QAAQ,gBAAkB,IAA7C,EACL/sC,MAAO,kBAAM8sC,aAAa8pM,WAAW,cAA9B,GASIzjK,GAAoB,CAC/BpxE,KAAM,SAAC8R,GAAD,OAASi5B,aAAaG,QAAQ,YAAa9oC,KAAKC,UAAUyP,GAA1D,EACN7U,IAAK,WACH,OAAI8tC,aAAaC,QAAQ,aAChB5oC,KAAK8V,MAAM6yB,aAAaC,QAAQ,cAElC,CACLswC,SAAU,CAAC,EACX6rB,gBAAiB,CAAC,EAClBD,SAAU,CAAC,EACXhkB,mBAAoB,CAAC,EACrBo3D,WAAY,CAAC,EACbwsE,UAAW,CAAC,EACZlqE,aAAc,CAAC,EACfib,WAAY,CAAC,EACbW,eAAgB,CAAC,EACjB6uD,aAAc,CAAC,EACfgB,WAAY,CAAC,EACbnpN,MAAO,CAAC,EACRiG,MAAO,CAAC,EACRvG,KAAM,CAAC,EACPs7C,QAAS,CAAC,EACVv3B,MAAO,CAAC,EACRmyN,MAAO,CAAC,EACRjrB,OAAQ,CAAC,EACTlvN,UAAW,CAAC,EACZuxJ,YAAa,CAAC,EAEjB,EACDjuJ,MAAO,kBAAM8sC,aAAa8pM,WAAW,YAA9B,GASI3qM,GAAY,CACvBlqC,KAAM,SAAC8R,GAAD,OAASkuN,eAAe90L,QAAQ,YAAa9oC,KAAKC,UAAUyP,GAA5D,EACN7U,IAAK,WACH,OAAI+iO,eAAeh1L,QAAQ,aAClB5oC,KAAK8V,MAAM8nN,eAAeh1L,QAAQ,cAEpC,CACLo3G,aAAc,CAAC,EAElB,EACDnkJ,MAAO,kBAAM+hO,eAAe6U,WAAW,YAAhC,GAGI38I,GAAsB,CACjCl4F,KAAM,SAAC1I,EAAKwa,GACV,IAAMijO,EAAWhqM,aAAaC,QAAQ,0BAClCzd,EAASzb,EACb,GAAIxa,GAAOy9O,GAAyB,cAAbA,EAA0B,CAC/C,IAAMrvO,EAA2B,kBAAbqvO,EAAwB3yO,KAAK8V,MAAM68N,GAAYA,EACnEjvO,OAAOC,OAAOL,EAAdI,OAAA,IAAAA,CAAA,GAAuBxO,EAAMwa,IAC7Byb,EAAS7nB,CACV,MAAUpO,IACTi2B,EAAM,eAAMj2B,EAAMwa,IAEpBi5B,aAAaG,QAAQ,yBAA0B9oC,KAAKC,UAAUkrB,GAC/D,EACD6yD,OAAQ,SAAC5yD,EAAKl2B,GACZ,IAAM09O,EAAkB5yO,KAAKC,UAC3BmrB,EACGhzB,QAAO,SAACgM,GAAD,OAAOA,EAAE0yB,OAAT,IACPp6B,KAAI,SAAC0H,GACJ,MAAO,CAAElM,GAAIkM,EAAElM,GAAIusC,MAAOrgC,EAAEqgC,MAC7B,KAGDi2G,EAAU16I,KAAK8V,MAAM6yB,aAAaC,QAAQ,2BAC9C,GAAI8xG,EAGF,OAFAA,EAAQxlJ,GAAO09O,EACfjqM,aAAaG,QAAQ,yBAA0B9oC,KAAKC,UAAUy6I,IACvDA,EAET,IAAMm4F,EAAiB91E,eACvB,OAAI81E,GACFA,EAAe39O,GAAO09O,EACtBjqM,aAAaG,QAAQ,yBAA0B9oC,KAAKC,UAAU4yO,IACvDA,QAHT,CAKD,EAEDh4O,IAAK,SAAC3F,GACJ,IAAM49O,EAAWnqM,aAAaC,QAAQ,0BACtC,IAAK1zC,EAAK,OAAO49O,EAEjB,IAAMD,EAAiBE,GAAuB79O,GAE9C,GAAI49O,EAAU,CACZ,IAAMxvO,EAAOtD,KAAK8V,MAAMg9N,GACxB,GAAIxvO,EAAKpO,IAAQ8xC,MAAMyJ,QAAQntC,EAAKpO,IAClC,OAAO29O,EAAen2O,KAAI,SAACgY,GACzB,OAAO,2BAAKA,GAAZ,IAAeoiB,SAAsC,IAA7BxzB,EAAKpO,GAAK0gB,QAAQlB,EAAExc,KAC7C,IAGH,GAAIoL,EAAKpO,KAAS8xC,MAAMyJ,QAAQntC,EAAKpO,IAAO,CAC1C,IAAM89O,EAA+B,kBAAd1vO,EAAKpO,GAAoB8K,KAAK8V,MAAMxS,EAAKpO,IAAQoO,EAAKpO,GAE7E,GAAuB,IAAnB89O,EAAQv3O,OAAc,OAAOo3O,EAEjC,IAAMI,EAAa,IAAI1wK,IAAIywK,EAAQt2O,KAAI,SAAC+1C,GAAD,MAAU,CAACA,EAAKv6C,GAAIu6C,EAApB,KAKvC,OAH6BogM,EAAeh+N,QAAQ1d,MAAK,SAAC4lB,EAAGC,GAC3D,OAAOg2N,EAAQ18J,WAAU,SAAC7jC,GAAD,OAAUA,EAAKv6C,KAAO6kB,EAAE7kB,EAAxB,IAA8B86O,EAAQ18J,WAAU,SAAC7jC,GAAD,OAAUA,EAAKv6C,KAAO8kB,EAAE9kB,EAAxB,GAC1E,IAC2BwE,KAAI,SAACgY,GAC/B,IAAMhF,EAAMujO,EAAWp4O,IAAI6Z,EAAExc,IAC7B,MAAY,oBAARhD,EACK,2BAAKwf,GAAZ,IAAeoiB,SAAS,EAAM2N,OAAU,OAAH/0B,QAAG,IAAHA,OAAA,EAAAA,EAAK+0B,QAAS/vB,EAAE+vB,QAEhD,2BAAK/vB,GAAZ,IAAeoiB,UAASpnB,EAAoB+0B,OAAU,OAAH/0B,QAAG,IAAHA,OAAA,EAAAA,EAAK+0B,QAAS/vB,EAAE+vB,OACpE,GACF,CACF,CACD,OAAOouM,CACR,EACDh3O,MAAO,kBAAM8sC,aAAa8pM,WAAW,yBAA9B,GAGI9+K,GAAiB,SAACjkD,EAAK1L,EAAOnP,GAAU,IAAD,EAClD,IAAK6a,GAAmC,IAA5BhM,OAAO69B,KAAK7xB,GAAKjU,OAAc,MAAO,GAClD,IAAIq+C,EAAKpqC,EAAIhW,cAAgBgW,EAAIrJ,YAGjC,OAFAyzC,EAAE,UAAGA,SAAH,aAAG,EAAI/lC,QAAW,OAAHrE,QAAG,IAAHA,KAAK/V,YAAc+V,EAAI/V,YAAc,KAAM,IAErD,CACL+D,UAAWgS,EAAIxW,OAASwW,EAAIhS,UAC5BC,SAAU+R,EAAI/R,UAAY+R,EAAIvW,KAC9B8E,MAAO67C,EACPn0C,WAAY3B,EACZxK,MAAOkW,EAAIlW,MACXG,YAAa+V,EAAI/V,YACjBP,IAAKsW,EAAItW,IACTvE,KAAMA,GAAQ,KAEjB,EAEY02C,GAAuB,SAACnyC,GACnC,IAAKA,GAAc,IAAPA,EAAW,MAAO,GAC9B,GAAIA,EAAIiL,SAAS,KAAM,CACrB,IACIsR,EAAa,aAIjB,OAHc,IAFAvc,EAAIwc,QAAQ,OAGxBD,EAAa,cAERtc,IAAOD,EAAKuc,GAAYrc,OAAO,aACvC,CACD,IAAKF,EAAIiL,SAAS,KAAM,CACtB,IAAM6uO,EAAU/qN,GAAc/uB,GAC9B,OAAOC,IAAO65O,GAAS55O,OAAO,aAC/B,CACD,OAAOD,IAAOD,EAAK,cAAcE,OAAO,aACzC,EAEYqkD,GAAgB,SAAC53B,GAC5B,IAAKA,IAASA,EAAIjsB,OAASisB,EAAIhsB,QAAUgsB,EAAI/rB,IAAM,MAAO,GAC1D,IAAIoxB,EAAM,GAMV,OALIrF,EAAIjsB,MAAMsxB,EAAIruB,KAAKgpB,EAAIjsB,MACvBisB,EAAIhsB,OAAOqxB,EAAIruB,KAAKgpB,EAAIhsB,OAC5BqxB,EAAM,CAACA,EAAIhJ,KAAK,MACZ2D,EAAI/rB,KAAKoxB,EAAIruB,KAAKgpB,EAAI/rB,KACtB+rB,EAAInlB,SAASwqB,EAAIruB,KAAKgpB,EAAInlB,SACvBwqB,EAAIhJ,KAAK,IACjB,EAEYi4B,GAAmB,SAACjhD,GAC/B,IAAKA,GAAc,IAAPA,EAAW,MAAO,GAC9B,GAAIA,EAAIiL,SAAS,KAAM,CACrB,IACIsR,EAAa,aAIjB,OAHc,IAFAvc,EAAIwc,QAAQ,OAGxBD,EAAa,cAERtc,IAAOD,EAAKuc,GAAYrc,OAAO,WACvC,CACD,OAAOF,CACR,EACY+uB,GAAgB,SAAChC,GAC5B,GAAIA,IAAa,OAACA,QAAD,IAACA,MAAW9hB,SAAS,MAAM,CAC1C,IAAM+hB,EAAS,GAIf,OAHAA,EAAOrpB,KAAKopB,EAAUrS,UAAU,IAChCsS,EAAOrpB,KAAKopB,EAAUrS,UAAU,EAAG,IACnCsS,EAAOrpB,KAAKopB,EAAUrS,UAAU,EAAG,IAC5BsS,EAAOhE,KAAK,IACpB,CACD,OAAO+D,CACR,EACY2pB,GAAsB,SAAC5xB,GAClC,OAAKA,GAAkB,IAATA,EACP7kB,IAAO6kB,GAAO5kB,OAAO,cADM4kB,CAEnC,EAEY22C,GAA6B,SAAC32C,GACzC,OAAKA,GAAkB,IAATA,EACP7kB,IAAO6kB,GAAO5kB,OAAO,cADM,GAEnC,EAEY2zE,GAAmB,SAACxoC,EAAO0uM,GAAR,OAAwBl+N,KAAK05D,KAAKlqC,EAAQ0uM,EAA1C,EAEnBn5L,GAAc,SAAC0/B,GAC1B,MAAmB,kBAARA,GAAqBA,EAAIniC,OAIhCmiC,EAAIj+E,QAAU,EACTi+E,EAAIt9B,cAGNs9B,EACJ3nE,MAAM,KACNrV,KAAI,SAAC22J,GACJ,OAAKA,EACEA,EAAK,GAAGj3G,cAAgBi3G,EAAKx+I,MAAM,GAAG/C,cAD3BuhJ,CAEnB,IACAjxI,KAAK,KAbC,EAcV,EAEYm1E,GAAkB,SAAC7d,GAC9B,MAAmB,kBAARA,GAAqBA,EAAIniC,OAIhCmiC,EAAIj+E,QAAU,EACTi+E,EAAIt9B,cAGNs9B,EAAI3lE,QAAQ,6BAA6B,SAACs/I,GAC/C,OAAOA,EAAKxsE,OAAO,GAAGzqC,cAAgBi3G,EAAKx+I,MAAM,GAAG/C,aACrD,IATQ,EAUV,EAOYw2N,GAAwB,SAACpzO,GACpC,OAAKA,EACO,oBAARA,EAAkCyvJ,KAAoBjoJ,KAAI,SAACghB,GAAD,OAAOA,EAAExlB,EAAT,IAClD,aAARhD,EAA2ByxL,IAAuBjqL,KAAI,SAAC28C,GAAD,MAAQ,CAAEnhD,GAAImhD,EAAEnhD,GAAIusC,MAAO,OAA3B,SAA1D,EAFiB,EAGlB,EAEYsuM,GAAyB,SAAC79O,GACrC,OAAKA,EACO,oBAARA,EAAkCyvJ,KAC1B,aAARzvJ,EAA2ByxL,IACnB,cAARzxL,EAA4Bu/H,IACpB,aAARv/H,EAA2B6xH,IACnB,gBAAR7xH,EAA8BysO,IACtB,kBAARzsO,EAAgC0sO,IACxB,qBAAR1sO,EAAmCw1L,IAC3B,oBAARx1L,EAAkCkiL,IAC1B,gBAARliL,EAA8BiiL,IAC3B,GAVU,EAWlB,EAEY9hJ,GAAiC,SAACqkD,GAE7C,IAAKA,IAAQA,EAAIniC,OAAQ,MAAO,GAOhC,IAAM67L,GAHN15J,GAHAA,EAAMA,EAAI3lE,QAAQ,MAAO,KAGfA,QAAQ,aAAc,KAGP6yH,YAAY,KAKrC,OAJIwsG,GAAgB,IAClB15J,EAAMA,EAAI5lE,UAAU,EAAGs/N,IAGlB15J,EAAIt9B,aACZ,EAEY62D,GAAc,SAAC57G,GAC1B,OAAKA,GAASA,EAAKkgD,OACfhhD,IAAO+2F,wBACFj2F,EAEF6oE,EAAiB7oE,EAAK0c,QAAQ,OAAQ,MAJX,EAMnC,EAEYkX,GAAa,SAACklN,EAAoBj2L,GAC7C,IAAK,IAAD,EACExgD,EAAY,OAAGy2O,QAAH,IAAGA,OAAH,EAAGA,EAAoBp8N,QAAQ,eAAgB,OAE3D,UAACra,SAAD,OAAC,EAAc2K,SAAS,OAC1B3K,EAAewgD,EAAM,UAAMA,GAAN,OAAexgD,GAAf,YAAqCA,IAG5D,IAAMuE,EAAQkzD,YAAsBz3D,GAC9B03D,EAAWnzD,EAAM8T,MAAM,KACvBpY,EAAcy3D,EAAS,GAG7B,OAFAA,EAASglB,OAAO,EAAG,GAEZ,CAACz8E,EADQy3D,EAAShvC,KAAK,IACAnkB,EAG/B,CAFC,MAAOoV,KACPzb,QAAQgE,IAAI,QAASyX,IACtB,CACD,MAAO,CAAC,GAAI88N,EAAoBA,EACjC,EAEYr8C,GAAc,SAAC/tK,GAC1B,OAAIA,EAAYrG,SAASqG,GAClB,CACR,EAOY61B,GAAoB,SAAC19B,GAChC,OAAKA,EACEu5B,EAAav5B,GADD,IAEpB,EAEYo9B,GAAc,SAAC/hD,EAAWiQ,GAIrC,OAHKjQ,IACHA,EAAYF,MAASotJ,UAAU9yI,YAE7Bpa,GAAaiQ,EACRjQ,EAAUoV,OAAO,IAAKnF,EAAWmK,YAEnC,EACR,EAGY6qI,GAAmB,SAAC9pB,EAAS2+G,GACxC,OAAK3+G,GAAY2+G,EACb3+G,GAAW2+G,EACG,QAAZ3+G,EACI,gGAAN,OAAuG2+G,GAClF,UAAZ3+G,EACH,4CAAN,OAAmD2+G,GAC9B,QAAZ3+G,EACH,iEAAN,OAAwE2+G,GAEjE,GAGJ,GAZ6B,IAarC,EAGYn7J,GAAa,SAACv3E,GACzB,OAAe,IAAXA,EAAqB,UACV,IAAXA,EAAqB,SACV,IAAXA,EAAqB,OAClB,QACR,EAGY2yO,GAAa,SAAC7hO,GACzB,QAAKA,GACE,IAAIzU,SAAQ,SAACgU,EAASC,GAC3B,IAAMyhE,EAAM,IAAIC,MAChBD,EAAI/tC,IAAsB,kBAATlzB,EAAoBshB,IAAIC,gBAAgBvhB,GAAQA,EACjEihE,EAAIE,OAAS,WACX5hE,GAAQ,EACT,EACD0hE,EAAIrhE,QAAU,WACZL,GAAQ,EACT,CACF,GACF,EAGYi/C,GAAmB,SAAC1/C,GAC/B,IAAIgjO,EAAYhjO,EAAIwB,MAAM,KACtB7W,EAAc,GACdyU,EAAS,GASb,OAPyB,IAArB4jO,EAAU93O,SACZP,EAAcq4O,EAAU,IAED,IAArBA,EAAU93O,SACZP,EAAcq4O,EAAU,GACxB5jO,EAAS4jO,EAAU,IAEd,CAAEr4O,cAAayU,SACvB,EAQYo+I,GAAsB,SAAChoI,GAClC,IAAIytN,EAAyBztN,GAAO,GAIpC,MAHsC,kBAA3BytN,IACTA,EAAyBxzO,KAAK8V,MAAM09N,IAE/BA,CACR,EAEYvhL,GAAe,SAACwhL,EAAU75H,EAAW85H,EAAeC,GAC/D,IAAMC,EAAU,2BAAQh6H,GAAc+5H,GAChC9xO,EAAM,2BAAQ4xO,GAAaC,GAEjC,OAAOhwO,OAAO69B,KAAK1/B,GAAQmlF,QAAO,SAACt3E,EAAK+iC,GAStC,OAPE5wC,EAAO6nF,eAAej3C,KACrB5wC,EAAO4wC,IAASmhM,EAAWnhM,KAC5B5wC,EAAO4wC,KAAUmhM,EAAWnhM,KAC3Bi2L,KAAarkO,SAASouC,KAEvB/iC,EAAI+iC,GAAJ,UAAemhM,EAAWnhM,IAAS,GAAnC,eAA4C5wC,EAAO4wC,IAAS,KAEvD/iC,CACR,GAAE,CAAC,EACL,EAEYiqG,GAAyB,SAAC,GAA0C,IAAxCC,EAAuC,EAAvCA,UAAWzX,EAA4B,EAA5BA,UAAWoX,EAAiB,EAAjBA,WACvDs6H,EAAanwO,OAAO69B,KAAKg4E,GAEzBu6H,EAAa,GA8CnB,OA5CoB,SAAdC,EAAeC,EAAQ7oN,GAA4B,IAApB2pE,EAAmB,uDAAP,GACzCm/I,EAAU,IAAIx8N,IAAJ,sBAAY/T,OAAO69B,KAAKyyM,GAAU,CAAC,IAAnC,YAA0CtwO,OAAO69B,KAAKpW,GAAU,CAAC,MAEjF8oN,EAAQ/kO,SAAQ,SAACha,GACf,IAAMg/O,EAAUp/I,EAAS,UAAMA,EAAN,YAAmB5/F,GAAQA,EAC9Ci/O,EAAM,OAAGH,QAAH,IAAGA,OAAH,EAAGA,EAAS9+O,GAClBk/O,EAAM,OAAGjpN,QAAH,IAAGA,OAAH,EAAGA,EAASj2B,GAExB,GAAsB,kBAAXi/O,GAAkC,OAAXA,GAAqC,kBAAXC,GAAkC,OAAXA,EACjFL,EAAYI,EAAQC,EAAQF,QAGzB,GAAIC,IAAWC,GAAUP,EAAWxvO,SAAS6vO,GAChD,QAAe3xN,IAAX6xN,EAAsB,CACxB,IAAMnzH,EAAY,CAChB5pH,KAAMkiH,EAAW26H,GACjBh/O,IAAKg/O,EACLv2M,UAAW,GACXC,UAAWu2M,GAEbL,EAAW/2O,KAAKkkH,EACjB,MAAM,QAAe1+F,IAAX4xN,EAAsB,CAC/B,IAAMlzH,EAAY,CAChB5pH,KAAMkiH,EAAW26H,GACjBh/O,IAAKg/O,EACLv2M,UAAWy2M,EACXx2M,UAAW,IAEbk2M,EAAW/2O,KAAKkkH,EACjB,KAAM,CACL,IAAMA,EAAY,CAChB5pH,KAAMkiH,EAAW26H,GACjBh/O,IAAKg/O,EACLv2M,UAAWy2M,EACXx2M,UAAWu2M,GAEbL,EAAW/2O,KAAKkkH,EACjB,CAEJ,GACF,CAED8yH,CAAYn6H,EAAWzX,GAEhB2xI,CACR,EAEYnT,GAA8B,SAAC,GAA0C,IAAxC/mH,EAAuC,EAAvCA,UAAWzX,EAA4B,EAA5BA,UAAWoX,EAAiB,EAAjBA,WAC5Ds6H,EAAanwO,OAAO69B,KAAKg4E,GAEzBu6H,EAAa,GAyCnB,OAvCoB,SAAdC,EAAeC,EAAQ7oN,GAA4B,IAApB2pE,EAAmB,uDAAP,GACzCm/I,EAAU,IAAIx8N,IAAJ,sBAAY/T,OAAO69B,KAAKyyM,GAAU,CAAC,IAAnC,YAA0CtwO,OAAO69B,KAAKpW,GAAU,CAAC,MAEjF8oN,EAAQ/kO,SAAQ,SAACha,GACf,IAAMg/O,EAAUp/I,EAAS,UAAMA,EAAN,YAAmB5/F,GAAQA,EAC9Ci/O,EAAM,OAAGH,QAAH,IAAGA,OAAH,EAAGA,EAAS9+O,GAClBk/O,EAAM,OAAGjpN,QAAH,IAAGA,OAAH,EAAGA,EAASj2B,GAExB,GAAsB,kBAAXi/O,GAAkC,OAAXA,GAAqC,kBAAXC,GAAkC,OAAXA,EACjFL,EAAYI,EAAQC,EAAQF,QACvB,GAAIC,IAAWC,GAAUP,EAAWxvO,SAAS6vO,GAClD,QAAe3xN,IAAX6xN,EAAsB,CACxB,IAAMnzH,EAAY,CAChB5pH,KAAMkiH,EAAW26H,IAAY,GAC7Bv2M,UAAW,GACXC,UAAWu2M,GAEbL,EAAW/2O,KAAKkkH,EACjB,MAAM,QAAe1+F,IAAX4xN,EAAsB,CAC/B,IAAMlzH,EAAY,CAChB5pH,KAAMkiH,EAAW26H,IAAY,GAC7Bv2M,UAAWy2M,EACXx2M,UAAW,IAEbk2M,EAAW/2O,KAAKkkH,EACjB,KAAM,CACL,IAAMA,EAAY,CAChB5pH,KAAMkiH,EAAW26H,IAAY,GAC7Bv2M,UAAWy2M,EACXx2M,UAAWu2M,GAEbL,EAAW/2O,KAAKkkH,EACjB,CAEJ,GACF,CAED8yH,CAAYn6H,EAAWzX,GAEhB2xI,CACR,EAEYnsI,GAA0B,SAAC0sI,GACtC,IAAKA,EAAa,MAAO,GACzB,IAAMtuN,EAAMsuN,EAAYtgO,QAAQ,kBAAmB,IACnD,OAAIgS,EACKA,EAAIwxB,OAAOzlC,cAEb,EACR,EAEYo5E,GAAqB,SAACmpJ,GACjC,OAAKA,IACOA,EAAYtgO,QAAQ,WAAY,IADnB,EAG1B,EAgCY8wK,GAAyB,SAACj/K,EAAM0uO,GAC3C,GAAI,OAAC1uO,QAAD,IAACA,MAAMujB,gBAAiB,OAAO,KACnC,IAAK,IAAD,EACIiC,EAAMprB,KAAK8V,MAAMlQ,EAAKkF,OACtBiQ,EAAOnV,EAAK0rD,eAAL,UAAqBlmC,EAAI,UAAzB,aAAqB,EAAQrQ,MAC1C,OAAIu5N,EACKv5N,EAEF1hB,IAAO0hB,GAAMzhB,OAAO,mBAG5B,CAFC,MAAOzB,OACP,OAAO,IACR,CACF,EAEY08O,GAAyB,SAACluO,GACrC,IAAKA,EAAa,MAAO,GAEzB,IAAIpI,EAAQktC,EAAkB9kC,GAExB6oD,GADNjxD,EAAQA,EAAM8V,QAAQ,MAAO,IAAIA,QAAQ,KAAM,KAC3Bm7C,MAAM,2BAK1B,OAJIA,IACFjxD,EAAK,UAAMixD,EAAM,GAAZ,YAAkBA,EAAM,GAAxB,YAA8BA,EAAM,KAGpCjxD,CACR,EAiCYu2O,GAAmB,SAAC77M,EAAU9kB,EAAUkH,EAAMC,GACzD,IACE,IAAMy5N,EAAiC,IAAI7xO,KAAK+1B,GAC7C/kB,eAAe,QADqB,yBAEnCC,SAAUA,GAAsB,uBAC5BkH,GAAQ,CACVosJ,KAAM,UACN8qE,MAAO,UACP5hD,IAAK,YAEHr1K,GAAQ,CACVmlC,KAAM,UACNC,OAAQ,aAGXrsC,QAAQ,IAAK,IAEhB,GAAI0gO,EAAgC,OAAOA,CAG5C,CAFC,MAAO58O,OACPD,QAAQgE,IAAI,aAAc/D,MAC3B,CACF,EAEY6gJ,GAAmB,SAAC7oI,EAAM6kO,EAAWC,GAChD,IAAMC,EAvDuB,SAACv3O,GAC9B,IAAMgtC,EAAUhtC,EAAI0O,eAEhB9N,EAAQs2O,GAAuBl3O,EAAI3D,cAKjCm7O,EAAUxqM,EAAQ6kB,MAFV,6BAId,OAAI2lL,EAKK,CACL/6O,KALW+6O,EAAQ,GAAGt9L,OAMtBx9C,MALY86O,EAAQ,GAMpB76O,IALc66O,EAAQ,GAMtB52O,MAAOA,GAGF,CACLnE,KAAM,GACNC,MAAO,GACPC,IAAK,GACLiE,MAAO,GAGZ,CA0BoB62O,CAAgBJ,GACnC,OAAO7kO,EAAKnT,KAAI,SAACiR,GAAO,IAAD,EACf+B,EAAG,eAAQo5N,MACXp/N,EAAO1J,KAAK8V,MAAMnI,EAAErD,uBACtBrM,EAAQs2O,GAAuB7qO,EAAKrD,aAElCwR,EAAkB88N,EAAahnO,EAAE7U,QAInC+e,GACFnU,OAAOC,OAAO+L,EAAK,CACjB46N,qBAAsBzyN,EAAgBQ,IACtCkyN,4BAA6B1yN,EAAgBla,SAC7C6sO,6BAA8B3yN,EAAgBna,UAC9C+sO,8BAA+B5yN,EAAgBsf,WAC/CuzM,yBAA0B7yN,EAAgBje,OAC1C+wO,0BAA2B9yN,EAAgBhe,QAC3C+wO,uBAAwB/yN,EAAgB/d,KACxC+wO,wBAAyBhzN,EAAgB9d,MACzC+wO,2BAA4BjzN,EAAgB7d,IAC5C+wO,+BAAgCwJ,GAAuB18N,EAAgBxR,eAG3E,IAAQihG,EAAoB59F,EAApB49F,MAAOxuF,EAAapP,EAAboP,SAuCf,OAtCApJ,EAAIq5N,WAAJ,kBAA4Br/N,EAAK7D,MAAQ8H,EAAEnE,YAC3CkG,EAAIs5N,kBAAoB9oK,EAAiBx2D,EAAKhM,WAC9CgS,EAAIu5N,mBAAqB/oK,EAAiBx2D,EAAK/L,UAC/C+R,EAAIy5N,eAAJ,OAAqBz/N,QAArB,IAAqBA,OAArB,EAAqBA,EAAM9P,OAC3B8V,EAAI05N,iBAAsB,OAAJ1/N,QAAI,IAAJA,OAAA,EAAAA,EAAM7P,UAAW,GACvC6V,EAAI25N,aAAe3/N,EAAK5P,KACxB4V,EAAI45N,cAAgB5/N,EAAK3P,MACzB2V,EAAI65N,iBAAmBltL,GAAU3yC,EAAK1P,KACtC0V,EAAI85N,eAAiB,cACrB95N,EAAImL,iBAAmBlN,EAAE5D,QACzB2F,EAAI+5N,qBAAuBxrO,EAC3ByR,EAAIwL,YA/IiB,SAAC9hB,GACxB,GAAIA,EAAIiL,SAAS,KAAM,CACrB,IACIsR,EAAa,aAIjB,OAHc,IAFFvc,EAAIwc,QAAQ,OAGtBD,EAAa,cAERtc,IAAOD,EAAKuc,GAAYrc,OAAO,aACvC,CACD,OAAOD,IAAOD,EAAK,YAAYE,OAAO,aACvC,CAqIqBoc,CAAiBhM,EAAKtQ,KACxCsW,EAAIyL,eAAiBzR,EAAKjQ,KAAO,MACjCiW,EAAIs6N,YAAcwC,KAAyB,UAAC7+N,EAAEI,cAAH,aAAC,EAAU+D,eACtDpC,EAAIu6N,gBAAkBuK,GAAiB7mO,EAAE7K,UAAW6K,EAAEkG,SAAU,QAChEnE,EAAIw6N,yBAA2BsK,GAAiB7mO,EAAE7K,UAAW6K,EAAEkG,SAAU,QACzEnE,EAAIy6N,mCAAqCqK,GAxIV,SAAC5uO,GAClC,IAMoB,EANhBwlB,EAAM,GACV,IACEA,EAAMprB,KAAK8V,MAAMlQ,EAAKkF,MAGvB,CAFC,MAAOugB,GACP,OAAOzlB,EAAK9C,SACb,CACD,OAAIsoB,EAAI3vB,OAAS,EACf,UAAO2vB,EAAI,UAAX,aAAO,EAAQrQ,KAEVnV,EAAK9C,SACb,CA6H6Dw9C,CAA2B3yC,GAAIA,EAAEkG,SAAU,QACrGnE,EAAI06N,iBAAmB/wO,IAAOsU,EAAEkb,gBAAgBvvB,OAAO,cACvDoW,EAAI26N,qBAAuBhxO,IAAOsU,EAAEkb,gBAAgBvvB,OAAO,cAC3DoW,EAAIs7N,iBAAmB0J,EAAUxoO,YACjCwD,EAAIu7N,iBAAmByJ,EAAUr9O,KACjCqY,EAAIw7N,mBAAqBwJ,EAAU96O,OACnC8V,EAAIy7N,oBAAsB,GAC1Bz7N,EAAI07N,iBAAmBwJ,EAAW96O,KAClC4V,EAAI27N,kBAAoBuJ,EAAW76O,MACnC2V,EAAI47N,qBAAuBsJ,EAAW56O,IACtC0V,EAAI67N,yBAA2BqJ,EAAW32O,MAEtCqpG,GAAiC,QAAxBA,EAAMx1F,gBACjBpC,EAAIm6N,qBAAuB,wDAC3Bn6N,EAAIo6N,oBAAsB,UAC1Bp6N,EAAIq6N,kBAAoB,WAGtBjxN,GAAyB,UAAbA,IACdpJ,EAAIkM,cAAgB,aAGf,eAAKlM,EACb,GACF,EAEYypF,GAAU,SAAC3/F,GAAD,OACrB,oBAEE0pC,UAAU,oGACV4R,YAAa,SAACnnC,GACZA,EAAEs2B,OAAOE,MAAMK,OAAS,UACxB72B,EAAEs2B,OAAOE,MAAMkwB,eAAiB,MACjC,EACDxf,aAAc,SAAClnC,GACbA,EAAEs2B,OAAOE,MAAMkwB,eAAiB,WACjC,EACDnwB,QAAS,kBAAM1qC,GAASs5B,OAAOwhC,KAAP,iBAAsB96D,GAArC,EACT5E,MAAO4E,EAXT,SAaGA,GAZIA,EAFc,EA2DV4/F,GAAU,SAAC/yF,GAAD,OACrB,oBAEE68B,UAAU,oGACV4R,YAAa,SAACnnC,GACZA,EAAEs2B,OAAOE,MAAMK,OAAS,UACxB72B,EAAEs2B,OAAOE,MAAMkwB,eAAiB,MACjC,EACDxf,aAAc,SAAClnC,GACbA,EAAEs2B,OAAOE,MAAMkwB,eAAiB,WACjC,EACDnwB,QAAS,kBAAM79B,GAAeysB,OAAOwhC,KAAP,eAAoBjuD,EAAY0N,QAAQ,MAAO,KAApE,EACTnf,MAAOu2C,EAAkB9kC,EAAa,GAAG0uO,MAX3C,SAaG5pM,EAAkB9kC,EAAa,IAAI,IAZ/BA,EAAc4O,KAAKwrH,SAFL,EAkBV32B,GAAmB,SAACpwG,GAW/B,MAVmB,CACjB,eACA,eACA,eACA,eACA,eACA,eACA,gBACA,gBAEgB2K,SAAS3K,EAC5B,EAEYqwK,GAAiB,SAACpwI,GAC7B,GAAa,IAATA,EAAY,MAAO,UACvB,IAEM/8B,EAAIqY,KAAKshF,MAAMthF,KAAKrZ,IAAI+9B,GAAQ1kB,KAAKrZ,IAFjC,OAGV,OAAO85H,YAAY/7F,EAAO1kB,KAAK+/N,IAHrB,KAG4Bp4O,IAAIq4O,QAAQ,IAAM,IAF1C,CAAC,QAAS,KAAM,KAAM,KAAM,MAE0Br4O,EACrE,EAEYknK,GAAkB,SAACh6I,EAAkBnoB,GAChD,IAAKmoB,EAAkB,MAAO,GAE9B,GAAIkd,MAAMyJ,QAAQ3mB,GAChB,OAAOA,EAET,IAAKnoB,EAAKuW,qBAAsB,MAAO,GACvC,IAaMiuJ,EAAa,CAbH,CACdjuK,GAAI,UAAY+c,KAAKwrH,SAAS9sH,SAAS,IAAIkB,MAAM,EAAG,GACpDoqF,iBAAkBt9F,EAAKuW,qBACvBA,qBAAsBvW,EAAKgI,eAC3B8zC,cAAe97C,EAAK87C,cACpBkwH,MAAOhsK,EAAKgsK,MACZhP,WAAYh9J,EAAKg9J,WACjBjkF,iBAAkB/4E,EAAK+4E,iBACvB8yF,WAAY7rK,EAAK6rK,WACjBzjJ,UAAWpoB,EAAKiI,iBAChB+6J,WAAYhjK,EAAKooB,UACjBzqB,UAAU,IAUZ,OAPA,OAAIwqB,QAAJ,IAAIA,KAAkBm1E,kBACpBknE,EAAWppK,KAAX,2BACK+sB,GADL,IAEExqB,UAAU,EACVpH,GAAI,UAAY+c,KAAKwrH,SAAS9sH,SAAS,IAAIkB,MAAM,EAAG,MAGjDsxJ,CACR,EAEYl4H,GAAwB,SAACroC,GACpC,OAAOA,EAAKmI,QAAUklF,KAAWrtF,EAAKmI,OAAO+D,cAC9C,EAEYspM,GAA0B,SAAC90M,GACtC,OAAKA,EAEE,2BACFA,GADL,IAEEq0E,kBAAmBm2J,GAAkBxqO,EAAIq0E,mBACzC53D,SAAU+tN,GAAkBxqO,EAAIyc,UAChCrlB,UAAW4I,EAAIpN,MACfyE,SAAU2I,EAAInN,KACdkN,YAAaC,EAAI5M,aACjBmM,KAAMS,EAAIpO,KATKoO,CAWlB,EAmBYo3C,GAAuB,SAAC93C,GACnC,IAAMsvO,EAAqB,OAAGtvO,QAAH,IAAGA,OAAH,EAAGA,EAAM0E,sBAC9B6qO,EAAe,CACnBr3L,OAAQ,GACRK,QAAS,GACTH,UAAW,GACXE,SAAU,GACVD,SAAU,GACVG,KAAM,IAEAlmC,EAA2Dg9N,EAA3Dh9N,qBAAsBvO,EAAqCurO,EAArCvrO,eAAgBC,EAAqBsrO,EAArBtrO,iBAE9C,OAAKD,EAIL,OAAIA,QAAJ,IAAIA,KAAgBtF,SAAS,YACpB,2BAAK8wO,GAAZ,IAA0Bj3L,SAAUt0C,IAGtC,OAAID,QAAJ,IAAIA,KAAgBtF,SAAS,YACpB,2BAAK8wO,GAAZ,IAA0Bl3L,SAAUr0C,IAGT,UAAzBsO,GAAA,OAAoCvO,QAApC,IAAoCA,KAAgBtF,SAAS,gBACxD,2BAAK8wO,GAAZ,IAA0Bh3L,QAAS,YAGR,UAAzBjmC,GAAA,OAAoCvO,QAApC,IAAoCA,KAAgBtF,SAAS,eACxD,2BAAK8wO,GAAZ,IAA0Br3L,OAAQ,WAGP,UAAzB5lC,GAAA,OAAoCvO,QAApC,IAAoCA,KAAgBtF,SAAS,gBACxD,2BAAK8wO,GAAZ,IAA0B/2L,KAAM,SAG3B,2BAAK+2L,GAAZ,IAA0Bn3L,UAAWp0C,IAvB5BurO,CAwBV,EAEY7tE,GAAiB,SAAC3E,GAC7B,IACE,IAAKA,EAAO,OAUZ,OARaA,EAAM5wJ,MAAM,KAEJrV,KAAI,SAACgY,GACxB,IAAI+mE,EAAI/mE,EAAE6iC,OAEV,OADal+C,IAAOoiF,EAAEyrF,SAAS,EAAG,GAAI,UAAU5tK,OAAO,aAExD,GAKF,CAFC,MAAOsvG,GACPhxG,QAAQgE,IAAI,mBAAoBgtG,EACjC,CACD,OAAO,IACR,EAEYwsI,GAAiB,WAE5B,IADA,IAAMvnJ,EAAQ,GACLjxF,EAAI,EAAGA,GAAK,IAAKA,IACxBixF,EAAM9wF,KAAK,CAAEmhB,MAAOthB,EAAGqhB,MAAOrhB,IAEhC,OAAOixF,CACR,EAKY+xE,GAAwB,SAAClmF,EAAKpgF,GACzC,IAAKogF,EAAK,MAAO,GACjB,GAAmB,IAAfA,EAAIj+E,OAAc,CACpB,IAAM0rK,EAAOztF,EAAI7kE,MAAM,EAAG,GACpBo9N,EAAQv4J,EAAI7kE,MAAM,EAAG,GACrBw7K,EAAM32G,EAAI7kE,MAAM,EAAG,GAEzB,OAAOxb,IAAO,GAAD,OAAI8tK,EAAJ,YAAY8qE,EAAZ,YAAqB5hD,IAAO/2L,OAAOA,GAAU,cAC3D,CACD,OAAOD,IAAOqgF,GAAKpgF,OAAOA,GAAU,cACrC,EAEY+7O,GAA0B,SAACnyM,GAEtC,IADA,IAAMoyM,EAAWpiN,SAASqiN,uBAAuBryM,GACxCtmC,EAAI,EAAGA,EAAI04O,EAAS75O,OAAQmB,IACnC04O,EAAS14O,GAAGunC,MAAM0K,QAAU,MAE/B,EAEYhrC,GAAqB,SAAC4uC,EAAMhtB,GACvC,GAAIA,IAAQk0D,IAAWt1E,SAAX,OAAoBohB,QAApB,IAAoBA,OAApB,EAAoBA,EAAKvN,uBAAyByhE,IAAWt1E,SAAX,OAAoBohB,QAApB,IAAoBA,OAApB,EAAoBA,EAAKw5E,mBACrF,MAAO,YAGT,IAAKxsD,EAAM,MAAO,gBAClB,IAAIvwC,GAAc,OAAJuwC,QAAI,IAAJA,OAAA,EAAAA,EAAM9xC,UAAN,OAAgB8xC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAMvwC,SAGpC,OADIA,GAAqC,gBAA1BA,EAAQ4P,gBAAiC5P,EAAU,iBAC3DA,GAAW,eACnB,EAEYo1F,GAA0B,SAACp1F,GACtC,IAAMysB,EAAkB,cAAZzsB,EAA0B,YAAc,gBACpD,OAAOuqO,KAAyB99M,EACjC,EAEY0+H,GAAkB,SAAC39I,GAC9B,OAAKA,EACiB,kBAARA,EAAmB1P,KAAK8V,MAAMpG,GAAOA,EADlC,CAAC,CAEnB,EAEYohO,GAAoB,SAACphO,GAChC,OAAKA,GACiB,kBAARA,EAAmB1P,KAAK8V,MAAMpG,GAD3BA,CAElB,EAEY67K,GAAoB,SAAClsK,GAAD,cAC/BA,QAD+B,IAC/BA,OAD+B,EAC/BA,EAAOjnB,QAAO,SAACq6C,GAAD,cAAUA,QAAV,IAAUA,OAAV,EAAUA,EAAM3b,OAAhB,IAAyBp6B,KAAI,SAAC28C,GAAD,MAAQ,CAAEguB,QAAShuB,EAAEguB,QAASzyE,MAAOykD,EAAEzkD,MAAvC,GADZ,EAGpBsvD,GAAkB,SAAClW,GAC9B,MACmB,0CAAT,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAU91C,KACO,0CAAT,OAAR81C,QAAQ,IAARA,OAAA,EAAAA,EAAU91C,KACO,0CAAT,OAAR81C,QAAQ,IAARA,OAAA,EAAAA,EAAU91C,KACO,0CAAT,OAAR81C,QAAQ,IAARA,OAAA,EAAAA,EAAU91C,KACO,0CAAT,OAAR81C,QAAQ,IAARA,OAAA,EAAAA,EAAU91C,KACO,0CAAT,OAAR81C,QAAQ,IAARA,OAAA,EAAAA,EAAU91C,KACO,0CAAT,OAAR81C,QAAQ,IAARA,OAAA,EAAAA,EAAU91C,GAKb,EAmHYg8G,GAAgB,CAC3Bt2G,KAAM,SAAC1F,GAAD,OAAQywC,aAAaG,QAAQ,MAAO5wC,EAApC,EACN2C,IAAK,kBAAM8tC,aAAaC,QAAQ,QAAU,IAArC,EACL/sC,MAAO,kBAAM8sC,aAAa8pM,WAAW,MAA9B,GAEI9iI,GAAuC,CAClD/xG,KAAM,SAAC8R,GAAD,OAASi5B,aAAaG,QAAQ,yBAA0Bp5B,EAAxD,EACNsuE,OAAQ,SAAC5yD,EAAKl2B,GACZ,IAAM09O,EAAkB5yO,KAAKC,UAC3BmrB,EACGhzB,QAAO,SAACgM,GAAD,OAAOA,EAAE0yB,OAAT,IACPp6B,KAAI,SAAC0H,GACJ,MAAO,CAAElM,GAAIkM,EAAElM,GAAIusC,MAAOrgC,EAAEqgC,MAC7B,KAGCi2G,EAAU16I,KAAK8V,MAAM6yB,aAAaC,QAAQ,2BAGhD,OAFA8xG,EAAQxlJ,GAAO09O,EACfjqM,aAAaG,QAAQ,yBAA0B9oC,KAAKC,UAAUy6I,IACvDA,CACR,EACD7/I,IAAK,SAAC8G,EAAMzM,EAAKsgP,GAAqB,IAAD,IAC/BxC,EAAU,KACVt4F,EAAU,KACd,IACE,IAAM+6F,EAAQ9sM,aAAaC,QAAQ,0BACnC,IAAI6sM,GAAmB,cAAVA,EAGX,OAAOD,EAFP96F,EAAU/xG,aAAaC,QAAQ,0BAIjC8xG,EAAU16I,KAAK8V,MAAM4kI,GACrBs4F,EAAUhzO,KAAK8V,MAAM4kI,EAAQxlJ,GACf,CAAd,MAAOme,KAAO,CAEhB,IAAK2zB,MAAMyJ,QAAQuiM,GAAU,OAAOwC,EAEpC,IAAIE,EAAW,UAAG1C,SAAH,aAAG,EAASt2O,KAAI,SAAC0H,GAC9B,IAAMsL,EAAM8lO,EAAgBr8L,MAAK,SAACzpC,GAAD,OAASA,EAAIxX,IAAMkM,EAAElM,EAArB,KAA4B,KAC7D,OAAO,2BACFwX,GADL,IAEEonB,SAAiE,IAAxD0+M,EAAgBl/J,WAAU,SAAC5mE,GAAD,OAASA,EAAIxX,IAAMkM,EAAElM,EAArB,IACnCusC,MAAOrgC,EAAEqgC,OAEZ,IAEKkxM,EAAM,UAAG3C,SAAH,aAAG,EAASt2O,KAAI,SAACgT,GAAD,OAASA,EAAIxX,EAAb,IAC5B,IAAKy9O,EAAQ,OAAOH,EACpB,IAAMI,EAAiBJ,EAAgBp9O,QAAO,SAACsX,GAAD,OAAUimO,EAAOtxO,SAASqL,EAAIxX,GAA9B,IAO9C,OANAw9O,EAAW,sBACNA,GADM,YAENE,EAAel5O,KAAI,SAAC4G,GACrB,OAAO,2BAAKA,GAAZ,IAAkBwzB,SAAS,EAAO2N,MAAO,QAC1C,KAGJ,EACD5oC,MAAO,kBAAM8sC,aAAa8pM,WAAW,yBAA9B,GAEI3kI,GAAqB,SAACz2G,GACjC,OAAKA,EACEA,EAAK0c,QAAQ,cAAe,IADjB,EAEnB,EACY42E,GAAiB,iDAAG,WAAOrnF,EAAM8B,GAAb,0FACzBw7B,EAAUhqB,YAAUtT,GACpBiP,EAAc,IAAIoe,KAAK,CAACiQ,GAAU,CAAE/rC,KAAM,QAFjB,SAGzBkpF,IAAUC,OAAOzrE,EAAjB,UAAiCnN,EAAjC,SAHyB,2CAAH,wDAKjB+uN,GAAkB,iDAAG,WAAO/hN,EAAUhN,EAAU2J,GAA3B,gGAC5BkkB,EAAQ,KACRJ,EAAU,KAFkB,kBAKX7jB,QAAQnU,IAAIuX,EAAU,CAAErD,OAAQA,IALrB,cAKxBzL,EALwB,gBAMPqN,MAAMrN,GANC,WAMxB5I,EANwB,QAQhBkW,GARgB,2CASrB,GATqB,yBAYXlW,EAASqW,OAZE,WAcZ,KAFZA,EAZwB,QAcrB4oB,KAdqB,2CAerB,GAfqB,eAkB9B9G,EAAUC,OAAOC,IAAIC,gBAAgBjiB,IACrCkiB,EAAQC,SAASC,cAAc,MACzBC,KAAOP,EACbI,EAAMziB,SAAWpL,EACjB8tB,SAASx8B,KAAKkjC,YAAY3G,GAC1BA,EAAMI,QAvBwB,mBAyBvB,GAzBuB,yCA2B9Bz7B,QAAQC,MAAM,qCAAd,MA3B8B,mBA4BvB,GA5BuB,yBA8B1Bo7B,IACFC,SAASx8B,KAAKmjC,YAAY5G,GAC1BH,OAAOC,IAAI+G,gBAAgBjH,IAhCC,6EAAH,0DAoClBgjN,GAA0B,SAACn4O,EAAWD,EAAUrB,GAa3D,MAZS,oBAAgBsB,EAAhB,wZAISD,EAJT,mCAKSrB,EALT,mKAaV,EACYk2N,GAAsB,SAACz/F,EAAO/xH,EAAS89D,EAASk3K,EAAaC,GAAS,IAAD,EAC1EzyO,EAAI,2BAAQuvH,GAAWA,EAAM9vG,UAAY,CAAC,GAE1CizN,EAAaC,mBAAmB3yO,EAAK0zN,OAAQ,eAc/C1zN,GAZiB,CACnB,SACA,SACA,SACA,SACA,cACA,cACA,UACA,qBACA,cACA,kBAGa4L,SAAQ,SAACha,GAChBoO,EAAKomF,eAAex0F,WACfoO,EAAKpO,EAEf,IAEH,IAAIghP,EAAY,GACZC,EAAc,EAClB,GAAI7yO,EAAK4uN,WAAWz2N,OAAS,IAAMmjE,EACjC,IAD2C,IAAD,WACjChiE,GADiC,QAElCw5O,EAAO9yO,EAAK4uN,WAAWt1N,GAEzBy5O,EAAS,KAETP,GAAeC,IACjBM,EAASN,EAAIzqI,OAAOnyD,MAAK,SAAC/0C,GAAD,OAAOA,EAAEuwG,YAAcyhI,EAAKzhI,SAA5B,KAG3B,IAAMjlG,EAAM,CACV4mO,WAAYF,EAAKE,WACjBC,WAAYH,EAAKG,WACjBC,WAAYJ,EAAKI,WACjBC,WAAYL,EAAKK,YAGbC,EAAYC,eAAeP,GAEjCD,GAA4BO,EAE5B,IAsBgF,IAtB1E7wM,EAAQjpC,EAAI,GAClB8G,OAAOC,OAAOL,EAAdI,OAAA,IAAAA,EAAA,KAAAA,OAAA,IAAAA,CAAA,qBACemiC,GAAUniC,OAAO8sC,OAAO9gC,GAClCtX,QAAO,SAACgM,GAAD,OAAOA,CAAP,IACPge,KAAK,MAHV1e,OAAA,IAAAA,CAAA,sBAIgBmiC,GAAUuwM,EAAKQ,WAJ/BlzO,OAAA,IAAAA,CAAA,sBAKgBmiC,GAAUuwM,EAAKQ,WAL/BlzO,OAAA,IAAAA,CAAA,mBAMamiC,GAAU6wM,GANvBhzO,OAAA,IAAAA,CAAA,kBAOYmiC,GAAUuwM,EAAK33N,OAP3B/a,OAAA,IAAAA,CAAA,sBAQgBmiC,GAAUuwM,EAAKzhI,WAR/BjxG,OAAA,IAAAA,CAAA,6BASuBmiC,GAAUuwM,EAAKS,kBATtCnzO,OAAA,IAAAA,CAAA,yBAUmBmiC,GAVnB,UAUgCviC,EAAKwzO,eAVrC,YAUuDjxM,IAVvDniC,OAAA,IAAAA,CAAA,iBAWWmiC,GAAUuwM,EAAKW,MAX1BrzO,OAAA,IAAAA,CAAA,iBAYWmiC,GAAUuwM,EAAKY,MAZ1BtzO,OAAA,IAAAA,CAAA,iBAaWmiC,GAAUuwM,EAAKa,MAb1BvzO,OAAA,IAAAA,CAAA,iBAcWmiC,GAAUuwM,EAAKc,MAd1B,GAeMpB,IAAW,iDACWjwM,GAAUuwM,EAAK/nB,MAD1B,0CAESxoL,GAAUviC,EAAK6zO,WAFxB,KAMbrB,GAAeO,GAAUA,EAAOe,YAAcf,EAAOe,WAAW37O,OAAS,KACrE,QAAN,EAAA46O,SAAA,mBAAQe,kBAAR,SAAoBloO,SAAQ,SAACujC,EAAM71C,GACjC,IAAMy6O,EAAaz6O,EAAI,EACvB0G,EAAK,WAAD,OAAY+zO,EAAZ,YAA0BxxM,IAAW4M,EAAKzY,OAC9C12B,EAAK,YAAD,OAAa+zO,EAAb,YAA2BxxM,IAAW4M,EAAKqsL,MAAQrsL,EAAK90B,IAC7D,KAGHu4N,EAAUn5O,KAAV,2BAAoBq5O,GAApB,IAA0BkB,aAAa,GAAD,OAAKh0O,EAAKwzO,eAAV,YAA4BjxM,KAnD1B,EACjCjpC,EAAI,EAAGA,EAAI0G,EAAK4uN,WAAWz2N,OAAQmB,IAAM,EAAzCA,GAsDX,MAA+BquB,GAAW3nB,EAAKi0O,YAA/C,mBAAoBrsN,GAApB,WA+CA,OA7CAxnB,OAAOC,OAAOL,EAAdI,OAAA,IAAAA,QAAA,IAAAA,CAAA,GACMyyO,EAAc,GAAK,CAAEznB,aAAcynB,EAAajkB,WAAYgkB,IADlE,IAEEqB,WAAYrsN,EACZssN,cAAe,IACfC,YAAa,GACbC,QAAS,KACTC,UAAW9kH,EAAMlyH,SAAW8vN,oBAAoBtC,QAA4B,UAAlBt7F,EAAMi9F,QAAsBj9F,EAAM+kH,QAAU,GACtGC,kBAAkB,UAAAhlH,EAAMg8F,sBAAN,eAAsB3sN,QAAQ6R,QAAQ,KAAM,MAAO,IACjE+hO,GAAe,CACjBgC,iBAAkBx0O,EAAKy0O,WACvBC,iBAAkB10O,EAAK20O,WACvBC,iBAAkB50O,EAAK60O,WACvBC,cAAe90O,EAAK+0O,QACpBC,cAAeh1O,EAAKi1O,QACpBC,uBAAwBl1O,EAAK6zO,UAC7BsB,cAAa,OAAEzC,QAAF,IAAEA,OAAF,EAAEA,EAAYlmB,QAC3B4oB,YAAa,YACbC,uBAAsB,OAAE5C,QAAF,IAAEA,OAAF,EAAEA,EAAK6C,cAC7BC,iBAAgB,OAAE7C,QAAF,IAAEA,OAAF,EAAEA,EAAY8C,WAC9BC,iBAAgB,OAAE/C,QAAF,IAAEA,OAAF,EAAEA,EAAY7xE,cAKhC2xE,GACAxyO,EAAKwsN,WAAL,OAAiBkmB,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAYlmB,UAC7BxsN,EAAK3C,SAAW8vN,oBAAoB3C,YACnCn0I,IAAWt1E,SAASf,EAAKwsN,UAE1BpsN,OAAOC,OAAOL,EAAM,CAClB0zN,OAAO,GAAD,mBACA1zN,EAAK0zN,QAAU,IADf,CAEJ,CACE8hB,WAAYx1O,EAAKw1O,WACjBhpB,QAASxsN,EAAKwsN,QACd3rD,WAAY7gK,EAAK6gK,WACjBmoD,eAAgBjzN,MAASsF,cACzBq6O,cAAwB,OAAVhD,QAAU,IAAVA,OAAA,EAAAA,EAAYgD,cAAe,GAAK,OAOtDC,uBAAuB31O,EAAMxC,GACtBwC,CACR,EAEYi8F,GAAsB,SAAChnG,EAAW8mG,EAAW1mC,EAAW8hG,EAAWxjG,GAC9E,OAAyB,IAArB1+D,EAAUkD,OAAqB,GAE5BlD,EAAUmE,KAAI,SAAC4J,GAAS,IAAD,IACtBouG,EAAQ,OAAGrV,QAAH,IAAGA,OAAH,EAAGA,EAAWlmD,MAAK,SAAC/hD,GAAD,OAAOA,EAAEc,KAAOoO,EAAIouG,QAApB,IAC3Bz1F,EAAQ,OAAG05C,QAAH,IAAGA,OAAH,EAAGA,EAAWxf,MAAK,SAAC/hD,GAAD,OAAOA,EAAEc,KAAOoO,EAAI6vB,SAApB,IAC3Bp+B,EAAM,OAAG0iK,QAAH,IAAGA,OAAH,EAAGA,EAAWthH,MAAK,SAACz7B,GAAD,OAAOA,EAAExlB,KAAOoO,EAAIhQ,QAApB,IACzBysB,EAAQ,OAAGk0C,QAAH,IAAGA,OAAH,EAAGA,EAAW9d,MAAK,SAACu8C,GAAD,OAAOA,EAAEx9F,KAAOoO,EAAI4jB,iBAApB,IAC3BgvN,EAAW,OAAGjiL,QAAH,IAAGA,OAAH,EAAGA,EAAW9d,MAAK,SAACu8C,GAAD,OAAOA,EAAEx9F,KAAOoO,EAAI6jB,iBAApB,IAC9BgvN,EAAW,OAAGliL,QAAH,IAAGA,OAAH,EAAGA,EAAW9d,MAAK,SAACu8C,GAAD,OAAOA,EAAEx9F,KAAOoO,EAAI8jB,gBAApB,IACpC,OAAO,2BACF9jB,GADL,IAEED,YAAY,GAAD,OAAKC,EAAI3M,aAAT,OAAuB2M,EAAID,aACtCquG,SAAUA,EAAQ,2BAAQA,GAAR,IAAkBx2F,MAAOw2F,EAASx8G,GAAI+lB,MAAOy2F,EAASr9G,OAAS,KACjF4nB,SAAUA,EAAQ,2BAAQA,GAAR,IAAkBf,MAAOe,EAAS/mB,GAAI+lB,MAAOgB,EAAS5nB,OAAS,KACjFU,OAAQA,EAAM,2BAAQA,GAAR,IAAgBmmB,MAAOnmB,EAAOG,GAAI+lB,MAAOlmB,EAAOV,OAAS,KACvEwS,OAAQvD,EAAI7M,IACZylG,oBAAoB,UAAA54F,EAAIwjB,wBAAJ,eAAsBm1E,mBAAoB,GAC9Dm6I,oBAAoB,UAAA9yO,EAAIwjB,wBAAJ,eAAsBC,YAAa,GACvD7f,WAAYnS,EAASA,EAAOV,KAAO,MACnCkuK,aAActmJ,EAAWA,EAAS5nB,KAAO,MACzCiuK,aAAc5wD,EAAWA,EAASr9G,KAAO,MACzC8tK,WAAYzwD,EAAWA,EAASx8G,GAAK,KACrCuiF,aAAY,OAAE13D,QAAF,IAAEA,OAAF,EAAEA,EAAU1rB,KACxBgiP,kBAAiB,OAAEt2N,QAAF,IAAEA,OAAF,EAAEA,EAAUrlB,UAC7B47O,iBAAgB,OAAEv2N,QAAF,IAAEA,OAAF,EAAEA,EAAUplB,SAC5B47O,gBAAe,OAAEx2N,QAAF,IAAEA,OAAF,EAAEA,EAAUoU,WAC3Bh8B,WAAU,OAAE4nB,QAAF,IAAEA,OAAF,EAAEA,EAAU7qB,GACtBshP,YAAW,OAAEz2N,QAAF,IAAEA,OAAF,EAAEA,EAAU1K,IACvBohO,cAAa,OAAE12N,QAAF,IAAEA,OAAF,EAAEA,EAAU22N,MACzBC,cAAa,OAAET,QAAF,IAAEA,OAAF,EAAEA,EAAahhP,GAC5B0hP,qBAAoB,OAAEV,QAAF,IAAEA,OAAF,EAAEA,EAAax7O,UACnCm8O,gBAAe,OAAEX,QAAF,IAAEA,OAAF,EAAEA,EAAa7hP,KAC9ByiP,oBAAmB,OAAEZ,QAAF,IAAEA,OAAF,EAAEA,EAAav7O,SAClCo8O,sBAAqB,OAAEb,QAAF,IAAEA,OAAF,EAAEA,EAAa/hN,WACpC6iN,eAAc,OAAEd,QAAF,IAAEA,OAAF,EAAEA,EAAa7gO,IAC7B4hO,cAAa,OAAEd,QAAF,IAAEA,OAAF,EAAEA,EAAajhP,GAC5BgiP,qBAAoB,OAAEf,QAAF,IAAEA,OAAF,EAAEA,EAAaz7O,UACnCy8O,gBAAe,OAAEhB,QAAF,IAAEA,OAAF,EAAEA,EAAa9hP,KAC9B+iP,oBAAmB,OAAEjB,QAAF,IAAEA,OAAF,EAAEA,EAAax7O,SAClC08O,sBAAqB,OAAElB,QAAF,IAAEA,OAAF,EAAEA,EAAahiN,WACpCmjN,eAAc,OAAEnB,QAAF,IAAEA,OAAF,EAAEA,EAAa9gO,KAEhC,GACF,EACYozF,GAAc,SAAC1lF,GAC1B,IAAKA,EAAK,OAAO,EACjB,IACE,OAAQ2vG,WAAW3vG,GAAKkvN,QAAQ,EAGjC,CAFC,MAAO5hO,KACP,OAAO,CACR,CACF,EACYu8M,GAAuB,SAAClgN,EAAK6qO,GACxC,OAAK7qO,GAAsB,kBAARA,GAAqBs3B,MAAMyJ,QAAQ8pM,IAItDA,EAAarrO,SAAQ,SAACha,GAChBwa,EAAIg6E,eAAex0F,WACdwa,EAAIxa,EAEd,IAEMwa,GATEA,CAUV,EACYuoF,GAAe,SAAC/lE,GAC3B,OAAKA,EAEExS,SAASwS,GAAKte,eAAe,SAFnB,CAGlB,EAEYquF,GAA4B,CACvCrkG,KAAM,SAAC8R,GAAD,OAASi5B,aAAaG,QAAQ,SAAU9oC,KAAKC,UAAUyP,GAAvD,EACN7U,IAAK,WACH,OAAI8tC,aAAaC,QAAQ,UAChB5oC,KAAK8V,MAAM6yB,aAAaC,QAAQ,WAElCy3G,cACR,EACDxkJ,MAAO,kBAAM8sC,aAAa9sC,OAAnB,GAGImjG,GAAiB,SAACw7I,GAC7B,OAAKA,EACM,2BAAPA,EAAwC,MACrCA,EAAGtrL,MAAM,SAAS9sC,KAAK,IAFd,EAGjB,EACYy1M,GAAgB,SAACx4M,GAC5B,IACE,OAAOA,EAAM3iB,KAAI,SAACgT,GAChB,IAAI+iC,EAAI,eAAQ/iC,GAIhB,OAHA+iC,EAAI,OAAagoM,YAAYhoM,EAAM,UACnCA,EAAI,QAAcgoM,YAAYhoM,EAAM,WAE7B,2BAAKA,GAAZ,IAAkBpxC,SAAUoxC,EAAKpxC,UAAY,GAC9C,GAGF,CAFC,MAAOunG,GACPhxG,QAAQgE,IAAI,kBAAmBgtG,EAChC,CACD,OAAOvpF,CACR,EAcYs1M,GAAe,SAACn9N,GAC3B,IAAIomG,EAAM,YAAOpmG,GA4BjB,OA3BAomG,EAASA,EAAOlhG,KAAI,SAACgT,GAAS,IAAD,UACvB2pC,EAAC,eAAQ3pC,GACb2pC,EAAC,SAAeohM,YAAYphM,EAAG,YAC/BA,EAAC,WAAiBohM,YAAYphM,EAAG,cACjCA,EAAC,cAAoBohM,YAAYphM,EAAG,iBACpCA,EAAC,eAAqBohM,YAAYphM,EAAG,kBACrCA,EAAC,eAAqBohM,YAAYphM,EAAG,mBAEjC,UAAAA,EAAE14C,cAAF,eAAUmR,iBAAkB2+M,oBAAoB3C,YAClDz0K,EAAE14C,OAAS8vN,oBAAoBgR,MAGjC,IAAIiZ,EAAQrhM,EAAEpuC,iBAAmBouC,EAAEj4C,cACrB,MAAVs5O,IAAeA,EAAQrhM,EAAEj4C,eAE7B,IAAM41N,EAAS39K,EAAE29K,QAA8B,kBAAb39K,EAAE29K,OAAsBh3N,KAAK8V,MAAMujC,EAAE29K,QAAxD,UAAkE39K,EAAE29K,cAApE,QAA8E,GAE7F,OAAO,2BACF39K,GADL,IAEEshM,UAAS,OAAE3jB,QAAF,IAAEA,GAAF,UAAEA,EAAQ79K,MAAK,SAAC/0C,GAAD,OAAOA,EAAEu2O,SAAT,WAAf,aAAE,EAAkCC,UAC7C5jB,SACAxI,eAAe,UAAAn1K,EAAE14C,cAAF,eAAUmR,iBAAkB2+M,oBAAoBlC,QAC/DssB,iBAAkBxhM,EAAEwhM,kBAAoBxhM,EAAEv2C,UAC1Cg4O,oBAAoB,UAAAzhM,EAAE0hM,sBAAF,eAAkBjC,aAAc,GACpD7tO,gBAAiByvO,GAEpB,GAEF,EACYr3C,GAAc,SAAC3zL,EAAKnX,GAAe,IAAD,UACvC8xC,EAAU,GACV2wM,EAAQ,eAAQtrO,GAChBpJ,GAAO/N,GAAa,IAAI4gD,MAAK,SAAC/0C,GAAD,OAAOA,EAAElM,KAAOwX,EAAI/J,UAApB,IAgBnC,OAdAq1O,EAAS9jB,QAAsC,kBAArB8jB,EAAS9jB,QAAuBl3N,KAAK8V,MAAMklO,EAAS9jB,SAAW8jB,EAAS9jB,QAClG8jB,EAAS1wO,sBACmC,kBAAnC0wO,EAAS1wO,sBACZtK,KAAK8V,MAAMklO,EAAS1wO,uBACpB0wO,EAAS1wO,sBACf0wO,EAASzjE,UAA0C,kBAAvByjE,EAASzjE,UAAyBv3K,KAAK8V,MAAMklO,EAASzjE,WAAayjE,EAASzjE,UACxGyjE,EAASj4N,SACPi4N,EAASj4N,UAAyC,kBAAtBi4N,EAASj4N,SAAwB/iB,KAAK8V,MAAMklO,EAASj4N,UAAYi4N,EAASj4N,SAExGsnB,EAAQttC,MAAK,UAAAi+O,EAAS9jB,eAAT,eAAkBt9N,SAAU,IAEzC,UAAIohP,EAAS9jB,eAAb,OAAI,EAAkBr9N,SAASwwC,EAAQttC,MAAK,UAAAi+O,EAAS9jB,eAAT,eAAkBr9N,UAAW,IACzEwwC,EAAQttC,MAAK,UAAAi+O,EAAS9jB,eAAT,eAAkBp9N,OAAQ,IAEhC,2BACFkhP,GADL,IAEEr9O,SAAUq9O,EAASr9O,SACnBD,UAAWs9O,EAASt9O,UACpB2I,YAAa20O,EAAS30O,YAAT,UAA0B20O,EAASrhP,aAAnC,OAAiDqhP,EAAS30O,aAAgB,GACvF7M,MAAOwhP,EAASxhP,MAChBs4J,SAAUkpF,EAASz1E,aACnBx7I,UAAWixN,EAASjxN,UACpB2wF,QAA8B,OAArBsgI,EAAStgI,QAAmB,IAAMsgI,EAAStgI,QACpDrwE,QAASA,EAAQjoB,KAAK,KACtB64N,gBAAiBD,EAASC,iBAAmB,GAC7CpoH,MAAOmoH,EAASE,gBAAkB,IAAM,IACxCC,eAAc,OAAE70O,QAAF,IAAEA,OAAF,EAAEA,EAAK3F,OACrBihB,KAAK,2BACCo5N,EAASp5N,KAAOo5N,EAASp5N,KAAO,CAAC,GADnC,IAEF1f,SAAY,OAAHoE,QAAG,IAAHA,OAAA,EAAAA,EAAKsb,QAAL,UAAao5N,EAASp5N,YAAtB,aAAa,EAAe1f,UAAW,MAGrD,EAsDY+zH,GAAyB,SAACxQ,EAAKnvH,GAC1C,IAAMoD,EAAey3D,YAAsBs0D,EAAI21H,cACzCp6O,EAAMmwD,YAAsBs0D,EAAI41H,YAChC3X,EAAavyK,YAAsBs0D,EAAI61H,yBAEvC5rO,EAAM,CACVymH,KAAMvkH,IACNtb,SAAUA,EACVyK,WAAY0kH,EAAI81H,iBAAmB,GACnClkP,KAAMouH,EAAI+1H,aAAe,GACzB5hP,OAAQ6rH,EAAIg2H,gBAAkB,GAC9B5hP,QAAS4rH,EAAIi2H,kBAAoB,GACjC5hP,KAAM2rH,EAAIk2H,aAAe,GACzB5hP,MAAO0rH,EAAIm2H,cAAgB,GAC3B5hP,IAAKyrH,EAAIo2H,YAAc,GACvBniP,aAAcA,GAAgB,KAC9BsH,IAAKA,GAAO,KACZxH,MAAOisH,EAAIq2H,cAAgB,KAC3B/9O,aAAa,GAAD,OAAK0nH,EAAIs2H,gCAAkC,GAA3C,YAAiDt2H,EAAIu2H,+BAAiC,IAClG/6O,YAAayiO,GAAc,KAC3BxlO,cAAeunH,EAAIw2H,2BAA6B,KAChD36O,WAAYmkH,EAAIy2H,2BAA6B,KAC7C76O,SAAUokH,EAAI02H,6BAA+B,KAC7Cr7O,QAAQ,aACNs7O,gBAAiB32H,EAAI42H,wBAA0B,SAC3C52H,EAAI62H,0BAA4B,CAAEC,kBAAmB92H,EAAI62H,4BAIjE,OAAO54O,OAAOykG,YACZzkG,OAAO20D,QAAQ3oD,GAAKhT,KAAI,mCAAExH,EAAF,KAAOgpB,EAAP,WAAkB,CAAChpB,EAAsB,kBAAVgpB,EAAqBA,EAAMq5B,OAASr5B,EAAnE,IAE3B,EAEYs+N,GAA4B,SAAC9+O,EAAWD,EAAUrB,GAa7D,MAZS,oBAAgBsB,EAAhB,2OAEkBnH,IAAOkmP,OAFzB,aAEoClmP,IAAOkmP,OAF3C,4IAIGh/O,EAJH,6BAKGrB,EALH,iJAaV,EAEYm7E,GAAyB,SAACr/E,GAAmB,IAAfrD,EAAc,uDAAP,GAChD,OAAI0B,IAAOmc,OACH,wCAAN,OAA+C7d,EAA/C,YAAuDqD,GAEnD,gDAAN,OAAuDrD,EAAvD,YAA+DqD,EAChE,EACYy5H,GAAc,SAAC+qH,GAC1B,OAAKA,EACDnmP,IAAO+2F,wBACFovJ,EAEF1iM,GAAY0iM,EAAI3oO,QAAQ,OAAQ,MAJtB,EAKlB,EAEYwiH,GAAS,SAAC9jF,EAAMkwH,EAAOg6E,EAAQv1K,GAAtB,OACpB,oBACElkC,UAAU,WACViB,MAAO,CACLa,UAAW,SACXmM,aAAc,QAJlB,SAOGsB,EAAO,EACN,cAACmqM,KAAD,CACEz4M,MAAO,CAAE8G,MAAO,WAChBolC,GAAI,CACFngB,SAAU,gBACVn2D,MAAO,CACL1C,KAAMslP,EACNz1K,KAAME,EACNy1K,WAAYl6E,EACZpqG,WAAYoqG,IARlB,SAYG1qE,GAAaxlD,KAGhBA,GAxBgB,EA8DTqqM,GAAc,SAACjqL,GAE1B,OADcA,EAAS9gD,MAAM,KAChBC,KACd,EAEY+qO,GAAc,SAAClqL,GAC1B,IAAMs/E,EAAQt/E,EAAS9gD,MAAM,KAE7B,OADAogI,EAAMngI,MACCmgI,EAAM/vH,KAAK,IACnB,EAEY46N,GAAgB,SAAC15O,EAAMi0L,GAClC,IAAMplD,EAAQ7uI,EAAKyO,MAAM,KACzB,OAAOogI,EAAMolD,GAAOplD,EAAMolD,GAAO,EAClC,EAEY3uK,GAAiB,SAAChwB,GAAc,IAAD,EAC1C,OAAO,4BACLkB,KAAMlB,EAASkB,KACfV,IAAKC,IAAOT,EAASQ,KAAKE,OAAO,YACjCE,MAAOZ,EAASY,MAChBkE,UAAW9E,EAAS8E,UACpBC,SAAU/E,EAAS+E,SACnB6I,SAAU5N,EAAS+E,UANrB,yBAOY/E,EAAS4N,UAPrB,+BAQkB5N,EAAS+Q,gBAR3B,iCASoB/Q,EAASgR,kBAT7B,qCAUwBhR,EAASsf,sBAVjC,6BAWgBtf,EAASiO,eAAgB,GAXzC,4BAYejO,EAASc,cAZxB,4BAaed,EAASe,aAbxB,oBAcOf,EAASa,KAdhB,sBAeSb,EAASmB,OAflB,uBAgBUnB,EAASgB,QAhBnB,wBAiBWhB,EAASiB,SAjBpB,2BAkBcjB,EAASkR,aAAc,GAlBrC,6BAmBgBlR,EAAS6wB,cAnBzB,0BAoBa7wB,EAAS0hD,WApBtB,yBAqBY1hD,EAASkgB,UArBrB,uBAsBUlgB,EAAS65B,QAtBnB,iCAuBoB75B,EAASomD,kBAvB7B,kCAwBqBpmD,EAASqmD,mBAxB9B,gCAyBmBrmD,EAASghL,iBAzB5B,yBA0BYhhL,EAASsmD,UA1BrB,6BA2BgBtmD,EAASqnD,cA3BzB,wBA4BWrnD,EAAS+pD,SA5BpB,gCA6BmB/pD,EAASilB,iBA7B5B,4BA8BejlB,EAASihL,cAAe,GA9BvC,mBA+BMjhL,EAASV,IA/Bf,oBAgCOU,EAASoB,KAhChB,qBAiCQpB,EAASiN,MAAQ,IAjCzB,GAkCMjN,EAAS0uG,OAAS,CAAEA,MAAO1uG,EAAS0uG,QAlC1C,IAmCE4sD,SAAUt7J,EAASs7J,WAAY,EAC/B4lB,aAAclhL,EAASkhL,cAAgB,GACvCC,SAAUnhL,EAASmhL,UAAY,EAC/BxhK,WAAY3f,EAAS2f,aAAc,EACnCimC,KAAM5lD,EAAS4lD,OAAQ,EACvB92B,WAAY9uB,EAAS8uB,WACrBvsB,WAAYvC,EAASuC,WACrBs/E,aAAc7hF,EAAS6hF,aACvBl1E,UAAW3M,EAAS2M,UACpB01E,QAASriF,EAASqiF,SAAW,IAEhC,EAEYs3F,GAAU,kBAAM3gK,GAAN,EAuCVm+H,GAA4B,WACvC,IAAM9tD,EAzB4B,SAACg7J,GACnC,IACMC,EADOx5O,OAAO69B,KAAKoH,cACAwQ,MAAK,SAACjkD,GAAD,OAASA,EAAIunH,SAASwgI,EAAtB,IAC9B,GAAIC,EAAa,CACf,IAAMj7J,EAAWt5C,aAAaC,QAAQs0M,GACtC,OAAOl9O,KAAK8V,MAAMmsE,EACnB,CACD,OAAO,IACR,CAiBkBk7J,CAA4B,aAC7C,OAAIl7J,GAAYA,EAASm7J,eAhBH,SAACtiP,GACvB,IAAMuiP,EAAUviP,EAAWksF,QAAO,SAACtqF,EAAK+7M,GAEtC,OADA/7M,EAAI+7M,EAAKznG,MAAQynG,EAAKC,MACfh8M,CACR,GAAE,CAAC,GAEExE,EAAKmlP,EAAO,IACZ3/O,EAAY2/O,EAAQ,oBACpB1/O,EAAW0/O,EAAQ,mBAGzB,MAAO,CAAEj/O,OAAQlG,EAAIuF,SAFX,UAAMC,EAAN,YAAmBC,GAG9B,CAKU2/O,CAAgBr7J,EAASm7J,gBAE3B,IACR,EAkBYjpI,GAAe,SAAC7wG,EAAMpL,GACjC,OAAOwL,OAAO8sC,OACZltC,EAAK0jF,QAAO,SAAC8G,EAAKp+E,GAEhB,OADAo+E,EAAIp+E,EAAIxX,IAAOwX,EACRo+E,CACR,GAAE,CAAC,GAEP,EACY+5G,GAAkB,SAAC01C,EAAYC,GAC1C,IAAKD,EAAY,MAAO,GAExB,IAEM33O,IAFQ23O,EAAW96O,OAAS,CAAC,GACX80K,WAAa,CAAC,GACf3xK,MAAQ,GAE/B,SAAKohC,MAAMyJ,QAAQ7qC,IAAyB,IAAhBA,EAAKnK,SAE1BmK,EAAKtK,MAAK,SAACm3C,GAAD,eAAc,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAMx0B,aAAN,eAAanM,kBAAb,OAA+B0rO,QAA/B,IAA+BA,GAA/B,UAA+BA,EAAa5oP,aAA5C,aAA+B,EAAoBkd,cAA7D,GAClB,EAEY21L,GAAc,SAAC81C,GAC1B,IAAKA,EAAY,MAAO,GAExB,IAEM33O,IAFQ23O,EAAW96O,OAAS,CAAC,GACX80K,WAAa,CAAC,GACf3xK,MAAQ,GAE/B,OAAIA,EAAKnK,OAAS,EACTmK,EAAKlJ,KAAI,SAAC+1C,GAAD,OAAUA,EAAKx0B,KAAf,IAAsBmE,KAAK,MAGtCm7N,EAAWpyO,SACnB,EAEYw8B,GAA0B,SAAC9vC,GAAW,IAAD,EAC1C+7H,EAAS,OAAG/7H,QAAH,IAAGA,GAAH,UAAGA,EAAO6C,gBAAV,aAAG,EAAiB4I,KAEnC,MAAgC,kBAA5B,OAAOswH,QAAP,IAAOA,OAAP,EAAOA,EAAW/7H,OACb+7H,EAAU/7H,MACRmvC,MAAMyJ,QAAN,OAAcmjF,QAAd,IAAcA,OAAd,EAAcA,EAAW38F,QAC3B28F,EAAU38F,OAAOv6B,KAAI,SAAC2W,GAAD,OAASA,EAAIsK,IAAb,IAAmByE,KAAK,MAE7C,eAEV,EAEY+hF,GAA0B,WACrC,IAAMs5I,EAAiB,CAErB15C,OAAQ,aACRD,YAAY,EACZE,aAAa,EACb05C,iBAAiB,EACjBC,oBAAoB,EACpB1zI,kBAAkB,EAClB2iF,kBAAmBr2L,IAAOq2L,kBAC1Bn4B,4BAA4B,GAG9B,OAAQl+J,IAAOD,UACb,KAAKinL,KACL,KAAKD,KACH,OAAO,2BACFmgE,GADL,IAEE7wD,kBAAmB/1I,qDACnBktJ,OAAQ,aACRC,aAAa,EACb05C,iBAAiB,EACjBC,oBAAoB,EACpB1zI,kBAAkB,EAClBwqD,4BAA4B,IAEhC,KAAKu5E,KACL,KAAKlpD,IACL,KAAKipD,IACL,KAAKD,IACL,KAAKnyB,KACH,OAAO,2BACF8hC,GADL,IAEE7wD,kBAAmB/1I,qDACnBktJ,OAAQ,aACRC,aAAa,EACb05C,iBAAiB,EACjBC,oBAAoB,EACpB1zI,kBAAkB,IAEtB,KAAK4jI,KACH,OAAO,2BACF4P,GADL,IAEE15C,OAAQ,aACR25C,iBAAiB,EACjB15C,aAAa,EACb25C,oBAAoB,IAExB,QACE,OAAOF,EAEZ,EAEYjyD,GAAwB,SAAC,GAAgE,IAA9D3xF,EAA6D,EAA7DA,YAAaqK,EAAgD,EAAhDA,cAAeu/B,EAAiC,EAAjCA,eAAgBjwC,EAAiB,EAAjBA,WAClF,OAAOqG,EACJzhG,QAAO,SAACq6C,GAAU,IAAD,EAChB,QAAqB,YAAjBA,EAAK40B,UAA0B68B,EAAc4/F,gBAC5B,UAAjBrxJ,EAAK40B,UAAwB68B,EAAc8/F,kBAC1B,sBAAjBvxJ,EAAK40B,SAAmC,OAACo8D,QAAD,IAACA,GAAD,UAACA,EAAgB3iI,eAAjB,OAAC,EAAyB8C,iBACjD,mBAAjB6uC,EAAK40B,UAAiCmsB,KACrB,WAAjB/gD,EAAK40B,UAAwBmsB,KAElC,IACA92F,KAAI,SAAC0H,GACJ,MAAkB,YAAdA,EAAEijE,SAAyB68B,EAAc4/F,WACpC,2BAAK1/L,GAAZ,IAAexP,MAAOsvG,EAAc6/F,SAEpB,sBAAd3/L,EAAEijE,QACG,2BAAKjjE,GAAZ,IAAegjE,UAAW,sBAErBhjE,CACR,GACJ,EAEYq8N,GAAmB,SAACh+N,GAAW,IAAD,IACnCm7O,EAAS,IAAInmO,IAQnB,OAPK,OAALhV,QAAK,IAALA,GAAA,UAAAA,EAAO80K,iBAAP,mBAAkB3xK,YAAlB,SAAwBsJ,SAAQ,oBAAG8O,SAAH,kBAAc,GAAd,GACrB9O,SAAQ,YAAuC,IAA9B2uO,EAA6B,EAAnClgO,KAAmC,EAApBI,SACjC6/N,EAAO7yN,IAAI8yN,EACZ,GAH6B,IAKf72M,MAAMlG,KAAK88M,EAAOptM,UAEnBw2C,QAAO,SAAC8G,EAAKgwJ,EAAUj4M,GAErC,OADAioD,EAAI,QAAD,OAASjoD,EAAQ,IAAOi4M,EACpBhwJ,CACR,GAAE,CAAC,EACL,EAEY2tF,GAAgB,SAACx/I,GAC5B,OAAKA,GAEgB+K,MAAMyJ,QAAQxU,GAAUA,EAAS,CAACA,IAGpDv/B,KAAI,SAACu/B,GAAD,mBAAC,eACDA,GADA,IAEHhe,MAAO+7B,GAAY/d,EAAOhe,MAAMs5B,QAChCr5B,MAAO87B,GAAY/d,EAAO/d,MAAMq5B,SAH7B,IAKJpgD,MAAK,SAAC4lB,EAAGC,GAAJ,OAAUD,EAAEkB,MAAMhB,cAAcD,EAAEiB,MAAlC,IAVYqoN,IAWrB,EAEYyX,GAAuB,SAAC9hN,GACnC,OAAKA,EAEE+K,MAAMyJ,QAAQxU,GAAUA,EAAO,GAAKA,EAFvB,IAGrB,EAyBK+hN,GAAgB,CACpB,YACA,cAaIC,GAAc,CAClBC,IAAK,OACLC,OAAQ,QACRC,KAAM,MACNC,MAAO,MACPC,OAAQ,MACR3Y,cAAe,OACfG,SAAU,MACV,eAAgB,QAChBD,QAAS,QAIL0Y,GAAwB,CAAC,YAAa,aAAc,WAAY,WAAY,YAAa,aAwBlFC,GAAyB,SAACt/N,GACrC,IAAMsxB,EAAS9sC,OAAO8sC,OAAOiyL,YAAWvjN,EAAQq/N,KAC7CnmP,QAAO,SAAC8lB,GAAD,MAAqB,KAAVA,CAAX,IACPxhB,KAAI,SAACwhB,GAAD,OAAWw3G,WAAWx3G,EAAtB,IACJ9lB,QAAO,SAAC8lB,GAAD,OAAYwhH,MAAMxhH,EAAlB,IAEV,GAAsB,IAAlBsyB,EAAO/0C,QAAkC,IAAlB+0C,EAAO/0C,OAChC,OAAO,EAGT,IAAMgjP,EAAexpO,KAAK6mC,IAAL,MAAA7mC,KAAI,YAAQu7B,IAC3BkuM,EAAezpO,KAAK8mC,IAAL,MAAA9mC,KAAI,YAAQu7B,IAEjC,QAAKkvF,MAAM++G,KAAkB/+G,MAAMg/G,KAC3B,GAAN,OAAUD,EAAV,cAA4BC,EAG/B,EAcYC,GAAe,SAAC5wO,EAAQmR,GAQnC,IAPA,IAII0/N,EACAC,EALEC,EAtDiB,SAAC5/N,GACxB,OAAOujN,YAAWvjN,EAAQ8+N,GAC3B,CAoDuBe,CAAiB7/N,GAEjC8/N,EAAYt7O,OAAO69B,KAAKu9M,GAKrBliP,EAAI,EAAGA,EAAIoiP,EAAUvjP,OAAQmB,GAAK,EAAG,CAC5C,IAAMqiP,EAASD,EAAUpiP,GAEnBsiP,EAAUF,EAAUpiP,EAAI,GAM9B,GAJAgiP,EAAWlpH,WAAWopH,EAAcG,IAEpCJ,EAAYnpH,WAAWopH,EAAcI,KAEhCx/G,MAAMk/G,KAAcl/G,MAAMm/G,IAAc9wO,GAAU6wO,GAAY7wO,GAAU8wO,EAC3E,OAAOI,EACJlrO,QAAQ,iBAAkB,OAC1BwjC,OACAxlC,MAAM,KAAK,EAEjB,CAKD,OAHA6sO,EAAWA,GAAY,EACvBC,EAAYA,GAAa,EAErBnpH,WAAW3nH,GAAU6wO,EAAiB,MAEtClpH,WAAW3nH,GAAU8wO,EAAkB,OAEpC9wO,CACR,EAEYggF,GAAsB,SAAC,GAA6E,IAA3EpvE,EAA0E,EAA1EA,SAAUC,EAAgE,EAAhEA,SAAUijC,EAAsD,EAAtDA,UAAWC,EAA2C,EAA3CA,UAAW5iC,EAAgC,EAAhCA,OACxEigO,GADwG,EAAxBrgO,kBACrE0/N,GAAsB,OAACt/N,QAAD,IAACA,IAAU,CAAC,IAInD,GAAIigO,EAAU,OAAOA,EAErB,IAAMC,OAA8B78N,IAAb5D,GAAuC,OAAbA,GAAkC,KAAbA,EAAkBA,EAAWkjC,EAC7Fw9L,OAA8B98N,IAAb3D,GAAuC,OAAbA,GAAkC,KAAbA,EAAkBA,EAAWkjC,EAE7Fw9L,OAA4B/8N,IAAnB68N,GAAmD,OAAnBA,GAA8C,KAAnBA,EACpEG,OAA4Bh9N,IAAnB88N,GAAmD,OAAnBA,GAA8C,KAAnBA,EAE1E,OAAOC,GAAUC,EAAV,UACAH,EADA,YACkBC,GACrBC,EAAM,WACFF,GACJG,EAAM,WACFF,GACJ,YACL,EAEYr6G,GAA8B,SAAC9lH,GAC1C,IAAMsgO,EAAY,OAAGtgO,QAAH,IAAGA,OAAH,EAAGA,EAAS,GACtBuiH,EAA0B+9G,EAA1B/9G,UAAWC,EAAe89G,EAAf99G,WACnB,OAAKD,GAAcC,EACb,GAAN,OAAUD,EAAV,cAAyBC,GADa,EAEvC,EA+BYn/E,GAA2C,SAAC,GAAe,IAAbC,EAAY,EAAZA,MACjDtjC,EAAwBsjC,EAAxBtjC,OAAQwjC,EAAgBF,EAAhBE,YACV+8L,EA/BS,SAACC,EAAah9L,GAW7B,IAVA,IAAM30C,EAASq/F,OAAO1qD,GAUtB,MARsB,CACpB,CAAErrD,KAAM,SAAUsoP,IAAKD,EAAY39G,UAAW69G,KAAMF,EAAY19G,YAChE,CAAE3qI,KAAM,QAASsoP,IAAKD,EAAY79G,SAAU+9G,KAAMF,EAAY59G,WAC9D,CAAEzqI,KAAM,SAAUsoP,IAAKD,EAAYj+G,UAAWm+G,KAAMF,EAAYh+G,YAChE,CAAErqI,KAAM,MAAOsoP,IAAKD,EAAYz9G,OAAQ29G,KAAMF,EAAYx9G,SAC1D,CAAE7qI,KAAM,OAAQsoP,IAAKD,EAAY/9G,QAASi+G,KAAMF,EAAY99G,WAG9D,eAAmC,CAA9B,IAAMP,EAAK,KACRs+G,EAAMvyI,OAAOi0B,EAAMs+G,KACnBC,EAAOxyI,OAAOi0B,EAAMu+G,MAE1B,GAAI7xO,GAAU4xO,GAAO5xO,GAAU6xO,EAC7B,MAAM,MAAN,OAAaD,EAAb,cAAsBC,EAEzB,CAED,IAAMC,EAAazyI,OAAOsyI,EAAY19G,YACtC,OAAIj0H,EAAS8xO,EACL,MAAN,OAAaA,IAGfjoP,QAAQgE,IAAI,mBACL,GACR,CAIqBkkP,CAAS5gO,EAAO,GAAIwjC,GACxC,OAAO+8L,CACR,EAEY79L,GAAqB,SAACy/E,EAAOtzH,EAAQ2Q,EAAaqhO,GAC7D,IAAKhyO,EAAQ,MAAO,CAAEkQ,MAAO,GAAIgtB,MAAO,QAASC,WAAY,MAAO+W,cAAel0C,GAEnF,IAAMiyO,EAAcD,GAAaA,EAAUtkP,OAAS,EAAIskP,EAAU,GAAK,CAAC,EAClEE,EAAkB,2BACnBD,GADmB,IAEtBE,WAAY7+G,EAAM1iH,SAClBwhO,YAAa9+G,EAAMziH,WAGfwhO,EAAazB,GAAa5wO,EAAQkyO,GAExC,GAAI92L,YAAmBp7C,GAAS,CAC9B,IAAMsyO,EAAmBrgP,KAAK8V,MAAM/H,GAEpC,OAAIsyO,EAAiBniO,QAAUQ,EACtB,CACLT,MAAO,GACPgtB,MAAOgzM,GAAYoC,EAAiBniO,OACpCgtB,WAAY,OACZ+W,cAAeo+L,EAAiBpiO,MAAMm+B,cACtC4F,SAAU,QAIP,CACL/jC,MAAO,GACPgtB,MAAO,QACPC,WAAY,OACZ+W,cAAeo+L,EAAiBpiO,MAAMm+B,cACtC4F,SAAU,SAEb,CAED,MAAO,CACL/jC,MAAOmiO,EACPn1M,MAAOgzM,GAAYmC,GACnBl1M,WAAY,OACZ+W,cAAel0C,EACfi0C,SAAsC,QAA5Bi8L,GAAYmC,GAAwB,OAAS,MAE1D,EAEY99L,GAAkB,SAACP,GAG9B,OAFeoH,YAAmBpH,GAGjB/hD,KAAK8V,MAAMisC,GAEZ9jC,MAET8jC,CACR,EAEYI,GAAgB,SAAC1jC,GAC5B,OAAIuoB,MAAMyJ,QAAQhyB,IAAUA,EAAMhjB,OAAS,EAClCgjB,EAAM,GAAGR,OAEN,OAALQ,QAAK,IAALA,OAAA,EAAAA,EAAOR,QAAS,EACxB,EAEYokC,GAAiB,SAAC5P,EAAM6tM,GACnC,IAAMvyO,EAASu0C,GAAgB7P,EAAKsP,YACpC,OAAIu+L,GAA2B,aAAXvyO,EACZ,GAAN,OAAUA,EAAV,sBAAiC,OAAJ0kC,QAAI,IAAJA,OAAA,EAAAA,EAAMhV,OAAQ,IAEtC1vB,CACR,EAsCYq0C,GAAkB,SAACusC,EAAY3sC,GAC1C,IAAQtjC,EAAmCiwE,EAAnCjwE,YAAaqjC,EAAsB4sC,EAAtB5sC,WAAYtjC,EAAUkwE,EAAVlwE,MAIjC,OAtB6B,SAAC8hO,EAAgBxyO,GAC9C,IAAIyyO,EAAYD,EAAexuO,MAAM,KAErC,GAAyB,IAArByuO,EAAU/kP,OAGZ,OAFiB6mD,GAAgBv0C,KAEbyyO,EAAU,GAE9B,MAAmBA,EAAU9jP,IAAI0wG,QAAQh1G,OAAOszD,SAAhD,mBAAK8e,EAAL,KAAYC,EAAZ,KAEA,OAAIirD,WAAW3nH,IAAW2nH,WAAWlrD,IAAUkrD,WAAW3nH,IAAW2nH,WAAWjrD,EAMnF,CAImBg2K,CAAgB/hO,EAAaqjC,GAGtC,eAGH,eAAN,OAAmC,SAAbC,EAAsB,KAAO,KAAnD,YAA2DD,EAA3D,YAAyEtjC,EAAMR,MAiBhF,EAEM,SAASuvI,GAAgBkzF,EAAYC,GAC1C,OAAOD,EAAWhkP,KAAI,SAACgT,GACrB,IAAMkxO,EAAc,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAexnM,MAAK,SAACxrC,GAAD,OAAOA,EAAEzV,KAAOwX,EAAIxX,EAApB,IAC3C,OAAO,2BAAK0oP,GAAmBlxO,EAChC,GACF,CAEM,SAASogG,GAAiB5/B,GAC/B,OAAOA,EAAEv8D,WAAWI,QAAQ,wBAAyB,IACtD,CAEM,IAAM8mJ,GAAuB,SAACgmF,GACnC,IAAMC,EAAkB,eAAQppI,KAEhC,IAAK,IAAMxiH,KAAO2rP,EACZA,EAAkBn3J,eAAex0F,KACG,kBAA3B2rP,EAAkB3rP,IAAgD,OAA3B2rP,EAAkB3rP,GAClE4rP,EAAmB5rP,GAAnB,2BACKwiH,IAAuCxiH,IACvC2rP,EAAkB3rP,IAGvB4rP,EAAmB5rP,GAAO2rP,EAAkB3rP,IAKlD,OAAO4rP,CACR,EAEYv7H,GAAa,SAAC71G,GACzB,OAAKA,EACE,2BACFA,GADL,IAEE5O,QAAS4O,EAAI5O,QAAUd,KAAK8V,MAAMpG,EAAI5O,SAAW,KACjDf,cAAe2P,EAAI3P,cAAgBC,KAAK8V,MAAMpG,EAAI3P,eAAiB,KACnEkkB,iBAAkBvU,EAAIuU,iBAAmBjkB,KAAK8V,MAAMpG,EAAIuU,kBAAoB,KAC5EpjB,cAAe6O,EAAI7O,cAAgBb,KAAK8V,MAAMpG,EAAI7O,eAAiB,OANpD6O,CAQlB,EAEYuqG,GAAuC,SAAC9C,GACnD,IAAMppG,EAAS,CAAC,EAShB,OAPAopG,EAAUjoG,SAAQ,SAACujC,GACjB1kC,EAAO0kC,EAAKv0B,QAAS,EACrBnQ,EAAOivB,QAAS,EAChBjvB,EAAOkhG,OAAQ,EACflhG,EAAO3L,QAAS,CACjB,IAEM2L,CACR,EAEY8nF,GAAgC,SAACkrJ,EAAgBC,GAC5D,GAA8B,IAA1BD,EAAetlP,OAAc,OAAO,EACxC,GAAIslP,EAAetlP,SAAWulP,EAAevlP,OAC3C,OAAO,EAGT,IAAK,IAAImB,EAAI,EAAGA,EAAImkP,EAAetlP,OAAQmB,IAAK,CAC9C,IAAMqkP,EAAOF,EAAenkP,GACtBskP,EAAOF,EAAepkP,GAE5B,GAAIqkP,EAAKx8M,QAAUy8M,EAAKz8M,OAASw8M,EAAKnqN,UAAYoqN,EAAKpqN,SAAWmqN,EAAK/oP,KAAOgpP,EAAKhpP,GACjF,OAAO,CAEV,CAED,OAAO,CACR,EAEY41K,GAAoC,SAACqzE,GAChD,IAAKA,EAAY,MAAO,CAAE3iP,UAAW,KAAMC,QAAS,MACpD,MAAyC0iP,EAAWpvO,MAAM,KAA1D,mBAAOqvO,EAAP,KAAwBC,EAAxB,KAQA,MAAO,CAAE7iP,UANSnF,IAAO+nP,EAAiB,YAAY9nP,OAAO,cAMzCmF,QAJjB4iP,GAAmC,aAAlBA,EAEdhoP,IAAOgoP,EAAe,YAAY/nP,OAAO,cADzCD,MAASC,OAAO,cAIvB,EAWYgoP,GAAqB,SAACthN,GACjC,IAAMuhN,EAAW,CAAC,MAAO,mBAWzB,OAToB79O,OAAO69B,KAAKvB,GAAU2vC,OAAM,SAACz6E,GAC/C,GAAIqsP,EAASl9O,SAASnP,GACpB,OAAO,EAGT,IAAMgpB,EAAQ8hB,EAAS9qC,GACvB,MAAiB,KAAVgpB,QAA0BqE,IAAVrE,GAAiC,OAAVA,CAC/C,GAGF,EAEKw9K,GAAmB,CACvB91L,KAAM,GACNg7G,IAAK,GACL3kF,OAAQ,GACRwB,KAAM,GACNk+J,UAAW,IAGAkE,GAAkB,SAAChyG,EAAO4mE,GACrC,IAAIsrC,GAAa,EAqCjB,MAAO,CAAED,aAnCYjyG,EAAMnxF,KAAI,SAAC+1C,GAC9B,GAAyB,OAArBA,EAAK44D,cAAuD,IAA/BopD,EAKPhiH,EAAKopJ,UAAUlsH,OACrC,SAAC6xK,GAAD,OAAsB,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAU57O,OAAQ47O,EAAS/jN,MAAQ+jN,EAASvlN,SAAWw4H,GAA8B+sF,EAAS5lD,IAA5G,MAIAnpJ,EAAKopJ,UAAU9+L,KAAf,eAAyB2+L,KACzBqE,GAAa,QAEV,IAA0B,OAArBttJ,EAAK44D,aAAwBopD,IAA+BhiH,EAAKopJ,UAAUpgM,OAAQ,CACrEg3C,EAAKopJ,UAAUlsH,OACrC,SAAC6xK,GAAD,OACU,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAU57O,OACS,MAAX,OAAR47O,QAAQ,IAARA,OAAA,EAAAA,EAAU57O,OACV47O,EAAS/jN,MACS,KAAlB+jN,EAAS/jN,MACT+jN,EAASvlN,QACW,KAApBulN,EAASvlN,SACRw4H,GAA8B+sF,EAAS5lD,IAP1C,MAWAnpJ,EAAKopJ,UAAU9+L,KAAf,eAAyB2+L,KACzBqE,GAAa,EAEhB,CAED,OAAOttJ,CACR,IAEsBstJ,aACxB,EAEYqC,GAA2B,SAACq/C,GACvC,OAAOA,EAAcz6J,QAAO,SAAC8G,EAAKr7C,EAAM5M,GAMtC,OALI4M,EAAK44D,aAAe54D,EAAK44D,YAAY1tF,KACvCmwE,EAAI,QAAD,OAASjoD,EAAQ,IAAO4M,EAAK44D,YAAY1tF,KAE5CmwE,EAAI,QAAD,OAASjoD,EAAQ,IAAO,KAEtBioD,CACR,GAAE,CAAC,EACL,EAEK4zJ,GAAuB,SAAC7zJ,EAAO31F,GACnC,IAAM2tC,EAAQgoD,EAAMvX,WAAU,SAAC7jC,GAAD,OAAUA,EAAKv6C,KAAOA,CAAtB,IAC9B,OAAe,IAAX2tC,EACK,CAAEA,QAAO4M,KAAMo7C,EAAMhoD,IAErB,IAEV,EAEK87M,GAAsB,SAAC9zJ,EAAO31F,GAClC,IAAM2tC,EAAQgoD,EAAMvX,WAAU,SAAC7jC,GAAD,OAAUA,EAAK90B,OAASzlB,CAAxB,IAC9B,OAAe,IAAX2tC,EACK,CAAEA,QAAO4M,KAAMo7C,EAAMhoD,IAErB,IAEV,EAEYw8J,GAA2B,SAACo/C,EAAehtF,GACtD,IAAMmtF,EAAU,GAEZC,EAAgBJ,EAAcrpP,QAAO,SAACq6C,GAAD,OAAUA,EAAK44D,WAAf,IAA4B3uG,KAAI,SAAC+1C,GAAD,OAAUA,EAAK44D,WAAf,IAEzE,IAA8B,IAAzBw2I,EAAcpmP,QAAiD,OAAjCgmP,EAAc,GAAGp2I,eAAwD,IAA/BopD,EAC3E,MAAO,CAAE58J,MAAO,sBANmE,oBASlE4pP,GATkE,IASrF,2BAAkC,CAAC,IAAxBhvM,EAAuB,QAChC,GAAIA,EAAK44D,cAA8C,IAA/BopD,EAAqC,CAAC,IAAD,gBAC1BhiH,EAAKopJ,WADqB,yBAChDimD,EADgD,QAEnD3+B,EAAQ,2BACT2+B,GADS,IAEZl8O,KAAK,2BACAk8O,EAAmBl8O,MADpB,IAEFkY,QAASkpB,MAAMyJ,QAAQqxM,EAAmB7lN,QACtC6lN,EAAmB7lN,OACnB6lN,EAAmB7lN,OACnB,CAAC6lN,EAAmB7lN,QACpB,KACJ8lN,mBAAqC,OAAlBD,QAAkB,IAAlBA,OAAA,EAAAA,EAAoB3iO,kBAAmB,GAC1DA,gBAAmC,OAAlB2iO,QAAkB,IAAlBA,KAAoB3iO,gBAAkB,CAAC2iO,EAAmB3iO,iBAAmB,OAI5F6iO,EAAQN,GAAqBE,EAASz+B,EAASv9M,KAAK1N,IAE1D,IAAK8pP,GAASV,GAAmBn+B,GAAW,CAU1C,IAEM8+B,GAFWj7M,MAAMyJ,QAAN,OAAc0yK,QAAd,IAAcA,OAAd,EAAcA,EAAUviG,KAAxB,OAA+BuiG,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAUviG,IAAM,QAACuiG,QAAD,IAACA,OAAD,EAACA,EAAUviG,MAEnDlkH,KAAI,SAAC+1C,GAAD,mBAAC,eACxBA,GADuB,IAE1BhV,KAAI,OAAE0lL,QAAF,IAAEA,OAAF,EAAEA,EAAU1lL,KAChB+tE,gBAAe,OAAE23G,QAAF,IAAEA,OAAF,EAAEA,EAAUxnB,UAC3B1/J,OAAM,OAAEknL,QAAF,IAAEA,OAAF,EAAEA,EAAUlnL,QAJQ,IAYtBimN,EAAkBL,EAAczpP,QAAO,SAAC+pM,GAAD,oBAC3CghB,QAD2C,IAC3CA,GAD2C,UAC3CA,EAAUvnB,WADiC,aAC3C,EAAetgM,MAAK,SAACsK,GAAD,OAAUA,EAAKsY,QAAUikL,EAASxkL,MAAQ/X,EAAKqY,QAAUkkL,EAASvtM,KAAlE,GADuB,IAI7CgtP,EAAQ7kP,KAAR,2BACKomN,EAASv9M,MADd,IAEEmY,SAAUkkO,EACVjkO,SAAUkkO,EACVr+C,YAAoB,OAARsf,QAAQ,IAARA,OAAA,EAAAA,EAAUtf,aAAc,KAEvC,MAAM,GAAIm+C,GAASV,GAAmBn+B,GAAW,CAChD,IAAMg/B,EAAS,eAAQH,EAAMvvM,MACvB2vM,EAAaT,IAA6B,OAATQ,QAAS,IAATA,OAAA,EAAAA,EAAWnkO,WAAY,GAAIy0B,EAAK44D,YAAY1tF,MACnF,GAAKykO,EAiBE,CACL,IAAMvjH,EAAM,2BACPskF,EAASviG,KADF,IAEVnjF,KAAM0lL,EAAS1lL,KACf+tE,gBAAiB23G,EAASxnB,UAC1B1/J,OAAQknL,EAASlnL,SAGnBkmN,EAAUnkO,SAASokO,EAAWv8M,OAAO9nB,SAAShhB,KAAK8hI,GACnDsjH,EAAUpkO,SAAShhB,KAAK8hI,GAExB+iH,EAAQI,EAAMn8M,OAASs8M,CACxB,KA7BgB,CACf,IAAME,EAAa,CAAC,2BAEbl/B,EAASviG,KAFG,IAGfnjF,KAAM0lL,EAAS1lL,KACf+tE,gBAAiB23G,EAASxnB,UAC1B1/J,OAAQknL,EAASlnL,UAGfqmN,EAAM,2BACP7vM,EAAK44D,aADE,IAEVttF,SAAUskO,IAEZF,EAAUpkO,SAAShhB,KAAKslP,EAAW,IAEnCF,EAAUnkO,SAASjhB,KAAKulP,GACxBV,EAAQI,EAAMn8M,OAASs8M,CACxB,CAaF,CArFwD,EAC3D,2BAAkD,GADS,mCAuF5D,CACF,CAlGoF,mCAmGrF,OAAOP,CACR,EAEY5lD,GAAkB,SAACylD,EAAe9jO,GAC7C,OAAO8jO,EAAcnmP,MAAK,SAACm3C,GAAD,aAAc,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAM44D,mBAAN,eAAmB1tF,QAASA,CAAtC,GAC3B,EAEK4kO,GAAoB,SAAC3mD,EAAK4mD,GAC9B,OAAO5mD,EAAIl/L,KAAI,SAAC+1C,GACd,IAAIx0B,EAAQ,GAENg5K,EAAYurD,EAAQ5sO,QAAQ68B,EAAKv0B,OAMvC,OAJmB,IAAf+4K,IACFh5K,EAAQ4pD,OAAOqV,aAAa,GAAK+5G,IAG5B,CACLh5K,MAAOA,EACPC,MAAOu0B,EAAKv0B,MAEf,GACF,EAEY0hL,GAAqB,SAACn9L,EAAOggP,GAAc,IAAD,EAEjDvmD,EAAgBnuE,YAAgB00H,GAEhCC,EAAgB9vG,YAAYspD,EAAe,MAIzCsmD,EAAU9+O,OAAO8sC,OAAOiyL,YAAWhgO,EAFtB,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,YAIpF3F,GAAa,OAAL2F,QAAK,IAALA,GAAA,UAAAA,EAAO80K,iBAAP,eAAkB3xK,OAAQ,GAExC9I,EAAMoS,SAAQ,SAACi0M,GAAc,IAAD,IACpBs+B,EAAgB,CACpB77O,KAAMu9M,EACNviG,KAAa,OAARuiG,QAAQ,IAARA,OAAA,EAAAA,EAAUplM,WAAY,GAC3Bke,OAAgB,OAARknL,QAAQ,IAARA,KAAUrqM,SAAW,CAAC,CAAEmF,MAAOklM,EAASrqM,SAAUoF,MAAOilM,EAASrqM,WAAcqqM,EAASrlM,QACjG2f,MAAc,OAAR0lL,QAAQ,IAARA,OAAA,EAAAA,EAAU1lL,OAAQ,EACxBk+J,WAAmB,OAARwnB,QAAQ,IAARA,GAAA,UAAAA,EAAUplM,gBAAV,mBAAqB,UAArB,eAAyBytF,kBAAmB,EACvDowF,IAAK2mD,IAA0B,OAARp/B,QAAQ,IAARA,OAAA,EAAAA,EAAUnlM,WAAY,GAAIwkO,GACjDrjO,iBAAyB,OAARgkM,QAAQ,IAARA,OAAA,EAAAA,EAAU4+B,oBAAqB,MAElDW,EAAc,GAAG7mD,UAAU9+L,KAAK0kP,EACjC,IAID,IAAMkB,EAAoB,IAAIpgL,IAoC9B,OAlCAzlE,EAAMoS,SAAQ,SAACtJ,GAAU,IAAD,EAClB,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAMoY,gBAAN,SAAgB9O,SAAQ,SAACynL,GACvBgsD,EAAkBngL,IAAIm0H,EAAQh5K,KAAMg5K,EACrC,GACF,IAE2B3vJ,MAAMlG,KAAK6hN,EAAkBnyM,UAErCthC,SAAQ,SAACynL,GAC3B,IAAMisD,EAAWJ,EAAQ5sO,QAAQ+gL,EAAQh5K,OACvB,IAAdilO,IACFF,EAAcE,EAAW,GAAGv3I,YAAcsrF,EAE7C,IAqBMjzL,OAAO8sC,OAAOkyM,EACtB,EAEYlrJ,GAA2B,SAACzhG,GACvC,IAAKA,EAAM,MAAO,GAElB,IAAM8sP,EAAe9sP,EAAKgc,MAAM,KAAKC,MAErC,OAAK6wO,EAEYA,EAAa9wO,MAAM,QAAQC,MAFlBjc,CAI3B,EAEY+sP,GAAuB,SAACj1J,EAAOk1J,EAAYjuP,GACtD,IAAM2kN,EAAS,GACXupC,EAAe,EAgBnB,OAdAD,EAAW7zO,SAAQ,SAACyqB,EAAMkM,GACxB,IAAI8zK,EAAQ9rH,EAAMh5E,MAAMmuO,EAAcA,EAAerpN,GAErD,GAAIggL,EAAMl+M,OAASk+B,EAAM,CACvB,IAAMspN,EAAoBnuP,EAAqB+wC,IAAU,GACnDq9M,EAAevpN,EAAOggL,EAAMl+M,OAC5B0nP,EAAcF,EAAkBpuO,MAAM,EAAGquO,GAC/CvpC,EAAK,sBAAOA,GAAP,YAAiBwpC,GACvB,CAED1pC,EAAO18M,KAAK48M,GACZqpC,GAAgBrpN,CACjB,IAEM8/K,CACR,EAEY51B,GAAe,iDAAG,wHAASvtL,EAAT,EAASA,SAAU4mB,EAAnB,EAAmBA,aAAnB,IAAiCpgB,aAAjC,MAAyC,GAAzC,EACzBxG,IAAawuL,IADY,sBAEPhoL,GAASA,EAAMrB,OAAS,GAFjB,qBAEqBqB,EAFrB,sCAEmCogB,IAFnC,iCAErBkmO,EAFqB,KAIrBC,EAAoBD,EAAYhrP,QAAO,SAACwN,GAAD,MAA4B,iBAAlBA,EAAKuX,QAAf,IACvCmmO,EAAaF,EAAYhrP,QAAO,SAACwN,GAAD,MAA4B,iBAAlBA,EAAKuX,QAAf,IAEhComO,EAA6BF,EAAkB3mP,KAAI,SAACkS,GAAO,IAAD,IAC9D,MAAO,CACLja,aAAcia,EAAE+O,KAChB/oB,MAAOga,EAAEvX,KACTxC,KAAI,OAAE+Z,QAAF,IAAEA,GAAF,UAAEA,EAAG9N,eAAL,iBAAE,EAAYu3F,eAAd,aAAE,EAAqBp6E,MAE9B,IAEKulO,EAAqBF,EAAW5mP,KAAI,SAACkS,GAAO,IAAD,IAC/C,MAAO,CACLja,aAAcia,EAAE+O,KAChB/oB,MAAOga,EAAEvX,KACTxC,KAAI,OAAE+Z,QAAF,IAAEA,GAAF,UAAEA,EAAG9N,eAAL,iBAAE,EAAYu3F,eAAd,aAAE,EAAqBp6E,MAE9B,IAEKwlO,EAAgC,CACpC3uP,IAAqB,GAAG2G,OACxB3G,IAAqB,GAAG2G,OACxB3G,IAAqB,GAAG2G,QAGpBioP,EAA0BZ,GAC9BU,EACAC,EACA3uP,KAGI6uP,EAA2BD,EAAwBhnP,KAAI,SAACi9M,EAAO9zK,GACnE,OAAwB,IAAjB8zK,EAAMl+M,OAAe3G,IAAqB+wC,GAAS8zK,CAC3D,IArC0B,kBAuCpB,CACL1kN,aAAcsuP,EAA2B9nP,OAAS8nP,EAA6BtuP,IAC/EH,qBAAsB6uP,IAzCG,iCA6CtB,CACL1uP,aAA2B,yCAAbqB,EAAsDnB,IAA0BF,IAC9FH,qBAAsBA,MA/CK,4CAAH,sDAiEf2nI,GAAoB,SAAChqF,EAAMhtB,GACtC,IAAKuhB,MAAMyJ,QAAN,OAAchrB,QAAd,IAAcA,OAAd,EAAcA,EAAK3H,SACtB,OACE,oBAA8BlpB,MAAM,GAApC,SACG,KADH,iBAAmB69C,EAAKv6C,KAM5B,IAAMtD,EAAQ6wB,EAAI3H,QAAQphB,KAAI,SAACu/B,GAAD,OAAYA,EAAOhe,KAAnB,IAA0BmE,KAAK,MAEvDlE,EAAQuH,EAAI3H,QAAQriB,OAAS,EAAI,QAAiC,IAAvBgqB,EAAI3H,QAAQriB,OAAegqB,EAAI3H,QAAQ,GAAGG,MAAQ,GAEnG,OACE,oBAA8BkmB,MAAO,CAAEK,OAAQ,WAAa5vC,MAAOA,EAAnE,SACGspB,GADH,iBAAmBu0B,EAAKv6C,IAI3B,EAEYskI,GAAqB,SAAC/2G,GAAS,IAAD,IACnCvH,EAAK,OAAGuH,QAAH,IAAGA,GAAH,UAAGA,EAAK3kB,eAAR,iBAAG,EAAcw9B,gBAAjB,aAAG,EAAwB5hC,KAAI,SAAC+1C,GAAD,OAAUA,EAAK79C,KAAf,IAAsBwtB,KAAK,MAErE,OACE,oBAA+B+hB,MAAO,CAAEK,OAAQ,WAAa5vC,MAAOspB,EAApE,SACGA,GADH,mBAAqBuH,EAAIvtB,IAI5B,EAcYw+H,GAAsB,iDAAG,+GAEvB,KAFuB,+BAAc,GAAd,uBAG5BpzH,EAAO,CACX,CAAE,aAAc,kBAAmB8zH,OAAQ,eAAgBC,MAAO,OAClE,CAAE,aAAc,cAAeD,OAAQ,eAAgBC,MAAO,YAC9D,CAAE,aAAc,iBAAkBD,OAAQ,eAAgBC,MAAO,uBACjE,CAAE,aAAc,mBAAoBD,OAAQ,eAAgBC,MAAO,IACnE,CAAE,aAAc,cAAeD,OAAQ,eAAgBC,MAAO,iBAC9D,CAAE,aAAc,eAAgBD,OAAQ,eAAgBC,MAAO,MAC/D,CAAE,aAAc,aAAcD,OAAQ,eAAgBC,MAAO,SAC7D,CAAE,aAAc,eAAgBD,OAAQ,eAAgBC,MAAO,gBAC/D,CAAE,aAAc,eAAgBD,OAAQ,eAAgBC,MAAO,IAC/D,CAAE,aAAc,iCAAkCD,OAAQ,eAAgBC,MAAO,IACjF,CAAE,aAAc,gCAAiCD,OAAQ,eAAgBC,MAAO,IAChF,CAAE,aAAc,4BAA6BD,OAAQ,eAAgBC,MAAO,IAC5E,CAAE,aAAc,4BAA6BD,OAAQ,eAAgBC,MAAO,IAC5E,CAAE,aAAc,8BAA+BD,OAAQ,eAAgBC,MAAO,IAC9E,CAAE,aAAc,yBAA0BD,OAAQ,eAAgBC,MAAO,SACzE,CAAE,aAAc,2BAA4BD,OAAQ,eAAgBC,MAAO,KAnB3C,SAsB5B1sC,GAAkBrnF,EAAM,+BAtBI,qCAwB5BA,EAAO,CACX,CACEi4O,gBAAiB,aACjBC,YAAa,mBACbC,eAAgB,cAChBC,iBAAkB,GAClBC,YAAa,cACbC,aAAc,KACdC,WAAY,QACZniP,aAAc,WACdsH,IAAK,WACLxH,MAAO,mBACPuiP,+BAAgC,OAChCC,8BAA+B,MAC/B/6O,YAAa,GACb/C,cAAe,oBACfg+O,0BAA2B,GAC3BC,4BAA6B,EAC7BE,uBAAwB,QACxBC,yBAA0B,IAE5B,CACEf,gBAAiB,aACjBC,YAAa,cACbC,eAAgB,aAChBC,iBAAkB,QAClBC,YAAa,aACbC,aAAc,KACdC,WAAY,QACZniP,aAAc,WACdsH,IAAK,WACLxH,MAAO,sBACPuiP,+BAAgC,OAChCC,8BAA+B,QAC/B/6O,YAAa,GACb/C,cAAe,4BACfg+O,0BAA2B,GAC3BC,4BAA6B,EAC7BE,uBAAwB,QACxBC,yBAA0B,SAE5B,CACEf,gBAAiB,aACjBC,YAAa,cACbC,eAAgB,aAChBC,iBAAkB,GAClBC,YAAa,SACbC,aAAc,KACdC,WAAY,QACZniP,aAAc,WACdsH,IAAK,GACLxH,MAAO,sBACPuiP,+BAAgC,MAChCC,8BAA+B,UAC/B/6O,YAAa,GACb/C,cAAe,0BACfg+O,0BAA2B,GAC3BC,4BAA6B,GAC7BE,uBAAwB,QACxBC,yBAA0B,KAnFI,UAuF5B3xJ,GAAkBrnF,EAAM,6BAvFI,4CAAH,qDA2FtBghI,GAAmB,SAAC9lH,GAC/B,IAAMolO,EAAmB,IAAIrhL,IAW7B,OATY,OAAZ/jD,QAAY,IAAZA,KAActP,SAAQ,YAAkB,IAAf4O,EAAc,EAAdA,QAChB,OAAPA,QAAO,IAAPA,KAAS5O,SAAQ,SAAC+sB,GAAY,IAAD,EACrBhe,EAAK,UAAGge,EAAOhe,aAAV,aAAG,EAAcs5B,OACxB,OAACqsM,QAAD,IAACA,KAAkBttI,IAAIr4F,IACT,OAAhB2lO,QAAgB,IAAhBA,KAAkBphL,IAAIvkD,EAAOge,EAEhC,GACF,IAEM+K,MAAMlG,KAAK8iN,EAAiBpzM,SACpC,EAEYgsJ,GAAoB,SAACl5L,GAChC,IAAKA,EAAM,MAAO,GAKlB,OADmB0jC,MAAMlG,KAAK,IAAIyhC,IAAIj/D,EAAK5G,KAAI,SAAC+1C,GAAD,MAAU,EAFtCinC,EAEiDjnC,EAAKx0B,MAF9Cy7D,EAAI3lE,QAAQ,gBAAiB,IAAIjC,eAEqB2gC,GAF/D,IAACinC,CAE4B,KAA0ClpC,SAE1F,EAEYiS,GAAgC,SAAC,GAA6B,IAA3BC,EAA0B,EAA1BA,YAAaxjC,EAAa,EAAbA,OACrD2kO,EAAWz2I,OAAO1qD,GAExB,OAAKmhM,GAAYz2I,OAAOluF,EAAO+iH,SAAW4hH,GAAYz2I,OAAOluF,EAAOgjH,UAAa2hH,EAAWz2I,OAAOluF,EAAO+iH,QACjG,MACE4hH,GAAYz2I,OAAOluF,EAAOuiH,YAAcoiH,GAAYz2I,OAAOluF,EAAOwiH,YACpE,SACEmiH,GAAYz2I,OAAOluF,EAAOyiH,UAAYkiH,GAAYz2I,OAAOluF,EAAO0iH,UAClE,OACEiiH,GAAYz2I,OAAOluF,EAAO2iH,WAAagiH,GAAYz2I,OAAOluF,EAAO4iH,WACnE,QAEN+hH,GAAYz2I,OAAOluF,EAAO6iH,YAAc8hH,GAAYz2I,OAAOluF,EAAO8iH,aACnE6hH,EAAWz2I,OAAOluF,EAAO8iH,YAElB,SAEA,qBAEV,EAWYz4C,GAAiB,SAAC9oB,GAC7B,OAAQA,GACN,IAAK,MACH,MAAO,kBACT,IAAK,MACL,IAAK,OACH,MAAO,aACT,IAAK,MACH,MAAO,YACT,IAAK,MACH,MAAO,YACT,IAAK,MACH,MAAO,aACT,IAAK,MACL,IAAK,OACH,MAAO,qBACT,IAAK,MACL,IAAK,OACH,MAAO,2BACT,QACE,MAAO,2BAEZ,EAUY63B,GAAgB,SAACpgG,GAC5B,IAAKA,EAAI,MAAO,GAChB,IAAM4rP,EAAU5rP,EAAG6Z,MAAM,KACzB,OAAO+xO,EAAQA,EAAQroP,OAAS,EACjC,EAEYutD,GAAyB,SAAC6kC,GACrC,IAAKA,EAAO,MAAO,GACnB,IAAM9/E,EAAS,GACXg2O,EAAe,KAkBnB,OAhBK,OAALl2J,QAAK,IAALA,KAAO3+E,SAAQ,SAACujC,GACVA,EAAK6R,UACHy/L,GACFh2O,EAAOhR,KAAKgnP,GAEdA,EAAe,CAAEz/L,SAAU7R,EAAK6R,SAAUuF,YAAa,KAC9Ck6L,GACTA,EAAal6L,YAAY9sD,KAAK01C,EAEjC,IAGGsxM,GACFh2O,EAAOhR,KAAKgnP,GAGPh2O,CACR,EAEYm7C,GAAyB,SAAC,GAA6B,IAA3B7lD,EAA0B,EAA1BA,QAASxO,EAAiB,EAAjBA,KAAM8oB,EAAW,EAAXA,KACtD,GAAI9oB,IAASg6F,KAAiBQ,2BAA6Bx6F,IAASg6F,KAAiBS,2BAA4B,CAC/G,aAA6CjsF,QAA7C,IAA6CA,OAA7C,EAA6CA,EAAS2jF,QACpD,SAAC8G,EAAKr7C,GACJ,IAAMkX,EAAerH,GAAgB7P,EAAKsP,YAM1C,MALuC,gBAA/B,OAAJtP,QAAI,IAAJA,OAAA,EAAAA,EAAMupF,0BACRluC,EAAIlkC,gBAAgB7sD,KAApB,2BAA8B01C,GAA9B,IAAoCkX,kBAEpCmkC,EAAIpkC,gBAAgB3sD,KAApB,2BAA8B01C,GAA9B,IAAoCkX,kBAE/BmkC,CACR,GACD,CAAElkC,gBAAiB,GAAIF,gBAAiB,KAVlCE,EAAR,EAAQA,gBAAiBF,EAAzB,EAAyBA,gBAazB,MAAO,CACLpF,SAAQ,OAAEjhD,QAAF,IAAEA,OAAF,EAAEA,EAAU,GAAGghD,UACvB1mC,OACA+rC,kBACAE,kBAEH,CACD,OAAO,IACR,EAEYwlF,GAAsB,SAACvyG,GAClC,OAAKA,EACEsyG,IAAiCh2F,MAAK,SAACvqC,GAAD,OAAOA,EAAEsP,QAAU2e,CAAnB,IADzB,IAErB,EAEY0wK,GAA+B,SAACzwM,GAS3C,OARuB,OAAGA,QAAH,IAAGA,OAAH,EAAGA,EAAOxB,MAAK,SAACm3C,GAAD,MAAmC,iBAArB,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAMu7C,eAAhB,KASlCk0I,IACAA,IAA8B9pO,QAAO,SAACq6C,GAAD,MAA2B,oBAAjBA,EAAK40B,OAAf,GAC1C,EAEY69D,GAAmB,SAAC3mH,EAAYO,GAC3C,OAAIP,IAAe4vE,KAAas2C,SACvB51C,KAAiB41C,SACflmH,IAAe4vE,KAAaC,YAC9BtvE,EACH+vE,KAAiBQ,0BACjBR,KAAiBY,6BACZlxE,IAAe4vE,KAAa82C,aAC9BnmH,EACH+vE,KAAiBS,2BACjBT,KAAiBa,8BAEdb,KAAiBU,IAE3B,EAEYu1C,GAAqB,SAACtmH,EAAcD,EAAYO,GAC3D,IAAKA,EAAmB,MAAO,GAE/B,IAAMmvE,EAAY,GA2BlB,OAzBY,OAAZzvE,QAAY,IAAZA,KAActP,SAAQ,SAACujC,GAAU,IAAD,IACxB/zB,EAAcqvE,GAAoB,CAAE7uE,OAAM,iBAAEuzB,QAAF,IAAEA,GAAF,UAAEA,EAAMvzB,cAAR,aAAE,EAAe,UAAjB,QAAuB,OAEjEgvE,EAAc,2BACfz7C,GADe,IAElB/zB,YAAaH,IAAe4vE,KAAaC,YAAc,eAAiB1vE,EACxEH,eAEF0vE,EAAUlxF,KAAKmxF,EAChB,IAEmBD,EAAU92F,MAAK,SAAC4lB,EAAGC,GACrC,IAAMgnO,GAASjnO,EAAEi/G,0BAA4B,IAAIlqH,cAC3CmyO,GAASjnO,EAAEg/G,0BAA4B,IAAIlqH,cAGjD,GAAIkyO,EAAQC,EAAO,OAAQ,EAC3B,GAAID,EAAQC,EAAO,OAAO,EAG1B,IAAMj3E,GAASjwJ,EAAE1lB,MAAQ,IAAIya,cACvBm7J,GAASjwJ,EAAE3lB,MAAQ,IAAIya,cAC7B,OAAOk7J,EAAM/vJ,cAAcgwJ,EAC5B,GAGF,EAEYvmK,GAAqD,OAErD4jD,GAAc,WACzB,MAAoC,cAA7Bx3B,OAAO7T,SAAS+qE,UAAyD,cAA7Bl3D,OAAO7T,SAAS+qE,QACpE,EAEYtB,GAAa,SAACw7J,GACzB,OAAOjvO,KAAK89J,MAAMjgJ,OAAOqxN,aAAeD,EAAK,KAC9C,EACY/qD,GAAuB,SAACjsD,GACnC,OAAqB,OAAdA,QAAc,IAAdA,OAAA,EAAAA,EAAgBzxI,QAAS,GAC5B,YAAI,IAAIgc,IAAIy1H,EAAexwI,KAAI,SAAC0nP,GAAD,uBAAaA,EAAQnmO,aAArB,aAAa,EAAes5B,MAA5B,MAAsCn1B,KAAK,MAC1E,EACL,EAEYo5J,GAA0B,SAAC19J,EAASumO,GAC/C,IAAKA,EAAU,MAAO,GAElBr9M,MAAMyJ,QAAQ4zM,KAChBA,EAAWA,EAAS3nP,KAAI,SAAC+1C,GAAD,OAAUA,EAAKx0B,KAAf,IAAsBmE,KAAK,MAGrD,IAAMkiO,EAAiBD,EACpBvyO,cACAC,MAAM,KACNrV,KAAI,SAAC7H,GAAD,OAAUA,EAAK0iD,MAAf,IAEP,OAAO8sM,EAAWvmO,EAAQ1lB,QAAO,SAAC6jC,GAAD,OAAYqoN,EAAejgP,SAAS43B,EAAOhe,MAAMs5B,OAAOzlC,cAAxD,IAA0E,IAC5G,EAIM,SAAS+wL,GAA0BlrJ,EAAel1C,GAAQ,IAAD,QAC1D8hP,EAAkB,KAClBC,EAAoB,KAExB,GAA+B,kBAA3B,OAAO/hP,QAAP,IAAOA,OAAP,EAAOA,EAAOsgB,WAAyB,OAACtgB,QAAD,IAACA,GAAD,UAACA,EAAOsgB,gBAAR,OAAC,EAAiBm7J,OAItD,CAAC,IAAD,IACLqmE,EAAe,UAAG9hP,EAAMsgB,gBAAT,aAAG,EAAgBm7J,OAClCsmE,EAAiB,UAAG/hP,EAAMsgB,gBAAT,aAAG,EAAgBymC,QACrC,KAPoE,CACnE,IAAMi7L,EAAiBzkP,KAAK8V,MAAMrT,EAAMsgB,UACxCwhO,EAAe,OAAGE,QAAH,IAAGA,OAAH,EAAGA,EAAgBvmE,OAClCsmE,EAAiB,OAAGC,QAAH,IAAGA,OAAH,EAAGA,EAAgBj7L,QACrC,CAKD,IAAMy3L,EAAI,kCACLx+O,QADK,IACLA,OADK,EACLA,EAAO6H,uBADF,IAERxR,OAAM,OAAE2J,QAAF,IAAEA,OAAF,EAAEA,EAAO3J,OACfmmB,SAAQ,OAAExc,QAAF,IAAEA,OAAF,EAAEA,EAAOwc,SACjB9jB,WAAYopP,GAAmB,KAC/B9pK,aAAc+pK,GAAqB,KACnCjtN,WAAU,OAAE90B,QAAF,IAAEA,OAAF,EAAEA,EAAO80B,WACnB8sK,iBAAgB,OAAE5hM,QAAF,IAAEA,OAAF,EAAEA,EAAO4hM,iBACzB9+L,UAAS,OAAE9C,QAAF,IAAEA,OAAF,EAAEA,EAAO8C,UAClBk9L,eAAc,OAAEhgM,QAAF,IAAEA,OAAF,EAAEA,EAAOggM,eACvBC,eAAc,OAAEjgM,QAAF,IAAEA,OAAF,EAAEA,EAAOigM,eACvBQ,YAAW,OAAEzgM,QAAF,IAAEA,OAAF,EAAEA,EAAOygM,YACpBC,gBAAe,OAAE1gM,QAAF,IAAEA,OAAF,EAAEA,EAAO0gM,kBAGpB+9C,EAAI,kCACLvpM,QADK,IACLA,OADK,EACLA,EAAertC,uBADV,IAERxR,OAAM,OAAE6+C,QAAF,IAAEA,OAAF,EAAEA,EAAe7+C,OACvBmmB,SAAQ,OAAE04B,QAAF,IAAEA,OAAF,EAAEA,EAAe14B,SACzB9jB,YAAyB,OAAbw8C,QAAa,IAAbA,OAAA,EAAAA,EAAex8C,aAAc,KACzCs/E,cAA2B,OAAb9iC,QAAa,IAAbA,OAAA,EAAAA,EAAe8iC,eAAgB,KAC7CljD,WAAU,OAAEogB,QAAF,IAAEA,OAAF,EAAEA,EAAepgB,WAC3B8sK,iBAAgB,OAAE1sJ,QAAF,IAAEA,OAAF,EAAEA,EAAe0sJ,iBACjC9+L,UAAS,OAAEoyC,QAAF,IAAEA,OAAF,EAAEA,EAAepyC,UAC1Bk9L,eAAc,OAAE9qJ,QAAF,IAAEA,OAAF,EAAEA,EAAe8qJ,eAC/BC,eAAc,OAAE/qJ,QAAF,IAAEA,OAAF,EAAEA,EAAe+qJ,eAC/BQ,YAAW,OAAEvrJ,QAAF,IAAEA,OAAF,EAAEA,EAAeurJ,YAC5BC,gBAAe,OAAExrJ,QAAF,IAAEA,OAAF,EAAEA,EAAewrJ,kBAG5BuhD,EAAe,CAAC,EACdntE,EAAc90K,EAAd80K,UAEW,OAAGA,QAAH,IAAGA,GAAH,UAAGA,EAAW3xK,YAAd,OAAG,EAAiBtK,MAAK,SAACm3C,GAAD,OAA2B,OAAjBA,EAAK1oC,UAAqB0oC,EAAK1kC,QAAU0kC,EAAK1oC,OAAxD,IAU5C,OAPA,UAAArG,OAAO69B,KAAK0/M,UAAZ,SAAmB/xO,SAAQ,SAACha,GACtB+rP,EAAK/rP,KAASgsP,EAAKhsP,KACrBwvP,EAAaxvP,GAAOgsP,EAAKhsP,GAE5B,KAGM,UAAAwO,OAAO69B,KAAKmjN,UAAZ,eAA2BjpP,QAAS,EAAIipP,EAAe,IAC/D,CAEM,IAAMv1O,GAAU,CACrBrW,OAAQ,GACRsuB,oBAAqB,GACrBzc,QAAS,GACTL,sBAAuB,CACrBwvK,aAAc,GACdn8K,SAAU,GACV2J,QAAS,GACTyyK,SAAU,GACVjgL,KAAM,GACN8P,iBAAkB,GAClBjE,WAAY,GACZa,SAAU,GACVqzK,YAAa,GACb56H,kBAAmB,GACnBtlD,YAAa,GACbC,OAAQ,GACRs6J,SAAU,GACV37I,WAAY,GACZxe,MAAO,GACPF,QAAS,GACT8P,eAAgB,GAChB8oB,OAAQ,GACRj5B,MAAO,GACPihF,aAAc,GACdzgF,IAAK,GACLwkD,KAAM,GACNnU,QAAS,GACTvgC,WAAY,GACZmxE,QAAS,GACTh7B,aAAc,GACdxmD,IAAK,GACL6gD,UAAW,GACXz8B,gBAAiB,GACjB+7J,gBAAiB,GACjB1hK,qBAAsB,GACtBgnC,SAAU,GACVxhD,UAAW,GACXshD,iBAAkB,GAClBlmC,SAAU,GACV4O,WAAY,GACZrhB,YAAa,GACbojB,aAAc,GACd5iB,aAAc,GACdywC,QAAS,GACTl+C,IAAK,GACL+B,WAAY,GACZoK,UAAW,GACXmF,SAAU,GACV/J,OAAQ,IAEVyK,YAAa,GACbzK,OAAQ,GACR0J,UAAW,GACX4c,OAAQ,GACRztB,MAAO,GACP0H,UAAW,GACX5K,SAAU,GACVuyB,eAAgB,GAChBnB,WAAY,GACZttB,SAAU,GACVmQ,QAAS,GACTnN,MAAO,GACPkO,YAAa,GACbH,UAAW,GACXkc,aAAc,GACdE,UAAW,GACXL,WAAY,GACZhvB,GAAI,GACJgO,UAAW,GACXy+O,WAAY,GACZ56O,QAAS,GACTG,WAAY,GACZ7D,YAAa,GACb02L,eAAgB,GAChBp3L,WAAY,GACZ+jB,QAAS,GACT8rH,cAAe,GACfC,eAAgB,GAChB3yI,UAAW,GACX2H,gBAAiB,GACjBsD,OAAQ,GACR8Z,WAAY,GACZqB,YAAa,GACb/e,aAAc,GACdqd,OAAQ,GACRnoB,UAAW,GACXgM,YAAa,GACbyd,SAAU,GACVtf,WAAY,GACZ4f,kBAAmB,GACnB5M,UAAW,GACXmL,SAAU,GACVwB,gBAAiB,GACjBu5K,eAAgB,GAChBl0K,QAAS,GACT1jB,MAAO,IAGF,SAASi4L,GAAiBH,GAC/B,IAAIgiD,EAAe,CAAC,EAEhBhiD,IACFgiD,EAAY,uCACPhiD,IACiB,OAAhBA,QAAgB,IAAhBA,OAAA,EAAAA,EAAkByB,mBAAoB,CACxCxmL,gBAAiB+kL,EAAiByB,oBAEhB,OAAhBzB,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBhpM,SAAU,CAAEywC,QAASu4J,EAAiBhpM,UAIhE,IAAMirP,EAAW,CAAEv6O,sBAAuB,CAAC,GAG3C,IAAK,IAAMpV,KAAO0vP,EACZz1O,GAAQ7E,sBAAsBo/E,eAAex0F,GAE/C2vP,EAASv6O,sBAAsBpV,GAAO0vP,EAAa1vP,GAClC,oBAARA,GACT2vP,EAAQ,YAAkBjiD,EAAiBO,gBAC3C0hD,EAAQ,SAAejiD,EAAiBM,aACvB,mBAARhuM,EACT2vP,EAAQ,UAAgBxrP,IAAOupM,EAAiBH,gBAAgB9jM,cAC/C,mBAARzJ,EACT2vP,EAAQ,eAAqBxrP,IAAOupM,EAAiBF,gBAAgB/jM,cAChE,OAAIwQ,SAAJ,IAAIA,OAASu6E,eAAex0F,KAEjC2vP,EAAS3vP,GAAO0vP,EAAa1vP,IASjC,OAJ2D,IAAvDwO,OAAO69B,KAAKsjN,EAASv6O,uBAAuB7O,eACvCopP,EAASv6O,sBAGXu6O,CACR,CAGD,IAAM7J,GAAW,CACf9iP,GAAI,GACJyN,WAAY,GACZs1E,QAAS,GACT9/E,WAAY,KACZ7E,SAAU,GACV4T,WAAY,GACZuwE,aAAc,KACd3hF,OAAQ,GACRoN,UAAW,GACXoE,sBAAuB,CACrB3M,SAAU,GACV7D,KAAM,GACN8P,iBAAkB,GAClBpD,SAAU,GACV7M,YAAa,GACbC,OAAQ,GACRG,MAAO,GACPF,QAAS,GACT8P,eAAgB,GAChBnQ,MAAO,GACPQ,IAAK,GACLqwC,QAAS,GACTvgC,YAAY,EACZrQ,IAAK,GACL6gD,UAAW,GACXpiC,qBAAsB,GACtBxa,UAAW,GACX2I,YAAa,GACbojB,aAAc,GACd5iB,cAAc,EACdzN,IAAK,GACLsR,UAAU,EACV/J,OAAQ,GACRs/C,aAAc,GACdokJ,iBAAkB,IAEpB9+L,UAAW,KACX5E,OAAQ,GACRO,UAAW,GACX4B,UAAW,KACX0Z,UAAW,KACXzS,QAAS,GACT9H,QAAS,KACTkJ,UAAW,GACX/N,MAAO,GACP2Q,OAAQ,IAGGy2K,GAAkB,SAACy8D,EAAMC,GACpC,IAAI4D,EAAc,OAAG7D,QAAH,IAAGA,OAAH,EAAGA,EAAMv5N,WAE3B,OAAIo9N,KADa,OAAG5D,QAAH,IAAGA,OAAH,EAAGA,EAAMx5N,YAEjBo9N,EAEF,IACR,EAEM,SAASxgE,GAA4B28D,EAAMC,GAAO,IAAD,IAChDwD,EAAe,CAAC,EAUtB,OAPA,UAAAhhP,OAAO69B,KAAK0/M,UAAZ,SAAmB/xO,SAAQ,SAACha,GACtB+rP,EAAK/rP,KAASgsP,EAAKhsP,KACrBwvP,EAAaxvP,GAAOgsP,EAAKhsP,GAE5B,KAGM,UAAAwO,OAAO69B,KAAKmjN,UAAZ,eAA2BjpP,QAAS,EAAIipP,EAAe,IAC/D,CAEM,SAASngE,GAAsBF,GACpC,IAAI0gE,EAAc,CAAC,EACf1gE,IACF0gE,EAAW,mDACN1gE,IACa,OAAZA,QAAY,IAAZA,OAAA,EAAAA,EAAcxmK,kBAAmB,CAAEwmL,iBAAkBhgB,EAAaxmK,mBACtD,OAAZwmK,QAAY,IAAZA,OAAA,EAAAA,EAAczqL,SAAU,CAAEywC,QAASg6I,EAAazqL,UACpC,OAAZyqL,QAAY,IAAZA,OAAA,EAAAA,EAAc1hI,UAAW,CAAE1C,aAAcokI,EAAa1hI,WAG9D,IAAMqiM,EAAgB,CACpB16O,sBAAuB,CAAC,GAI1B,IAAK,IAAIpV,KAAO6vP,EACVA,EAAYr7J,eAAex0F,KAEzB8lP,GAAStxJ,eAAex0F,IAAQ6vP,EAAY7vP,KAAS8lP,GAAS9lP,KAChE8vP,EAAc9vP,GAAO6vP,EAAY7vP,IAI/B8lP,GAAS1wO,uBAAyB0wO,GAAS1wO,sBAAsBo/E,eAAex0F,IAC9E6vP,EAAY7vP,KAAS8lP,GAAS1wO,sBAAsBpV,KACtD8vP,EAAc16O,sBAAsBpV,GAAO6vP,EAAY7vP,KAW/D,OAJgE,IAA5DwO,OAAO69B,KAAKyjN,EAAc16O,uBAAuB7O,eAC5CupP,EAAc16O,sBAGhB06O,CACR,CACM,IAAMtxJ,GAAkB,SAAC9tF,GAAU,IAAD,EACvC,MAAoB,WAAhBA,EAAKjF,OAA4B+jD,KAAY,OAC7C9+C,EAAKu7C,cAAsBuD,KAAY,OAClB,iBAAhB9+C,EAAKmI,OAAkC22C,KAAY,YACrDA,KAAY,UAAC9+C,EAAKmI,cAAN,aAAC,EAAa+D,cAClC,EAEY2/J,GAAkC,SAAC11K,EAAUkpP,GACxD,IAD8F,IAAvB3zE,EAAsB,wDAC7F,MAA+B5tK,OAAO20D,QAAQ4sL,GAA9C,eAA8D,CAAzD,0BAAOzoN,EAAP,KAAcisC,EAAd,KACH,GAAKA,EAEL,OAAQjsC,GACN,IAAK,QACH,IAAKzgC,EAAS7C,MACZ,MAAO,yBAET,IAAKwhD,GAAY3+C,EAAS7C,OACxB,MAAO,iFAET,MAEF,IAAK,OACH,IAAK6C,EAAS5C,KACZ,MAAO,wBAET,IAAKuhD,GAAY3+C,EAAS5C,MACxB,MAAO,gFAET,MAEF,IAAK,QACH,IAAK4C,EAASvC,QAAUuC,EAASvC,MAAM+9C,OACrC,MAAO,4BAET,IAAKoD,GAAa5+C,EAASvC,OACzB,MAAO,wBAET,MAEF,IAAK,eACH,IAAKuC,EAASrC,cAA0C,MAA1BqC,EAASrC,aACrC,MAAO,2BAET,MAEF,IAAK,MACH,IAAKqC,EAAS3C,IACZ,MAAO,4BAET,MAEF,IAAK,MACH,IAAK2C,EAAStC,IACZ,MAAO,qBAET,MAEF,IAAK,uBACH,IAAK63K,IAAcv1K,EAASmc,qBAC1B,MAAO,gCAET,MAEF,IAAK,qBACH,IAAKnc,EAASkuB,mBACZ,MAAO,kCAET,MAEF,IAAK,WACH,IAAKluB,EAASgnB,SACZ,MAAO,6BAET,MACF,IAAK,UACH,IAAKhnB,EAASnC,OACZ,MAAO,sBAET,MACF,IAAK,OACH,IAAKmC,EAASjC,KACZ,MAAO,mBAET,MACF,IAAK,QACH,IAAKiC,EAAShC,MACZ,MAAO,oBAET,MACF,IAAK,MACH,IAAKgC,EAAS/B,IACZ,MAAO,sBAET,MACF,IAAK,SACH,IAAK+B,EAASjD,OACZ,MAAO,qBAMd,CAGD,IAAK6gF,IAAWt1E,SAAX,OAAoBtI,QAApB,IAAoBA,OAApB,EAAoBA,EAAUmc,uBAAyB+sO,EAAa,qBAA0B,CACjG,IAAKlpP,EAAS6N,mBAAqB7N,EAAS6N,iBAAiB2tC,OAC3D,MAAM,+BAER,IAAKg2H,EAAgBxxK,EAAS6N,kBAC5B,MAAM,8BAER,GAA4B,MAAxB7N,EAASyxK,aAAuBzxK,EAASguB,UAC3C,MAAO,sCAET,GAA4B,MAAxBhuB,EAASyxK,aAAuBD,EAAgBxxK,EAASguB,WAC3D,MAAO,4BAEV,CAED,OAAO,IACR,EAgCY2zJ,GAAuB,SAACx3E,EAAgBhxG,GACnD,OAAOgxG,EAAelf,QAAO,SAAC8G,EAAKtmD,GAEjC,OADAsmD,EAAItmD,EAAQtyC,IAAQsyC,EACbsmD,CACR,GAAE,CAAC,EACL,EAUYsB,GAAuB,SAAC+xJ,GACnC,IAEMl6E,EAAa5tK,IAAO8nP,EAFV,CAAC,WAAY,eAEkB,GAE/C,IAAKl6E,EAAWx+F,UACd,MAAM,IAAI53D,MAAM,uBAKlB,OAFYxX,MAAS22D,KAAKi3G,EAAY,QAGvC,EAEY6kC,GAAwB,SAAC,GAA6B,IAA3B5sL,EAA0B,EAA1BA,OAAQrV,EAAkB,EAAlBA,OAAQkiM,EAAU,EAAVA,IACtD,IAAK7sL,EAAQ,OAAO,KAEpB,IAAM0/M,EAAYxxH,OAAO2+F,GAEnB9pH,EAAW,CACf8pH,IAAK3+F,OAAO2+F,GACZliM,OAAQ,CAAEqU,MAAOmgN,IAAUx0N,KAKvBq7O,EAAsBhmO,EAAO5jB,MACjC,SAACm3C,GAAD,OAAUA,EAAKi3C,eAAe,cAAgBj3C,EAAKi3C,eAAe,WAAlE,IAEIy7J,EAAkBjmO,EAAO5jB,MAAK,SAACm3C,GAAD,OAAUA,EAAKi3C,eAAe,YAA9B,IAEpC,GAAIw7J,EAGF,OAFejmB,YAAsB//M,EAAQ+iE,GAGxC,GAAIkjK,EAAiB,CAC1B,IAAMC,EAAclmO,EAAOxiB,KAAI,SAAC+1C,GAAD,MAAW,CACxCA,OACAgsL,MAAOD,YAAc/rL,EAAMwvC,GAFE,IAKzBojK,EAAWpwO,KAAK8mC,IAAL,MAAA9mC,KAAI,YAAQmwO,EAAY1oP,KAAI,qBAAG+hO,KAAH,MAEvC6mB,EAAcF,EAAYhtP,QAAO,qBAAGqmO,QAAsB4mB,CAAzB,IAEvC,OAAIC,EAAY7pP,OAAS,EAChB6pP,EAAY,GAAG7yM,KAGjBvzB,EAAO,EACf,CACC,IAAMqmO,EAAgBrmO,EAAOi6B,MAAK,SAAC1G,GAAD,OAAUA,EAAK6uF,SAAWz3H,EAAOqU,OAASygN,YAAiBlsL,EAAMmsL,EAAjE,IAElC,OAAI2mB,IAImBrmO,EAAOi6B,MAAK,SAAC1G,GAAD,OAAUksL,YAAiBlsL,EAAMmsL,IAAcnsL,EAAK6uF,SAAWz3H,EAAOqU,KAAtE,KAEVgB,EAAO,GAEnC,EAEYmtL,GAAsC,SAAC,GAAgC,IAA9BntL,EAA6B,EAA7BA,OAAQ0Z,EAAqB,EAArBA,SAAUhzB,EAAW,EAAXA,KACtE,IACGgzB,IAAai2D,KAAiBQ,2BAC7Bz2D,IAAai2D,KAAiBY,+BAChC7pF,EAAKo2H,2BAA6BkB,IAA2BC,WAE7D,MAAM,eACD,GAAIj+G,EAAQ,CAAC,IAAD,EACXsmO,GAAiB,OAANtmO,QAAM,IAANA,GAAA,UAAAA,EAAQ+oH,gBAAR,eAAmB,KAAM/oH,EAE1C,OAAmC,IAA/BkuF,OAAOo4I,EAAS/jH,YAAqB+jH,EAAS/jH,UAG7C+jH,EAAS9jH,WAIR,GAAN,OAAU8jH,EAAS/jH,UAAnB,cAAkC+jH,EAAS9jH,YAHnC,UAAN,OAAY8jH,EAAS/jH,WAHf,UAAN,OAAY+jH,EAAS9jH,WAOxB,CAED,MAAM,GAAN,OAAUxiH,EAAOuiH,UAAjB,cAAgCviH,EAAOwiH,WACxC,EAEYg/E,GAAsB,SAAC+kC,EAAOC,GACpCA,EAAYpqP,MAAK,SAACqqP,GAAD,OAAmBA,EAAc5vP,OAAS0vP,EAAM1vP,IAAhD,KACpB2vP,EAAY3oP,KAAK0oP,EAEpB,EAEY14C,GAAoB,SAAC,GAAwB,IAAD,EAArBC,EAAqB,EAArBA,QAAS9uL,EAAY,EAAZA,MAE3C,GADAtmB,QAAQgE,IAAI,UAAWoxM,GACF,kBAAV9uL,IAAuB8oB,MAAMyJ,QAAQvyB,IAAoB,OAAVA,EACxD,OAAOwmC,KAAaxmC,EAAMA,OAG5B,IAAKkvF,OAAOlvF,GAAQ,MAAO,GAG3B,GAAoB,gBADH,OAAG8uL,QAAH,IAAGA,OAAH,EAAGA,EAAStuL,aAE3B,MAAO,QAGT,IAAMknO,GAAoB,OAAP54C,QAAO,IAAPA,OAAA,EAAAA,EAAS9tL,OAAO,KAAM,CAAC,EAK1C,GAJ4B,OAAV0mO,QAAU,IAAVA,GAAA,UAAAA,EAAY39G,gBAAZ,eAAuB,KAAM29G,GAIQ,CAAC,EAAxD,IAAQnkH,iBAAR,MAAoB,EAApB,MAAuBC,kBAAvB,MAAoC,EAApC,EAEA,OAAID,IAAcC,EAAmBt0B,OAAOlvF,GAASujH,EAAY,MAAQ,SACpEA,GAAaC,EAAmBt0B,OAAOlvF,GAASwjH,EAAa,MAAQ,QAEnEt0B,OAAOlvF,GAASwjH,GAAct0B,OAAOlvF,GAASujH,EAAY,MAAQ,OAC1E,EAEY0rE,GAA4B,SAAC/hL,GACxC,OAAIA,EAAI9vB,MAAK,SAACm3C,GAAD,MAA+B,QAArBA,EAAKghD,WAAf,IACJ,MAELroE,EAAI9vB,MAAK,SAACm3C,GAAD,MAA+B,SAArBA,EAAKghD,WAAf,IACJ,OAEF,OACR,EAEYipG,GAAmB,SAAC,GAAkC,IAAhCC,EAA+B,EAA/BA,WAAYC,EAAmB,EAAnBA,aAC7C,OAAOD,EAAWrhM,MAChB,SAACm3C,GAAD,OACEzL,MAAMyJ,QAAN,OAAcgC,QAAd,IAAcA,OAAd,EAAcA,EAAMxW,SACpBwW,EAAKxW,OAAO3gC,MAAK,SAACuqP,GAAD,OACfjpD,EAAathM,MACX,SAACwqP,GAAD,OAAgBD,EAAW5nO,QAAU6nO,EAAW7nO,OAAS4nO,EAAW3nO,QAAU4nO,EAAW5nO,KAAzF,GAFa,GAFnB,GAQH,EAEYykL,GAAyB,SAACojD,GAGrC,MAFoB,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAExEzqP,MAAK,SAACpG,GAAD,OAA8B,OAArB6wP,EAAY7wP,EAArB,GACzB,EAgBYukL,GAAe,SAACh3K,GAK3B,MAAO,CACLi3K,cALoBj3K,EAAMggM,eAAiBppM,IAAOoJ,EAAMggM,gBAAgB9jM,cAAgBtF,MAASsF,cAMjGg6B,SAJel2B,EAAMigM,eAAiBrpM,IAAOoJ,EAAMigM,gBAAgBppM,OAAO,UAAYD,MAASC,OAAO,UAMzG,EAEYy2H,GAAyB,SAAC,GAA2B,IAAzBC,EAAwB,EAAxBA,SAAUl4E,EAAc,EAAdA,QAC3CkuM,EAAWtmO,SAASswG,EAASJ,WAAY,IACzCq2H,EAASvmO,SAASswG,EAASH,SAAU,IAE3C,GAAI6P,MAAMsmH,IAAatmH,MAAMumH,GAC3B,MAAO,CACLpuP,OAAO,EACPqK,QAAS,mEAIb,GAAI8jP,EAAWC,EACb,MAAO,CACLpuP,OAAO,EACPqK,QAAS,+DAdkD,oBAkB1C41C,GAlB0C,IAkB/D,2BAA8B,CAAC,IAApB//C,EAAmB,QACtBmuP,EAAgBnuP,EAAOm3H,aAC7B,GAAIg3H,EAAe,CACjB,IAAMC,EAAgBzmO,SAASwmO,EAAct2H,WAAY,IACnDw2H,EAAc1mO,SAASwmO,EAAcr2H,SAAU,IAErD,GAAI6P,MAAMymH,IAAkBzmH,MAAM0mH,GAChC,SAGF,GAAID,EAAgBC,EAClB,SAGF,GACGJ,GAAYG,GAAiBH,GAAYI,GACzCH,GAAUE,GAAiBF,GAAUG,GACrCD,GAAiBH,GAAYG,GAAiBF,EAE/C,MAAO,CACLpuP,OAAO,EACPqK,QAAQ,GAAD,OAAKnK,EAAOV,KAAZ,2BAGZ,CACF,CA3C8D,mCA6C/D,MAAO,CACLQ,OAAO,EACPqK,QAAS,8BAEZ,EAEYotH,GAAmB,SAAC+2H,GAC/B,OAAKA,EAEC,GAAN,cAAUA,QAAV,IAAUA,OAAV,EAAUA,EAAYz2H,WAAtB,sBAAuCy2H,QAAvC,IAAuCA,OAAvC,EAAuCA,EAAYx2H,UAF3B,EAGzB,EAEYppB,GAA+B,SAACb,GAC3C,IAAM0gJ,EAAa,CAAC,cAAe,eAE7BhjP,EAAOsiG,EAAQlpG,KAAI,SAAC+1C,GAAD,OAAUA,EAAKnvC,IAAf,IAEnBijP,EAAcjjP,EAAKgzE,WAAU,SAAC7wD,GAAD,OAAS6gO,EAAW32K,OAAM,SAACz6E,GAAD,OAASuwB,EAAIphB,SAASnP,EAAtB,GAA1B,IAE7BsxP,GAAkC,IAAjBD,EAAqBA,EAAc,GAAK,EAE/D,IAAqB,IAAjBA,EAAoB,CACtB,IAAM/zN,EAASlvB,EAAKijP,GAUpB,OATajjP,EAAKuR,MAAM2xO,GAEA9pP,KAAI,SAAC+oB,GAAD,OAC1B+M,EAAOw0D,QAAO,SAAC8G,EAAK54F,EAAK2wC,GAEvB,OADAioD,EAAI54F,GAAOuwB,EAAIogB,IAAU,GAClBioD,CACR,GAAE,CAAC,EAJsB,GAQ7B,CAED,OAAO,IACR,EAEYgE,GAAQ,SAAC20J,GAAD,OAAQ,IAAIzpP,SAAQ,SAACgU,GAAD,OAAag1B,WAAWh1B,EAASy1O,EAAjC,GAApB,EAER//I,GAA2B,SAAC,GAA4C,IAA1CpjG,EAAyC,EAAzCA,KAAMxG,EAAmC,EAAnCA,MAAOyuB,EAA4B,EAA5BA,WAAY66C,EAAgB,EAAhBA,UAC5DsgL,EAAc,IAAIjvO,IAAI3a,EAAMJ,KAAI,SAACkJ,GAAD,OAAUA,EAAKmE,OAAf,KAEhC48O,EAAiB,SAACj3O,EAAKxa,GAC3Bwa,EAAIxa,IAAQwa,EAAIxa,IAAQ,GAAK,CAC9B,EAEG4wG,EAAkB,CAAC,EAEjBinC,EAAezpI,EAAKlL,QAAO,SAACmvG,GAAD,OAAYm/I,EAAYpwI,IAAI/O,EAAO,eAAnC,IAE3Bq/I,EAActjP,EAAKlL,QAAO,SAACmvG,GAAD,OAAam/I,EAAYpwI,IAAI/O,EAAO,eAApC,IAE1Bs/I,EAAiBjkB,YAAc71F,EAAc,eAE7C+5G,EAAwBlkB,YAAcgkB,EAAa,eAEzD9gJ,EAAgB,sBAAwBpiG,OAAO69B,KAAKslN,GAAgBprP,OAEpEqqG,EAAgB,wBAA0BpiG,OAAO69B,KAAKulN,GAAuBrrP,OAE7E,IAAMkrG,EAAYq8H,YAAc6jB,GAAgB,SAACE,GAAiB,IAAD,EACzDC,EAAaD,EAAY,GAAG,eAE5B53O,EAAUrS,EAAMq8C,MAAK,SAACvzC,GAAD,OAAUA,EAAKmE,UAAYi9O,CAA3B,IAE3B,IAAK73O,EACH,MAAO,GAGT,IAAMQ,EAASR,EAAQjX,GAEjBwvB,GAAa,UAAAvY,EAAQ7E,6BAAR,eAA+Bod,aAAc,KAE1Du/N,EAAmB7gL,EAAUjtB,MAAK,SAAC1G,GAAD,OAAUA,EAAKv6C,KAAOwvB,CAAtB,IAElCw/N,GAAuC,OAAhBD,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBzoO,eAAgB,GAEzD2oO,EAAiBJ,EAAYrqP,KAAI,SAACgT,EAAKm2B,EAAOza,GAClD,IAAIrd,EAEJ,GAAc,IAAV83B,EAAa,CACf,IAAMuhN,EAASnkB,YAAW73M,EAAK,CAAE,cAAe,OAChDA,EAAIi8N,WAAa3xH,WAAU,OAAC0xH,QAAD,IAACA,OAAD,EAACA,EAAQE,IACpCl8N,EAAIm8N,gBAAkBH,GAAU1nH,MAAMt0G,EAAIi8N,WAC3C,CAED,GAAIj8N,EAAIm8N,eACNx5O,EAAS,cACJ,CACL,IAAMwuH,EAAU7sH,EAAI43O,GAEpB,GAAgB,iBAAZ/qH,EACFxuH,EAAS,mBACJ,CAAC,IAAD,IACCy5O,EAAkBN,EAAqB/tM,MAC3C,SAAC1G,GAAD,OAAUA,EAAKp7C,OAASqY,EAAI,gBAAkB+iC,EAAK22D,WAAa15F,EAAI,cAApE,IAGI+3O,GAAkB,UAAAR,EAAiBnmP,eAAjB,eAA0By7H,WAA1B,OAAqCirH,QAArC,IAAqCA,GAArC,UAAqCA,EAAiB1mP,eAAtD,aAAqC,EAA0By7H,UAAW,GAE5FmrH,EAAWhyH,WAAW6G,GAG1BxuH,EADE2xH,MAAMgoH,GACC,UAEAA,EAAWhyH,WAAW+xH,GAAmB,WAAa,cAElE,CACF,CACD,MAAO,CACL93O,SACAkL,iBAAkBnL,EAAI,eACtBgY,aACAs+E,UAAWt2F,EAAI,eACf3B,SACA3Q,MAAO7G,IAAOksB,aACd+L,QAASjD,EAAW5pB,KAAK5M,IACzBm0B,YAAaqC,EAAW5pB,KAAKtK,KAEhC,IAUD,OARI8vP,EAAe7rP,MAAK,SAACm3C,GAAD,MAA0B,aAAhBA,EAAK1kC,MAAf,IACtB44O,EAAe7gJ,EAAiB,YACvBqhJ,EAAe7rP,MAAK,SAACm3C,GAAD,MAA0B,iBAAhBA,EAAK1kC,MAAf,IAC7B44O,EAAe7gJ,EAAiB,gBACvBqhJ,EAAe7rP,MAAK,SAACm3C,GAAD,MAA0B,YAAhBA,EAAK1kC,MAAf,KAC7B44O,EAAe7gJ,EAAiB,WAG3BqhJ,CACR,IAED,MAAO,CAAExgJ,YAAWC,qBAAsBd,EAC3C,EAiBY59B,GAAsB,SAAC7oD,EAAO8mD,GACzC,IAAMwhL,EAAetoO,EAAM2nE,QAAO,SAAC8G,EAAKr7C,GACIA,EAAlC79C,MAAR,IAAeuoB,EAA2Bs1B,EAA3Bt1B,SACf,IAD0Cs1B,EAAjBw9D,aACN,CACjB,IAAM/6G,EAAMioB,GAAY6qN,KAAU7hK,IAAc,QAC3C2nB,EAAI54F,KACP44F,EAAI54F,GAAO,IAEb44F,EAAI54F,GAAK6H,KAAK01C,EACf,CACD,OAAOq7C,CACR,GAAE,CAAC,GAEJpqF,OAAO69B,KAAKomN,GAAcz4O,SAAQ,SAACha,GACjCyyP,EAAazyP,GAAKiC,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,QAG/B,OAFY,oBAAGD,EAAE2kN,mBAAL,QAAoB3kN,EAAE7kB,UAAtB,QAA4B0vP,MAC5B,oBAAG5qO,EAAE0kN,mBAAL,QAAoB1kN,EAAE9kB,UAAtB,QAA4B0vP,IAEzC,IAEDD,EAAazyP,GAAOyyP,EAAazyP,GAAKwH,KAAI,SAAC+1C,GAAD,OAAUA,EAAK79C,KAAf,GAC3C,IAED,IAAQizP,EAAgCF,EAAhCE,YAAajkB,EAAmB+jB,EAAnB/jB,MAAUzoG,EAA/B,YAAwCwsH,EAAxC,GAEA,OAAO,uCACDE,EAAc,CAAEA,eAAgB,CAAC,GAClC1sH,GACCyoG,EAAQ,CAAEA,SAAU,CAAC,EAE5B,EAEY3uG,GAAmB,SAAC5pD,EAAQC,EAAgBlgD,GACvD,OAAQigD,GAEN,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,MACL,IAAK,UACL,IAAK,QACL,IAAK,cACL,IAAK,aACH,OAAOC,EACH,YAAIlgD,GAAKj0B,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,IACtB,QAAkBuF,IAAdxF,EAAEsuD,IAAuC,KAAdtuD,EAAEsuD,GAAgB,OAAO,EACxD,QAAkB9oD,IAAdvF,EAAEquD,IAAuC,KAAdruD,EAAEquD,GAAgB,OAAQ,EACzD,IAAMy8K,EAAI,UAAG9qO,EAAEquD,UAAL,QAAgB,GACpB08K,EAAI,UAAGhrO,EAAEsuD,UAAL,QAAgB,GAC1B,OAAOy8K,EAAK7qO,cAAc8qO,EAC3B,IACD,YAAI38N,GAAKj0B,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,IACtB,QAAkBuF,IAAdxF,EAAEsuD,IAAuC,KAAdtuD,EAAEsuD,GAAgB,OAAO,EACxD,QAAkB9oD,IAAdvF,EAAEquD,IAAuC,KAAdruD,EAAEquD,GAAgB,OAAQ,EACzD,IAAMy8K,EAAI,UAAG9qO,EAAEquD,UAAL,QAAgB,GAE1B,OADU,UAAGtuD,EAAEsuD,UAAL,QAAgB,IACdpuD,cAAc6qO,EAC3B,IAEP,IAAK,SACL,IAAK,cACL,IAAK,aACL,IAAK,OACL,IAAK,cACL,IAAK,oBACH,OAAO,YAAI18N,GAAKj0B,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,IACzB+qO,EAAI,UAAGhrO,EAAEsuD,UAAL,QAAgB,EACpBy8K,EAAI,UAAG9qO,EAAEquD,UAAL,QAAgB,EACxB,OAAOC,EAAiBw8K,EAAOC,EAAOA,EAAOD,CAC9C,IACH,IAAK,OACL,IAAK,MACL,IAAK,aACH,OAAOx8K,EACH,YAAIlgD,GAAKj0B,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,IACtB,QAAkBuF,IAAdxF,EAAEsuD,IAAuC,KAAdtuD,EAAEsuD,IAAgC,OAAdtuD,EAAEsuD,GAAkB,OAAO,EAC9E,QAAkB9oD,IAAdvF,EAAEquD,IAAuC,KAAdruD,EAAEquD,IAAgC,OAAdruD,EAAEquD,GAAkB,OAAQ,EAC/E,IAAI08K,EAAI,UAAGhrO,EAAEsuD,UAAL,QAAgB,EACpBy8K,EAAI,UAAG9qO,EAAEquD,UAAL,QAAgB,EACxB,OAAO3rD,SAASooO,GAAQpoO,SAASqoO,GAAQ,EAAIroO,SAASqoO,GAAQroO,SAASooO,IAAS,EAAI,CACrF,IACD,YAAI18N,GAAKj0B,MAAK,SAAC4lB,EAAGC,GAAO,IAAD,IACtB,QAAkBuF,IAAdxF,EAAEsuD,IAAuC,KAAdtuD,EAAEsuD,GAAgB,OAAO,EACxD,QAAkB9oD,IAAdvF,EAAEquD,IAAuC,KAAdruD,EAAEquD,GAAgB,OAAQ,EACzD,IAAI08K,EAAI,UAAGhrO,EAAEsuD,UAAL,QAAgB,EACpBy8K,EAAI,UAAG9qO,EAAEquD,UAAL,QAAgB,EACxB,OAAO3rD,SAASooO,GAAQpoO,SAASooO,GAAQ,EAAIpoO,SAASqoO,GAAQroO,SAASooO,IAAS,EAAI,CACrF,IACP,IAAK,YACH,OAAO,YAAI18N,GAAKj0B,MAAK,SAAC4lB,EAAGC,GACvB,QAAkBuF,IAAdxF,EAAEsuD,GAAuB,OAAO,EACpC,QAAkB9oD,IAAdvF,EAAEquD,GAAuB,OAAQ,EAGrC,IAAM28K,EAAQ,IAAIplP,KAAKma,EAAEsuD,IACnB48K,EAAQ,IAAIrlP,KAAKoa,EAAEquD,IAEzB,OAAOC,EACH28K,EAAQD,EACRA,EAAQC,CACb,IAEH,QACE,OAAO38K,EACH,YAAIlgD,GAAKj0B,MAAK,SAAC4lB,EAAGC,GAAJ,OAAWA,EAAEquD,GAAUtuD,EAAEsuD,GAAU,EAAItuD,EAAEsuD,GAAUruD,EAAEquD,IAAW,EAAI,CAApE,IACd,YAAIjgD,GAAKj0B,MAAK,SAAC4lB,EAAGC,GAAJ,OAAWA,EAAEquD,GAAUtuD,EAAEsuD,GAAU,EAAItuD,EAAEsuD,GAAUruD,EAAEquD,IAAW,EAAI,CAApE,IAEvB,EAEYtB,GAAkC,SAAC1qD,GAC9C,OAAOA,EACJjnB,QAAO,SAACq6C,GAAD,OAAWA,EAAKw9D,YAAhB,IACP94G,MAAK,SAAC4lB,EAAGC,GAAJ,mBAAU,oBAACD,EAAE2kN,mBAAH,QAAkB3kN,EAAE7kB,UAApB,QAA0B0vP,MAA1B,oBAAuC5qO,EAAE0kN,mBAAzC,QAAwD1kN,EAAE9kB,UAA1D,QAAgE0vP,IAA1E,IACLlrP,KAAI,SAAC+1C,GAAD,OAAUA,EAAK79C,KAAf,GACR,EAiCYwmH,GAAoB,SAAC,GAAuB,IAArB76F,EAAoB,EAApBA,MAAO86F,EAAa,EAAbA,OACzC,QAAKr0E,MAAMyJ,QAAQlwB,IAEZA,EAAMjlB,MAAK,SAACqG,GACjB,IAAIumP,EAAa,GAEjB,GAA0B,kBAAfvmP,EAAK5G,MACd,IACEmtP,EAAaloP,KAAK8V,MAAMnU,EAAK5G,MACb,CAAhB,MAAOlD,OAAS,MACTmvC,MAAMyJ,QAAQ9uC,EAAK5G,SAC5BmtP,EAAavmP,EAAK5G,OAEpB,OAAOmtP,EAAW5sP,MAAK,SAAC8mF,GAAD,OAAaA,EAAQlqF,KAAOmjH,CAA5B,GACxB,GACF,C,kCCr1KD,gBAyEeznB,IAxEA,SAACrrE,GACd,IAAQ1zB,EAA0E0zB,EAA1E1zB,KAAM8kC,EAAoEpR,EAApEoR,KAAM22C,EAA8D/nD,EAA9D+nD,UAAWvyB,EAAmDx1B,EAAnDw1B,SAAU9S,EAAyC1iB,EAAzC0iB,MAAOr2C,EAAkC2zB,EAAlC3zB,MAAO0tC,EAA2B/Z,EAA3B+Z,SAAUuxD,EAAiBtrE,EAAjBsrE,aA+B3Dp+C,EAAW,WACf,OAAQxK,GACN,IAAK,SACH,MAAO,SACT,IAAK,QACH,MAAO,QACT,IAAK,OACH,MAAO,OACT,IAAK,SACH,MAAO,SACT,IAAK,SACH,MAAO,SACT,IAAK,QACH,MAAO,QACT,IAAK,MACH,MAAO,MACT,QACE,MAAO,OAEZ,EACK6oD,EAAU,WACd,OAAQn6D,GACN,IAAK,KACH,MAAO,KACT,IAAK,KACH,MAAO,KACT,IAAK,KACH,MAAO,KAEZ,EACD,OACE,qCACG22C,GAAa,mBAAGptC,UAAS,UAAKZ,EAAL,gBA5DrB,WADCztC,EAEG,WAIA,kBAuDiB,YAAuCi/F,IAAvC,YAAoDr+C,KAAc7gD,MAAOA,IAClGmpD,GAAY,mBAAG7a,UAAS,UAAKZ,EAAL,gBAnDpB,WADCztC,EAEG,WAIA,kBA8CgB,YAAsCi/F,IAAtC,YAAmDr+C,KAAc7gD,MAAOA,IAChGi/F,GACC,mBAAG3wD,UAAS,UAAKZ,EAAL,gBA3CT,WADCztC,EAEG,cAIA,qBAsCK,YAA0Ci/F,IAA1C,YAAuDr+C,KAAc7gD,MAAOA,MAI/F,C,oGCxED,OAAe,cAA0B,2C,sDCAzC,OAAe,ktG,kCCAf,OAAe,soX,kJCiCT0D,G,OAAU,iDAAG,WAAOg9I,GAAP,uFACb6yG,EAAY,KACZrrP,EAAQ,GACNtG,EAAS,CACb4B,OAAQk9I,EACRn+I,KAAM,CACJqlC,MAAO,SACP/5B,MAAOnL,IAAcC,WAEvBkpB,MAAO,KATQ,cAYX0nO,GACFzkP,OAAOC,OAAOnN,EAAQ,CAAE2xP,UAAWA,IAbtB,SAeWxxP,IAAImxB,QAAQ41L,YAAiB0qC,IAAmB5xP,IAf3D,OAeT6xP,EAfS,OAgBfzwP,QAAQgE,IAAI,kBAAmBysP,GAC/BvrP,EAAQA,EAAM6R,OAAO05O,EAAY/kP,KAAKq8N,UAAUtgN,OAChD8oO,EAAYE,EAAY/kP,KAAKq8N,UAAUwoB,UAlBxB,WAmBRA,EAnBQ,iDAoBVrrP,EAAM1E,QAAO,SAACslB,GAAD,OAAQA,EAAEsxI,QAAV,KApBH,4CAAH,uDAuBVv2J,EAAc,iDAAG,oGACjBF,EAAY,GACZ4vP,EAAY,KACV3xP,EAAS,CACbiqB,MAAO,KAJY,cAOf0nO,GACFzkP,OAAOC,OAAOnN,EAAQ,CAAE2xP,UAAWA,IARlB,kBAWSxxP,IAAImxB,QAAQ41L,YAAiB0qC,IAAuB5xP,IAX7D,OAWX6xP,EAXW,OAYjB9vP,EAAYA,EAAUoW,OAAO05O,EAAY/kP,KAAKo8N,cAAcrgN,OAC5D8oO,EAAYE,EAAY/kP,KAAKo8N,cAAcyoB,UAb1B,kDAejBvwP,QAAQgE,IAAI,0BAA2B,KAAIsG,SAf1B,WAiBZimP,EAjBY,iDAmBd5vP,GAnBc,0DAAH,qDAsBdM,EAAiB,iDAAG,WAAOX,GAAP,4GAEJS,EAAmBT,GAFf,cAEhBoO,EAFgB,OAGhBrN,EAAe,CACnBf,GAAIA,EACJkC,SAAUkM,EAAI,GAAGlM,UALG,SAOhBzD,IAAImxB,QAAQ,CAAE/wB,MAAOgxB,IAA0BC,UAAW,CAAEC,MAAOhvB,KAPnD,iCAQf,GARe,kCAUtBrB,QAAQgE,IAAI,0BAA2B,KAAIsG,SAVrB,kCAYjB,GAZiB,0DAAH,sDAcjB7H,EAAiB,iDAAG,WAAOpB,GAAP,4GAEEtC,IAAImxB,QAAQ,CAAE/wB,MAAOgxB,IAA0BC,UAAW,CAAEC,MAAOhvB,KAFrE,cAEhBqB,EAFgB,OAGdgJ,EAAShJ,EAATgJ,KAHc,kBAIfA,EAAKknB,gBAJU,gCAMtB5yB,QAAQgE,IAAI,gCAAiC,KAAIsG,SAN3B,yDAAH,sDAUjBvJ,EAAkB,iDAAG,WAAOT,GAAP,4FACrBK,EAAY,GAEV/B,EAAS,CACb0B,MAJuB,kBAOGvB,IAAImxB,QAAQ41L,YAAiB0qC,IAAqB5xP,IAPrD,OAOjB6xP,EAPiB,OAQvB9vP,EAAY,CAAC8vP,EAAY/kP,KAAKm8N,aARP,gDAUvB7nO,QAAQgE,IAAI,0BAA2B,KAAIsG,SAVpB,iCAYlB3J,GAZkB,yDAAH,sDAclBmoO,EAAe,iDAAG,WAAOxoO,GAAP,0FAChB1B,EAAS,CACb0B,MAFoB,kBAKMvB,IAAImxB,QAAQ41L,YAAiB0qC,IAAkB5xP,IALrD,cAKd6xP,EALc,yBAMbA,EAAY/kP,KAAKs8N,UANJ,gCAQpBhoO,QAAQgE,IAAI,0BAA2B,KAAIsG,SARvB,iCAUf,MAVe,yDAAH,sDAaf2kB,EAAc,iDAAG,WAAO3uB,GAAP,uFACjBiwP,EAAY,KACZrrP,EAAQ,GACNtG,EAAS,CACb4B,OAAQ,CACNF,GAAI,CACFowP,GAAIpwP,IAGRuoB,MAAO,KATY,cAYf0nO,GACFzkP,OAAOC,OAAOnN,EAAQ,CAAE2xP,UAAWA,IAblB,SAeOxxP,IAAImxB,QAAQ41L,YAAiB0qC,IAAmB5xP,IAfvD,OAeb6xP,EAfa,OAgBnBzwP,QAAQgE,IAAI,wBAAyBysP,GACrCvrP,EAAQA,EAAM6R,OAAO05O,EAAY/kP,KAAKq8N,UAAUtgN,OAChD8oO,EAAYE,EAAY/kP,KAAKq8N,UAAUwoB,UAlBpB,WAmBZA,EAnBY,+BAoBrBvwP,QAAQgE,IAAI,2BAA4BkB,GApBnB,kBAqBdA,GArBc,4CAAH,sDAuBdyrP,EAAsB,iDAAG,WAAO/+O,GAAP,uFACzB2+O,EAAY,KACZrrP,EAAQ,GACNtG,EAAS,CACb4B,OAAQ,CACNoR,WAAY,CACV8+O,GAAI9+O,IAGRiX,MAAO,KAToB,cAYvB0nO,GACFzkP,OAAOC,OAAOnN,EAAQ,CAAE2xP,UAAWA,IAbV,SAeDxxP,IAAImxB,QAAQ41L,YAAiB0qC,IAAmB5xP,IAf/C,OAerB6xP,EAfqB,OAiB3BvrP,EAAQA,EAAM6R,OAAO05O,EAAY/kP,KAAKq8N,UAAUtgN,OAChD8oO,EAAYE,EAAY/kP,KAAKq8N,UAAUwoB,UAlBZ,UAmBpBA,EAnBoB,+BAoB7BvwP,QAAQgE,IAAI,2BAA4BkB,GApBX,kBAqBtBA,GArBsB,4CAAH,sDAwBtB0rP,EAAa,iDAAG,WAAOtwP,GAAP,iGAEZE,EAAS,CACbF,GAAIA,GAHY,SAKZvB,IAAImxB,QAAQ,CAAE/wB,MAAOgxB,IAAsBC,UAAW,CAAEC,MAAO7vB,KALnD,iCAMX,GANW,gCAQlBR,QAAQgE,IAAI,yBAA0B,KAAIsG,SARxB,kCAUb,GAVa,yDAAH,sDAabumP,EAAc,iDAAG,WAAO5sD,GAAP,4GAEOllM,IAAImxB,QAAQ,CAAE/wB,MAAOgxB,IAAuBC,UAAW,CAAEC,MAAO4zK,KAFvE,cAEb6sD,EAFa,OAGXplP,EAASolP,EAATplP,KAHW,kBAIZA,EAAKolP,aAJO,gCAMnB9wP,QAAQgE,IANW,yDAAH,sDAUdglO,EAAc,iDAAG,WAAO/kC,GAAP,4GAEOllM,IAAImxB,QAAQ,CAAE/wB,MAAOgxB,IAAuBC,UAAW,CAAEC,MAAO4zK,KAFvE,cAEb8sD,EAFa,OAGXrlP,EAASqlP,EAATrlP,KAHW,kBAIZA,EAAKqlP,aAJO,gCAMnB/wP,QAAQgE,IAAI,sBAAuB,KAAIsG,SANpB,yDAAH,sDAUL,KACbzJ,iBACAH,aACAO,oBACAF,qBACA0B,oBACAwsB,iBACA2hO,gBACAD,yBACAE,iBACA/nB,kBACAE,iB,kCC5NF,4MAGO,IAw4EMp2M,EAAc,otKAsQd9c,EAAc,otKAqyBd2a,EAAU,orVA+hBVugO,EAAU,orVA++DVF,EAAW,+iHAmLXC,EAAW,8iH","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 = `®isteruser=${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+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/655f8008-f306-4052-a932-3f5622a39925.5264a633.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK0AAABECAYAAAGE44WfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4FpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4OTkyMzZkZS03ODI5LTJiNGQtOGRiZS0zZWUwNjlkZGM5ODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTQ4OUQ2RTVGNkMzMTFFQjg0RkI5OTdERDQ0RUIzM0QiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTQ4OUQ2RTRGNkMzMTFFQjg0RkI5OTdERDQ0RUIzM0QiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YWU1YzFmOTUtNzM4NC1kZjQ4LTgzNWYtY2E4MDc2MTI2ZjdjIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MzFjZWI2YTMtYmU0Yi02YjQzLTlhYjAtZjcw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\"","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,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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/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 Privacy Policy\n </a>\n and \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 \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 }}> </Text>\n <Text> </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\" }}> </Text>\n <Text style={{ fontSize: \"9px\", fontWeight: \"bold\", width: \"calc(100% - 70px)\" }}> </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> </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> </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 }}> </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 }}> </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 }}> </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> \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 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 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 = `®isteruser=${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,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG2YAABzjgAA+swAAIT6AAB5gQAA/RMAADBtAAASKQ0eJk4AAAMAUExURevr7Jydn5manJucnuPj5JiZm9vb3PT09MvLzMLCw5GSlPr6+qeoqdXV1tHR0rW1trW2uKusrbi4urO0tLq6vKiqq7e4uLW2tqGipLm6ury8vr6+vr+/wLu8vM7OztDQ0cjJytjY2dTU1aipqqqrrMXGxqanqKmqq6Wmp9LT062usKSlprS0ta2trra2t6ytrqWmqK2ur66vsK6ur7CwsbOztK+vsK+wsbKys7GxsqOkpqOkpZ6foampq6qqrJ2eoKenqaysraKjpZqbnbi4uaKjpKSlp5eYmqioqqurrKChory8vKGio6amqKCho7Gys7CxsrGysrKzs5+gop+gobS1tbq6u7e3uLCxsbKztLi4uJWWmJaXmba3t7i5ub29vZWXmZSWmLq6upOVl5SVl7m5up6foLq7u7u7vJqcnZOUlpeZm5aYmpKUlry8vZKTlpGTlZCRlJCRk6ytr9bX197e3q+vsb2+v8DAweDh4bOztebm5ujp6e/v756eoP///4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///zfARREAAAeqSURBVHja7N3xVxJZFMBxQAQVilzPSTslBxcDdwdtBQRBDQUFBYNMDTcoNLAMM7QD23JozvvX94cJZBhQZ+bdO2/26F/Q59wv8K48JwP5n/wY7iH3kHvIPYT6D89bLBazfiF8Y+T09PT09MOHzc3Nd+8yeoTwb99+/PjkSbfj8eN83qYPSCOTOTs7O3veEP69UkcegEIdMpPJCI6zz5/f9p9HPp9//97KMsTwLZO5o2Nh4RmrkHrpmxzHwsICzyLEWSq1IXd1TE6aWYNYSqVSqSRzHpOTDsdDliC2ksBQ4HA4zOxA6iURRJ7DccizAbE9fVpyNXhlXTkcjsNDHxMQKyGEWBV35Tg89Pl8rKTVUtHVoc/n89mYgPBK3686Dt8EIcQwMzOjKUTF+1XHMbG0tLT095s3y8vL77WCqHq/Ehy+Lsdybm9aC4irRKGrLkcut7cXiUTQIS1588jfPo/cXiQSibxGhtTpdyU4kCElyq/zXMdx9AwT0qI+j1zbEQwiQmyUX+fXXR0Fg0EXGsQK1dXRUTAYDIbRIJBdBYNhNIgFsqtgOBx2IkFguwqHQyEcSAu2q3AICwLcVSjEh1oYEPCuQgbix4A4obsK+QmPAwHtKhTy+3+gvEacsF2F/H5/wIAIAevK7/cHAhgQgPNuzzwCgcAiFgSoK3/bgQWhuUdJuwosYkGgu1pcnDdgQCju5wPmMY8CAeyqPY/5+To8BKErPAjY50fb8QIHAnIu6Z7HCxwI0Lmk24ECge8KB4LQ1YuNDYS3X4SuNjbGESAIXW2M40DAuxofH0c4ayF0hQNB6AoJAt8VDgShq/GdHQwIYFfteezMIkCgzrsiBwZkhPp+LulqFgXyB/X9XDoPFEgTviscCE99P+/+/PjlwIAQ6vu5dB4vX2JAALvaaTu8OBCoc0m7q5deHAjYuaQzD68fAwJ3Luk4vC4MyAh4V17vAwxIE7orr9fLY0AIdFde7xpBg8B09cuBCAHtyrvmxoLAdrXm/h0DUgfvas3tdvPQEBdCV2632+3eHgWFwL9ftR12+yYg5CfIfi7pyu3ettvtdkAI2B4lnYfdbndBQiD28wGO9XUwiAFmP5e8zu0CxGOFgrgQu1pf93hcUJA84HlX/DoXIDkoCNB+3r8rj8fjgYIA7ef9u4KGoHXl8XheAUKAzyXdXXlezcFBwM8lXV29moODoHY1BwfB7QoSgtoVIARuj+rXFTAEtCvxPJKPoCBm1K6SyZ9gx3jorrodc0kObh/B7CrJzQJCELviZA1EJsQAtp9LuwKFENA9SjwPbhoSYgbbzwVGl0PeQGT/gg5sP+/tipuFhRCkruQORD5kFPa8qzAsJb/Ehj3v/uqKM8NDSANmPxd11cD5fgS8K5Q/3yOE2L7l9vYWALpKPuI4jsP7M3DhB+JcovyBbmoeJ0K/K45oASG0u0py09pAND7v0oM0qe7nSU4zCKG7R2kJofw5yGsFcVLcz1UOROXztah2pSWE6vkqatUO0qS2n3McFyXaQYiP2h6l0qH6qYCU9nMuGmUBon6P4qLRh9pCrJS6UjsQ9Q+cXKKwR3HRaPQfrSGESlfRFaI5pK7284OKg8aDiyl0tcIEpKV4j6LooPIoaYParlZ4NiBE2X5+7fiXMAIh6rpaIcxAeDVdUXHQem78A/n7ecfRYAlCphXsURTnQfG/JJC/RwkO9iCy9yjBEWcNoqyrlTiTEPldxZmEKOgqHt9iDyL782MlHo9vsQeRtZ9fO5iDyNyjOg72IIq62tqaYg0ib4+6drAJkd3VFJMQBV1NTe2yC5HTFZOQO+9R3fPYZQ4iu6spwcEq5PY9StTV7m6WLYjtVFlXu9nsCDMQi9+ruKtsNptOp9N/WTWHmJ/I2s8l88im0+n0/v7+Qc6mHcSiZI8a4Dg4OFhdVXGnRjHks9I9StpVx7G6uvrpU8yJCHmudD+/cR6CIxaLxR5gQJT/3ufOjljMaDQ6ASHN18q+P5fRVcdhNBqNQ9tWAEhL+ffnCuZhNBqNQ0NDQ0N+qpCmyu85lTu+fEkkEnYLDcio6u/PFXbVcSQSiYTJ5FQFeU7le0518xAcJpPJNKMMUqL0/Tk1h2l4eHh4RB6kPkHlHvKA827HsS/bMXx+nvqtdUcItfvt9OcxfH6eSqVSqa8/boU06d2/AnR8LRaLN0Pq9O6339aVckfqa7FYLB7fBKF0DxlhHsXj42PjQEgIqqspCEehUBgA8dG5347S1fFxoVAo2PpCWrrqqlAoFE5OWn0gBr11VTg5Oan0gdC63w45j1Svo2KVQujdQ8bq6qRSqVQkkAlq95DxuqpUKmUJhNb9dsyuKpVyeVQC0WNX5XK52gOx6LKrcrlabYghE5Tut+N2VS5Xq3YxhNo9ZNyuqtXqhQhipXS/HburavVCDKkzvUcN7qp60QPZ1GtXFxc1EYTV/fwaMmgetV4Iu/v5jV3VarW6CML2fj64q1qt9mc3hPX9fPA8ape9ED3sUX3mcXl5KYboY4/q5xgTQdjfz/t31QvRb1djYz0QvXYlhbC/n/ftqgeinz1KMo8eiG72KKlDBNHPHtXbVT+ILrsaG7vqgei0q6ur770QfXZ19V2A/DcAHpmC7NcZ4/wAAAAASUVORK5CYII=\"","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,iVBORw0KGgoAAAANSUhEUgAAAgUAAAIFCAYAAABCnI4NAAAgAElEQVR4nO3d23EdR5IA0KqJ/Zc8EGQBKQsIWUCMBYIsIGTBgBYMaIFICwRaQMICghaI8GBgQW00WZBACo/76K5H1zlfuxuhjb7V4EUiMyszppQCAGOLMR6GEE5HP4eB/S+EcPx/o58CwMhijN/nYOCFH4Sh/ZRS+p+gAGBQOTvwOoTwg5+Bof2aUrqc/od/1X8WAEqasgMxxrMQwjsBwfCmgOD1zSHIFAAMRHaAW74KCIJMAcAYZAf4xj8CgiBTALB+McanOTvwxOvmvoAgyBQArFuMcbpZ8EFAQHZvQBBkCgDWKcZ4EEI4Fwxwy4MBQZApAFifGONxCOFSQMAtbx4LCIJMAcB65EFE0xf/c6+VW6aA4HiTA5EpAFiBfNXwUkDANzYOCIKgAKB/uZnQVUO+tVVAEJQPAPqVmwmncsEzr5FvbB0QTGxJBOhQjPEoBwTfeX9842MI4XBacLTtwSgfAHQmTyb8Q0DAHXYOCILyAUA/zB7gEXsFBEGmAKAPuVxg9gD3udo3IAiCAoD2KRfwiOsQwtG+AUFQPgBol3IBG7jOGYLLOQ5LpgCgQbeGEQkIuM+sAUEQFAC059YwIuUCHnI8Z0AQlA8A2mF3AVuYNh6ez31gggKABsQYn+b+AaOKecyjK5B3pXwAUFledfxeQMAGXi0VEARjjgHqytcNX3gNbGCnfQbbUD4AqCD3D5xbZsSGFg8IgkwBQHn6B9jS3uOLN6WnAKAg/QNsqVhAEGQKAMrRP8CWpuFEB6UCgqCnAGB55g+wg+uSGYIbygcAC8r9A+8FBGxh9vHFm5IpAFhI3l9wblwxWzqpERAEmQKAZeSGQvsL2NZi0wo3IVMAMLMY4/Sl/otzZUsvawYEwe0DgPloKGQPRYYTPUZQADCDGONB7h944jzZ0kVK6bCFQ1M+ANjTrRsG+gfY1jSc6KiVU9NoCLCHWxMKBQRs66rGLIKHCAoAdhRjPAkh/C4gYAfTLIKjlgKCoKcAYDduGLCnn2rNIniIngKALbhhwAx+bTEgCIICgM3lgOC9Gwbs4bfaswgeoqcAYAO3bhgICNjVNIvgrOXT01MA8AhXDpnB25RSM1cP7yNTAPCAGOORgIA9TbMIqk8r3IRMAcA98gyC350Pe5iuHh60dvXwPjIFAHeIMZ4KCNjTdWvDiR7j9gHAN8wgYCbHrV49vI9MAcAtAgJmMs0iOO/tMGUKAP6eQTB9iT9zHuzpTcuzCB6i0RAYnqFEzKiLq4f3ERQAQxMQMKOPvTUWfktQAAwrDyWaSgY/+ClgT11dPbyPngJgSKYUMqPurh7ex+0DYDgCAmZ20tvVw/sICoChCAiYWdNbD7clKACGkccWfxAQMJPmtx5uS6MhMAR7DJjZx5TS07UdqkwBsHoCAmZ2NTUWrvFQBQXAqgkImNl00+BoDTcN7iIoAFZLQMACultytA1BAbBKAgIW8FuPS462ISgAVifGeCogYGaru2lwF7cPgFWx+pgFrPKmwV1kCoDVEBCwgNXeNLiLoABYBQEBC1j1TYO7CAqA7gkIWMiqbxrcRVAAdE1AwEJerv2mwV00GgLdEhCwkOmmwfGIhysoALokIGAhH6fGwpH6CG4TFADdERCwkKmx8GlK6dOoB6ynAOiKgIAFHY4cEARBAdATAQEL+nW0mwZ3ERQAXci7DAQELGFqLJwCzuHpKQCaZ7kRCxpmhPEmBAVA0wQELGhqLDwY9abBXZQPgGYJCFjQ9chXD+8jKACaJCBgYScaC/9JUAA0R0DAwl5pLLybngKgKTHGoxDCH94KC7lIKQ2zCnlbggKgGTHGqQv8fQjhO2+FBVzliYX6CO6hfAA0QUDAwqbGwiMBwcMEBUB1AgIK0Fi4AUEBUJWAgAI0Fm5ITwFQTYzx+xwQPPEWWIiJhVsQFABVCAgowMTCLSkfAMUJCCjExMItCQqAGs4FBCzMKuQdCAqAomKMU8PXM6fOgqxC3pGeAqCYHBD84sRZ0Edlg93JFABFxBhPBQQszICiPckUAIuz4IhCfk4pvXfYu5MpABYlIKCQlwKC/ckUAIvJ0wo/OGEW9jaldOSQ9ycoABZhfDGF2Hw4I0EBMLs8nOiTgICFXeebBuYRzERPATCrW9MKBQQszebDmckUALOKMV6aVkgB04CiYwc9L5kCYDZ5OJGAgKVNA4pOnPL8ZAqAWZhWSCHXubHwkwOfn0wBsLc8i0BAQAnHAoLlCAqAvRhOREGvUkrnDnw5ygfAzswioKCLlNKhA1+WoADYSYzxIIRwKSCggKmP4MCAouUpHwBby7MIzgUEFGLzYSGCAmAX7109pBCLjgpSPgC24uohBekjKEymANhYjPFUQEAh06Ijmw8LkykANuLqIYX9ZK9BeTIFwKPy1UMBAaX8JiCoQ6YAeJCrhxT2NqWkbFCJoAC41601yG4aUMJV3mvg+mElygfAQ84FBBRkHkFlggLgTvnq4TOnQyH6CBqgfAD8g5sGFKaPoBGCAuArMcZpWMw7p0Ih+ggaonwA/CVfPbSalpL0ETREUAB8lm8avHb1kIL0ETRG+QD4LMY4ZQieOw0K0UfQIEEBMAUEZyGEF06CQq5DCAfKBu1RPoDB5ZsGAgJK0kfQKEEBDMxOAyp4mVJ67+DbpHwAg8qNhZ80FlLQRUrp0IG3S1AAg4oxXhphTEH6CDqgfAADyiOMBQSUpI+gA4ICGExuLPzFe6egV/oI+qB8AAMxwpgKPqaUnjr4PggKYBAxxoMQwqXGQgq6znsNPjn0PigfwADyTYNzAQGFHQsI+iIogDGcaSyksDcpJcu1OqN8ACuXGwsNKKKkjyGEQ7cN+iMogBXLEws/eMcU9pPth31SPoCVyn0EroFRmnXIHZMpgJUysZAKrEPunEwBrFBehSwgoKTp+uGxE++boABWxipkKjHGeAUEBbAiubHwzDulMGOMV0JPAazErcZCZQNKMsZ4RWQKYD1sPqS0qY9AY+GKCApgBWKMJyGE594lhZ0YY7wuygfQOQOKqMT1wxUSFEDHch/BJ4uOKOwqbz9022BllA+gbzYfUsOxgGCdBAXQqRjjaQjhmfdHYS9dP1wv5QPoUIzxMITwzrujMNcPV05QAJ3RR0Al17mPwG2DFVM+gP7oI6CGUwHB+gkKoCN50ZE+Akqbrh8anz0A5QPoRIxxuhP+h/dFYVPZ4MBtgzHIFEAHYowHeYwxlGb74UAEBdCH1/oIqMD2w8EICqBx5hFQycepudDhj0VPATTMPAIq+imldOkFjEWmABqV5xGcez9U8JuAYEwyBdCoGON7ZQMquEgpHTr4MckUQIP0EVDJdP3w2OGPS6YAGhNjnGbLf/BeqODfKSUlq4HJFEBD9BFQ0VsBATIF0JAY4/Sl/Nw7oTBTC/lMpgAaEWM8FhBQiamFfCYogAbkPgILZ6jB1EL+onwADYgxTnfCn3gXFHYVQngqS8ANmQKoLK9DFhBQg7IBXxEUQEV5jPEL74AKXppayLeUD6CSfP3wk+2HVPAxpfTUwfMtmQKoxzpkajC1kHsJCqCCGOOJ64dUcqpswH2UD6CwfP3wvSwBFVh2xIMEBVCY64dUcp2vH37yAriP8gEU5PohFZ0KCHiMTAEUkq8fvnPeVDAtOzpy8DxGUAAF5OuHU9ngB+dNYZYdsTHlAyjjtYCASo4FBGxKUAALizEeuX5IJVPZ4NzhsynlA1iQqYVUpGzA1mQKYFnnAgIqUTZga4ICWEieWvjM+VLBK2UDdqF8AAswtZCKrvKQIlkCtiZTAMuw7IhalA3YmaAAZhZjPDW1kEqmssF7h8+ulA9gRrls8MGZUoGyAXuTKYB5vXaeVKJswN4EBTATZQMqUjZgFsoHMAPLjqhI2YDZFMkUTFPdYozvY4wHXh1rk6cWKhtQi7IBsylVPrgZ4nKZG7FgTU4tO6ISZQNmtXj5IGcH/rz1f5rmcR+mlC69SnqnbEBFygbMrkSm4Oyb/30a6PIhxnjsddIzZQMqUzZgdosGBfmvqPtWxv4uMKBzygbUomzAIhYtH8QYP23wpTn9cJ94vfRE2YCKlA1YzGKZgrwhbpO/ol7EGKVg6YayAZUpG7CYRYKC/KV5usV/8kuM8Tz/d9A6ZQNqUTZgUYuUD2KMU3Phix3+04/5ZoIomCYpG1CRsgGLmz0ouOMK4ramwOAopfTJ66clOZN1KUtAJT/LErC0JcoH+9ZanxhyRKOUDahF2YAiZs0UzJxaNeSIZigbUJGyAcXMnSmYsyPbkCNa8u0QLijFbQOKmS0oyGtjl0itGnJEVVYiU5GyAUXNUj7IDVif8l/3SzHkiOJyb8sHJ08FygYUN1em4GzhgCAYckQlfuao5URAQGl7BwX5L6lfCj23IUcUo2xARW9TSudeAKXtXT6IMU71rmeFn9uQIxaV521cFsiAwbemm1cHvt+oYa9MQYzxqEJAEPJfb+/zFzcs4bWAgErcNqCavTIFG25BXJJZBswuL/P6r5OlgqlscOTgqWXnoCDXW//TwJsTGDCbQjdp4C7KBlS3U/kgf3G2cj3QkCPmpGxALacCAmrbtaegxBXEbRlyxF5yj8xzp0gFFyklUzOpbuvyQQcz4A05Yms2IFLRdR5SZDMs1e2SKTht/LUZcsQubECkllMBAa3YKlOQ0/O/d/L23rrawyZsQKSiqWxw6AXQio2Dgk7Tq4Yc8agY46XJhVTyk5tTtGSb8sFJh+lVQ454kFHGVPRSQEBrNsoUrGDkq1kG/INRxlT0MaX01AugNZtmCk47/+L8LmcM/CPkNjMJqMUNKZr0aFCQm7BKbUFckiFH/KXi3g6Yrk2/H/4UaNKj5YOVNmH9mlJybXFQRhlT0VWeSaD5mSY9mCnIf1WvsQlrmn5oeti4ei+H0S/XpGnavZmCQf6aepNSUk4YSO4r+TD6OVCFDYg076FMwckAf039EmM8zwEQY1A2oobpBpQ/QGjenUFBvqrVwlrkEp7nmwkCg5WLMZ6YSUAlJ8oG9ODO8sH01/OA2+Km6YdHZpCvk+ZCKjLKmG78I1OQryCOuD52+gvy0iyD1TKTgBqUDejKXeWDkbvyDTlaoYEDXeo7k32kJ1+VDzrbgrg0swxWIsb4yVpkKjDKmO78lSnINVd39//2u+mH/csLjwQE1OD7g+7cLh8Y6PJPhhx1LN+iMWOeGl5ZwEaPPpcP8pfnn97gvQw56tCgt2iozyhjunWTKVA7f5ghR53RXEhFZhLQrRhCmL4833mFG5lmGRz6B98+zYVUYpQxXfuXLMFWnuQriwcdPfNwNBdSiZkEdE9QsD1DjhqmuZCKTmUR6d1No+GlmfBbu86lBB3GDdFcSCVGGbMKN42GUl7bm65vfjDLoB2aC6lIdopV+BwU5L92X3qlOzHkqB1KYdTwUsaQtfh2zPH7EMIzb3cnZhlUlNci/3fYA6AWMwlYlW+DgqlJ69Jkw50JDCqwFpmKfk4pvfcCWIuvtiTmbV5qY7ubhhy9N+SouDMBARW8FRCwNl9lCm7o4N6bIUeF5OZCw7cobbp9dODfOGvzr3s+z3H+oWc3N0OOzDJY3unaPyBNMpOAVbozKMg/7Grj+xEYLCzf+tAYS2nTTALbU1mlO8sHN/La4Bde/V6mjMuR2uO8NBdS0U+uILJW95UPbpzmKzfsbvql9c4sg9mdCAiowEwCVu3BTEH48hfZlP7+4MdgFr+mlAzY2VO+Ovtn1x+CHplJwOo9likw7XBe0/RDQcH+1HOp4URAwNo9mim4YWnSrAw52pEriFQyzSQ4cvis3TZBgWmH87rIDYj+8tiC4JQKrnPZ4JPDZ+0eLR/cyP8g3Amfz7N8ZdH0ww3lZk0BAaWdCggYxcaZghuWJs1umn54rKP5Ya4gUsnHlJJZIwxj40zBLUemHc7KkKPNuIJIDXbBMJStgwLTDhfxXQ4MDlf42faW+1n+0/nHoD+vDB1jNLtkCqbAYFqY9MZPy6wMObqfXhZKu/Zzx4i27im4kWu8Ux38Bz85szPkKHMFkUr8G2RIOwcFwRf20swy0NhKHdPCI6U8hrRT+eBGrreZdriMX0affmgLIpVoLmRYe2UKbhgos6hhhxzFGD8pT1HYtPBILwHD2itTcMuxa4qLGXLIUYzxVEBAYVf2ajC6WYKCPHhHdL2coWYZ5ABICpfSLDxieLOUD25oClvclI05XPv0wxjj9NfaiwYehXFoLmR4YYGgwCja5V3nHoNVDlXJg4r+bOBRGMuP9hvAfD0Fn5l2WMTahxwpQ1HaSwEBfDFrpuCv/6dfrtL94owXt6oBK+ZeUMFVXousl4DhhQWDAtMOy1nNkCM9KVTws/0G8LdZywc3lBGKWsWQo5wlEBBQ0lsBAXxtkUzBjXzX3Ha7MroecmRQEYVd57KBXgK4ZZFMwY08GeyjAy+i2yFHuWlSQEBJZwIC+KdFMwXhyxf+NHDng7MvZgrCjnuaZSBLQGFXKaUDhw7/tGimIPw97fA3Z19MV9MPjTOmAv1OcI/FMwU3dJYX1/yQI8OuqGBqLjxy8HC3xTMFt1iaVFYPQ45OBAQUdG2nBjysWFCQm3qk7cr7vcXAwNIjKtBcCI8oVj64EWM8DyE892KKa2rIkaVHFKa5EDZQIygw7bCeJgIDS4+owORC2EDJnoLPTDusapp+2MIsA0uPKMnkQthQ8UzBDenjqqZZBoc1ph/KElCYyYWwheKZgltMO6yn5iwDWQJK0lwIW6iWKQimHbbgOmcMikw/9L4pTHMhbKlmpuBm2uFLL62a73LG4LDQA5w1eAaslyuvsKWqmYIbph024deU0mIrmHPg8a6vI6FjFymlUsEurEYrQcFBvqZoul1diwUGAj8K+1EvAWyvavngRv7HK9VX3zT9cPagIGcJBASU8lJAALtpIlNww7TDZsw65EiWgIKu8hXE4tdtYQ1aCwpszWvHRd6yuNeXq14CCvt3SuncocNumigf3DDtsCnP8s2EfacfmktAKRcCAthPU0FB+BIYTP+oXzXwKOw55EgvAYXpS4I9NVU+uGFpUnN2GnKkl4CCXqWUBAWwpyaDgmD6XYuuc4/BRotl9BJQ0PSzeaC5EPbXXPnghmmHzZmaP9/FGDft+dBLQCknAgKYR7OZghsxxstc26YdDw45kiWgoI8ppRqLvWCVms0U3HKc04O047EhR7IElKKPAGbUfFCQywh+ybTnl7sCAzcOKOjNpj0uwGaaLx/c0MnerK+GHHlPFHKdJxcaZwwz6qF8cEMZoU1/DTnKi60EBJRwJiCA+XWTKQhf/go9CiH80cCj8E8fQwj/ExRQwFVK6cBBw/y6CgqCpUlACD/rJYBl9BgUWJoE45r2Gxx6/7CMnnoKPssNbUcNPApQnoVpsKDugoLwJTB4b2kSDOeV5kJYVnflgxu5jPDetEMYgv0GUECXmYLwdxlBKhHGYL8BFNBtUBAsTYJRfHxo1wYwn27LB7dZmgSr5goiFNJ1puCWI9MOYZXeCgignFUEBbkj2dIkWJdrWxChrLVkCqbA4Cwv5wHWwX4DKGwVPQU38kKeS9MOoXtXeQuiGwdQ0GoyBeHvMoJritC/UwEBlLeqTMENS5Oga/YbQCVrDQosTYJ+uYIIlayqfHDD0iTo1hsBAdSzyqAgWJoEPbp2tRjqWm1QkJ3mLmagfa4gQmWr7Cm4Lcb4NITwoZ0nAu7gCiI0YO2ZAkuToA+uIEIDVp8puGFpEjTLFURoxOozBbcYagRt0lwIjRgmKMhlhN8aeBTgb64gQkOGKR/ciDFOX0DP2ngaGNp1bi504wAaMVL54MZx/jIC6nIFERozXKYgfMkWTIHB7w08CoxqCswP3DiAtoyYKZj6C16HEN428CgwqhMBAbRnyExBsDQJavqYUnrqDUB7hswUhL+XJrmmCOWdOHNo07BBQfgSGJxPV6IaeBQYxVtXEKFdw5YPbuQywjTD4Ic2nghW7Uc3DqBdQ2cKgjIClPRKQABtGz5TcCPGeBZCeNHG08DquIIIHRg+U3DLNH/9YzNPA+tiCyJ0QKbglhjjdE3qQzMPBOtwlVI68C6hfTIFt+SlSS+beSBYB1cQoRMyBXeIMU7BwZPmHgz6c5FSOvTeoA8yBXdzGwHmceocoR+CgjvkMsJvzT0Y9OWNQUXQF+WDB8QYpy+0Z80+ILTNoCLojEzBw47z/WpgOy8FBNAfQcED8peamihsZwqkz5wZ9EdQ8IiU0vTldtH0Q0JbDCqCTukp2EBemjRlDb5r/mGhLoOKoGMyBRuwNAk2ZlARdEymYAsxxvMQwvNuHhjKMqgIOico2IIyAjzoZ3MJoG/KB1tQRoB7GVQEKyBTsIMY43Qj4UV3Dw7LMagIVkCmYDfT7IKrHh8cFmBQEayETMGOYoxTQ9W7Lh8e5jMNKjowlwDWQaZgR7l++qrLh4f5nAkIYD1kCvaQbyNMGxV/6PZDwO4MKoKVkSnYQ/4L6ajbDwD7sRcEVkZQsKeU0pQpeNn1h4DtTYOKXjs3WBflg5nEGKfg4MkqPgw8zqAiWCGZgvkYasQoLgQEsE6CgpkoIzAQATCslPLBzJQRWLlpnLGgAFZKUDCzGONBvqZoaRJrMw0qemp6IayX8sHM8hemq1qs0ZmAANZNpmAhMcapEevZKj8cIzLOGAYgU7Cc4/xFCmtwKiCA9ZMpWFCM8SSE8N/VfkBGYZwxDEKmYEEppbPpTvdqPyCj0CMDg5ApWJjbCHRuGlR06CXCGGQKFpa7td3rpleyBDAQQUEBKaXzEMLb1X9Q1sY4YxiM8kEhMcbvQwiflBHoyE95fDcwCJmCQvJ1LmUEevFGQADjkSkoLMY4lRKeD/Wh6dGPphfCeGQKyjPUiNa9EhDAmGQKKogxHoUQ/hjug9MD44xhYDIFFbiNQMPOBAQwLpmCSvJthKmR64chD4AWyRLA4GQKKnEbgQadCAhgbDIFlcUYp/0IL4Y+BFpg6REgU9CAaYzs1eiHQHXGGQMyBS2IMU4LZ96Nfg5U8zGl9NTxAzIFDcjz5V+Nfg5Uc+LogSBT0A63EajEamTgLzIFjXAbgUr0EgB/ERQ0RBmBwt5ajQzcpnzQGGUECrL0CPiKTEFjlBEo5I2AAPiWTEGjDDViYbIEwD/IFLTLUCOWYjUycCeZgoYZasQCLD0C7iVT0LDcGf5y9HNgVlYjA/eSKehAjHG6jfBk9HNgb7IEwINkCvrgNgJzkCUAHiRT0IkY49R4+J/Rz4GdWY0MPEpQ0BFlBPbwa0rptQMEHiIo6EiMcVpv+2H0c2BrsgTARvQUdCSldOk2Ajuw9AjYiExBh5QR2MLHlNJTBwZsQqagT24jsKkTJwVsSlDQIWUENnRhNTKwDeWDjikj8IifBQXANmQK+qaMwH1kCYCtCQo6pozAA9w4ALamfLACygh8421K6cihANsSFKyAoUZ848eU0ieHAmxL+WAFlBG45Y2AANiVTMGKKCMgSwDsQ6ZgXdxGGJssAbAXQcGK5DLCq9HPYWBuHAB7ERSsz/SL4Wr0QxiQLAGwNz0FKxRjPAwhvBv9HAZyHUI4SCn9b/SDAPYjU7BCeZKdMsI4zgQEwBxkClYqxvh9CGHqMfhh9LNYOVkCYDYyBSuVf0m4jbB+sgTAbGQKVi7GeBZCeDH6OayULAEwK5mC9XMbYb1kCYBZyRQMwG2EVZIlAGYnUzAAtxFWSZYAmJ1MwSDcRlgVWQJgETIFg3AbYVVOBATAEmQKBhNjfB1C+GX0c+jYVUrpYPRDAJYhUzCek5x+pk+WHgGLkSkYUIzxKITwx+jn0CFZAmBRMgUDSimdhxDejn4OHZIlABYlUzCofBthWrX73ehn0QlZAmBxMgWDchuhO7IEwOJkCgYXY5xKCc9HP4fGyRIARcgUcOw2QvNkCYAiBAWDy2UEv3TaNWUJXo9+CEAZggKmwGBar3zhJJokYAOK0VPAZzHGg7wbwW2EduglAIqSKeCzlNInf5U2x/sAipIp4CsxxmnN8jOnUp0sAVCcTAHfMrugDbIEQHGCAr6SywgvnUpVbhwAVSgfcKcY49R0+MTpVPHvvJ8CoChBAXeKMT4NIXxwOsVdpJQOB/vMQCOUD7hTSulSGaEKvQRANTIF3CtvUpyCgx+cUhGyBEBVMgXcyybF4mQJgKoEBTwopTTNLXjllBZ3kc8aoBrlAx6ljFDEz4ICoDaZAh6VywgnTmoxsgRAEwQFbCTfm3/rtBahlwBogvIBG8tlhE82Kc7KjgOgGTIFbEwZYRGyBEAzZArYmk2Ks5ElAJoiU8AuptkF105ub7IEQFMEBWwtb1I8c3J7sQkRaI7yATuzSXEvvwoKgNYICtiZTYo700sANEn5gJ3ZpLgzvQRAk2QK2IsRyFuTJQCaJVPAXmxS3JosAdAsmQJmEWOcxiA/d5oPkiUAmiZTwFzMLnicLAHQNEEBszAC+VHmEgDNExQwm/xL78KJ3kmWAGiengJmFWM8yLcRbFL8m14CoAsyBczKCOQ7yRIAXZApYBFGIP9FlgDohkwBS9F0+IWsCdANQQGLSCm9DyG8Gvx0pyuabhwA3RAUsKTTwWcXnOWrmgBd0FPAomKMRyGEPwY85SkYOhAUAD2RKWBRKaXzQWcXyBIA3ZEpYHEDzi6QJQC6JFPA4gacXSBLAHRJpoBiBpldIEsAdEumgJJGmF3wWkAA9EpQQDGDzC4wrAjolvIBRcUYvw8hfFpp0+GblNJxA88BsBOZAorKqfW1lhEsPgK6JiiguJTS6xXOLniTb1kAdEv5gCry7II/V3T6PwoKgN7JFFBF/gX6ciWnL0sArIJMAdXkpsNpdsEPnb+Fn1JKlw08B8BeZAqoJjcd9t6tfyEgANZCUEBVeXbB247fghsHwGooH1BdxwuTpizBYQPPATALmQKq63hhkiwBsCoyBTQjxoJWlswAAAKGSURBVPipo6bDjymlpw08B8BsZApoSU9Nh3YcAKsjU0BTYoznIYTnjb+Vq5TSQQPPATArmQJaM+1FuG78reglAFZJUEBTOmg6vMq7GwBWR1BAc1JK01/iV42+Gb0EwGrpKaBJMcbp/v+7xp5tKmsc5EmMAKsjU0CTGp10eCYgANZMpoBmNTbpUJYAWD2ZAprVWNPhawEBsHYyBTSvkUmHP+YgBWC1ZAroQe1Jh28EBMAIZAroQoxxajx8VulZZQmAIcgU0Ita2YK3AgJgFIICupB/Mb+s8KyGFQHDUD6gGzHG70MInwpeUbxIKR36CQFGIVNAN/KVwJOCz2vxETAUmQK6E2OcBho9Wfi5rUcGhiNTQI9KZAtkCYDhyBTQpRjjeQjh+ULPLksADEmmgF4tmS1w4wAYkqCALi14RXFafPTaTwUwIkEBPTvLv8TnZD0yMCxBAd3Kv7znbghUOgCGJSigayml6Zf41Uyf4Y0sATAytw/oXoxxmjr4bobPYfERMDSZArqXUpo2KF7s+TmsRwaGJyhgLfbtLXDjABieoIBVyNmCNzt+lov83wMMTU8BqxFjnKYQ/rnD5/l3SuncTwIwOpkCViP3BGybLbgSEAB8IShgbU62HGhk8RFAJihgVfKcgU0HEF2nlDQYAmSCAtZo0/HHphcC3CIoYHW2yBYICgBuERSwVo9lC4w0BviGoIBV2iBboMEQ4BvmFLBaMcbvQwjTNcXvvvmM07CiQ28e4GsyBazWA9kCWQKAO8gUsGp3ZAs+ppSeeusA/yRTwKrdkS1w4wDgHjIFrN6tbMEUJHzvjQPc7f+cC2s3ZQtijDIEAI+QKWAIeYPi/8wmALhHCOH/ATml+JfizkXkAAAAAElFTkSuQmCC\"","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":""}