{"version":3,"sources":["services/bookScan.service.js","constants/global.constants.js","modules/radiologyReports/action-types.js","assets/img/mastercardDark.png","assets/img/visaDark.png","assets/img/visaElectronDark.png","assets/img/americanExpressDark.png","assets/img/dinersClub.png","assets/img/jcb.png","modules/visits/actions.js","constants/priceItems.constants.js","polyfill.js","common/PrivateRoute.js","configs/index.js","routes.js","App.js","serviceWorker.js","modules/dashboard/reducers/prices.js","modules/dashboard/reducers/bookings-slots.js","modules/dashboard/reducers.js","modules/dashboard/reducers/bookings.js","modules/patient/reducers.js","modules/patient/reducers/patients.js","modules/linkedAccounts/reducers/linked-accounts-list-reducers.js","modules/linkedAccounts/reducers.js","modules/dentists/reducers/dentists-list-reducer.js","modules/dentists/reducers.js","modules/radiologists/reducers/radiologists-list-reducer.js","modules/radiologists/reducers.js","modules/invoices/reducers/invoices-list-reducers.js","modules/invoices/reducers.js","modules/voucher/reducers/vouchers-list-reducers.js","modules/voucher/reducers.js","modules/covid-19-survey/reducers/covid19-survey-reducer.js","modules/covid-19-survey/reducers.js","modules/radiologyReports/reducers/radiology-reports-list-reducers.js","modules/radiologyReports/reducers.js","modules/visits/helpers.js","modules/visits/reducers/visits-list-reducers.js","modules/visits/reducers/visits-past-reducers.js","modules/visits/reducers/visit-update.reducers.js","modules/visits/reducers/visits-receipt.reducers.js","modules/visits/reducers.js","modules/reports/reducers/audit-reports-list.js","modules/reports/reducers/radiologist-reports-list.js","modules/reports/reducers/patients-satisfaction-reports-list.js","modules/reports/reducers/audit-registration-report-list.js","modules/reports/reducers.js","modules/visit-details/reducers/visits-past-reducers.js","modules/visit-details/reducers.js","modules/profile/reducers/profile-reducers.js","modules/profile/reducers.js","modules/profile/reducers/credit-card-reducer.js","reducers/rootReducer.js","reducers/authReducer.js","store/index.js","index.js","modules/profile/components/PersonalInformation/index.js","modules/profile/components/EditModeToggler/index.js","modules/profile/components/ProfileForm/index.js","modules/profile/components/PersonalInformationEdit/index.js","modules/profile/components/ChangePassword/index.js","common/masks/DateInputAdapter.js","common/masks/CreditCardInputAdapter.js","modules/profile/components/CreditCardSettings/index.js","modules/profile/components/SupportedPayments/index.js","modules/profile/selectors.js","modules/profile/index.js","assets/img/teamviewer.png","services/impersonating.service.js","axios-client.js","modules/visits/components/VisitsFilter/index.js","modules/visits/components/DentistTable/index.js","modules/visits/components/RadiographerTable/index.js","modules/visits/components/RadiologistTable/index.js","modules/visits/components/ReceptionistTable/index.js","modules/visits/selectors.js","modules/visits/index.js","modules/visit-details/components/VisitDetailsRadiologistPopUp/index.js","modules/visit-details/selectors.js","modules/visit-details/actions.js","modules/visit-details/index.js","services/localStorage.service.js","modules/profile/action-types.js","constants/navigation.constants.js","services/api.js","modules/dashboard/actions.js","common/masks/ReactSelectAdapter.js","modules/visit-details/action-types.js","modules/radiologists/action-types.js","modules/voucher/action-types.js","common/masks/DobMaskAdapter.js","common/masks/MobileMaskAdapter.js","modules/patient/components/CreateEditPatient/index.js","modules/radiologists/constants.js","modules/dentists/components/DentistFilter/index.js","modules/dentists/components/DentistFilterWithName/index.js","modules/dentists/selectors.js","modules/dentists/constants.js","modules/dentists/actions.js","modules/dentists/index.js","common/NoData.js","hooks/useModal.js","modules/profile/helpers.js","services/pricing.service.js","modules/visit-details/components/ScansUpload/index.js","constants/auth.constants.js","modules/radiologists/selectors.js","modules/radiologists/actions.js","modules/radiologists/index.js","modules/dashboard/components/TeethSVG/index.js","modules/dashboard/components/SkullSVG/index.js","modules/profile/actions.js","constants/patient.constants.js","modules/radiologyReports/constants.js","modules/patient/action-types.js","modules/linkedAccounts/action-types.js","modules/invoices/action-types.js","services/legal.service.js","modules/visits/action-types.js","modules/patient/selectors.js","modules/patient/actions.js","modules/patient/index.js","modules/visit-details/components/VisitedLabel/index.js","utils/index.js","actions/authActions.js","actions/authActionTypes.js","services/navigation.service.js","layouts/DefaultLayout/index.js","constants/user-roles.constants.js","services/permission.service.js","modules/radiologyReports/components/RadiologyReportsFilter/index.js","modules/radiologyReports/components/RadiologyReportsTable/index.js","modules/radiologyReports/components/ReportDetailsPopup/BriefScanInfo.js","modules/radiologyReports/components/ReportDetailsPopup/index.js","modules/radiologyReports/components/NewReportPopup/Form/PatientFields.js","modules/radiologyReports/components/NewReportPopup/Form/UploadScan.js","modules/radiologyReports/components/NewReportPopup/Form/index.js","modules/radiologyReports/components/NewReportPopup/index.js","modules/radiologyReports/selectors.js","modules/radiologyReports/index.js","modules/dentists/components/ImpersonateDentist/index.js","modules/visit-details/components/PastVisits/index.js","modules/visit-details/components/ScansManualUpload/index.js","modules/visit-details/components/VisitDetailsPopUp/index.js","modules/visit-details/helpers.js","modules/visit-details/components/VisitPayment/index.js","modules/radiologists/components/RadiologySelect/index.js","common/ApplyVoucherForm/index.js","common/masks/SingleDatePickerAdapter.js","modules/dashboard/components/PriceBreakDown/index.js","modules/dashboard/components/OccupiedSlots/index.js","modules/visit-details/components/PatientInfo/index.js","modules/radiologyReports/actions.js","modules/visits/constants.js","modules/visit-details/components/Comments/index.js","modules/profile/constants.js","modules/covid-19-survey/action-types.js","modules/visits/components/GroupedScansViewer/index.js","modules/visit-details/components/ScanInfo/index.js","modules/visits/components/RequestReport/index.js","modules/visit-details/components/ReportUploader/index.js","modules/dashboard/action-types.js","services/table.service.js","common/masks/TimeAdapter.js","modules/profile/components/ProfileSideMenuItem/index.js","modules/profile/components/ProfileSideMenu/index.js","common/Header.js","hooks/useInterval.js","modules/patient/constants.js","modules/visits/components/ShareScans/index.js","modules/visits/components/ReceptionistShareScans/index.js","screens/Visits/container.jsx","screens/Visits/index.js","screens/Dashboard/container.jsx","screens/Dashboard/index.js","assets/img/3Beam-01.png","modules/reports/action-types.js","constants/localStorage.constants.js","common/modals/DiscardModal.js","common/modals/JoinModal.js","common/modals/RequestModal.js","common/modals/ReportModal.js","common/modals/VoucherModal.js","common/modals/SurveyModal.js","common/modals/SurveyDetailsModal.js","common/modals/Modal.js","modules/dashboard/components/BookingWithoutTime/index.js","modules/dashboard/components/BookingDetailsShort/index.js","modules/dashboard/components/Dashboard/config.js","modules/dashboard/components/CancelBookingModal/index.js","modules/dashboard/components/ToothItem/index.js","modules/dashboard/components/ToothLabel/index.js","modules/dashboard/components/TeethSelector/index.js","modules/dashboard/components/SkullSelector/index.js","common/masks/ReactSelectGroupedAdapter.js","modules/patient/components/PatientPicker/index.js","modules/patient/components/SelectedPatientDetails/index.js","modules/dashboard/components/BookScan/index.js","modules/dashboard/components/Dashboard/index.js","modules/dashboard/selectors.js","modules/dashboard/index.js","modules/dentists/action-types.js"],"names":["calculateEstimatedBookScanPrice","formValues","selectedTeeth","selectOptions","isTwoD","isSkull","selectedSkullAreas","calculateActualPrice","decidePricingStrategy","getScanOptions","scans","teeth","ur","ul","ll","lr","selectedCBCTFormatOptions","selected2DImagingOptions","selectedExtraOptions","selectedXRayJustificationOptions","selectedSkullOptions","scan","name","startsWith","push","reverse","upperLeftQuadrantSelected","upperRightQuadrantSelected","lowerLeftQuadrantSelected","lowerRightQuadrantSelected","Array","from","tooth","id","topJawSelected","lowerJawSelected","selectedCBCTFormat","selected2DImaging","selectedFullRadiologyReport","selectedXRayJustification","selectedQuadrants","filter","i","allPriceCollector","length","jaw","oneQuadrant","data","dataTwo","matcher","collectedCBCTFormatOptions","collected2DImagingOptions","collectedFullRadiologyReportOptions","collectedSelectedXRayJustification","collectedSkullOptions","names","map","includes","collectSkullPrices","collectPrices","format","Object","keys","label","collectFullRadiologyReportPrices","collectXrayPrices","arr","options","value","humanReadablePrice","endsWith","SCAN_TYPES","freeze","CBCT","TWO_D","SKULL","scansStorageUri","process","receiptStorageUri","auditReportStorageUri","dateFormat","dateFormatShort","backendDateFormat","dateFormatReports","presentationDateFormat","presentationDateFormatAm","presentationDateFormatTable","bookingCreationFormat","PAYMENT_CONSTANTS","PAID","PAID_BY_PATIENT","PAYMENT_FAILED","PAID_BY_DENTIST","SUPPORTED_PAYMENTS","src","require","forEach","recheckTimer","slotDuration","fullRadiologyReportNoOption","PAYMENT_OPTIONS","getMonths","months","currentMonth","Date","getMonth","month","isDisabled","getYears","invoicesYears","years","year","VOUCHER_QUANTITIES","VOUCHER_AMOUNTS","VOUCHER_STATUSES","COVID19_SURVEY_RESULT","FetchDataRoutine","createThunkRoutine","GenerateDataRoutine","SET_FILTERS","module","exports","fetchVisits","page","size","criteria","startDate","endDate","orderBy","desc","dispatch","a","request","axios","get","API_CONSTANTS","GET_VISITS","params","success","toastr","error","failure","setFilters","filters","type","updateReport","payload","UPDATE_REPORT","updateScan","UPDATE_SCAN","updateScanUpload","UPDATE_SCAN_UPLOAD","requestReport","visitId","radiologistId","sameDayProcessing","post","report","uploadScans","files","bookingId","isReport","onUploadProgress","formData","FormData","append","file","headers","addScanLink","scanUrl","addLinkDosageForScan","dosage","e","deleteScan","scanId","delete","uploadReport","patch","reportContent","getBookingInfo","retrievePreviousVisits","patientId","FetchPastVisitsRoutine","fetchReceiptDetails","FetchReceiptRoutine","cleanReceiptDetails","CLEAR_RECEIPT","selectedCBCTFormatOptionsV2","selectedXRayJustificationOptionsV2","selectedExtraOptionsV2","selected2DImagingOptionsV2","selectedSkullPartsOptionsV2","selectedTeethOptions","htmlFor","window","CustomEvent","event","bubbles","cancelable","detail","undefined","evt","document","createEvent","initCustomEvent","prototype","Event","PrivateRoute","Component","component","rest","ImpersonatingService","token","originalToken","isImpersonating","render","props","currentUser","JSON","parse","isUserRadiologist","role","Visits","isUserDentist","location","pathname","NAVIGATION_CONSTANTS","RADIOLOGY_REPORT","PROFILE","Dashboard","to","LOGIN","theme","reactDates","DefaultTheme","border","input","borderBottomFocused","color","selected","backgroundColor","backgroundColor_active","backgroundColor_hover","borderColor_active","borderColor_hover","color_active","color_hover","selectedSpan","borderColor","Login","React","lazy","Register","VisitsContainer","InvoicesContainer","VoucherContainer","Radiographers","Radiologists","Dentists","Schedules","PriceList","ReceiptDetails","VisitsMobileContainer","Profile","CreditCardDetails","ChangePasswordContainer","JoinedAccountsContainer","ResetPasswordContainer","ForgotPasswordContainer","ForgotUsernameContainer","ActivateUserContainer","ServiceLevelAgreementDentistContainer","ServiceLevelAgreementReceptionistContainer","ServiceLevelAgreementDentistDetailsContainer","TermsAndConditionsContainer","Wallet","DataLevelAgreementContainer","AuditReportContainer","RadiologistReportContainer","PricingContainer","PatientSatisfactionReportsContainer","PatientSatisfactionFormContainer","RegistrationAuditReportContainer","Covid19SurveyContainer","RadiologyReportContainer","ReferralGuidelines","RegistrationSurvey","ThemedStyleSheet","registerInterface","aphroditeInterface","registerTheme","App","history","createBrowserHistory","this","Suspense","fallback","className","exact","path","isMobile","navigator","userAgent","vendor","opera","VISITS_MOBILE","DASHBOARD","routes","FORGOT_PASSWORD","FORGOT_USERNAME","AGREEMENT","AGREEMENT_DENTISTS_LIST","AGREEMENT_DENTIST_DETAILS","TERMS","WALLET","REFERRAL_GUIDELINES","REGISTRATION_SURVEY","DATA_PROCESSING","PRICING","RESET_PASSWORD","REGISTER","VISITS","RECEIPT","INVOICES","VOUCHERS","RADIOGRAPHERS","RADIOLOGISTS","DENTISTS","PRICE_LIST","CREDIT_CARD_DETAILS","CHANGE_PASSWORD","JOINED_ACCOUNTS","AUDIT_REPORTS","RADIOLOGIST_REPORTS","PATIENT_SATISFACTION_REPORTS","PATIENT_SATISFACTION_FORM","AUDIT_REGISTRATION_REPORT","COVID19SURVEY","SCHEDULES","Boolean","hostname","match","initialState","scanPrices","scanPricesStatic","scanPricesStaticSaving","occupiedSlots","occupiedSlotsDateRange","temporallyOccupiedSlots","blockedSlotsDateRange","updateSlots","dto","userId","copy","slice","index","findIndex","splice","combineReducers","bookingsReducer","state","bookingsWithoutDate","bookings","bookingInfo","selectedPaymentType","action","GET_ALL_BOOKINGS_FOR_CURRENT_WEEK","GET_ALL_BOOKINGS_WITHOUT_DATE","patientData","patient","ASSIGN_VISIT_TIME_FOR_BOOKING","newBookingWithoutDate","item","GET_BOOKINGS_BY_DATE_RANGE","start","appointmentStartTime","end","appointmentEndTime","title","_","startCase","toLower","doctor","dentist","firstName","lastName","GET_BOOKING_INFO","CREATE_BOOKING","bookingsArray","currentObject","CREATE_BOOKING_WITHOUT_DATE","bookingsWithoutDateArray","DELETE_BOOKING","toString","UPDATE_VISIT","booking","parseInt","visited","UPDATE_BOOKING_INFORMATION","SET_LAST_SELECTED_PAYMENT_TYPE","pricesReducer","SET_SCAN_PRICES","SET_SCAN_PRICES_STATIC","UPDATE_SCAN_PRICES_STATIC","element","price","newValue","SET_SCAN_PRICES_STATIC_SAVING","occupiedSlotsReducer","SET_OCCUPIED_SLOTS","slots","SET_OCCUPIED_SLOTS_DATE_RANGE","SET_TEMPORALLY_OCCUPIED_SLOTS","UPDATE_TEMPORALLY_OCCUPIED_SLOTS","SET_BLOCKED_SLOTS_DATE_RANGE","patientsReducer","GET_ALL_PATIENTS","patientsArray","CREATE_PATIENT","newPatientArray","isFetching","linkedAccountsListReducer","SUCCESS","LINK_ACCOUNT","UNLINK_ACCOUNT","REQUEST","FAILURE","initialDentistState","searchString","dentistId","dentistsListReducer","SET_DENTIST_FILTERS","SET_ALL_DENTIST_FILTERS","initialRadiologistsState","radiologistsListReducer","initialInvoicesState","invoices","invoicesListReducer","SET_INVOICES_YEARS","initialVouchersState","vouchers","status","vouchersListReducer","initialCovid19SurveyState","covid19SurveyReducer","initialRadiologyReportsState","radiologyReportsListReducer","orderReports","reportCount","orderReportsCount","radiologyReports","updateReportForData","requestedReportDate","updateScanForData","reportId","fileName","reportContentList","updateScanForDataAfterUpload","initialVisitsState","isUpdating","visitsReducer","visits","scanClouds","visitCount","visitsPastReducer","visitsUpdateReducer","UpdateDataRoutine","visitsReceiptReducer","initialAuditReportState","moment","startOf","initialRadiologistReportState","radiologistIds","auditReportListReducer","SET_AUDIT_REPORT_FILTERS","radiologistReportListReducer","FetchRadiologistReportRoutine","SET_RADIOLOGIST_REPORT_FILTERS","patientsSatisfactionReportsListReducer","FetchPatientsSatisfactionRoutine","SET_PATIENTS_SATISFACTION_REPORT_FILTERS","auditRegistrationListReducer","FetchAuditRegistrationRoutine","initialUserProfileState","profile","editMode","profileReducer","t","creditCardReducer","cardholderFullName","expirationDate","last4","card","prepareExpData","appReducer","auth","auth_token","patients","visitDetails","dentists","radiologists","linkedAccounts","toastrReducer","reports","covid19Survey","composeEnhancer","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","localStorage","getItem","createStore","rootReducer","applyMiddleware","promise","thunk","configureStore","renderApp","ReactDOM","timeOut","newestOnTop","preventDuplicates","position","transitionIn","transitionOut","progressBar","closeOnToastrClick","getElementById","getUserProfile","then","res","catch","console","log","serviceWorker","ready","registration","unregister","PersonalInformation","children","userProfile","email","enabled","nameOfPractice","speciality","password","telephoneNumber","gdc","postCode","address","city","visitsEnabled","enabledEmailNotification","aria-labelledby","formatSpeciality","EditModeToggler","onToggle","isEdit","onClick","ProfileForm","onSubmit","onDiscard","mode","mrxl","marginRight","inputRef","useRef","useState","termsRead","changeTermsRead","hidePassword","toggleHidePassword","onChangeRead","initialValues","INITIAL_REGISTER_FORM_STATE","INITIAL_EDIT_FORM_STATE","handleSubmit","invalid","values","disabled","hidden","TITLES","key","val","charAt","toUpperCase","toLowerCase","validate","required","meta","classNames","touched","placeholder","SPECIALITIES","style","margin","checked","COUNTRIES","country","composeValidators","isEmail","customEmails","customEmail","isSecondaryEmail","isValidPassword","data-type-switch","preventDefault","onChange","target","ref","PersonalInformationEdit","updateUserInfo","toggleEditMode","showModal","toggleModalVisibility","handleModalVisibilityToggle","Modal","onClose","ChangePassword","hideNewPassword","toggleHideNewPassword","DateInputAdapter","mask","onBlur","CreditCardInputAdapter","CreditCardSettings","creditCardInfo","updatePaymentInformation","PseudoClassStyle","styled","div","setEditMode","stripe","useStripe","elements","useElements","isSubmitting","submit","useModal","handleCreditCardUpdate","cardData","form","cardHolderFullName","createToken","getElement","CardNumberElement","result","cardPopulatedData","clientSecret","customerId","confirmCardSetup","payment_method","paymentMethod","setupIntent","classnames","hasRequiredLength","reset","cardWith","width","SupportedPayments","Row","Col","md","payment","lg","alt","Card","body","CardTitle","CardText","userProfileSelector","getUserProfileInfo","createSelector","getCreditCardInfo","getEditMode","getUserRole","getLinkCode","linkedCode","getHasLinkedAccounts","hasLinkedAccounts","hasCreditCard","hasCard","components","selectors","actions","constants","loadLocalStoreData","LOCAL_STORAGE_CONSTANTS","AUTH_TOKEN","ORIGINAL_AUTH_TOKEN","ACTING_AS","getPreselectedUser","client","create","baseURL","interceptors","use","config","Authorization","response","message","Promise","reject","heightCss","height","VisitsFilter","onFilter","userRole","focused","setFocused","dates","setDates","sm","formattedStartDate","formattedEndDate","Moment","selectionChange","xs","maxWidth","onFocusChange","onDatesChange","startDateId","endDateId","keepOpenOnDateSelect","firstDayOfWeek","reopenPickerOnClearDates","displayFormat","focusedInput","small","hideKeyboardShortcutsPanel","orientation","VERTICAL_ORIENTATION","HORIZONTAL_ORIENTATION","withFullScreenPortal","isOutsideRange","date","isAfter","minimumNights","Button","current","display","DentistTable","onRowSelected","table","columns","buildTable","addSort","buildOptions","bootstrap4","bordered","keyField","rowEvents","remote","onTableChange","noop","pagination","paginationFactory","RadiographerTable","RadiologistTable","withRouter","visitsSelector","getVisitCount","getVisitFilter","getVisitsReceipt","getVisits","mainId","reportDate","visitDate","patientName","dentistName","isVisit","metaData","orderReportDate","scanName","fullRadiologyReportName","fullRadiologyReportUrl","fullRadiologyReport","getDataForRadiologist","getPastVisits","getVisitsUpdateLoading","VisitDetailsRadiologistPopUp","toggle","bind","activeTab","tab","setState","isUserRadiographer","onReportUpload","onUpdatedReport","currentVisitDetails","bookingDetails","PatientInfo","Nav","tabs","NavItem","NavLink","active","TabContent","TabPane","tabId","ScanInfo","preparedVisitDetails","preparePricingData","totalAmount","ReportUploader","Comments","comments","bookingComments","addComment","comment","defaultValue","Serialization","serializedData","saveLocalStoreData","stringify","setItem","SET_USER_PROFILE","TOGGLE_EDIT_MODE","SET_CREDIT_CARD","checkVoucherCode","code","applyVoucher","voucherCode","impersonateDentist","reload","handleReportDownload","query","responseType","downloadDocumentHelper","handleRadiologistReportDownload","DOWNLOAD_RADIOLOGIST_REPORT","handlePatientSatisfactionReportDownload","DOWNLOAD_PATIENTS_SATISFACTION_REPORT","handleAuditRegistrationReportDownload","DOWNLOAD_AUDIT_REGISTRATION_REPORT","url","URL","createObjectURL","Blob","link","createElement","href","setAttribute","appendChild","click","uploadReceiptPdf","total","UPLOAD_RECEIPT","getAllBookingsForCurrentWeek","createBooking","getAllBookingsWithoutDate","updateBooking","getScanPricesForBooking","getScanPricesForPriceList","updateScanPriceStatic","saveScanPriceStatic","setScanPriceStaticSaving","parsedData","put","loading","deleteBooking","el","querySelector","updateVisit","Number","updateVisitUnvisited","assignVisitTime","info","unAssignVisitTime","fetchOccupiedSlots","getBookingsByDateRangeAsync","endTime","getBookingsByDateRange","AwesomeDebouncePromise","fetchOccupiedSlotsByTimeRangeAsync","fetchOccupiedSlotsByDateRange","fetchTemporallyOccupiedSlots","updateTemporallyOccupiedSlotsAsync","updateTemporallyOccupiedSlots","getLastSelectedPaymentType","checkFirstCBCTIsOrNot","getBlockedDatesList","fromDate","toDate","ReactSelectAdapter","args","DobMaskAdapter","MobileMaskAdapter","row","CreateEditPatient","searchAddressByPostCode","searchedAddress","addresses","hits","isArray","getAddressByUdprn","prepareAddressesInfo","fullAddress","postcode","renderSuggestionList","udprn","urls","suggestion","handlePatientCreation","dob","split","day","dateString","patientObj","editPatient","createPatient","newPatientId","onPatientCreated","closeCreatePatient","capitalize","INITIAL_FORM_STATE","GENDERS","gender","isValidDate","join","trim","GET_RADIOLOGISTS","DentistFilter","radiologistReportFilters","updateFilters","r","reduce","acc","endOf","rel","DentistFilterWithName","zIndex","dentistsSelector","getDentists","cur","getDentistReports","getAllDentists","fetchDentists","setDentistFilters","fetchAllDentists","setAllDentistFilters","NoData","isEmpty","validators","validator","test","pass","l","separator","replace","expMonth","String","expYear","substr","dateStr","isValid","isValidDateAmPm","meridiam","afterTimeAmValue","afterTimePmValue","beforeTimeAmValue","beforeTimePmValue","min","minsNumber","allowedTimeSpans","some","isoWeekday","parsedM","time","isAm","afterTime","beforeTime","isBetweenFlag","isBetween","isSame","spec","OTHER","ORAL_SURGERY","ENDODONTICS","IMPLANTOLOGY","ORTHODONTICS","GENERAL","PERIODONTICS","MAXILLOFACIAL","ENT","preparePrices","cbctFormats","dicomFiles","buildPrices","romexisViewer","simplant","carestreamViewer","twoDImage","opg","ceph","digitalCeph","cephReport","skull","any","buildSkull","boneSpine","buildBoneSpine","extras","timeMapper","extraCd","buildCd","prices","cdObject","find","holder","optionBuilder","foundDto","bookingDetailsDto","bookingItemDtos","itemPriceDto","priceSnapshot","details","selectedExtra","mappedOption","option","selectedSkullParts","radiologist","pricesBrakeDown","preparePriceBrakeDown","calculatedPrice","DropZone","ScansUpload","onFileUpload","selectedFiles","setSelectedFiles","progress","setProgress","onDrop","useCallback","acceptedFiles","allFiles","Math","round","loaded","useDropzone","getRootProps","getInputProps","multiple","marginTop","aria-valuenow","aria-valuemin","aria-valuemax","secondaryEmail","isEnabledEmailNotification","getRadiologists","fetchRadiologists","TeethSVG","toothSelectionHandler","xmlns","viewBox","data-name","d","SkullSVG","handlePartSelectHandler","isDetails","right","top","updateState","forceUpdate","skullStyle","left","skullHeight","useEffect","classList","add","remove","x1","y1","x2","y2","gradientUnits","offset","stopColor","xlinkHref","stopOpacity","data-part","points","fill","stroke","stroke-width","stroke-linecap","stroke-linejoin","stop-color","setUserProfile","setCreditCardDetails","userInfo","updatePassword","newPassword","oldPassword","resetPassword","changeResetPassword","activateUser","confirmationToken","getCreditCardDetails","exp_year","exp_month","brand","surname","forename","mobile","GET_RADIOLOGY_REPORTS","ORDER_REPORT","ORDER_REPORT_ESLEWHERE","populateLegalInfo","isUserReceptionist","printForm","buttonControl","visibility","print","paddingTop","styleForTitle","textAlign","styleForDentistsList","flexDirection","companyInfo","phone","defaultRadiologistId","getPatientsArray","getAllPatients","newPatient","isVisitPage","VisitedLabel","isVisited","agent","loginAction","authHeader","light","icon","resolveAfterLoginRedirect","registerAction","user","logoutAction","removeItem","Loading","background","DefaultLayout","isUserLeadRadiographer","contentLoading","showSurveyModal","setShowSurveyModal","registrationSurveyPassed","completeSurvey","surveyType","registrationSurveyItemId","defaultProps","USER_ROLES","DENTIST","RECEPTIONIST","RADIOGRAPHER","LEAD_RADIOGRAPHER","RADIOLOGIST","rolePermittedNavigationItems","RadiologyReportsFilter","fetchRadiologyReports","RadiologyReportsTable","buildRadiologyReportsTable","BriefScanInfo","verballyConsented","scanType","getSkullPriceItems","selectedItems","formatScanType","isCBCT","clinicalIndications","includeTMJs","defaultChecked","authorised","renderPainterSkull","ReportDetailsPopup","close","scanTakenDate","scanIndication","implandtPlanned","evaluateExisting","sinusEvaluation","tmjEvaluation","notes","patientTitle","patientMobile","patientEmail","patientSurname","patientDOB","patientFullName","patientDob","dateMask","selectStyles","hasError","menu","provided","control","styles","scannedAt3Beam","handleChange","handleBlur","setFieldValue","setFieldTouched","errors","aria-label","UploadScan","selectedFile","setFile","fileInputRef","toFixed","fontSize","NewReportForm","patientScannetAt3Beam","setPatientScannedAt3Beam","formik","selectedCreditCard","setSelectedCreditCard","autoComplete","rows","NewReportPopup","orderReport","orderReportElswhere","showConfirmationPopup","toggleConfirmationPopup","scanPrice","useFormik","patientGender","paymentType","setSubmitting","finally","patientDobMoment","scanTakenDateMoment","dirty","radiologyReportsSelector","getReportCount","getReportFilter","getRadiologyReports","StyledSelect","Select","ImpersonateDentist","selectedOption","setSelected","selectVisible","setSelectVisibility","handleClickOutside","contains","addEventListener","removeEventListener","PastVisits","prevProps","prevPatientId","currentPatientId","buildPastVisitsTable","visitsByPatient","buildPreviousVisitsTable","ScansManualUpload","handleAdd","btnLabel","setUrl","InputGroup","InputGroupAddon","addonType","VisitDetailsPopUp","handleApplyVoucher","voucherInfo","showVoucherForm","applyingVoucher","discountAmount","onAddLinkForScan","omit","preparedPricingData","alignItems","justifyContent","PriceBreakDown","ApplyVoucherForm","toggleShowVoucherForm","handleInputChange","isBooking","cancelBooking","detailsStyle","padding","VisitPayment","isDetailsView","RadiologySelect","Fragment","placement","onKeyUp","SingleDatePickerAdapter","numberOfMonths","isBefore","onDateChange","readOnly","wrapperStyle","popoverBodyStyle","overlineStyle","textDecoration","groupedPricesBrakeDown","chain","groupBy","items","sumBy","finalPrice","selectedPayment","renderPrice","trigger","OccupiedSlots","notifyHasConflict","isSameDate","hasConflict","uniqBy","renderTimeSlot","countDownTimer","now","shouldComponentUpdate","nextProp","dateObj","hoursMinutes","meridiem","onPatientEdit","paidByPatient","data-toggle","confirmBtn","old","selectedDate","prevState","calculateEndTime","selectedTime","set","hours","minutes","clearFn","occupiedSlotsTimeRange","allSlots","onComplete","daysInHours","flag","hasTimeConflict","editBooking","mutators","clearDates","utils","changeValue","clearHours","previous","handleLockUpdate","TimeAdapter","allValues","toUpper","renderCountdown","buildDentistHeader","buildReceptionistHeader","buildVisitDate","possibilityOfPregnancy","subjectToSafeguarding","patientComeWithTemplate","order","isLoading","setLoading","commentExist","setCommentExistOrNot","setComment","prepareAutoExpanded","setTimeout","cssText","scrollHeight","commentDate","content","TailSpin","strokeWidth","strokeColor","duration","commentData","NAV_ITEMS","permission","navigateTo","STRIPE_KEY","GroupedScansViewer","isRadiographer","renderCorrectScans","functor","renderGroupedScansForRadiographer","renderGroupedScans","Container","Label","filterScan","filterCloudScan","setVerballyConsented","setAuthorised","updatedVerballyConsented","handleVerballyConsentedChange","updatedAuthorised","handleAuthoriseChange","RequestReport","Alert","ReportInfo","reportText","isEditing","stopPropagation","deleteReport","orderReportDto","isNil","renderReport","renderReportForm","getAuthor","dateFormatter","cell","dateFormatterShort","urlBuilder","ellipseText","str","cutAfterChars","scanNameBuilder","scanTitleNameBuilder","renderScanDateCell","creationAt","renderPendingSection","renderAttachedScans","download","renderAttachedScansForRadiographer","fn","paddingLeft","remappedScans","uploader","innerIndex","hardCoddedScans","confirm","renderReceiptInfo","paymentStatus","receiptFile","nameFormatter","emailFormatter","invoiceFormatter","fileUrl","commonTableConfig","isRadiologist","dataField","text","sort","headerStyle","sameDayProcessingCell","formatter","scanCommonCell","isSameDayProcessing","scanCell","radiologistScanCell","renderOrderReportAttachedScan","deletePatient","deleteReportFromRadiology","toast","POSITION","BOTTOM_RIGHT","scanRadiographerCell","handler","paymentTypeCell","dentistCell","radiologistDentistCell","renderRadiologistDentistCell","receptDetailsCell","reportCell","sortValue","reportCellForRadiologist","getState","tabIndex","handleFileUpload","renderRadiologyReportCell","getExtraConfig","handlers","receptionist","radiographer","configs","buildInvoicesTableForReceptionist","buildInvoicesTableForDentist","buildVouchersTable","point","voucherAmountFormatter","statusStyle","borderRadius","voucherStatusFormatter","orderId","toastId","TOP_CENTER","autoClose","hideProgressBar","method","p","update","done","buildRegisterAuditReportTable","buildAuditReportTable","receiptFormatter","buildRadiologistReportTable","cb","isExpanded","headerFormatter","column","headerEvents","buildPatientsSatisfactionReportTable","upperFirst","buildRadiologistReportTableMini","buildJoinedTable","node","c","onSort","sortFunctor","field","orderByDTO","paginationContext","currPage","fetchFn","totalSize","onPageChange","onSizePerPageChange","paginationSize","pageStartIndex","firstPageText","prePageText","nextPageText","lastPageText","nextPageTitle","prePageTitle","firstPageTitle","lastPageTitle","showTotal","disablePageTitle","rowIndex","ProfileSideMenuItem","ProfileSideMenu","Header","overRideCss","logoutHandler","loggedAs","handleLeaveSession","widget","__lc","license","lc","async","protocol","s","getElementsByTagName","parentNode","insertBefore","chatWidgetContainer","marginLeft","tag","open","useInterval","callback","delay","savedCallback","setInterval","clearInterval","post_town","g0","g1","g2","line_1","line_2","line_3","postcode_outward","ShareScans","attachedScans","getAttachedScans","getReports","setPatients","setPage","setSearch","fetchPatients","searchTerm","pageNum","search","newPatients","prevPatients","handleSearchChange","func","wait","timeout","clearTimeout","apply","debounce","scanIds","selectedAttachedScans","selectedAttachedScan","reportIds","selectedReports","selectedReport","emailAddress","resetSelectedAttachedScans","resetSelectedReports","onInputChange","inputValue","isMulti","ReceptionistShareScans","setEmailAddress","selectedPatient","setSelectedPatient","encodeURIComponent","onMenuScrollToBottom","prevPage","newPage","visitsAPI","ReceptionistTable","visitDetailsAPI","radiologyReportsAPI","dentistActions","visitsActions","radiologyReportsActions","visitDetailsActions","dashboardActions","profileActions","radiologistsActions","patientActions","selectedVisit","setSelectedVisit","editPatientPopUp","setEditPatientPopUp","shareScans","setShareScans","receptionistShareScans","setReceptionistShareScans","patientToEdit","setPatientToEdit","setAttachedScans","setReports","handleReportDelete","utc","submittedReportDate","fluid","onAddLinkDosageForScan","editedPatient","onConfirm","connect","createStructuredSelector","dentistAPI","radiologistsApi","profileAPI","dashboardAPI","bindActionCreators","radiologyReportsApi","patientsApi","DashboardContainer","scanPricesForPayment","fetchOccupiedSlotsByTimeRange","getScanPrices","selectedBooking","setSelectedBooking","handlePatientEdit","onHandleBookingWithoutDateClick","onViewBookingDetailsClicked","getBookings","getScanPricesForPayment","getBookingsWithoutDate","patientsAPI","getOccupiedSlotsTimeRange","getOccupiedSlotsAll","getTemporallyOccupiedSlots","getSelectedPaymentType","POSTDICOM_ACCOUNT_ID","POSTDICOM_USER_LIST","DiscardModal","aria-hidden","JoinModal","onJoin","linkCode","setCode","RequestModal","ReportModal","block","VoucherModal","onGenerateVoucherCodes","selectedAmount","selectedQuantity","generateVoucherCodes","SurveyModal","setSurveyType","surveys","setSurveys","changeSurveyType","survey","SurveyDetailsModal","registrationSurveyItem","registrationSurveyDetails","setRegistrationSurveyDetails","registrationSurveyDetail","modalRoot","removeChild","createPortal","BookingsWithoutTime","resultedArray","buildTitle","buildDoctorName","tel","onShowDetails","cursor","createdAt","BookingDetailsShort","detailsPopupPosition","onRemove","showVisitDetails","markAsVisited","markAsUnvisited","handleLoading","extendedProps","isPaidByPatient","patientDate","y","x","renderStatus","selectedCovidStatus","data-target","businessHours","startTime","daysOfWeek","calendarConfig","minTime","maxTime","defaultTimedEventDuration","slotLabelInterval","firstDay","slotLabelFormat","hour","minute","omitZeroMinute","CancelBookingModal","patientInfo","closeCancelBooking","ToothItem","number","TeethSelector","leftAnchor","rightAnchor","allTeeth","querySelectorAll","teethToWorkWith","atLeastOneChecked","allChecked","every","notifyToothSelection","toothName","getAttribute","checkbox","handleToothCheckboxClick","selectAllTeethInJaw","SkullSelector","clicked","buttonPainter","thisPainter","ev","nativeEvent","stopImmediatePropagation","buttonEl","currentTarget","notifySkullSelection","outline","handleSkullClickHandler","groupStyles","groupBadgeStyles","fontWeight","lineHeight","minWidth","formatGroupLabel","ReactSelectGroupedAdapter","menuPortal","base","menuPlacement","AutoCompleteAdapter","selectProps","PatientPicker","preparedPatients","SelectedPatientDetails","CardBody","BookScan","checkingVoucherInfo","existCBCT","weekdays","weekends","times","selectedPatientId","switchScanPrices","timeClone","indexOf","toothSelectionInvalid","blockedSlotsDefine","termsAndConditions","consentsUnderTheReferalProcess","collectSelectedTeeth","mappedItem","flatten","collectSelectedSkullAreas","extraData","expressProcessingFlag","uniqueOptions","dentalIds","range","EntIds","maxFaxIds","ids","preparePriceView","preparePriceBrakeDownView","foundExtra","clearCheckboxSameDayProcessing","isFullRadiologyReportSelected","hasSelectedSkullArea","canAffordBooking","CBCTFormatOptions","typeToggler","clearSameDayCheckBox","retrieveBookedAppointmentTimes","openCreatePatient","onSkullSelection","optionsFormatter","optionsGrouper","radiologyReportOptionsFormatter","renderRadiologistSelect","subscription","displayPrice","menuPosition","canBook","PureComponent","calendarComponentRef","createRef","createPatientPopUp","showBookingPopup","arg","handlePatientCreated","handleEventClick","showBookingDetailsShort","bookingDetailsPopupPosition","jsEvent","pageX","pageY","handleDateClick","req","blockedDates","canBookScan","refreshData","canStartDrag","addBookingToDraft","bookingListWithoutDate","getBoundingClientRect","droppedClientX","clientX","droppedClientY","clientY","tooltip","fcContainer","isOnForbiddenSlot","isOnBlockedSlot","isOnActiveSlot","isOnEvent","isOutsideGrid","innerHTML","draggableEl","getElementsByClassName","Draggable","itemSelector","eventData","eventEl","getDate","timerID","handleMouseMove","activeStart","getApi","view","activeEnd","oldEvent","dropInfo","draggedEl","draggedItem","local","refetchEvents","next","prev","today","currentDate","calendar","list","calendarApi","dateTitle","currentDateObj","highlightedClass","saturday","subtract","disabledSlotConfig","rendering","editable","overlap","blockedSlotConfig","disabledSlotsArray","allDay","occupiedSlot","blockedSlot","successCallback","generateDisabledSlots","concat","calEvent","elem","diff","activeEvent","isLocked","goPrevWeek","goNextWeek","goToday","defaultView","header","center","columnHeaderHtml","renderHeaderDate","nowIndicator","boolTrue","plugins","timeGridPlugin","interactionPlugin","allDaySlot","events","failureCallback","getEvents","eventAllow","canBookScanOrUpdateBooking","eventReceive","handleDrop","droppable","eventDurationEditable","eventOverlap","themeSystem","eventClick","eventConstraint","dateClick","eventRender","handleEventRender","eventDrop","handleBookingUpdate","eventDragStop","cancelEvent","bookingsSelector","getScanPricesStatic","getScanPricesStaticSaving"],"mappings":"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","file":"static/js/main.b4ac6440.chunk.js","sourcesContent":["export const calculateEstimatedBookScanPrice = (\n formValues,\n selectedTeeth,\n selectOptions,\n isTwoD,\n isSkull,\n selectedSkullAreas\n) => {\n return calculateActualPrice(\n selectOptions,\n formValues,\n decidePricingStrategy(selectedTeeth, isTwoD, isSkull, selectedSkullAreas)\n );\n};\n\nexport const getScanOptions = (scans) => {\n const teeth = {\n ur: [],\n ul: [],\n ll: [],\n lr: [],\n };\n\n const selectedCBCTFormatOptions = [];\n const selected2DImagingOptions = [];\n const selectedExtraOptions = [];\n const selectedXRayJustificationOptions = [];\n const selectedSkullOptions = [];\n\n for (let scan of scans) {\n if (scan.name.startsWith(\"ur\")) {\n teeth.ur.push(scan);\n continue;\n }\n if (scan.name.startsWith(\"ul\")) {\n teeth.ul.push(scan);\n continue;\n }\n if (scan.name.startsWith(\"lr\")) {\n teeth.lr.push(scan);\n continue;\n }\n if (scan.name.startsWith(\"ll\")) {\n teeth.ll.push(scan);\n continue;\n }\n if (\n scan.name.startsWith(\"cbct_f_dc\") ||\n scan.name.startsWith(\"cbct_f_rv\") ||\n scan.name.startsWith(\"cbct_f_sp\") ||\n scan.name.startsWith(\"cbct_f_cs\")\n ) {\n selectedCBCTFormatOptions.push(scan);\n continue;\n }\n if (scan.name.startsWith(\"2d_i\")) {\n selected2DImagingOptions.push(scan);\n continue;\n }\n if (scan.name.startsWith(\"e_\")) {\n selectedExtraOptions.push(scan);\n continue;\n }\n if (scan.name.startsWith(\"x_ray\")) {\n selectedXRayJustificationOptions.push(scan);\n continue;\n }\n if (scan.name === \"maxillofacial\" || scan.name.startsWith(\"bone\")) {\n selectedSkullOptions.push(scan);\n }\n }\n\n teeth.ul = teeth.ul.reverse();\n teeth.ll = teeth.ll.reverse();\n\n return {\n teeth,\n selectedCBCTFormatOptions,\n selected2DImagingOptions,\n selectedExtraOptions,\n selectedXRayJustificationOptions,\n selectedSkullOptions,\n };\n};\n\nconst decidePricingStrategy = (\n selectedTeeth = [],\n isTwoD,\n isSkull,\n selectedSkullAreas\n) => {\n let upperLeftQuadrantSelected = isTwoD;\n let upperRightQuadrantSelected = isTwoD;\n let lowerLeftQuadrantSelected = isTwoD;\n let lowerRightQuadrantSelected = isTwoD;\n let topJawSelected = isTwoD;\n let lowerJawSelected = isTwoD;\n for (let tooth of Array.from(selectedTeeth)) {\n if (tooth.id.startsWith(\"ll\")) {\n lowerLeftQuadrantSelected = tooth.id.startsWith(\"ll\");\n continue;\n } else if (tooth.id.startsWith(\"lr\")) {\n lowerRightQuadrantSelected = true;\n continue;\n } else if (tooth.id.startsWith(\"ul\")) {\n upperLeftQuadrantSelected = true;\n continue;\n } else if (tooth.id.startsWith(\"ur\")) {\n upperRightQuadrantSelected = true;\n continue;\n } else {\n break;\n }\n }\n\n topJawSelected = upperLeftQuadrantSelected && upperRightQuadrantSelected;\n lowerJawSelected = lowerLeftQuadrantSelected && lowerRightQuadrantSelected;\n return {\n topJawSelected,\n lowerJawSelected,\n upperLeftQuadrantSelected,\n upperRightQuadrantSelected,\n lowerLeftQuadrantSelected,\n lowerRightQuadrantSelected,\n isSkull,\n selectedSkullAreas,\n };\n};\n\nconst calculateActualPrice = (\n {\n selectedCBCTFormatOptions,\n selected2DImagingOptions,\n selectedExtraOptions,\n selectedXRayJustificationOptions,\n selectedSkullOptions,\n },\n {\n selectedCBCTFormat,\n selected2DImaging,\n selectedFullRadiologyReport,\n selectedXRayJustification,\n },\n {\n topJawSelected,\n lowerJawSelected,\n upperLeftQuadrantSelected,\n upperRightQuadrantSelected,\n lowerLeftQuadrantSelected,\n lowerRightQuadrantSelected,\n isSkull,\n selectedSkullAreas,\n }\n) => {\n // No grouping done whatsoever hence such obscure parser\n // Pease check the price table to see details of calculation\n // Few options are possible\n // 2 jaws\n // 1 jaw 1 quadrant\n // 1 jaw\n // 2 quadrants which don't form jaw\n // 1 quadrant\n // Depending on those prices are different for extra options and scan options\n // Now we also added skull option it always cost the same no matter how many section selected\n // use isSkull flag for details\n\n // console.log(topJawSelected, \"topJawSelected\");\n // console.log(lowerJawSelected, \"lowerJawSelected\");\n const quadrants = [\n upperLeftQuadrantSelected,\n upperRightQuadrantSelected,\n lowerLeftQuadrantSelected,\n lowerRightQuadrantSelected,\n ];\n\n const selectedQuadrants = quadrants.filter((i) => i);\n\n if (isSkull) {\n return allPriceCollector(\n {\n selectedCBCTFormatOptions,\n selectedSkullOptions,\n selectedSkullAreas: Array.from(selectedSkullAreas),\n selectedExtraOptions,\n selectedCBCTFormat,\n selectedFullRadiologyReport,\n selectedXRayJustificationOptions,\n selectedXRayJustification,\n },\n \"_q\",\n true\n );\n }\n\n // console.log(\"calculateActualPrice => \", topJawSelected, lowerJawSelected, allPriceCollector(\n // {\n // selectedCBCTFormatOptions,\n // selected2DImagingOptions,\n // selectedExtraOptions,\n // selectedCBCTFormat,\n // selected2DImaging,\n // selectedExtra,\n // selectedXRayJustificationOptions,\n // selectedXRayJustification\n // },\n // \"_2j\"\n // ))\n if (topJawSelected && lowerJawSelected) {\n // console.log(\"2 jaws selected\");\n return allPriceCollector(\n {\n selectedCBCTFormatOptions,\n selected2DImagingOptions,\n selectedExtraOptions,\n selectedCBCTFormat,\n selected2DImaging,\n selectedFullRadiologyReport,\n selectedXRayJustificationOptions,\n selectedXRayJustification,\n },\n \"_2j\"\n );\n }\n if (selectedQuadrants.length === 3 && (topJawSelected || lowerJawSelected)) {\n // console.log(\"1 jaws selected and one quadrant\");\n const jaw = allPriceCollector(\n {\n selectedCBCTFormatOptions,\n selected2DImagingOptions,\n selectedExtraOptions,\n selectedCBCTFormat,\n selected2DImaging,\n selectedFullRadiologyReport,\n selectedXRayJustificationOptions,\n selectedXRayJustification,\n },\n \"_1j\"\n );\n const oneQuadrant = allPriceCollector(\n {\n selectedCBCTFormatOptions,\n selected2DImagingOptions,\n selectedCBCTFormat,\n selected2DImaging,\n },\n \"_q\"\n );\n return [...jaw, ...oneQuadrant];\n }\n if (topJawSelected || lowerJawSelected) {\n // console.log(\"1 jaws selected\");\n return allPriceCollector(\n {\n selectedCBCTFormatOptions,\n selected2DImagingOptions,\n selectedExtraOptions,\n selectedCBCTFormat,\n selected2DImaging,\n selectedFullRadiologyReport,\n selectedXRayJustificationOptions,\n selectedXRayJustification,\n },\n \"_1j\"\n );\n }\n if (selectedQuadrants.length === 2) {\n // console.log(\"2 quadrants selected by they don't form jaw\");\n const data = allPriceCollector(\n {\n selectedCBCTFormatOptions,\n selected2DImagingOptions,\n selectedExtraOptions,\n selectedCBCTFormat,\n selected2DImaging,\n selectedFullRadiologyReport,\n selectedXRayJustificationOptions,\n selectedXRayJustification,\n },\n \"_q\"\n );\n const dataTwo = allPriceCollector(\n {\n selectedCBCTFormatOptions,\n selected2DImagingOptions,\n selectedCBCTFormat,\n selected2DImaging,\n },\n \"_q\"\n );\n return [...data, ...dataTwo];\n }\n if (selectedQuadrants.length === 1) {\n // console.log(\"only one quadrant selected\");\n return allPriceCollector(\n {\n selectedCBCTFormatOptions,\n selected2DImagingOptions,\n selectedExtraOptions,\n selectedCBCTFormat,\n selected2DImaging,\n selectedFullRadiologyReport,\n selectedXRayJustificationOptions,\n selectedXRayJustification,\n },\n \"_q\"\n );\n }\n // console.log(\"cant calculate\");\n};\n\nconst allPriceCollector = (\n {\n selectedCBCTFormatOptions = [],\n selected2DImagingOptions = [],\n selectedExtraOptions = [],\n selectedXRayJustificationOptions = [],\n selectedXRayJustification = [],\n selectedCBCTFormat = [],\n selected2DImaging = [],\n selectedFullRadiologyReport = {},\n selectedSkullOptions = [],\n selectedSkullAreas = [],\n },\n matcher,\n isSkull\n) => {\n let collectedCBCTFormatOptions = [];\n let collected2DImagingOptions = [];\n let collectedFullRadiologyReportOptions = [];\n let collectedSelectedXRayJustification = [];\n let collectedSkullOptions = [];\n\n if (isSkull) {\n const names = selectedSkullAreas.map((i) => i.name);\n if (names && names.length) {\n if(names.length <= 1 && names.includes('bone_spine')) {\n collectedSkullOptions = selectedSkullOptions.filter(\n (i) => i.name === \"bone_spine\"\n );\n }\n else {\n collectedSkullOptions = selectedSkullOptions.filter(\n (i) => i.name === \"maxillofacial\"\n );\n collectedSkullOptions = collectSkullPrices(\n collectedSkullOptions,\n selectedSkullOptions,\n names\n );\n }\n }\n }\n\n collectedCBCTFormatOptions = collectPrices(\n collectedCBCTFormatOptions,\n selectedCBCTFormatOptions,\n selectedCBCTFormat,\n matcher\n );\n\n for (let format of selected2DImaging) {\n collected2DImagingOptions = collectPrices(\n collected2DImagingOptions,\n selected2DImagingOptions,\n format,\n matcher\n );\n }\n\n if (\n selectedFullRadiologyReport &&\n Object.keys(selectedFullRadiologyReport).length > 0 &&\n selectedFullRadiologyReport.label !== \"No\"\n ) {\n // collectedFullRadiologyReportOptions = [selectedFullRadiologyReport];\n collectedFullRadiologyReportOptions = collectFullRadiologyReportPrices(\n collectedFullRadiologyReportOptions,\n selectedExtraOptions,\n selectedFullRadiologyReport\n );\n }\n\n for (let format of selectedXRayJustification) {\n collectedSelectedXRayJustification = collectXrayPrices(\n collectedSelectedXRayJustification,\n selectedXRayJustificationOptions,\n format\n );\n }\n\n return [\n ...collectedFullRadiologyReportOptions,\n ...collectedSkullOptions,\n ...collected2DImagingOptions,\n ...collectedCBCTFormatOptions,\n ...collectedSelectedXRayJustification,\n ];\n};\n\nconst collectFullRadiologyReportPrices = (arr, options, format) => [\n ...arr,\n options.filter((i) => i.id === format.value),\n];\n\nconst collectPrices = (arr, options, format, matcher) => [\n ...arr,\n options.filter(\n (i) => i.humanReadablePrice === format.label && i.name.endsWith(matcher)\n ),\n];\n\nconst collectXrayPrices = (arr, options, format) => [\n ...arr,\n options.filter(\n (i) => i.humanReadablePrice === format.label && i.name.startsWith(\"x_ray\")\n ),\n];\n\nconst collectSkullPrices = (arr, options, names) => [\n ...arr,\n ...options.filter((i) => names.includes(i.name)),\n];\n\nexport const SCAN_TYPES = Object.freeze({\n CBCT: \"CBCT\",\n TWO_D: \"TWO_D\",\n SKULL: \"SKULL\",\n});\n","export const scansStorageUri = process.env.REACT_APP_SCANS_STORAGE_URI;\nexport const receiptStorageUri = process.env.REACT_APP_RECEIPT_STORAGE_URI;\n\nexport const auditReportStorageUri = \"/audit/download\";\n\nexport const dateFormat = \"DD/MM/YYYY HH:mm\";\nexport const dateFormatShort = \"DD/MM/YYYY\";\nexport const backendDateFormat = \"YYYY-MM-DD\";\nexport const dateFormatReports = \"DD.MM.YYYY\";\nexport const presentationDateFormat = \"dddd, MMM D ⋅ h:mm\";\nexport const presentationDateFormatAm = \"dddd, MMM D ⋅ h:mm a\";\nexport const presentationDateFormatTable = \"DD/MM/YYYY h:mm a\";\nexport const bookingCreationFormat = \"YYYY-MM-DDTHH:mm:ss\";\n\nexport const PAYMENT_CONSTANTS = Object.freeze({\n PAID: \"PAID\",\n PAID_BY_PATIENT: \"PAID_BY_PATIENT\",\n PAYMENT_FAILED: \"PAYMENT_FAILED\",\n PAID_BY_DENTIST: \"PAID_BY_DENTIST\",\n});\n\nconst SUPPORTED_PAYMENTS = [\n {\n name: \"Mastercard\",\n src: require(`../assets/img/mastercardDark.png`),\n },\n {\n name: \"Visa\",\n src: require(`../assets/img/visaDark.png`),\n },\n {\n name: \"Visa Electron\",\n src: require(`../assets/img/visaElectronDark.png`),\n },\n {\n name: \"American Express\",\n src: require(`../assets/img/americanExpressDark.png`),\n },\n {\n name: \"Diners Club\",\n src: require(`../assets/img/dinersClub.png`),\n },\n {\n name: \"JCB\",\n src: require(`../assets/img/jcb.png`),\n },\n];\n\nSUPPORTED_PAYMENTS.forEach(Object.freeze);\nexport { SUPPORTED_PAYMENTS };\n\nexport const recheckTimer = 60000 * 5; // 5 mins\nexport const slotDuration = \"15\"; // mins\nexport const fullRadiologyReportNoOption = { value: 1907, label: \"No\" };\n\nexport const PAYMENT_OPTIONS = [\n { label: \"To be paid by patient\", value: 0 },\n { label: \"To be paid by credit card\", value: 1 },\n { label: \"Invoice me monthly\", value: 2 },\n];\n\nexport const getMonths = () => {\n let months = [\n { label: \"All months\", value: -1 },\n { label: \"January\", value: 0 },\n { label: \"February\", value: 1 },\n { label: \"March\", value: 2 },\n { label: \"April\", value: 3 },\n { label: \"May\", value: 4 },\n { label: \"June\", value: 5 },\n { label: \"July\", value: 6 },\n { label: \"August\", value: 7 },\n { label: \"September\", value: 8 },\n { label: \"October\", value: 9 },\n { label: \"November\", value: 10 },\n { label: \"December\", value: 11 },\n ];\n const currentMonth = new Date().getMonth();\n\n months = months.map((month) => {\n return month.value >= currentMonth ? { ...month, isDisabled: true } : month;\n });\n\n return months;\n};\n\nexport const getYears = (invoicesYears) => {\n const years = [{ label: \"All year\", value: -1 }];\n\n invoicesYears.forEach((year) => {\n years.push({ label: year, value: year });\n });\n\n return years;\n};\n\nexport const VOUCHER_QUANTITIES = [\n { label: \"1\", value: 1 },\n { label: \"10\", value: 10 },\n { label: \"30\", value: 30 },\n { label: \"50\", value: 50 },\n];\n\nexport const VOUCHER_AMOUNTS = [\n { label: \"50£\", value: 50 },\n { label: \"100£\", value: 100 },\n];\n\nexport const VOUCHER_STATUSES = [\n { label: \"Not Applied\", value: 0 },\n { label: \"Applied\", value: 1 },\n { label: \"Expired\", value: 2 },\n];\n\nexport const COVID19_SURVEY_RESULT = [\n { label: \"Not filled out\", value: 0 },\n { label: \"Submitted successfully\", value: 1 },\n {\n label:\n \"You might have COVID-19, please, contact with your dentist and change your appointment time\",\n value: 2,\n },\n];\n\nexport const LOAD_STATUS = {\n REQUEST: \"REQUEST\",\n FAILURE: \"FAILURE\",\n SUCCESS: \"SUCCESS\",\n}","// fetchers for routines\nimport { createThunkRoutine } from \"redux-thunk-routine\";\n\nexport const FetchDataRoutine = createThunkRoutine(\"radiologyReports/FETCH_DATA\");\nexport const GenerateDataRoutine = createThunkRoutine(\"radiologyReports/ORDER_REPORT\");\nexport const SET_FILTERS = \"radiologyReports/SET_FILTERS\";\n","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABQCAYAAADRAH3kAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAADWlJREFUeNrsnXl4VFWaxn+1b6lKZV8gEAIJJBAkLAEUBDSotCCjgD20ggu2063jOIyNOv10j6igdvOozfQz3do2ajO0KLS2IyCgYDcIyBYwECRAFpaQtbLXktrnj0pu6qbiNkOAkPP+Vee7t+qcOue93/m+U+c9pQgGgwj0X6gBFAoF6sVvDQFeAm4HTKJrrkk4gC3A0761D1QEg0EUwWAQzX1vDwEOAvGij/oFbEC+90/3Vyg7DKvE4PcrxHeMOZ0EmCX6pN9hVjgBjKI/+h2M4QQQ6KcQBBAEEBAEEBAEEBAEEBAEEBAEEBAEEBAEEBAEEBAEELjmob6aG6dVK0mx9vw71YUGB4Fuu5nionRE6TVS2dbWjsPtI9VqRKPu4vo5m116rVIqmDQskezUaPQaFXWt7Rwoq5fd0x1GrZoEi15mc3l81LW2CwJcSlgMWmbkpPDQ9CwmDk2QXctYupELjQ6pbNKpKVwxlwExIcK0uDxkL/sAnz9I8a/uxNxBjMIKG5OWbwbgzvGDeeWefAbGRm6AOlRu49kPjrL9+MWIa6sXTeT+GzNltr2na5m+cquYAi4lbG3tvL37DDe/sI2y2lbZtZgonaz85OxcafABVnxYRH1bO9Oyk6XBB9h09AIAc8cNYsNjM3ocfIAJGfH88cdTiDFpZfbsAVYWTRkWcX+ixSBigN6C2+fn/UPnZLbYsIEZHB/Fv80aJZVLa1v53Y6TANwxNk32vk4CrJg/TrL5/AFWbTnOw2/uZc3fT+PxBXB5/Mx9ZQdNDo/s/SsXjEOlVABQ1eyU7EnRfZMA6r7S0JNVzXIPYOryAL9eOAG9RtXlDdYfwuMLoFDA7LxBsrn/2PlGUq1GRqRGS/Y9p+v4+YZCAN7adYZXt50gLc7EkbMNsjqvz0xkTl4XodZ+XsrTc0Z3TFca9BoV7V6/8AC9gcqw+T6cANNGJHPX+MGSfeeJKukpHzM4TjYtdNqDyIPHG0ck8c8zs1GEHmxOVbewo7gqog0v/nC89Pqzr6o5XGGTXe+LXqAPEcApK1uNWlRKBb9ZNFGy+QNBfvbOIal8R9jTD7C5gwDVzS4+P1Xb1QkKBa/eO5Gd/z6LoUmWHuufk5fG9ZmJUvnVrcUEAkFBgCvlASwGDfdNzWTUwBjJtubvpymubOoiQNj83+LysLukRiovfm03pd0Cy6nDkzj83BwKRqXK50mVkpULumKGE5VNbD9+kVaXt1sgqBcE6C20e/2yPDsp2sCz8/KkcrPTw3+8f0QqD4ozMXpQrFTeWlSJ1x+QEWry8s2s/6JcVk+UXsP7j99ERqJZsi2aMpTsAVapvGpLMcFgiFThSBYeoHdxMcwLzB03SNbhz3/4JQ12t1Se3c39bzlaGfF5zU4Pi1/bzaxVn1DT4pIt9DxSMAIAg1bFM3fmyTxJSXUL1w2KjUghE/qgB1D3pcZWNjnJS48Ldba5q7PP1LTy+x0lsnvD3b/PH2BrUaX0voxEMwfK6qXrO4qrWLruAOsfnR72NIeCx0dnZssCyWiDlv3LZ/fYvlSrURDgcnmAcPzsnYMy9x5t0DJtRLJU3lVSI7nr3943iXkT0tl89ALv7a+grK4VnUYlW0fojPJjTFopzfsuiDcLD9CrON8QSYBPi6v4uEju3m8dPQC1ShmR/s3PT2fehPSOKSKN2XlpPa85XGxm3d5Snp8/lmhD14LT65+VcLBcnvq9/sD1Ul0pVoMgQG/iQjcChNK+g5EpW7fVv870T6lQcM5mZ3B81NfWcaq6hTtXf0aSxcAjBdmSvcHuZtn6Q7g88oWel3+Uj9Wo7cgC+h4BOtXBfeKQgFSrkYLcrhStrsXFtmORP9bcNX4wUYbQ+n+7x8+GAxWynH9GTgo3j0xhRKqVuCgdLo+PmhYXO4ur2HjwLO1ePzkDrIzP6NLLltW2sfd0bURd8yakY9KHniO31897+yv6zOB7/3S/ok8RQODSE0BsCOnnEATo51CLLgCz2kOmqZGsqAYyjM2k6O0MNLSRqHVg0biJVrvRq3yYVF1Lv+6ACndAjd2nodWno85tot5jZMXpGzhtjxMEuFqhV/oYa61hckwledG15EXXkG5s+d6fo1P60Sn9WNRuUrEzIir00/Eb5/IEAa42jDTXc0tiObckVDAx5iI6Ze/9Zt/i1Ykp4GpAXnQNd6eeZE7yGYYYm2XX7D4t510WKtstNHgM1LuN2P1a2nxaAkGF7F6DyodZ7cGsdhOvdZKqt5Okc5BmaEWtCETU6/KrBQGu2DqB3s4/DjjBPQOLGRHVgDeo5HhrIp+dH8Ox1kRK2uL4yh5Po+f/v2CjVgQYZGhliKmZkeZ6RlvqyDXX0R4QBLisUAAFCRX8NL2QgoQKjrcmsr1uKE9/dRN7Gwfi9Gt6pV5fUEm500q508rO+nSRBVxuRKk93Jd2nCWDvuSCy8IH1cN5qOj2S/J0izTwKkaizsEj6YWMstSzqSaTm/fdQ5NXL0ayPxBgQepJcsw2/lw5ijOOWDF6/Y0AG6uyxYhdYoilYOEBrj6sXDCOf7p5OAB7T9cx95UdYqT6OgHeeXQ6w5Mt33jPw2/uo7DChkGrknbiROl6v4lPzs6VlEXv7a/gVHWLIMClxvBki2ybdo+pne7KOKQnZ+dKhPviTJ0gQG/D6w/g9Pgi7L7Ald+X4vEFxBTQ21j/RTlL3tjzf37/0CQLCycPISs5Gqfbx5FzDbz7RXmEUgcgLdbEvPx0clKt6LUqztns7DxRxa6SGtJiTeSlx6EJ20B6Q1YSVpMWjy+0lXx4SrQkJHW6fewvrWfJ9CwGxhp5a3cpJzqUSClWA/PzhzBqoBWDVk1Ns4tdJTVsLaqUHWSRPzRB2jx6vsHB2fo27r8xkzGD42hxeFi7pzRCcyjSwDAsuz2X5+blyXb9LgF+fsd1zHxpG2dquuRej87MZtXCCbIBBnh6zmgKXtzGyIExrA7TFgKS2uiczc6wJ/7CDycN4Zf/MAYIycEvNDikwyo+OhLabPrgtCxWL5ooUygDLJ01koNl9Sz4z79JUvKnZudyx9iQaOXY+UZSY4yy7eQPzchi2oqPOVRuu3YJMCMnhfcfvynC/sQ7Bzlb//VHsyyeMowX7g5p9Nw+P6/tLMEfCPLYLTkMiDGy7qfTmLR8E8FgaAv4b+6d2OPnHCyrZ1dJDdcN/n6LSalWo0z8UVHXxk05Kbz+4PWSrd3rp9Hhlu7LH5rAxn+ZwZTnt9D9/7l6iok0KiWPFGTzwB8+v3YJkBZrIq2Hkzme++uXX99QlZKVd3cJNH/y5j7W7S0DQkKQJdOzGJsex5jBcRw928Dz88dK956z2XnwjT3sOVVLgkWPURv62q/vPMX/FJ6n9OX50r2Tl2+mtLY14vyhTrS6vGw/fhGNSkllk4M3H54qXSuubKLgxW002N0sumGodC1/aAIFI1P5tJvk3O3zs+LDIvadqeO3iyeR06E/zPqWbOmaDQL93xAETsiIl2kBl92ey9LbRgKQGGafNCyBJoebYWEy78fW7peUwbVhGkC3zx9xoEN9WzvNTk+PbWiwuxn/y48kpbJCAVOyuiTj//XpSUmf+N97y3jmrjxJgzB1eDKfFlfJpokNB87y0qZjQEi70EmA7lOJCAJBps8DpM7qjiSLIUKl2/10kXB07+zAN5DwYqNDJlM36zWyWCRcYApwsckpEcDSoVMIry/8PxsDV+j/G/tMENj9rJ6Jz2ySqYE70ebyEt9NpXvjiGTO1pd+p3pc3+OIl1aXF4fbh6lj/SI71SqpkDQqJZlhrvzbjpAzXaE1kCtS65SsJNb8eEqE/al3D2Nr67mj9pfW0dbulU78+tfbRrJ03QEa7G5y02J4avZoXvioiHM2O81OD9XNLindWn3vRMx6DYfLbYzPiKehzc27+8t7rOfxW3NosLs5eraBXSU13+qOtxZVMj8/XWrT4QobpTWtPPGDUTIF89ZjlWIdoBMZiWbZAQzhQaCtref3ONw+XvioiBfvDp3Ts3ByBgsnZxAIBlF2HO4Tb9Zx268/IRAM8ou/FLLmoRDJovQaWUZQ39bOli8v0NbupabZhc8fkFx5pxr47d1nvhMBnv3rUWZdNxCTTk2iRc8nT90acc+f95VxtNuBU9+Ey7kg1qd+DXz542J+sfGILHDrHPzKRgcbD56V7Gs/L+Unb+3rMaALBiE3LUYKBNfuiZwerKbvtru3pKqFW361nZKqlh6D2t/vKOHhNXu/1/e0t3svW59eNm1g9+Naewyympz4/AFiTTrMHUGT2+uPCK5iTTqmZyeTEmPE6fFxorKZwgpbj1mESadm6vAkhiSa8QeCfHWxmf2l9fjCzhNQKhTMHJVKZrKF1nYv+07XSecHhbfF4/NT3ezq+UlSKBg3JI7Rg2LRa1TUtoQOoqrt1vbkaAO6Dq/icPukKe/bvnOvZGNCHNq/IcShAmJHkCCAgCCAgCCAgCCAgCCAgCCAgCCAgCCAgCCAgCCAQP8hgFN0Rb+DM5wAW0V/9DtsDSfAMsAm+qTfwNYx5iEC+NY+UAHkAxsAh+ifaxaOjjHO7xjz0I4ggf6L/x0A39AUKjdM+W0AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","import axios from \"../../axios-client\";\nimport { toastr } from \"react-redux-toastr\";\nimport {\n\tFetchDataRoutine,\n\tSET_FILTERS,\n\tUPDATE_REPORT,\n\tFetchPastVisitsRoutine,\n\tUPDATE_SCAN,\n\tUPDATE_SCAN_UPLOAD,\n} from \"./action-types\";\nimport { API_CONSTANTS } from \"./constants\";\nimport { getBookingInfo } from \"../dashboard/actions\";\nimport { FetchReceiptRoutine, CLEAR_RECEIPT } from '../visits/action-types';\n\nexport const fetchVisits = ({ page = 1, size = 10, criteria, startDate, endDate, orderBy = 'visits', desc = true } = {}) => async (dispatch) => {\n\tdispatch(FetchDataRoutine.request());\n\ttry {\n\t\tconst { data } = await axios.get(`${API_CONSTANTS.GET_VISITS}`, { params: { page, size, criteria, startDate, endDate, orderBy, desc } });\n\t\tdispatch(FetchDataRoutine.success(data));\n\t} catch (e) {\n\t\ttoastr.error(\"Error\", e);\n\t\tdispatch(FetchDataRoutine.failure(e));\n\t}\n};\n\nexport const setFilters = (filters) => ({\n\ttype: SET_FILTERS,\n\tfilters,\n});\n\nexport const updateReport = (payload) => ({\n\ttype: UPDATE_REPORT,\n\tpayload,\n});\n\nexport const updateScan = (payload) => ({\n\ttype: UPDATE_SCAN,\n\tpayload,\n});\n\nexport const updateScanUpload = (scans) => ({\n\ttype: UPDATE_SCAN_UPLOAD,\n\tscans,\n});\n\nexport const requestReport = ({\n\tvisitId,\n\tradiologistId,\n\tsameDayProcessing,\n}) => async (dispatch) => {\n\tdispatch(FetchDataRoutine.request());\n\ttry {\n\t\tconst { data } = await axios.post(`/visits/report/`, {\n\t\t\tvisitId,\n\t\t\tradiologistId,\n\t\t\tsameDayProcessing,\n\t\t});\n\t\tdispatch(\n\t\t\tupdateReport({\n\t\t\t\tvisitId,\n\t\t\t\treport: data,\n\t\t\t})\n\t\t);\n\t\ttoastr.success(\"Success\", \"Report was requested\");\n\t} catch (e) {\n\t\ttoastr.error(\"Error\", e);\n\t\tdispatch(FetchDataRoutine.failure(e));\n\t}\n};\n\nexport const uploadScans = ({\n\tfiles,\n\tbookingId,\n\tisReport,\n\tonUploadProgress,\n}) => async (dispatch) => {\n\tdispatch(FetchDataRoutine.request());\n\tvar formData = new FormData();\n\tformData.append(\"bookingId\", bookingId);\n\tfor (let file of files) {\n\t\tformData.append(\"files\", file);\n\t}\n\n\ttry {\n\t\tawait axios.post(isReport === true ? `/reports` : `/scans`, formData, {\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"multipart/form-data\",\n\t\t\t},\n\t\t\tonUploadProgress,\n\t\t});\n\t\ttoastr.success(\n\t\t\t\"Success\",\n\t\t\tisReport === true ? \"Reports were uploaded\" : \"Scans were uploaded\"\n\t\t);\n\t\tdispatch(fetchVisits());\n\t} catch (e) {\n\t\ttoastr.error(\"Error\", e);\n\t\tdispatch(FetchDataRoutine.failure(e));\n\t}\n};\n\nexport const addScanLink = ({ scanUrl, visitId }) => async (dispatch) => {\n\tdispatch(FetchDataRoutine.request());\n\ttry {\n\t\tawait axios.post(`/scans/url`, { scanUrl, visitId });\n\t\ttoastr.success(\"Success\", \"Scans were uploaded\");\n\t\tdispatch(fetchVisits());\n\t} catch (e) {\n\t\ttoastr.error(\"Error\", e);\n\t\tdispatch(FetchDataRoutine.failure(e));\n\t}\n};\n\nexport const addLinkDosageForScan = ({ dosage, visitId }) => async (\n\tdispatch\n) => {\n\tdispatch(FetchDataRoutine.request());\n\ttry {\n\t\t// await axios.post(`/scans/url`, { dosage, visitId });\n\t\ttoastr.success(\"Success\", \"Need correct link from backend\");\n\t\tdispatch(fetchVisits());\n\t} catch (e) {\n\t\ttoastr.error(\"Error\", e);\n\t\tdispatch(FetchDataRoutine.failure(e));\n\t}\n};\n\nexport const deleteScan = ({ visitId, scanId, isReport }) => async (\n\tdispatch\n) => {\n\tdispatch(FetchDataRoutine.request());\n\ttry {\n\t\tawait axios.delete(isReport ? `/reports/${visitId}` : `/scans/${scanId}`);\n\t\tdispatch(\n\t\t\tupdateScan({\n\t\t\t\tvisitId,\n\t\t\t\tscanId,\n\t\t\t})\n\t\t);\n\t\ttoastr.success(\"Success\", \"Report was deleted\");\n\t\tdispatch(fetchVisits());\n\t} catch (e) {\n\t\ttoastr.error(\"Error\", e);\n\t\tdispatch(FetchDataRoutine.failure(e));\n\t}\n};\n\nexport const uploadReport = (data) => async (dispatch) => {\n\ttry {\n\t\tawait axios.patch(`/visit/${data.visitId}/report`, {\n\t\t\treportContent: data.reportContent,\n\t\t});\n\t\tdispatch(fetchVisits());\n\t\tdispatch(getBookingInfo(data.visitId));\n\t\ttoastr.success(\"Success\", \"Report was updated\");\n\t} catch (e) {\n\t\ttoastr.error(\"Error\", e);\n\t}\n};\n\nexport const retrievePreviousVisits = (patientId) => async (dispatch) => {\n\tdispatch(FetchPastVisitsRoutine.request());\n\ttry {\n\t\tconst { data } = await axios.get(\n\t\t\t`/visits/history/patient/${patientId}`,\n\t\t\tpatientId\n\t\t);\n\t\tdispatch(FetchPastVisitsRoutine.success(data));\n\t} catch (e) {\n\t\ttoastr.error(\"Error\", e);\n\t\tdispatch(FetchPastVisitsRoutine.failure(e));\n\t}\n};\n\nexport const fetchReceiptDetails = (visitId) => async (dispatch) => {\n dispatch(FetchReceiptRoutine.request(visitId));\n \n try {\n const { data } = await axios.get(`/receipts/${visitId}/patient`)\n dispatch(FetchReceiptRoutine.success(data));\n } catch (error) {\n dispatch(FetchReceiptRoutine.error({visitId, error}));\n }\n}\n\nexport const cleanReceiptDetails = () => dispatch => dispatch(({ type: CLEAR_RECEIPT }))","export const selectedCBCTFormatOptions = [\n { value: \"cbct_f_rv\", label: \"Romexis Viewer (MAC OS and Windows)\" },\n { value: \"cbct_f_dc\", label: \"DICOM Files\" },\n { value: \"cbct_f_sp\", label: \"Morita\" },\n { value: \"cbct_f_cs\", label: \"Carestream Viewer\" },\n];\n\nexport const selectedCBCTFormatOptionsV2 = [\n \"cbct_f_dc_\",\n \"cbct_f_cv_\",\n \"cbct_f_rv_\",\n \"cbct_f_sp_\",\n \"cbct_f_cs_\"\n];\n\nexport const selectedXRayJustificationOptionsV2 = [\n \"x_ray_it\",\n \"x_ray_se\",\n \"x_ray_en\",\n \"x_ray_tm\",\n \"x_ray_im\",\n \"x_ray_dt\",\n \"x_ray_agea\",\n \"x_ray_aira\",\n \"x_ray_sav\",\n \"x_ray_pfa\",\n \"x_ray_mi\",\n \"x_ray_pg\",\n \"x_ray_rbc\",\n \"x_ray_dp\",\n \"x_ray_ds\",\n \"x_ray_co\",\n \"x_ray_df\",\n \"x_ray_pci\",\n \"x_ray_ft\",\n \"x_ray_os\",\n \"x_ray_tmja\",\n \"x_ray_pt\",\n \"x_ray_pth\",\n \"x_ray_ort\",\n \"x_ray_mal\",\n \"x_ray_def\",\n \"x_ray_dam\",\n];\n\nexport const selectedExtraOptionsV2 = [\n \"e_epr_\",\n \"e_cd_copy\",\n \"e_frr_\",\n \"e_pacs_\",\n];\n\nexport const selected2DImagingOptionsV2 = [\n \"2d_i_dlc\",\n \"2d_i_po\",\n \"2d_i_dpc\",\n \"2d_i_ctr\",\n];\n\nexport const selectedSkullPartsOptionsV2 = [\n \"bone_sphenoid\",\n \"bone_temporal\",\n \"bone_nasal\",\n \"bone_maxilla\",\n \"bone_frontal\",\n \"bone_orbit\",\n \"bone_zygomatic\",\n \"bone_mandible\",\n \"bone_paranasal\",\n \"bone_airway\",\n \"maxillofacial\",\n \"bone_spine\"\n];\n\nexport const selected2DImagingOptions = [\n { value: \"two_d_dl\", label: \"Digital Lateral CEPH\" },\n { value: \"two_d_dpa\", label: \"Digital PA CEPH\" },\n];\n\nexport const selectedXRayJustificationOptions = [\n { value: \"cbct_x_ray_impl\", label: \"Implants\" },\n { value: \"cbct_x_ray_imt\", label: \"Impacted Teeth\" },\n { value: \"cbct_x_ray_end\", label: \"Endodontics\" },\n { value: \"cbct_x_ray_sin_ex\", label: \"Sinus Exam\" },\n { value: \"TMJ\", label: \"TMJ\" },\n];\n\nexport const selectedXRayJustificationOptionsTWO = [\n { value: \"two_d_xray_imp\", label: \"Implants\" },\n { value: \"two_d_xray_imp_t\", label: \"Impacted Teeth\" },\n { value: \"two_d_xray_end\", label: \"Endodontics\" },\n { value: \"two_d_xray_sin_ex\", label: \"Sinus Exam\" },\n { value: \"two_d_xray_tmj\", label: \"TMJ\" },\n];\n\nexport const selectedExtraOptions = [\n { value: \"cbct_extra_brr\", label: \"Radiology Report\" },\n { value: \"cbct_extra_srt\", label: \"Scan Radiographic Template\" },\n { value: \"cbct_extra_ep\", label: \"Same day processing (+£3,99)\" },\n { value: \"cbct_extra_cd_copy\", label: \"CD copy of the scan (+£4,99)\" },\n];\n\nexport const selectedExtraOptionsTWO = [\n { value: \"two_d_extra_r_report\", label: \"Radiology Report\" },\n { value: \"two_d_extra_scant\", label: \"Scan Radiographic Template\" },\n { value: \"two_d_extra_same_day\", label: \"Same day processing (+£3,99)\" },\n { value: \"two_d_extra_cd_copy\", label: \"CD copy of the scan (+£4,99)\" },\n];\n\nexport const selectedTeethOptions = [\n { value: \"cbct_ul_1\", label: \"1\", htmlFor: \"ul_1\" },\n { value: \"cbct_ul_2\", label: \"2\", htmlFor: \"ul_2\" },\n { value: \"cbct_ul_3\", label: \"3\", htmlFor: \"ul_3\" },\n { value: \"cbct_ul_4\", label: \"4\", htmlFor: \"ul_4\" },\n { value: \"cbct_ul_5\", label: \"5\", htmlFor: \"ul_5\" },\n { value: \"cbct_ul_6\", label: \"6\", htmlFor: \"ul_6\" },\n { value: \"cbct_ul_7\", label: \"7\", htmlFor: \"ul_7\" },\n { value: \"cbct_ul_8\", label: \"8\", htmlFor: \"ul_8\" },\n\n { value: \"cbct_ur_1\", label: \"1\", htmlFor: \"ur_1\" },\n { value: \"cbct_ur_2\", label: \"2\", htmlFor: \"ur_2\" },\n { value: \"cbct_ur_3\", label: \"3\", htmlFor: \"ur_3\" },\n { value: \"cbct_ur_4\", label: \"4\", htmlFor: \"ur_4\" },\n { value: \"cbct_ur_5\", label: \"5\", htmlFor: \"ur_5\" },\n { value: \"cbct_ur_6\", label: \"6\", htmlFor: \"ur_6\" },\n { value: \"cbct_ur_7\", label: \"7\", htmlFor: \"ur_7\" },\n { value: \"cbct_ur_8\", label: \"8\", htmlFor: \"ur_8\" },\n\n { value: \"cbct_ll_1\", label: \"1\", htmlFor: \"ll_1\" },\n { value: \"cbct_ll_2\", label: \"2\", htmlFor: \"ll_2\" },\n { value: \"cbct_ll_3\", label: \"3\", htmlFor: \"ll_3\" },\n { value: \"cbct_ll_4\", label: \"4\", htmlFor: \"ll_4\" },\n { value: \"cbct_ll_5\", label: \"5\", htmlFor: \"ll_5\" },\n { value: \"cbct_ll_6\", label: \"6\", htmlFor: \"ll_6\" },\n { value: \"cbct_ll_7\", label: \"7\", htmlFor: \"ll_7\" },\n { value: \"cbct_ll_8\", label: \"8\", htmlFor: \"ll_8\" },\n\n { value: \"cbct_lr_1\", label: \"1\", htmlFor: \"lr_1\" },\n { value: \"cbct_lr_2\", label: \"2\", htmlFor: \"lr_2\" },\n { value: \"cbct_lr_3\", label: \"3\", htmlFor: \"lr_3\" },\n { value: \"cbct_lr_4\", label: \"4\", htmlFor: \"lr_4\" },\n { value: \"cbct_lr_5\", label: \"5\", htmlFor: \"lr_5\" },\n { value: \"cbct_lr_6\", label: \"6\", htmlFor: \"lr_6\" },\n { value: \"cbct_lr_7\", label: \"7\", htmlFor: \"lr_7\" },\n { value: \"cbct_lr_8\", label: \"8\", htmlFor: \"lr_8\" },\n];\n","/*\n* required polyfills\n*/\nimport \"core-js\";\nimport 'core-js/features/set/map';\nimport 'core-js/features/map';\n\n/** IE9, IE10 and IE11 requires all of the following polyfills. **/\n// import 'core-js/es6/symbol'\n// import 'core-js/es6/object'\n// import 'core-js/es6/function'\n// import 'core-js/es6/parse-int'\n// import 'core-js/es6/parse-float'\n// import 'core-js/es6/number'\n// import 'core-js/es6/math'\n// import 'core-js/es6/string'\n// import 'core-js/es6/date'\n// import 'core-js/es6/array'\n// import 'core-js/es6/regexp'\n// import 'core-js/es6/map'\n// import 'core-js/es6/weak-map'\n// import 'core-js/es6/set'\n// import 'core-js/es7/object'\n\n/** IE10 and IE11 requires the following for the Reflect API. */\n// import 'core-js/es6/reflect'\n\n/** Evergreen browsers require these. **/\n// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.\n// import 'core-js/es7/reflect'\n\n// CustomEvent() constructor functionality in IE9, IE10, IE11\n(function () {\n\n if ( typeof window.CustomEvent === \"function\" ) return false\n\n function CustomEvent ( event, params ) {\n params = params || { bubbles: false, cancelable: false, detail: undefined }\n var evt = document.createEvent( 'CustomEvent' )\n evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail )\n return evt\n }\n\n CustomEvent.prototype = window.Event.prototype\n\n window.CustomEvent = CustomEvent\n})()\n","import React from \"react\";\nimport { Redirect, Route } from \"react-router-dom\";\nimport { NAVIGATION_CONSTANTS } from \"../constants/navigation.constants\";\nimport { ImpersonatingService } from \"../services/impersonating.service\";\nimport Dashboard from \"../screens/Dashboard\";\nimport VisitsContainer from \"../screens/Visits\";\nimport {\n\tisUserDentist,\n\tisUserRadiologist,\n} from \"../services/permission.service\";\nexport const PrivateRoute = ({ component: Component, ...rest }) => {\n\tconst { token, originalToken, isImpersonating } = ImpersonatingService();\n\n\treturn (\n\t\t {\n\t\t\t\tif (isImpersonating) {\n\t\t\t\t\t// ToDo: 'fix it there is infinity loading if we use redirect instead of component'\n\t\t\t\t\tconst currentUser = JSON.parse(isImpersonating);\n\t\t\t\t\tif (isUserRadiologist(currentUser.role)) {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn isUserDentist(currentUser.role) &&\n\t\t\t\t\t\t(props.location.pathname ===\n\t\t\t\t\t\t\tNAVIGATION_CONSTANTS.RADIOLOGY_REPORT ||\n\t\t\t\t\t\t\tprops.location.pathname === NAVIGATION_CONSTANTS.PROFILE) ? (\n\t\t\t\t\t\t\n\t\t\t\t\t) : (\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn token || originalToken ? (\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t}}\n\t\t/>\n\t);\n};\n","import DefaultTheme from \"react-dates/lib/theme/DefaultTheme\";\n\nexport const theme = {\n reactDates: {\n ...DefaultTheme.reactDates,\n border: {\n ...DefaultTheme.reactDates.border,\n input: {\n ...DefaultTheme.reactDates.border.input,\n borderBottomFocused: \"2px solid #20a8d8\"\n }\n },\n color: {\n ...DefaultTheme.reactDates.color,\n selected: {\n backgroundColor: \"#20a8d8\",\n backgroundColor_active: \"#20a8d8\",\n backgroundColor_hover: \"#20a8d8\",\n borderColor_active: \"20a8d8\",\n borderColor_hover: \"20a8d8\",\n color: \"#ffffff\",\n color_active: \"#ffffff\",\n color_hover: \"#ffffff\"\n },\n selectedSpan: {\n backgroundColor: \"#87e0ff\",\n backgroundColor_active: \"#51caf5\",\n backgroundColor_hover: \"#39bfed\",\n borderColor_active: \"#39bfed\",\n borderColor_hover: \"#39bfed\",\n borderColor: \"#39bfed\",\n color: \"#ffffff\",\n color_active: \"#ffffff\",\n color_hover: \"#ffffff\"\n }\n }\n }\n};\n","import React from \"react\";\n\nexport const Login = React.lazy(() => import(\"./screens/Login\"));\nexport const Register = React.lazy(() => import(\"./screens/Register\"));\nexport const Dashboard = React.lazy(() => import(\"./screens/Dashboard\"));\nexport const VisitsContainer = React.lazy(() => import(\"./screens/Visits\"));\nexport const InvoicesContainer = React.lazy(() => import(\"./screens/Invoices\"));\nexport const VoucherContainer = React.lazy(() => import(\"./screens/Voucher\"));\nexport const Radiographers = React.lazy(() => import(\"./screens/Radiographers\"));\nexport const Radiologists = React.lazy(() => import(\"./screens/Radiologists\"));\nexport const Dentists = React.lazy(() => import(\"./screens/Dentists\"));\nexport const Schedules = React.lazy(() => import(\"./screens/Schedules\"));\nexport const PriceList = React.lazy(() => import(\"./screens/PriceList\"));\nexport const ReceiptDetails = React.lazy(() => import(\"./screens/ReceiptDetails\"));\n\nexport const VisitsMobileContainer = React.lazy(() =>\n import(\"./screens/VisitsMobile\")\n);\n\nexport const Profile = React.lazy(() => import(\"./screens/Profile\"));\nexport const CreditCardDetails = React.lazy(() =>\n import(\"./screens/CreditCardDetails\")\n);\nexport const ChangePasswordContainer = React.lazy(() =>\n import(\"./screens/ChangePassword\")\n);\nexport const JoinedAccountsContainer = React.lazy(() =>\n import(\"./screens/JoinedAccounts\")\n);\n\nexport const ResetPasswordContainer = React.lazy(() =>\n import(\"./screens/ResetPassword\")\n);\n\nexport const ForgotPasswordContainer = React.lazy(() =>\n import(\"./screens/ForgotPassword\")\n);\n\nexport const ForgotUsernameContainer = React.lazy(() =>\n import(\"./screens/ForgotUsername\")\n);\n\nexport const ActivateUserContainer = React.lazy(() =>\n import(\"./screens/ActivateUser\")\n);\n\nexport const ServiceLevelAgreementDentistContainer = React.lazy(() =>\n import(\"./screens/ServiceLevelAgreement/Dentist\")\n);\n\nexport const ServiceLevelAgreementReceptionistContainer = React.lazy(() =>\n import(\"./screens/ServiceLevelAgreement/Receptionist\")\n);\n\nexport const ServiceLevelAgreementDentistDetailsContainer = React.lazy(() =>\n import(\"./screens/ServiceLevelAgreement/DentistDetails\")\n);\n\nexport const TermsAndConditionsContainer = React.lazy(() =>\n import(\"./screens/TermsAndConditions\")\n);\n\nexport const Wallet = React.lazy(() =>\n import(\"./screens/Wallet\")\n);\n\nexport const DataLevelAgreementContainer = React.lazy(() =>\n import(\"./screens/DataLevelAgreement\")\n);\n\nexport const AuditReportContainer = React.lazy(() =>\n import(\"./screens/AuditReport\")\n);\n\nexport const RadiologistReportContainer = React.lazy(() =>\n import(\"./screens/RadiologistReport\")\n);\n\nexport const PricingContainer = React.lazy(() => import(\"./screens/Pricing\"));\n\nexport const PatientSatisfactionReportsContainer = React.lazy(() =>\n import(\"./screens/PatientSatisfactionReport\")\n);\n\nexport const PatientSatisfactionFormContainer = React.lazy(() =>\n import(\"./screens/PatientSatisfactionForm\")\n);\n\nexport const RegistrationAuditReportContainer = React.lazy(() =>\n import(\"./screens/RegistrationAuditReport\")\n);\n\nexport const Covid19SurveyContainer = React.lazy(() =>\n import(\"./screens/Covid19Survey\")\n);\n\nexport const RadiologyReportContainer = React.lazy(() =>\n import(\"./screens/RadiologyReport\")\n);\n\nexport const ReferralGuidelines = React.lazy(() =>\n import(\"./screens/ReferralGuidelines\")\n);\n\nexport const RegistrationSurvey = React.lazy(() =>\n import(\"./screens/RegistrationSurvey\")\n);","import React, { Component } from \"react\";\nimport { HashRouter, Route, Switch, Redirect } from \"react-router-dom\";\nimport { createBrowserHistory } from \"history\";\nimport \"./App.scss\";\nimport \"react-dates/initialize\";\nimport \"react-dates/lib/css/_datepicker.css\";\nimport ThemedStyleSheet from \"react-with-styles/lib/ThemedStyleSheet\";\nimport aphroditeInterface from \"react-with-styles-interface-aphrodite\";\nimport { PrivateRoute } from \"./common/PrivateRoute\";\nimport { NAVIGATION_CONSTANTS } from \"./constants/navigation.constants\";\nimport { theme } from \"./configs\";\nimport { isMobile } from \"./utils\";\nimport { ToastContainer } from \"react-toastify\";\n\nimport \"react-toastify/dist/ReactToastify.css\";\n\n// Pages\nimport * as routes from \"./routes\";\n// import \"./plugins/postdicom/init\";\n\nThemedStyleSheet.registerInterface(aphroditeInterface);\nThemedStyleSheet.registerTheme(theme);\n\nconst loading = () => (\n\t
\n\t\t
\n\t
\n);\n\nclass App extends Component {\n\thistory = createBrowserHistory();\n\n\trender() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\treturn isMobile(\n\t\t\t\t\t\t\t\t\t\tnavigator.userAgent || navigator.vendor || window.opera\n\t\t\t\t\t\t\t\t\t) ? (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport default App;\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n\n // Execute callback\n if (config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import { SET_SCAN_PRICES, SET_SCAN_PRICES_STATIC, UPDATE_SCAN_PRICES_STATIC, SET_SCAN_PRICES_STATIC_SAVING } from \"../action-types\";\nimport { getScanOptions } from \"../../../services/bookScan.service\";\n\nconst initialState = {\n scanPrices: [],\n scanPricesStatic: [],\n scanPricesStaticSaving: false\n};\n\nexport const pricesReducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_SCAN_PRICES: {\n return {\n ...state,\n scanPrices: getScanOptions(action.payload)\n };\n }\n case SET_SCAN_PRICES_STATIC: {\n return {\n ...state,\n scanPricesStatic: getScanOptions(action.payload)\n };\n }\n\n case UPDATE_SCAN_PRICES_STATIC:\n\n switch (action.payload.type) {\n case \"cbctFormats\":\n const { selectedCBCTFormatOptions } = state.scanPricesStatic;\n for (let index = 0; index < selectedCBCTFormatOptions.length; index++) {\n const element = selectedCBCTFormatOptions[index];\n if (element.id === action.payload.id) {\n element.price = action.payload.newValue;\n break;\n }\n\n }\n return {\n ...state,\n scanPricesStatic: {\n ...state.scanPricesStatic,\n ...selectedCBCTFormatOptions\n }\n\n }\n\n\n case \"twoDImage\":\n\n const { selected2DImagingOptions } = state.scanPricesStatic;\n for (let index = 0; index < selected2DImagingOptions.length; index++) {\n const element = selected2DImagingOptions[index];\n if (element.id === action.payload.id) {\n element.price = action.payload.newValue;\n break;\n }\n\n }\n return {\n ...state,\n scanPricesStatic: {\n ...state.scanPricesStatic,\n ...selected2DImagingOptions\n }\n\n }\n\n\n case \"skull\":\n\n const { selectedSkullOptions } = state.scanPricesStatic;\n for (let index = 0; index < selectedSkullOptions.length; index++) {\n const element = selectedSkullOptions[index];\n if (element.id === action.payload.id) {\n element.price = action.payload.newValue;\n break;\n }\n\n }\n return {\n ...state,\n scanPricesStatic: {\n ...state.scanPricesStatic,\n ...selectedSkullOptions\n }\n\n }\n\n\n case \"extras\":\n\n const { selectedExtraOptions } = state.scanPricesStatic;\n for (let index = 0; index < selectedExtraOptions.length; index++) {\n const element = selectedExtraOptions[index];\n if (element.id === action.payload.id) {\n element.price = action.payload.newValue;\n break;\n }\n\n }\n return {\n ...state,\n scanPricesStatic: {\n ...state.scanPricesStatic,\n ...selectedExtraOptions\n }\n\n }\n\n default: return state;\n }\n\n \n case SET_SCAN_PRICES_STATIC_SAVING:\n return {\n ...state,\n scanPricesStaticSaving: action.payload\n };\n \n\n default:\n return state;\n }\n};\n","import {\n\tSET_OCCUPIED_SLOTS,\n\tSET_OCCUPIED_SLOTS_DATE_RANGE,\n\tSET_TEMPORALLY_OCCUPIED_SLOTS,\n\tUPDATE_TEMPORALLY_OCCUPIED_SLOTS,\n\tSET_BLOCKED_SLOTS_DATE_RANGE\n} from \"../action-types\";\n\nconst initialState = {\n\toccupiedSlots: [],\n\toccupiedSlotsDateRange: [],\n\ttemporallyOccupiedSlots: [],\n\tblockedSlotsDateRange: []\n};\n\nconst updateSlots = (temporallyOccupiedSlots, { dto, userId }) => {\n\tconst copy = temporallyOccupiedSlots.slice();\n\tconst index = [].findIndex(i => i.id === userId);\n\treturn index\n\t\t? copy.splice(index, 1, { ...dto, id: userId })\n\t\t: [...copy, { ...dto, id: userId }];\n};\n\nexport const occupiedSlotsReducer = (state = initialState, action) => {\n\tswitch (action.type) {\n\t\tcase SET_OCCUPIED_SLOTS: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\toccupiedSlots: action.slots\n\t\t\t};\n\t\t}\n\t\tcase SET_OCCUPIED_SLOTS_DATE_RANGE: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\toccupiedSlotsDateRange: action.slots\n\t\t\t};\n\t\t}\n\t\tcase SET_TEMPORALLY_OCCUPIED_SLOTS: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttemporallyOccupiedSlots: action.slots\n\t\t\t};\n\t\t}\n\t\tcase UPDATE_TEMPORALLY_OCCUPIED_SLOTS: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttemporallyOccupiedSlots: updateSlots(\n\t\t\t\t\tstate.temporallyOccupiedSlots,\n\t\t\t\t\taction.payload\n\t\t\t\t)\n\t\t\t};\n\t\t}\n\t\tcase SET_BLOCKED_SLOTS_DATE_RANGE: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tblockedSlotsDateRange: action.slots\n\t\t\t};\n\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { combineReducers } from \"redux\";\nimport { bookingsReducer } from \"./reducers/bookings\";\nimport { pricesReducer } from \"./reducers/prices\";\nimport { occupiedSlotsReducer } from \"./reducers/bookings-slots\";\n\nexport default combineReducers({\n bookingsReducer,\n pricesReducer,\n occupiedSlotsReducer\n});\n","import _ from \"lodash\";\nimport {\n GET_ALL_BOOKINGS_FOR_CURRENT_WEEK,\n CREATE_BOOKING,\n GET_BOOKING_INFO,\n ASSIGN_VISIT_TIME_FOR_BOOKING,\n GET_BOOKINGS_BY_DATE_RANGE,\n GET_ALL_BOOKINGS_WITHOUT_DATE,\n UPDATE_VISIT,\n DELETE_BOOKING,\n CREATE_BOOKING_WITHOUT_DATE,\n SET_LAST_SELECTED_PAYMENT_TYPE,\n UPDATE_BOOKING_INFORMATION\n} from \"../action-types\";\n\nexport const bookingsReducer = (\n state = {\n bookingsWithoutDate: [],\n scanPrices: [],\n bookings: [],\n bookingInfo: null,\n selectedPaymentType: null\n },\n action\n) => {\n switch (action.type) {\n case GET_ALL_BOOKINGS_FOR_CURRENT_WEEK: {\n return {\n ...state,\n bookings: action.payload\n };\n }\n\n case GET_ALL_BOOKINGS_WITHOUT_DATE: {\n return {\n ...state,\n bookingsWithoutDate: action.payload.map(i => ({...i, patientData: i.patient}))\n };\n }\n\n case ASSIGN_VISIT_TIME_FOR_BOOKING: {\n let newBookingWithoutDate = [...state.bookingsWithoutDate];\n newBookingWithoutDate = newBookingWithoutDate.filter(\n item => item.id !== action.payload.id\n );\n\n return {\n ...state,\n bookingsWithoutDate: newBookingWithoutDate\n };\n }\n\n case GET_BOOKINGS_BY_DATE_RANGE: {\n const bookings = action.payload.map(item => ({\n ...item,\n start: item.appointmentStartTime,\n end: item.appointmentEndTime,\n title:\n _.startCase(_.toLower(item.patient.title)) + \". \" + item.patient.name,\n doctor: \"Dr. \" + item.dentist.firstName + \" \" + item.dentist.lastName\n }));\n return {\n ...state,\n bookings: bookings\n };\n }\n\n case GET_BOOKING_INFO: {\n return {\n ...state,\n bookingInfo: action.payload\n };\n }\n\n case CREATE_BOOKING: {\n let bookingsArray = state.bookings;\n bookingsArray = [...bookingsArray];\n let currentObject = action.payload;\n currentObject.start = currentObject.appointmentStartTime;\n currentObject.end = currentObject.appointmentEndTime;\n currentObject.title =\n currentObject.patient.title + \" \" + currentObject.patient.name;\n bookingsArray.push(action.payload);\n\n return {\n ...state,\n bookings: bookingsArray\n };\n }\n\n case CREATE_BOOKING_WITHOUT_DATE: {\n let bookingsWithoutDateArray = state.bookingsWithoutDate;\n bookingsWithoutDateArray = [...bookingsWithoutDateArray];\n let currentObject = action.payload;\n currentObject.start = currentObject.appointmentStartTime;\n currentObject.end = currentObject.appointmentEndTime;\n currentObject.title =\n currentObject.patient.title + \" \" + currentObject.patient.name;\n bookingsWithoutDateArray.push(action.payload);\n\n return {\n ...state,\n bookingsWithoutDate: bookingsWithoutDateArray\n };\n }\n\n case DELETE_BOOKING: {\n return {\n ...state,\n bookings: state.bookingsWithoutDate.filter(\n item => item.id.toString() !== action.payload.id.toString()\n )\n };\n }\n\n case UPDATE_VISIT: {\n const bookings = state.bookings.map(booking => {\n if (parseInt(booking.id) === parseInt(action.payload.bookingId)) {\n const updatedBooking = { ...booking, visited: true };\n return updatedBooking;\n } else {\n return booking;\n }\n });\n return {\n ...state,\n bookings\n };\n }\n case UPDATE_BOOKING_INFORMATION: {\n const bookings = state.bookings.map(booking => {\n if (parseInt(booking.id) === parseInt(action.payload.id)) {\n const updatedBooking = { ...booking, ...action.payload };\n return updatedBooking;\n } else {\n return booking;\n }\n });\n return {\n ...state,\n bookings\n }; \n }\n case SET_LAST_SELECTED_PAYMENT_TYPE: {\n return {\n ...state,\n selectedPaymentType: action.payload\n };\n }\n\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { patientsReducer } from \"./reducers/patients\";\n\nexport default combineReducers({\n patientsReducer\n});\n","import { GET_ALL_PATIENTS, CREATE_PATIENT } from '../action-types';\nexport const patientsReducer = (state = {}, action) => {\n switch (action.type) {\n case GET_ALL_PATIENTS:\n return {\n patientsArray: action.payload\n }\n case CREATE_PATIENT: {\n let newPatientArray = state.patientsArray;\n newPatientArray.push(action.payload);\n \n return {\n ...state,\n patientsArray: newPatientArray\n }\n }\n default:\n return state\n }\n }\n","import {\n FetchDataRoutine,\n LINK_ACCOUNT,\n UNLINK_ACCOUNT\n} from \"../action-types\";\n\nconst initialState = {\n isFetching: false,\n data: [],\n error: null\n};\n\nexport const linkedAccountsListReducer = (state = initialState, action) => {\n switch (action.type) {\n case FetchDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload,\n error: null\n };\n case LINK_ACCOUNT:\n return {\n ...state,\n isFetching: false,\n data: [...state.data, action.payload],\n error: null\n };\n case UNLINK_ACCOUNT:\n return {\n ...state,\n isFetching: false,\n data: [...state.data.filter(i => i.id !== action.id)],\n error: null\n };\n case FetchDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { linkedAccountsListReducer } from \"./reducers/linked-accounts-list-reducers\";\n\nexport default combineReducers({\n linkedAccountsListReducer\n});\n","import { FetchDataRoutine, SET_DENTIST_FILTERS, SET_ALL_DENTIST_FILTERS } from \"../action-types\"; \n\nconst initialDentistState = {\n isFetching: false,\n data: [],\n error: null,\n filters: {\n searchString: \"\",\n dentistId: -1,\n }\n};\n\nexport const dentistsListReducer = (\n state = initialDentistState,\n action\n) => {\n switch (action.type) {\n case FetchDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload,\n error: null\n };\n case FetchDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n\n case SET_DENTIST_FILTERS:\n return {\n ...state,\n filters: {\n ...state.filters,\n ...action.payload\n }\n };\n case SET_ALL_DENTIST_FILTERS:\n return {\n ...state,\n filters: action.filters\n };\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { dentistsListReducer } from \"./reducers/dentists-list-reducer\";\n\nexport default combineReducers({\n dentistsListReducer\n});\n","import { FetchDataRoutine } from \"../action-types\";\n\nconst initialRadiologistsState = {\n isFetching: false,\n data: [],\n error: null\n};\n\nexport const radiologistsListReducer = (\n state = initialRadiologistsState,\n action\n) => {\n switch (action.type) {\n case FetchDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload,\n error: null\n };\n case FetchDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { radiologistsListReducer } from \"./reducers/radiologists-list-reducer\";\n\nexport default combineReducers({\n radiologistsListReducer\n});\n","import {\n FetchDataRoutine,\n SET_FILTERS,\n SET_INVOICES_YEARS\n} from \"../action-types\";\n\nconst initialInvoicesState = {\n isFetching: false,\n invoices: [],\n invoicesYears: [],\n filters: { dentistId: -1, month: -1, year: -1 },\n error: null\n};\n\nexport const invoicesListReducer = (state = initialInvoicesState, action) => {\n switch (action.type) {\n case FetchDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n invoices: action.payload,\n error: null\n };\n case SET_FILTERS:\n return {\n ...state,\n filters: action.filters\n };\n case SET_INVOICES_YEARS:\n return {\n ...state,\n invoicesYears: action.invoicesYears\n };\n case FetchDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { invoicesListReducer } from \"./reducers/invoices-list-reducers\";\n\nexport default combineReducers({\n invoicesListReducer\n});\n","import {\n FetchDataRoutine,\n GenerateDataRoutine,\n SET_FILTERS\n} from \"../action-types\";\n\nconst initialVouchersState = {\n isFetching: false,\n vouchers: [],\n filters: { status: null },\n error: null\n};\n\nexport const vouchersListReducer = (state = initialVouchersState, action) => {\n switch (action.type) {\n case FetchDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n vouchers: action.payload,\n error: null\n };\n case SET_FILTERS:\n return {\n ...state,\n filters: action.filters\n };\n case FetchDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n case GenerateDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n vouchers: [...action.payload, ...state.vouchers],\n error: null\n };\n case GenerateDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case GenerateDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { vouchersListReducer } from \"./reducers/vouchers-list-reducers\";\n\nexport default combineReducers({\n vouchersListReducer\n});\n","import { FetchDataRoutine } from \"../action-types\";\n\nconst initialCovid19SurveyState = {\n isFetching: false,\n patient: {},\n error: null\n};\n\nexport const covid19SurveyReducer = (state = initialCovid19SurveyState, action) => {\n switch (action.type) {\n case FetchDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n patient: action.payload,\n error: null\n };\n case FetchDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { covid19SurveyReducer } from \"./reducers/covid19-survey-reducer\";\n\nexport default combineReducers({\n covid19SurveyReducer\n});\n","import {\n FetchDataRoutine,\n GenerateDataRoutine,\n SET_FILTERS\n} from \"../action-types\";\n\nconst initialRadiologyReportsState = {\n isFetching: false,\n data: [],\n filters: { searchString: null, startDate: null, endDate: null },\n error: null\n};\n\nexport const radiologyReportsListReducer = (state = initialRadiologyReportsState, action) => {\n switch (action.type) {\n case FetchDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload.orderReports,\n reportCount: action.payload.orderReportsCount,\n error: null\n };\n case SET_FILTERS:\n return {\n ...state,\n filters: action.filters\n };\n case FetchDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n case GenerateDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: [action.payload, ...state.radiologyReports],\n error: null\n };\n case GenerateDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case GenerateDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { radiologyReportsListReducer } from \"./reducers/radiology-reports-list-reducers\";\n\nexport default combineReducers({\n radiologyReportsListReducer\n});\n","export const updateReportForData = (data, report) => {\n\tconst copy = data.slice();\n\treturn copy.map(i => {\n\t\tif (i.visitId === report.visitId) {\n\t\t\ti.report = {\n\t\t\t\treportContent: null,\n\t\t\t\trequestedReportDate: new Date()\n\t\t\t};\n\t\t}\n\t\treturn i;\n\t});\n};\n\nexport const updateScanForData = (data, { reportId, fileName }) => {\n\tconst copy = data.slice();\n\treturn copy.map(i => {\n\t\tif (i.visitId === reportId) {\n\t\t\ti.report.reportContentList = i.report.reportContentList.filter(report => report.file != fileName);\n\t\t}\n\t\treturn i;\n\t});\n};\n\nexport const updateScanForDataAfterUpload = (data, { visitId, scans }) => {\n\tconst copy = data.slice();\n\treturn copy.map(i => {\n\t\tif (i.visitId === visitId) {\n\t\t\ti.scans = [...i.scans, ...scans];\n\t\t}\n\t\treturn i;\n\t});\n};\n","import {\n\tFetchDataRoutine,\n\tSET_FILTERS,\n\tUPDATE_REPORT,\n\tUPDATE_SCAN,\n\tUPDATE_SCAN_UPLOAD\n} from \"../action-types\";\nimport {\n\tupdateReportForData,\n\tupdateScanForData,\n\tupdateScanForDataAfterUpload\n} from \"../helpers\";\n\nconst initialVisitsState = {\n\tisFetching: false,\n\tdata: [],\n\tfilters: { searchString: \"\", startDate: null, endDate: null, orderBy: 'visitDate', desc: true },\n\terror: null\n};\n\nexport const visitsReducer = (state = initialVisitsState, action) => {\n\tswitch (action.type) {\n\t\tcase FetchDataRoutine.SUCCESS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisFetching: false,\n\t\t\t\tdata: action.payload.visits.map(i => ({ ...i, scanClouds: i.scans })),\n\t\t\t\tvisitCount: action.payload.visitCount,\n\t\t\t\terror: null\n\t\t\t};\n\t\tcase SET_FILTERS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfilters: action.filters\n\t\t\t};\n\t\tcase UPDATE_REPORT:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdata: updateReportForData(state.data, action.payload)\n\t\t\t};\n\t\tcase UPDATE_SCAN:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdata: updateScanForData(state.data, action.payload)\n\t\t\t};\n\t\tcase UPDATE_SCAN_UPLOAD:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdata: updateScanForDataAfterUpload(state.data, action.scans)\n\t\t\t};\n\t\tcase FetchDataRoutine.REQUEST:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisFetching: true,\n\t\t\t\terror: null\n\t\t\t};\n\t\tcase FetchDataRoutine.FAILURE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisFetching: false,\n\t\t\t\terror: action.payload\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchPastVisitsRoutine } from \"../action-types\";\n\nconst initialVisitsState = {\n isFetching: false,\n data: [],\n error: null\n};\n\nexport const visitsPastReducer = (state = initialVisitsState, action) => {\n switch (action.type) {\n case FetchPastVisitsRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload,\n error: null\n };\n case FetchPastVisitsRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchPastVisitsRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n\n default:\n return state;\n }\n};\n","import { UpdateDataRoutine } from \"../action-types\";\n\nconst initialVisitsState = {\n isUpdating: false,\n error: null,\n};\n\nexport const visitsUpdateReducer = (state = initialVisitsState, action) => {\n switch (action.type) {\n case UpdateDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n error: null,\n };\n case UpdateDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n case UpdateDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload,\n };\n\n default:\n return state;\n }\n};\n","import { FetchReceiptRoutine, CLEAR_RECEIPT } from \"../action-types\";\n\nconst initialVisitsState = {\n isFetching: false,\n error: null,\n data: {},\n};\n\nexport const visitsReceiptReducer = (state = initialVisitsState, action) => {\n switch (action.type) {\n case FetchReceiptRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload,\n error: null,\n };\n case FetchReceiptRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null,\n };\n case FetchReceiptRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload,\n };\n case CLEAR_RECEIPT: {\n return {\n ...initialVisitsState,\n };\n }\n\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { visitsReducer } from \"./reducers/visits-list-reducers\";\nimport { visitsPastReducer } from \"./reducers/visits-past-reducers\";\nimport { visitsUpdateReducer } from \"./reducers/visit-update.reducers\";\nimport { visitsReceiptReducer } from \"./reducers/visits-receipt.reducers\";\n\nexport default combineReducers({\n visitsReducer,\n visitsPastReducer,\n visitsUpdateReducer,\n visitsReceiptReducer\n});\n","import { FetchDataRoutine, SET_AUDIT_REPORT_FILTERS } from \"../action-types\";\nimport { backendDateFormat } from \"../../../constants/global.constants\";\nimport moment from \"moment\";\n\nconst initialAuditReportState = {\n isFetching: false,\n data: [],\n filters: {\n startDate: moment()\n .startOf(\"month\")\n .format(backendDateFormat),\n endDate: moment().format(backendDateFormat)\n },\n error: null\n};\n\nexport const auditReportListReducer = (\n state = initialAuditReportState,\n action\n) => {\n switch (action.type) {\n case FetchDataRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload,\n error: null\n };\n case SET_AUDIT_REPORT_FILTERS:\n return {\n ...state,\n filters: action.filters\n };\n case FetchDataRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchDataRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n\n default:\n return state;\n }\n};\n","import {\n FetchRadiologistReportRoutine,\n SET_RADIOLOGIST_REPORT_FILTERS\n} from \"../action-types\";\nimport { backendDateFormat } from \"../../../constants/global.constants\";\n\nimport moment from \"moment\";\n\nconst initialRadiologistReportState = {\n isFetching: false,\n data: [],\n filters: {\n startDate: moment()\n .startOf(\"month\")\n .format(backendDateFormat),\n endDate: moment().format(backendDateFormat),\n radiologistIds: []\n },\n error: null\n};\n\nexport const radiologistReportListReducer = (\n state = initialRadiologistReportState,\n action\n) => {\n switch (action.type) {\n case FetchRadiologistReportRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload,\n error: null\n };\n case SET_RADIOLOGIST_REPORT_FILTERS:\n return {\n ...state,\n filters: {\n ...state.filters,\n ...action.filters\n }\n };\n case FetchRadiologistReportRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchRadiologistReportRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n\n default:\n return state;\n }\n};\n","import { FetchPatientsSatisfactionRoutine, SET_PATIENTS_SATISFACTION_REPORT_FILTERS } from \"../action-types\";\nimport { backendDateFormat } from \"../../../constants/global.constants\";\nimport moment from \"moment\";\n\nconst initialState = {\n isFetching: false,\n data: [],\n filters: {\n startDate: moment()\n .startOf(\"month\")\n .format(backendDateFormat),\n endDate: moment().format(backendDateFormat)\n },\n error: null\n};\n\nexport const patientsSatisfactionReportsListReducer = (\n state = initialState,\n action\n) => {\n switch (action.type) {\n case FetchPatientsSatisfactionRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload,\n error: null\n };\n case SET_PATIENTS_SATISFACTION_REPORT_FILTERS:\n return {\n ...state,\n filters: action.filters\n };\n case FetchPatientsSatisfactionRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchPatientsSatisfactionRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n\n default:\n return state;\n }\n};\n","import { FetchAuditRegistrationRoutine } from \"../action-types\";\nimport { backendDateFormat } from \"../../../constants/global.constants\";\nimport moment from \"moment\";\n\nconst initialAuditReportState = {\n isFetching: false,\n data: [],\n filters: {\n startDate: moment()\n .startOf(\"month\")\n .format(backendDateFormat),\n endDate: moment().format(backendDateFormat)\n },\n error: null\n};\n\nexport const auditRegistrationListReducer = (\n state = initialAuditReportState,\n action\n) => {\n switch (action.type) {\n case FetchAuditRegistrationRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload.map(i => ({...i, dentist: ''})),\n error: null\n };\n case FetchAuditRegistrationRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchAuditRegistrationRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { auditReportListReducer } from \"./reducers/audit-reports-list\";\nimport { radiologistReportListReducer } from \"./reducers/radiologist-reports-list\";\nimport { patientsSatisfactionReportsListReducer } from './reducers/patients-satisfaction-reports-list'\nimport { auditRegistrationListReducer } from './reducers/audit-registration-report-list'\n\nexport default combineReducers({\n auditReportListReducer,\n radiologistReportListReducer,\n patientsSatisfactionReportsListReducer,\n auditRegistrationListReducer\n});\n","import { FetchPastVisitsRoutine } from \"../action-types\";\n\nconst initialVisitsState = {\n isFetching: false,\n data: [],\n error: null\n};\n\nexport const visitsPastReducer = (state = initialVisitsState, action) => {\n switch (action.type) {\n case FetchPastVisitsRoutine.SUCCESS:\n return {\n ...state,\n isFetching: false,\n data: action.payload,\n error: null\n };\n case FetchPastVisitsRoutine.REQUEST:\n return {\n ...state,\n isFetching: true,\n error: null\n };\n case FetchPastVisitsRoutine.FAILURE:\n return {\n ...state,\n isFetching: false,\n error: action.payload\n };\n\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { visitsPastReducer } from \"./reducers/visits-past-reducers\";\n\nexport default combineReducers({\n visitsPastReducer\n});\n","import * as t from \"../action-types\";\n\nconst initialUserProfileState = {\n profile: {},\n editMode: false\n};\n\nexport const profileReducer = (state = initialUserProfileState, action) => {\n switch (action.type) {\n case t.SET_USER_PROFILE:\n return {\n ...state,\n profile: action.profile\n };\n case t.TOGGLE_EDIT_MODE:\n return {\n ...state,\n editMode: !state.editMode\n };\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport { profileReducer } from \"./reducers/profile-reducers\";\nimport { creditCardReducer } from \"./reducers/credit-card-reducer\";\nexport default combineReducers({\n profileReducer,\n creditCardReducer\n});\n","import * as t from \"../action-types\";\nimport { prepareExpData } from \"../helpers\";\n\nexport const creditCardReducer = (\n state = {\n cardholderFullName: \"Cardholder name\",\n expirationDate: \"00/00\",\n last4: \"XXXX\"\n },\n action\n) => {\n switch (action.type) {\n case t.SET_CREDIT_CARD:\n return {\n ...action.card,\n expirationDate: prepareExpData(action.card)\n };\n default:\n return state;\n }\n};\n","import { combineReducers } from \"redux\";\nimport auth from \"./authReducer\";\nimport bookings from \"../modules/dashboard/reducers\";\nimport patients from \"../modules/patient/reducers\";\nimport linkedAccounts from \"../modules/linkedAccounts/reducers\";\nimport dentists from \"../modules/dentists/reducers\";\nimport radiologists from \"../modules/radiologists/reducers\";\nimport invoices from \"../modules/invoices/reducers\";\nimport vouchers from \"../modules/voucher/reducers\";\nimport covid19Survey from \"../modules/covid-19-survey/reducers\";\nimport radiologyReports from \"../modules/radiologyReports/reducers\";\n\n// ToDo: after cleanup delete\n// import visits from \"./visitsReducer\";\nimport visits from \"../modules/visits/reducers\";\nimport reports from \"../modules/reports/reducers\";\nimport visitDetails from \"../modules/visit-details/reducers\";\n\nimport { reducer as toastrReducer } from \"react-redux-toastr\";\n\nimport profile from \"../modules/profile/reducers\";\nconst appReducer = combineReducers({\n auth,\n bookings,\n patients,\n visits,\n visitDetails,\n dentists,\n radiologists,\n linkedAccounts,\n toastr: toastrReducer,\n profile,\n reports,\n invoices,\n vouchers,\n covid19Survey,\n radiologyReports\n});\n\nexport default (state, action) => {\n if (action.type === 'LOGOUT_ACTION') {\n state = undefined;\n }\n\n return appReducer(state, action);\n}\n","export default (state = {}, action) => {\n switch (action.type) {\n case 'LOGIN_ACTION':\n return {\n auth_token: action.payload\n }\n case 'LOGOUT_ACTION':\n return {\n auth_token: ''\n }\n default:\n return state\n }\n }\n","import { createStore, applyMiddleware, compose } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport rootReducer from \"../reducers/rootReducer\";\nimport promise from \"redux-promise\";\n\nconst composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n\nexport default function configureStore(\n initialState = {\n auth: {\n auth_token: localStorage.getItem(\"auth_token\"),\n },\n // bookings: {\n // bookingsWithoutDate: [],\n // bookings: [],\n // bookingInfo: null,\n // bookingInfoDragged: null\n // },\n patients: {},\n }\n) {\n return createStore(\n rootReducer,\n initialState,\n composeEnhancer(applyMiddleware(promise, thunk))\n );\n}\n","// import 'react-app-polyfill/ie9'; // For IE 9-11 support\nimport \"react-app-polyfill/ie11\"; // For IE 11 support\nimport \"react-app-polyfill/stable\";\nimport \"./polyfill\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport ReduxToastr from \"react-redux-toastr\";\nimport { getUserProfile } from \"./modules/profile/actions\";\nimport { ImpersonatingService } from \"./services/impersonating.service\";\nimport { Provider } from \"react-redux\";\nimport configureStore from \"./store\";\n\nconst { token, originalToken } = ImpersonatingService();\nexport const store = configureStore();\n\nconst renderApp = () =>\n ReactDOM.render(\n \n \n \n \n \n ,\n document.getElementById(\"root\")\n );\n\nif (token || originalToken) {\n store\n .dispatch(getUserProfile())\n .then((res) => renderApp())\n .catch((e) => console.log(e));\n} else {\n renderApp();\n}\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import React from \"react\";\nimport { formatSpeciality } from \"../../helpers\";\n\nexport default function PersonalInformation({\n children,\n userProfile: {\n email,\n enabled,\n firstName,\n id,\n lastName,\n nameOfPractice,\n password,\n role,\n speciality,\n telephoneNumber,\n title,\n gdc,\n postCode,\n address,\n city,\n visitsEnabled,\n enabledEmailNotification,\n },\n}) {\n const buildName = () => {\n return `${title}. ${lastName} ${firstName}`;\n };\n\n return (\n
\n
\n
\n {children}\n
\n

\n \n {buildName()}\n

\n
    \n
  • \n \n Speciality\n \n {formatSpeciality(speciality)}\n \n \n
  • \n
  • \n \n Name of Practice\n {nameOfPractice}\n \n
  • \n
  • \n \n GDC / GMC No.\n {gdc}\n \n
  • \n
  • \n \n \n Please, send me patient appointment confirmations by email\n \n \n {visitsEnabled ? \"Yes\" : \"No\"}\n \n \n
  • \n
\n

\n Address of the practice\n

\n
    \n
  • \n \n Country\n United Kingdom\n \n
  • \n
  • \n \n City\n {city}\n \n
  • \n
  • \n \n Postcode\n {postCode}\n \n
  • \n
  • \n \n Address Line\n {address}\n \n
  • \n
\n

\n Contact information\n

\n
    \n
  • \n \n Phone Number\n {telephoneNumber}\n \n
  • \n
  • \n \n Email Address\n {email}\n \n
  • \n
\n
\n
\n
\n
\n );\n}\n","import React from \"react\";\n\nexport default function EditModeToggler({\n onToggle,\n isEdit,\n children,\n isUserDentist\n}) {\n const renderMode = () =>\n isEdit ? (\n isUserDentist ? (\n \n Edit\n \n ) : null\n ) : (\n \n Edit mode\n \n );\n return (\n
\n

{children}

\n
{renderMode()}
\n
\n );\n}\n","import React, { useState, Fragment, useRef } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport {\n INITIAL_EDIT_FORM_STATE,\n INITIAL_REGISTER_FORM_STATE,\n SPECIALITIES,\n COUNTRIES,\n TITLES,\n} from \"../../../../constants/auth.constants\";\nimport { Form, Field } from \"react-final-form\";\nimport classNames from \"classnames\";\nimport {\n composeValidators,\n required,\n isEmail,\n isSecondaryEmail,\n isValidPassword,\n formatSpeciality,\n} from \"../../helpers\";\nimport { NAVIGATION_CONSTANTS } from \"../../../../constants/navigation.constants\";\nimport \"./index.css\";\n\nconst ProfileForm = ({\n onSubmit,\n onDiscard,\n mode,\n userProfile,\n isUserDentist,\n}) => {\n const mrxl = {\n marginRight: \"15px\", // Add extra css class during refactoring\n };\n const inputRef = useRef();\n\n const [termsRead, changeTermsRead] = useState(false);\n const [hidePassword, toggleHidePassword] = useState(true);\n\n const capitalize = (val) =>\n val.charAt(0).toUpperCase() + val.slice(1).toLowerCase(); // Just add lodash after demo\n\n const onChangeRead = () => changeTermsRead(!termsRead);\n\n return (\n (\n
\n
\n {mode === \"register\" && (\n About you\n )}\n (\n
\n \n Title\n \n
\n \n
\n
\n )}\n />\n\n (\n
\n \n Forename\n \n
\n \n
\n
\n )}\n />\n\n (\n
\n \n Surname\n \n
\n \n
\n
\n )}\n />\n\n (\n
\n \n Speciality\n \n
\n \n \n {SPECIALITIES.map((speciality) => (\n \n ))}\n ;\n \n
\n
\n )}\n />\n\n (\n
\n \n Practice\n \n
\n \n
\n
\n )}\n />\n\n (\n
\n \n
\n \n
\n
\n )}\n />\n\n {mode === \"edit\" && (\n (\n
\n \n Please, send me patient appointment confirmations by email\n \n
\n \n
\n
\n )}\n />\n )}\n
\n
\n Address of the practice\n\n (\n
\n \n Country\n \n
\n \n {COUNTRIES.map((country) => (\n \n ))}\n ;\n \n
\n
\n )}\n />\n\n (\n
\n \n
\n \n
\n
\n )}\n />\n\n (\n
\n \n Postcode\n \n
\n \n
\n
\n )}\n />\n\n (\n
\n \n Address line\n \n
\n \n
\n
\n )}\n />\n
\n
\n Contact information\n\n {mode === \"edit\" && (\n (\n
\n \n Telephone No.\n \n
\n \n
\n
\n )}\n />\n )}\n\n (\n
\n \n Email address\n \n
\n \n {mode === \"register\" && (\n \n This will be your username.\n \n )}\n
\n
\n )}\n />\n\n {mode === \"edit\" && (\n \n
Email notifications
\n\n (\n \n )}\n />\n\n \n Please, send all my email notifications to alternative\n email\n \n\n {userProfile.customEmails.map((customEmail, i) => {\n const name = `customEmails[${i}].email`\n const id = `secondary-email-${i}`\n \n return (\n
\n
\n \n
\n
\n )}\n />\n })}\n\n {\n userProfile.customEmails.push({\n id: 0,\n email: ''\n })\n }}>Add alternative email\n
\n )}\n
\n {mode === \"register\" && (\n
\n Password\n (\n
\n \n Password\n \n
\n \n {\n e.preventDefault();\n toggleHidePassword(!hidePassword);\n }}\n >\n {hidePassword ? \"Show\" : \"Hide\"}\n \n \n Password should contain at least 6 characters, at least\n one capital letter and a number.\n \n
\n
\n )}\n />\n
\n )}\n\n {mode === \"register\" && (\n \n {\" \"}\n
\n \n \n I have read and agree on{\" \"}\n \n Terms and Conditions\n \n .\n \n
\n \n Sign Up\n \n
\n )}\n {mode === \"edit\" && (\n \n
\n
\n \n Discard Changes\n \n
\n
\n {\n values.customEmails = values.customEmails.filter(customEmail => customEmail.email);\n e.preventDefault();\n onSubmit(values);\n }}\n >\n Save\n \n
\n
\n
\n )}\n
\n )}\n />\n );\n};\n\nexport default ProfileForm;\n","import React, { useState } from \"react\";\nimport ProfileForm from \"../ProfileForm\";\nimport Modal from \"../../../../common/modals/Modal\";\n\nexport default function PersonalInformationEdit({\n children,\n userProfile,\n updateUserInfo,\n toggleEditMode,\n isUserDentist\n}) {\n\n const [showModal, toggleModalVisibility] = useState(false);\n const handleModalVisibilityToggle = () => toggleModalVisibility(!showModal);\n const onDiscard = () => {\n handleModalVisibilityToggle();\n toggleEditMode();\n };\n return (\n
\n
\n
\n {children}\n
\n {\n e.preventDefault();\n handleModalVisibilityToggle();\n }}\n userProfile={userProfile}\n isUserDentist={isUserDentist}\n />\n {showModal && (\n \n Are you sure you want to discard your changes?\n
\n All of the progress will be lost.\n \n )}\n
\n
\n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport { Form, Field } from \"react-final-form\";\nimport { composeValidators, required, isValidPassword } from \"../../helpers\";\nimport classNames from \"classnames\";\n\nexport default function ChangePassword({ onSubmit }) {\n const [hidePassword, toggleHidePassword] = useState(true);\n const [hideNewPassword, toggleHideNewPassword] = useState(true);\n\n return (\n (\n
\n
\n

Change Password

\n
\n (\n
\n \n
\n \n {\n e.preventDefault();\n toggleHidePassword(!hidePassword);\n }}\n >\n {hidePassword ? \"Show\" : \"Hide\"}\n \n
\n
\n )}\n />\n (\n
\n \n
\n \n {\n e.preventDefault();\n toggleHideNewPassword(!hideNewPassword);\n }}\n >\n {hideNewPassword ? \"Show\" : \"Hide\"}\n \n \n Password should contain at least 6 characters, at least\n one capital letter and a number.\n \n
\n
\n )}\n />\n
\n
\n {\n e.preventDefault();\n handleSubmit(values);\n }}\n disabled={invalid}\n >\n Change Password\n \n
\n
\n \n
\n
\n )}\n />\n );\n}\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport classNames from \"classnames\";\n\nconst DateInputAdapter = ({ input, meta, ...rest }) => {\n const mask = [/\\d/, /\\d/, \"/\", /\\d/, /\\d/];\n return (\n input.onBlur(event)}\n onChange={event => input.onChange(event.target.value)}\n />\n );\n};\n\nexport default DateInputAdapter;\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport classNames from \"classnames\";\n\nconst CreditCardInputAdapter = ({\n input,\n meta,\n mask = [/\\d/, /\\d/, /\\d/, /\\d/],\n ...rest\n}) => {\n return (\n input.onBlur(event)}\n onChange={event => input.onChange(event.target.value)}\n />\n );\n};\n\nexport default CreditCardInputAdapter;\n","import React, { useState } from \"react\";\nimport classnames from \"classnames\";\nimport EditModeToggler from \"../EditModeToggler\";\nimport Modal from \"../../../../common/modals/Modal\";\nimport { Form, Field } from \"react-final-form\";\nimport DateInputAdapter from \"../../../../common/masks/DateInputAdapter\";\nimport CreditCardInputAdapter from \"../../../../common/masks/CreditCardInputAdapter\";\nimport { required, composeValidators, hasRequiredLength } from \"../../helpers\";\nimport { toastr } from \"react-redux-toastr\";\nimport useModal from \"../../../../hooks/useModal\";\nimport {\n CardNumberElement,\n CardExpiryElement,\n CardCvcElement,\n useStripe, \n useElements\n} from '@stripe/react-stripe-js';\nimport styled from \"styled-components\";\nimport axios from '../../../../axios-client';\n\nconst CreditCardSettings = ({\n creditCardInfo,\n updatePaymentInformation,\n isUserDentist\n}) => {\n const getNumber = () => `'${creditCardInfo.last4}'`;\n const PseudoClassStyle = styled.div`\n &:before {\n content: ${getNumber} !important;\n }\n `;\n const [editMode, setEditMode] = useState(false);\n const stripe = useStripe();\n const elements = useElements();\n const [isSubmitting, submit] = useState(false)\n\n const {\n handleModalVisibilityToggle,\n showModal,\n toggleModalVisibility\n } = useModal();\n const onDiscard = form => {\n handleModalVisibilityToggle();\n form.reset();\n setEditMode(false);\n };\n const handleCreditCardUpdate = async (cardData, form) => {\n submit(true);\n\n if (!stripe || !elements) {\n return;\n }\n\n let cardPopulatedData, cardHolderFullName = cardData.cardholderFullName, clientSecret, paymentMethod, customerId;\n await stripe.createToken(elements.getElement(CardNumberElement)).then(result => cardPopulatedData = result.token.card)\n\n await axios.get('/payments/getClientSecret').then(res => {\n clientSecret = res.data.clientSecret;\n customerId = res.data.customerId;\n });\n\n const result = await stripe.confirmCardSetup(clientSecret, {\n payment_method: {\n card: elements.getElement(CardNumberElement)\n }\n });\n\n if (result.error) {\n toastr.error(\"Error\", \"Please enter valid data\");\n } else {\n paymentMethod = result.setupIntent.payment_method;\n updatePaymentInformation({ cardHolderFullName, cardPopulatedData, paymentMethod, customerId });\n setEditMode(false);\n }\n submit(false)\n };\n const noop = () => {};\n return (\n
\n
\n setEditMode(true)}\n isEdit={!editMode}\n isUserDentist={isUserDentist}\n >\n Credit Card Information\n \n \n (\n
\n \n {editMode && (\n
\n
\n \n
\n
\n )}\n {!editMode && (\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n \n \n \n
\n
\n )}\n
\n
\n
\n \n \n
\n
\n
\n
\n \n {editMode && (\n \n )}\n {!editMode && (\n \n hasRequiredLength(val, 4, \"/\")\n )}\n />\n )}\n
\n
\n
\n
\n \n \n
\n
\n
\n {editMode && (\n
\n
\n
\n \n Discard Changes\n \n
\n
\n handleCreditCardUpdate(values, form)}\n >\n {isSubmitting ? 'Saving...' : 'Save'}\n \n
\n
\n
\n )}\n {showModal && (\n onDiscard(form)}\n onClose={handleModalVisibilityToggle}\n >\n Are you sure you want to discard your changes?\n
\n All of the progress will be lost.\n \n )}\n \n )}\n />\n
\n
\n
\n );\n};\n\nexport default CreditCardSettings;\n","import React from \"react\";\nimport { Row, Col, Card, CardTitle, CardText } from \"reactstrap\";\nimport { SUPPORTED_PAYMENTS } from \"../../../../constants/global.constants\";\n\nconst cardWith = {\n width: \"200px\"\n};\n\nexport default function SupportedPayments() {\n return (\n \n \n \n {SUPPORTED_PAYMENTS.map(payment => (\n \n {payment.name}\n \n ))}\n \n \n \n \n \n Supported Cards\n \n \n Users can accept Visa, Mastercard, American Express, Discover, JCB,\n Diners Club, China UnionPay credit and debit cards.\n \n \n \n \n );\n}\n","import { createSelector } from \"reselect\";\n\nconst userProfileSelector = ({ profile }) => profile;\n\nexport const getUserProfileInfo = createSelector(\n userProfileSelector,\n ({ profileReducer }) => {\n return profileReducer.profile;\n }\n);\n\nexport const getCreditCardInfo = createSelector(\n userProfileSelector,\n ({ creditCardReducer }) => creditCardReducer\n);\n\nexport const getEditMode = createSelector(\n userProfileSelector,\n ({ profileReducer }) => {\n return profileReducer.editMode;\n }\n);\n\nexport const getUserRole = createSelector(\n userProfileSelector,\n ({ profileReducer }) => {\n return profileReducer.profile.role;\n }\n);\n\nexport const getLinkCode = createSelector(\n userProfileSelector,\n ({ profileReducer }) => {\n return profileReducer.profile.linkedCode;\n }\n);\n\nexport const getHasLinkedAccounts = createSelector(\n userProfileSelector,\n ({ profileReducer }) => {\n return profileReducer.profile.hasLinkedAccounts;\n }\n);\n\nexport const hasCreditCard = createSelector(\n [getUserProfileInfo],\n profile => profile.hasCard\n);\n","import * as components from \"./components\";\nimport * as selectors from \"./selectors\";\nimport * as actions from \"./actions\";\nimport * as constants from \"./constants\";\nexport default {\n components,\n selectors,\n actions,\n constants\n};\n","module.exports = __webpack_public_path__ + \"static/media/teamviewer.1753683e.png\";","import { loadLocalStoreData } from \"./localStorage.service\";\nimport { LOCAL_STORAGE_CONSTANTS } from \"../constants/localStorage.constants\";\n\nexport const ImpersonatingService = () => ({\n token: loadLocalStoreData(LOCAL_STORAGE_CONSTANTS.AUTH_TOKEN, null, false),\n originalToken: loadLocalStoreData(\n LOCAL_STORAGE_CONSTANTS.ORIGINAL_AUTH_TOKEN,\n null,\n false\n ),\n isImpersonating: loadLocalStoreData(\n LOCAL_STORAGE_CONSTANTS.ACTING_AS,\n null,\n false\n ),\n getPreselectedUser: loadLocalStoreData(\n LOCAL_STORAGE_CONSTANTS.ACTING_AS,\n { label: \"\" },\n false\n )\n});\n","import axios from \"axios\";\nimport { get } from \"lodash\";\nimport { ImpersonatingService } from \"./services/impersonating.service\";\nconst client = axios.create({\n baseURL: '/api',\n});\n\nclient.interceptors.request.use(config => {\n let { token, originalToken } = ImpersonatingService();\n token = token || originalToken;\n if (token) {\n config.headers.Authorization = token;\n }\n\n return config;\n});\n\nclient.interceptors.response.use(\n response => {\n // Do something with response data\n return response;\n },\n error => {\n const message = get(error, \"response.data.apierror.message\", null);\n return Promise.reject(message || \"Something went wrong\");\n }\n);\n\nexport default client;\n","import React, { Fragment, useState, useRef } from \"react\";\nimport \"react-dates/initialize\";\nimport \"react-dates/lib/css/_datepicker.css\";\nimport { Row, Col, Button } from \"reactstrap\";\nimport Moment from \"moment\";\nimport { DateRangePicker } from \"react-dates\";\n\nimport {\n\tVERTICAL_ORIENTATION,\n\tHORIZONTAL_ORIENTATION,\n} from \"react-dates/constants\";\nimport { dateFormatShort } from \"../../../../constants/global.constants\";\nconst heightCss = {\n\theight: \"35px\",\n};\n\nexport default function VisitsFilter({ onFilter, isMobile, fetchVisits, isUserRadiologist, userRole }) {\n\tconst [focused, setFocused] = useState(null);\n\tconst [filters, setFilters] = useState({});\n\tconst [dates, setDates] = useState({ startDate: null, endDate: null });\n\tconst inputRef = useRef(null);\n\tconst handleFocusChange = (focused) => {\n\t\tsetFocused(focused);\n\t};\n\n\tconst selectionChange = (event, type) => {\n\t\tlet formattedStartDate = null;\n\t\tlet formattedEndDate = null;\n\t\tconst { startDate, endDate } = dates;\n\t\tif (startDate && endDate) {\n\t\t\tformattedStartDate = Moment(startDate).format('YYYY/MM/DD')\n\t\t\tformattedEndDate = Moment(endDate).format('YYYY/MM/DD')\n\t\t}\n\t\tonFilter({ [type]: event.target.value, startDate: formattedStartDate, endDate: formattedEndDate });\n\t\tsetFilters({ [type]: event.target.value });\n if(type === 'searchString' ) {\n fetchVisits({ startDate: formattedStartDate, endDate: formattedEndDate, criteria: event.target.value })\n }\n\t};\n\n\tconst onDatesChange = ({ startDate, endDate }) => {\n\t\tsetDates({ startDate, endDate });\n\t\tif (startDate && endDate) {\n\t\t\tconst formattedStartDate = Moment(startDate).format('YYYY/MM/DD');\n\t\t\tconst formattedEndDate = Moment(endDate).format('YYYY/MM/DD');\n\t\t\tonFilter({ ...filters, startDate: formattedStartDate, endDate: formattedEndDate });\n\t\t\tfetchVisits({ startDate: formattedStartDate, endDate: formattedEndDate, criteria: filters.searchString })\n\t\t} else {\n\t\t\tonFilter({ ...filters, startDate, endDate });\n\t\t}\n\t};\n\n\tconst clearFilter = (e) => {\n\t\tsetFilters({})\n\t\tsetDates({ startDate: null, endDate: null });\n\t\tinputRef.current.value = \"\";\n\t\tonFilter({});\n\t\tfetchVisits({})\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t selectionChange(event, \"searchString\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t dateFormatShort}\n\t\t\t\t\t\t\tfocusedInput={focused}\n\t\t\t\t\t\t\tsmall={true}\n\t\t\t\t\t\t\thideKeyboardShortcutsPanel\n\t\t\t\t\t\t\torientation={\n\t\t\t\t\t\t\t\tisMobile ? VERTICAL_ORIENTATION : HORIZONTAL_ORIENTATION\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twithFullScreenPortal={isMobile}\n\t\t\t\t\t\t\tisOutsideRange={(date) => date.isAfter(Moment())}\n\t\t\t\t\t\t\tstartDate={dates.startDate}\n\t\t\t\t\t\t\tendDate={dates.endDate}\n minimumNights={0}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t clearFilter()}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tClear{\" \"}\n\t\t\t\t\t\tfilters\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}\n","import React, { Fragment, useRef } from \"react\";\nimport BootstrapTable from \"react-bootstrap-table-next\";\nimport paginationFactory from \"react-bootstrap-table2-paginator\";\nimport { buildTable, addSort, buildOptions, rowEvents } from \"../../../../../src/services/table.service\";\nimport { noop } from 'lodash';\n\nexport default function DentistTable({\n\tvisits,\n\thasLinkedAccounts,\n\tonRowSelected,\n\tfetchVisits,\n\tvisitCount,\n\tfilters,\n setFilters\n}) {\n\n let table = useRef(null)\n\tconst columns = buildTable(\"dentist\", {\n\t\thasLinkedAccounts\n\t}).map(addSort(filters, fetchVisits, table?.current));\n\n\tconst options = buildOptions(fetchVisits, filters, visitCount, setFilters);\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import React, { Fragment, useRef } from \"react\";\nimport BootstrapTable from \"react-bootstrap-table-next\";\nimport paginationFactory from \"react-bootstrap-table2-paginator\";\nimport { noop } from \"lodash\";\nimport {\n buildTable,\n buildOptions,\n addSort,\n rowEvents,\n} from \"../../../../../src/services/table.service\";\n\nexport default function RadiographerTable({\n visits,\n onRowSelected,\n deleteScan,\n fetchVisits,\n visitCount,\n filters,\n setFilters\n}) {\n\n let table = useRef(null)\n const columns = buildTable(\"radiographer\", { deleteScan }).map(\n addSort(filters, fetchVisits, table?.current)\n );\n\n const options = buildOptions(fetchVisits, filters, visitCount, setFilters);\n\n return (\n \n \n \n );\n}\n","import React, { Fragment, useRef } from \"react\";\nimport BootstrapTable from \"react-bootstrap-table-next\";\nimport paginationFactory from \"react-bootstrap-table2-paginator\";\nimport { noop } from \"lodash\";\nimport { buildTable , rowEvents, buildOptions, addSort } from \"../../../../../src/services/table.service\";\n\nexport default function RadiologistTable({ visits, onRowSelected, fetchVisits, visitCount, filters, setFilters }) {\n\n let table = useRef(null)\n\tconst columns = buildTable(\"radiologist\", {}, true).map(addSort(filters, fetchVisits, table?.current));\n const options = buildOptions(fetchVisits, filters, visitCount, setFilters);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import React, { Fragment, useRef, } from \"react\";\nimport BootstrapTable from \"react-bootstrap-table-next\";\nimport paginationFactory from \"react-bootstrap-table2-paginator\";\nimport { noop } from 'lodash';\nimport { buildTable, rowEvents, buildOptions, addSort } from \"../../../../../src/services/table.service\";\n\nimport { withRouter } from \"react-router\";\n\nconst ReceptionistTable = ({ visits, onRowSelected, fetchVisits, visitCount, filters, setFilters, fetchReceiptDetails, history }) => {\n\n let table = useRef(null)\n\tconst columns = buildTable(\"receptionist\", { fetchReceiptDetails, history }).map(addSort(filters, fetchVisits, table?.current));\n\n const options = buildOptions(fetchVisits, filters, visitCount, setFilters);\n\n\treturn (\n \n \n )\n}\n\n\nexport default withRouter(ReceptionistTable);","import { createSelector } from \"reselect\";\nimport { isUserRadiologist } from \"../../services/permission.service\";\n\nconst visitsSelector = ({ visits }) => visits;\nconst userProfileSelector = ({ profile }) => profile;\nconst radiologyReportsSelector = ({ radiologyReports }) => radiologyReports;\n\nexport const getVisitCount = createSelector(\n visitsSelector,\n ({ visitsReducer }) => {\n return visitsReducer.visitCount;\n }\n);\n\nexport const getVisitFilter = createSelector(\n visitsSelector,\n ({ visitsReducer }) => {\n return visitsReducer.filters;\n }\n);\n\nexport const getVisitsReceipt = createSelector(\n visitsSelector,\n ({ visitsReceiptReducer }) => {\n return visitsReceiptReducer.data;\n }\n);\n\nexport const getVisits = createSelector(\n [visitsSelector, userProfileSelector, radiologyReportsSelector],\n (\n { visitsReducer },\n { profileReducer: { profile } },\n { radiologyReportsListReducer }\n ) => {\n\n let result = [];\n if (isUserRadiologist(profile.role)) {\n const query = visitsReducer.filters.searchString\n ? visitsReducer.filters.searchString.toLowerCase()\n : \"\";\n const { startDate, endDate } = visitsReducer.filters;\n\n result = getDataForRadiologist(\n visitsReducer,\n query,\n radiologyReportsListReducer\n );\n \n return result\n } else {\n return visitsReducer.data;\n }\n }\n);\n\nexport const getPastVisits = createSelector(\n visitsSelector,\n ({ visitsPastReducer }) => {\n return visitsPastReducer.data;\n }\n);\n\nfunction getDataForRadiologist(\n visitsReducer\n) {\n\n const data = []\n for(const item of visitsReducer.data) {\n if(item.type === 'visit') {\n console.log(item.id, item.type)\n data.push({\n mainId: item.visitId,\n reportDate: item.visitDate,\n patientName: item.patientData.name,\n dentistName: item.dentistName,\n scans: item.scans,\n report: item.report,\n sameDayProcessing: item.sameDayProcessing,\n isVisit: true,\n metaData: item,\n })\n }\n //order hide orders from visit\n if(item.type === 'report') {\n console.log(item.id, item.type)\n const patientName = item?.patientData?.name || item?.report?.patientName || item?.booking?.patient?.name;\n const dentistName = item.dentistName ? `${item.dentistName}` : `${item.dentist.firstName} ${item.dentist.lastName}`;\n \n data.push({\n mainId: item.id,\n reportDate: item.orderReportDate,\n patientName,\n dentistName,\n scan: {\n scanName: item.scanName,\n scanUrl: item.scanUrl,\n },\n scans: item.scans ? item.scans : [],\n report: {\n fullRadiologyReportName: item.fullRadiologyReportName,\n fullRadiologyReportUrl: item.fullRadiologyReportUrl,\n fullRadiologyReport: item.fullRadiologyReport,\n dentistName,\n },\n sameDayProcessing: false,\n isVisit: false,\n metaData: item,\n })\n }\n }\n\n return data\n}\n\nexport const getVisitsUpdateLoading = createSelector(\n visitsSelector,\n ({ visitsUpdateReducer }) => {\n return visitsUpdateReducer.isUpdating;\n }\n);","import * as components from \"./components\";\nimport * as selectors from \"./selectors\";\nimport * as actions from \"./actions\";\nimport * as constants from \"./constants\";\nexport default {\n components,\n selectors,\n actions,\n constants\n};\n","import React, { Component } from \"react\";\nimport { TabContent, TabPane, Nav, NavItem, NavLink } from \"reactstrap\";\n\nimport classnames from \"classnames\";\nimport PatientInfo from \"../PatientInfo\";\nimport ScanInfo from \"../ScanInfo\";\nimport Comments from \"../Comments\";\nimport ReportUploader from \"../ReportUploader\";\nimport { preparePricingData } from \"../../../../services/pricing.service\";\nimport \"./index.css\";\n\nexport default class VisitDetailsRadiologistPopUp extends Component {\n constructor(props) {\n super(props);\n\n this.toggle = this.toggle.bind(this);\n this.state = {\n activeTab: \"1\",\n };\n }\n\n toggle(tab) {\n if (this.state.activeTab !== tab) {\n this.setState({\n activeTab: tab,\n });\n }\n }\n\n componentWillMount() {\n this.props.getBookingInfo(\n this.props.visitDetails.visitId || this.props.visitDetails.id\n );\n }\n\n render() {\n const {\n bookingInfo,\n visitDetails,\n uploadReport,\n isUserRadiologist,\n isUserRadiographer,\n deleteScan,\n onReportUpload,\n onUpdatedReport,\n requestReport,\n radiologists,\n } = this.props;\n let currentVisitDetails = { ...visitDetails };\n if (this.props.bookingInfo) {\n const bookingDetails = this.props.bookingInfo;\n\n currentVisitDetails = { ...bookingDetails, ...this.props.visitDetails };\n if (!visitDetails) {\n return <>;\n }\n }\n\n return (\n bookingInfo &&\n currentVisitDetails && (\n \n this.props.onClose()}\n />\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n \n )\n );\n }\n}\n","import { createSelector } from \"reselect\";\nimport { orderBy } from \"lodash\";\nconst visitsSelector = ({ visitDetails }) => visitDetails;\n\nexport const getPastVisits = createSelector(\n visitsSelector,\n ({ visitsPastReducer }) =>\n orderBy(visitsPastReducer.data, [\"visitDate\"], [\"desc\"])\n);\n","import axios from \"../../axios-client\";\nimport { toastr } from \"react-redux-toastr\";\nimport { FetchPastVisitsRoutine } from \"./action-types\";\n\nexport const retrievePreviousVisits = (patientId) => async (dispatch) => {\n dispatch(FetchPastVisitsRoutine.request());\n try {\n const { data } = await axios.get(\n `/visits/history/patient/${patientId}`,\n patientId\n );\n dispatch(FetchPastVisitsRoutine.success(data));\n } catch (e) {\n toastr.error(\"Error\", e);\n dispatch(FetchPastVisitsRoutine.failure(e));\n }\n};\n\nexport const addComment = (bookingId, comment) => async () => {\n try {\n const { data } = await axios.post(\n `/bookings/comment?bookingId=${bookingId}&comment=${comment}`\n );\n toastr.success(\"Success\", \"Comment successfully added.\");\n return data;\n } catch (e) {\n toastr.error(\"Error\", e);\n }\n};\n","import * as components from \"./components\";\nimport * as selectors from \"./selectors\";\nimport * as actions from \"./actions\";\nimport * as constants from \"./constants\";\nexport default {\n components,\n selectors,\n actions,\n constants\n};\n","export const loadLocalStoreData = (\n name,\n defaultValue = {},\n Serialization = true\n) => {\n try {\n const serializedData = localStorage.getItem(name);\n\n if (serializedData === null) {\n return defaultValue;\n }\n return Serialization ? JSON.parse(serializedData) : serializedData;\n } catch (error) {\n return defaultValue;\n }\n};\n\nexport const saveLocalStoreData = (key, data, Serialization = true) => {\n try {\n const serializedData = Serialization ? JSON.stringify(data) : data;\n\n localStorage.setItem(key, serializedData);\n } catch (error) {\n console.log(error, \"Privacy browser issue\");\n }\n};\n\n","// Profile actions\nexport const SET_USER_PROFILE = \"profile/SET_USER_PROFILE\";\nexport const GET_USER_PROFILE = \"profile/GET_USER_PROFILE\";\nexport const UPDATE_USER_PROFILE = \"profile/SET_USER_PROFILE\";\nexport const TOGGLE_EDIT_MODE = \"profile/TOGGLE_EDIT_MODE\";\n\n//Credit card\nexport const SET_CREDIT_CARD = \"profile/SET_CREDIT_CARD\";\n","export const NAVIGATION_CONSTANTS = Object.freeze({\n REGISTER: \"/register\",\n LOGIN: \"/login\",\n FORGOT_PASSWORD: \"/forgot-password\",\n FORGOT_USERNAME: \"/forgot-username\",\n VISITS: \"/visits\",\n PRICE_LIST: \"/pricelist\",\n RESET_PASSWORD: \"/pass-reset\",\n DASHBOARD: \"/dashboard\",\n PROFILE: \"/profile\",\n CHANGE_PASSWORD: \"/change-password\",\n CREDIT_CARD_DETAILS: \"/credit-card-details\",\n JOINED_ACCOUNTS: \"/joined-accounts\",\n AGREEMENT: \"/agreement\",\n AGREEMENT_DENTISTS_LIST: \"/agreement-dentists-list\",\n AGREEMENT_DENTIST_DETAILS: \"/agreement-dentist-details\",\n DATA_PROCESSING: \"/data-processing-agreement\",\n TERMS: \"/terms-and-conditions\",\n WALLET: \"/wallet\",\n PRICING: \"/price-list\",\n REGISTRATION_SURVEY: \"/registration-survey\",\n AUDIT_REPORTS: \"/audit-report\",\n RADIOLOGIST_REPORTS: \"/radiologist-reports\",\n VISITS_MOBILE: \"/visits-mobile\",\n PATIENT_SATISFACTION_REPORTS: '/patient-satisfaction-reports',\n AUDIT_REGISTRATION_REPORT: '/audit-registration-report',\n PATIENT_SATISFACTION_FORM: '/feedback',\n INVOICES: \"/invoices\",\n VOUCHERS: \"/vouchers\",\n COVID19SURVEY: \"/covid-19-survey\",\n RADIOLOGY_REPORT: \"/radiology-report\",\n REFERRAL_GUIDELINES: \"/referral-guidelines\",\n RADIOGRAPHERS: \"/radiographers\",\n RADIOLOGISTS: \"/radiologists\",\n DENTISTS: \"/dentists\",\n SCHEDULES: \"/schedules\",\n RECEIPT: '/receipt',\n});\n","import axios from \"../axios-client\";\nimport { LOCAL_STORAGE_CONSTANTS } from \"../constants/localStorage.constants\";\nimport { toastr } from \"react-redux-toastr\";\nimport { NAVIGATION_CONSTANTS } from \"../constants/navigation.constants\";\nimport {\n auditReportStorageUri,\n backendDateFormat,\n dateFormatReports,\n} from \"../constants/global.constants\";\nimport { API_CONSTANTS } from \"../modules/radiologists/constants\";\nimport Moment from \"moment\";\n\nexport const checkVoucherCode = (code) => {\n return axios\n .get(\"/voucher/check-voucher\", { params: { code } })\n .then((res) => res.data);\n};\n\nexport const applyVoucher = (bookingId, voucherCode) => {\n return axios\n .post(\"/bookings/apply-voucher\", {}, { params: { bookingId, voucherCode } })\n .then((res) => res.data);\n};\n\nexport const impersonateDentist = async (id, history) => {\n try {\n const result = await axios.get(`/receptionist/impersonate/${id}`);\n localStorage.setItem(\n LOCAL_STORAGE_CONSTANTS.AUTH_TOKEN,\n result.headers[\"authorization\"]\n );\n history.push(NAVIGATION_CONSTANTS.DASHBOARD);\n window.location.reload(true);\n } catch (error) {\n toastr.error(\"Error\", \"Please enter valid data\");\n }\n};\n\nexport const handleReportDownload = (e, query) => {\n e.preventDefault();\n axios\n .get(\n auditReportStorageUri +\n `?startDate=${query.startDate.format(\n backendDateFormat\n )}&endDate=${query.endDate.format(backendDateFormat)}`,\n {\n responseType: \"blob\",\n }\n )\n .then((response) => downloadDocumentHelper(response, query, \"audit-report\"))\n .catch((e) => toastr.error(\"Error\", e));\n};\n\nexport const handleRadiologistReportDownload = (e, query) => {\n e.preventDefault();\n axios\n .post(API_CONSTANTS.DOWNLOAD_RADIOLOGIST_REPORT, query, {\n responseType: \"blob\",\n })\n .then((response) =>\n downloadDocumentHelper(response, query, \"radiologist-report\")\n )\n .catch((e) => toastr.error(\"Error\", e));\n};\n\nexport const handlePatientSatisfactionReportDownload = (e, query) => {\n e.preventDefault();\n axios\n .get(\n `${\n API_CONSTANTS.DOWNLOAD_PATIENTS_SATISFACTION_REPORT\n }?startDate=${query.startDate.format(\n backendDateFormat\n )}&endDate=${query.endDate.format(backendDateFormat)}`,\n {\n responseType: \"blob\",\n }\n )\n .then((response) =>\n downloadDocumentHelper(response, query, \"patients-satisfaction-report\")\n )\n .catch((e) => toastr.error(\"Error\", e));\n};\n\nexport const handleAuditRegistrationReportDownload = (e, query) => {\n e.preventDefault();\n axios\n .get(\n `${\n API_CONSTANTS.DOWNLOAD_AUDIT_REGISTRATION_REPORT\n }?startDate=${query.startDate.format(\n backendDateFormat\n )}&endDate=${query.endDate.format(backendDateFormat)}`,\n {\n responseType: \"blob\",\n }\n )\n .then((response) =>\n downloadDocumentHelper(response, query, \"registration-audit-report\")\n )\n .catch((e) => toastr.error(\"Error\", e));\n};\n\nconst downloadDocumentHelper = (response, query, name) => {\n const url = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement(\"a\");\n link.href = url;\n link.setAttribute(\n \"download\",\n `${Moment(query.startDate).format(dateFormatReports)}-${Moment(\n query.endDate\n ).format(dateFormatReports)}-${name}.xlsx`\n ); //or any other extension\n document.body.appendChild(link);\n link.click();\n};\n\nexport const uploadReceiptPdf = (file,bookingId, total) => {\n const formData = new FormData();\n formData.append(\"pdf\", file);\n return axios.post(`${API_CONSTANTS.UPLOAD_RECEIPT}/${bookingId}/${total}`, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n .then(() => toastr.success(\"Success\", \"Email was Sent\"))\n .catch((e) => toastr.error(\"Error\", e));\n};","import axios from \"../../axios-client\";\nimport { toastr } from \"react-redux-toastr\";\nimport AwesomeDebouncePromise from \"awesome-debounce-promise\";\nimport {\n\tGET_ALL_BOOKINGS_FOR_CURRENT_WEEK,\n\tCREATE_BOOKING,\n\tGET_BOOKING_INFO,\n\tGET_BOOKINGS_BY_DATE_RANGE,\n\tGET_ALL_BOOKINGS_WITHOUT_DATE,\n\tSET_SCAN_PRICES,\n\tSET_SCAN_PRICES_STATIC,\n\tSET_OCCUPIED_SLOTS,\n\tSET_OCCUPIED_SLOTS_DATE_RANGE,\n\tSET_TEMPORALLY_OCCUPIED_SLOTS,\n\tUPDATE_TEMPORALLY_OCCUPIED_SLOTS,\n\tUPDATE_SCAN_PRICES_STATIC,\n\tSET_SCAN_PRICES_STATIC_SAVING,\n\tSET_LAST_SELECTED_PAYMENT_TYPE,\n\tSET_BLOCKED_SLOTS_DATE_RANGE,\n UPDATE_BOOKING_INFORMATION\n} from \"./action-types\";\nimport { UpdateDataRoutine } from \"../visits/action-types\";\n\nexport const getAllBookingsForCurrentWeek = () => (dispatch) => {\n\taxios.get(\"/bookings\").then((result) => {\n\t\treturn dispatch({\n\t\t\ttype: GET_ALL_BOOKINGS_FOR_CURRENT_WEEK,\n\t\t\tpayload: result.data,\n\t\t});\n\t});\n};\n\nexport const createBooking = (bookingDetails) => (dispatch) => {\n\treturn axios\n\t\t.post(\"/bookings\", {\n\t\t\t...bookingDetails,\n\t\t})\n\t\t.then((result) => {\n\t\t\tif (\n\t\t\t\t!bookingDetails.appointmentEndTime &&\n\t\t\t\t!bookingDetails.appointmentStartTime\n\t\t\t) {\n\t\t\t\tdispatch(getAllBookingsWithoutDate());\n\t\t\t} else {\n\t\t\t\tdispatch({\n\t\t\t\t\ttype: CREATE_BOOKING,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\t...bookingDetails,\n\t\t\t\t\t\tid: result.data,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttoastr.success(\"Success\", \"Booking was created\");\n\t\t})\n\t\t.catch((e) => toastr.error(\"Error\", e));\n};\n\nexport const updateBooking = ({\n\tid,\n\tappointmentStartTime,\n\tappointmentEndTime,\n}) => async (dispatch) => {\n\treturn await axios\n\t\t.patch(\n\t\t\t`/bookings/booking/${id}?appointmentStartTime=${appointmentStartTime}&appointmentEndTime=${appointmentEndTime}`\n\t\t)\n\t\t.then((result) => {\n dispatch({\n type: UPDATE_BOOKING_INFORMATION,\n payload: { id, appointmentStartTime, appointmentEndTime },\n });\n dispatch(getBookingInfo(id));\n\t\t\ttoastr.success(\"Success\", \"Booking was updated\");\n\t\t})\n\t\t.catch((e) => {\n\t\t\ttoastr.error(\"Error\", e);\n\t\t\tdispatch(getAllBookingsForCurrentWeek()); // temp fix find a better way to handle it\n\t\t});\n};\n\nexport const getBookingInfo = (id) => async (dispatch) => {\n\tconst { data } = await axios.get(`/bookings/booking/${id}`, id);\n\tdispatch({\n\t\ttype: GET_BOOKING_INFO,\n\t\tpayload: data,\n\t});\n};\n\nexport const getScanPricesForBooking = (id) => (dispatch) => {\n\tif (typeof id === typeof undefined) {\n\t\tid = -1;\n\t}\n\n\taxios.get(`/scan-prices/booking/dentist/${id}`).then((result) => {\n\t\treturn dispatch({\n\t\t\ttype: SET_SCAN_PRICES,\n\t\t\tpayload: result.data,\n\t\t});\n\t});\n};\n\nexport const getScanPricesForPriceList = (id) => (dispatch) => {\n\tif (typeof id === typeof undefined) {\n\t\tid = -1;\n\t}\n\n\taxios.get(`/scan-prices/pricelist/dentist/${id}`).then((result) => {\n\t\treturn dispatch({\n\t\t\ttype: SET_SCAN_PRICES_STATIC,\n\t\t\tpayload: result.data,\n\t\t});\n\t});\n};\n\nexport const updateScanPriceStatic = (id, type, newValue) => {\n\treturn { type: UPDATE_SCAN_PRICES_STATIC, payload: { id, type, newValue } };\n};\n\nexport const saveScanPriceStatic = (dentistId, data) => (dispatch) => {\n\tdispatch(setScanPriceStaticSaving(true));\n\n\tconst {\n\t\tteeth: { ur = [], ul = [], ll = [], lr = [] },\n\t\tselectedCBCTFormatOptions = [],\n\t\tselected2DImagingOptions = [],\n\t\tselectedExtraOptions = [],\n\t\tselectedXRayJustificationOptions = [],\n\t\tselectedSkullOptions = [],\n\t} = data;\n\n\tlet parsedData = [\n\t\t...ur,\n\t\t...ul,\n\t\t...ll,\n\t\t...lr,\n\t\t...selectedCBCTFormatOptions,\n\t\t...selected2DImagingOptions,\n\t\t...selectedExtraOptions,\n\t\t...selectedXRayJustificationOptions,\n\t\t...selectedSkullOptions,\n\t];\n\n\tif (typeof dentistId === typeof undefined) dentistId = -1;\n\n\taxios\n\t\t.put(`/scan-prices/save/dentist/${dentistId}`, parsedData)\n\t\t.then((result) => {\n\t\t\ttoastr.success(\"Success\", \"Prices Saved\");\n\t\t\tdispatch(setScanPriceStaticSaving(false));\n\t\t})\n\t\t.catch((e) => {\n\t\t\ttoastr.error(\"Error\", e);\n\t\t\tdispatch(setScanPriceStaticSaving(false));\n\t\t});\n};\n\nexport const setScanPriceStaticSaving = (loading) => {\n\treturn { type: SET_SCAN_PRICES_STATIC_SAVING, payload: loading };\n};\n//END\n\nexport const getAllBookingsWithoutDate = () => (dispatch) => {\n\taxios.get(`/bookings/without-date`).then((result) => {\n\t\treturn dispatch({\n\t\t\ttype: GET_ALL_BOOKINGS_WITHOUT_DATE,\n\t\t\tpayload: result.data,\n\t\t});\n\t});\n};\n\nexport const deleteBooking = async (id) => async (dispatch) => {\n\tawait axios\n\t\t.delete(`/bookings/booking/${id}`)\n\t\t.then(() => {\n\t\t\ttoastr.success(\"Success\", \"Booking was canceled\");\n\t\t})\n\t\t.then(() => {\n\t\t\tconst el = document.querySelector(\".ap-event__close\");\n\t\t\tel && el.click();\n\t\t})\n\t\t.catch((e) => toastr.error(\"Error\", e));\n};\n\n\n\n\nexport const updateVisit = async (bookingId) => async (dispatch) => {\n dispatch(UpdateDataRoutine.request());\n\treturn axios\n\t\t.put(`/visits/${bookingId}/visited`, bookingId)\n\t\t.then((result) => {\n\t\t\tif (result.data == \"PAYMENT_FAILED\") {\n\t\t\t\ttoastr.error(\"Error\", \"Payment failed\");\n\t\t\t\treturn;\n\t\t\t}\n\n dispatch(UpdateDataRoutine.success());\n\t\t\ttoastr.success(\"Success\", \"Booking was marked as visited\");\n\t\t})\n\t\t.catch((e) => {\n console.log(e);\n if(Number(e) === 409) {\n // already paid do nothing\n return;\n }\n dispatch(UpdateDataRoutine.failure(e));\n toastr.error(\"Error\", e)\n });\n};\n\nexport const updateVisitUnvisited = async (bookingId) => async (dispatch) => {\n dispatch(UpdateDataRoutine.request());\n return axios\n .put(`/visits/${bookingId}/unvisited`, bookingId)\n .then((result) => {\n dispatch(UpdateDataRoutine.success());\n toastr.success(\"Success\", \"Booking was marked as unvisited\");\n })\n .catch((e) => {\n console.log(e);\n dispatch(UpdateDataRoutine.failure(e));\n toastr.error(\"Error\", e)\n });\n};\n\n\nexport const assignVisitTime = async (info) => async (dispatch) => {\n\tawait axios\n\t\t.patch(`/bookings/booking/${info.id}`, null, {\n\t\t\tparams: {\n\t\t\t\tappointmentStartTime: info.appointmentStartTime,\n\t\t\t\tappointmentEndTime: info.appointmentEndTime,\n\t\t\t},\n\t\t})\n\t\t.then(() => {\n\t\t\ttoastr.success(\"Success\", \"Booking time was assigned\");\n\t\t})\n\t\t.catch((e) => toastr.error(\"Error\", e));\n};\n\nexport const unAssignVisitTime = async (id) => async (dispatch) => {\n\treturn await axios\n\t\t.patch(`/bookings/unassign-visit-time/${id}`)\n\t\t.then((result) => {\n\t\t\tif (result.status === 200) {\n\t\t\t\ttoastr.success(\"Success\", \"Booking added to draft\");\n\t\t\t}\n\t\t})\n\t\t.catch((e) => {\n\t\t\ttoastr.error(\"Error\", e);\n\t\t\tdispatch(getAllBookingsForCurrentWeek());\n\t\t});\n};\n\nexport const fetchOccupiedSlots = () => (dispatch) => {\n\tconst url = \"/bookings/occupied\";\n\taxios.get(url).then(({ data }) => {\n\t\treturn dispatch({\n\t\t\ttype: SET_OCCUPIED_SLOTS,\n\t\t\tslots: data,\n\t\t});\n\t});\n};\n\nexport const getBookingsByDateRangeAsync = (startDate, endTime) => (\n\tdispatch\n) => {\n\taxios\n\t\t.get(\"/bookings/date-range\", {\n\t\t\tparams: { startDate: startDate, endTime: endTime },\n\t\t})\n\t\t.then((result) => {\n\t\t\treturn dispatch({\n\t\t\t\ttype: GET_BOOKINGS_BY_DATE_RANGE,\n\t\t\t\tpayload: result.data,\n\t\t\t});\n\t\t});\n};\n\nexport const getBookingsByDateRange = AwesomeDebouncePromise(\n\tgetBookingsByDateRangeAsync,\n\t500\n);\n\nexport const fetchOccupiedSlotsByTimeRangeAsync = (start, end) => (\n\tdispatch\n) => {\n\tconst url = `/bookings/occupied/date-range?startDate=${start}&endTime=${end}`;\n\taxios.get(url).then(({ data }) => {\n\t\treturn dispatch({\n\t\t\ttype: SET_OCCUPIED_SLOTS_DATE_RANGE,\n\t\t\tslots: data,\n\t\t});\n\t});\n};\n\nexport const fetchOccupiedSlotsByDateRange = AwesomeDebouncePromise(\n\tfetchOccupiedSlotsByTimeRangeAsync,\n\t500\n);\n\nexport const fetchTemporallyOccupiedSlots = () => (dispatch) => {\n\tconst url = `/bookings/tmpbooking`;\n\taxios.get(url).then(({ data }) => {\n\t\treturn dispatch({\n\t\t\ttype: SET_TEMPORALLY_OCCUPIED_SLOTS,\n\t\t\tslots: data,\n\t\t});\n\t});\n};\n\nexport const updateTemporallyOccupiedSlotsAsync = (dto, userId) => (\n\tdispatch\n) => {\n\tconst url = `/bookings/tmpbooking`;\n\taxios\n\t\t.post(url, dto)\n\t\t.then(() => {\n\t\t\treturn dispatch({\n\t\t\t\ttype: UPDATE_TEMPORALLY_OCCUPIED_SLOTS,\n\t\t\t\tpayload: { dto, userId },\n\t\t\t});\n\t\t})\n\t\t.catch((e) => {\n\t\t\ttoastr.error(\"Error\", e);\n\t\t\tdispatch(fetchOccupiedSlots());\n\t\t\tdispatch(fetchTemporallyOccupiedSlots());\n\t\t});\n};\n\nexport const updateTemporallyOccupiedSlots = AwesomeDebouncePromise(\n\tupdateTemporallyOccupiedSlotsAsync,\n\t2000\n);\n\nexport const getLastSelectedPaymentType = (dentistId) => async (dispatch) => {\n\tconst { data } = await axios.get(\n\t\t`/bookings/retrieve-latest-payment-type?dentistId=${dentistId}`\n\t);\n\tdispatch({\n\t\ttype: SET_LAST_SELECTED_PAYMENT_TYPE,\n\t\tpayload: data,\n\t});\n\treturn data;\n};\n\nexport const checkFirstCBCTIsOrNot = () => async (dispatch) => {\n\tconst { data } = await axios.get(\"/bookings/dentist-has-cbct-booking\");\n\treturn data;\n};\n\nexport const getBlockedDatesList = (fromDate, toDate) => async dispatch => {\n\tconst { data } = await axios.get(`/bookings/getOccupiedDates?startDate=${fromDate}&endTime=${toDate}`);\n\tdispatch({\n\t\ttype: SET_BLOCKED_SLOTS_DATE_RANGE,\n\t\tslots: data,\n\t});\n\treturn data;\n}","import React from \"react\";\nimport Select from \"react-select\";\n\nconst ReactSelectAdapter = ({ input, ...rest }) => {\n return (\n {\n args[0] = args[0] ? args[0] : [];\n input.onChange(...args);\n }}\n />\n );\n};\n\nexport default ReactSelectAdapter;\n","// fetchers for routines\nimport { createThunkRoutine } from \"redux-thunk-routine\";\n\nexport const FetchPastVisitsRoutine = createThunkRoutine(\"visitsPast/FETCH_DATA\");","// fetchers for routines\nimport { createThunkRoutine } from \"redux-thunk-routine\";\n\nexport const FetchDataRoutine = createThunkRoutine(\"radiologists/FETCH_DATA\");\nexport const SET_DENTISTS_LIST = \"radiologists/SET_DENTISTS_LIST\";\n","// fetchers for routines\nimport { createThunkRoutine } from \"redux-thunk-routine\";\n\nexport const FetchDataRoutine = createThunkRoutine(\"vouchers/FETCH_DATA\");\nexport const GenerateDataRoutine = createThunkRoutine(\"vouchers/GENERATE_DATA\");\nexport const SET_FILTERS = \"vouchers/SET_FILTERS\";\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport classNames from \"classnames\";\n\nconst DobMaskAdapter = ({ input, meta, ...rest }) => {\n const mask = [/\\d/, /\\d/, \"/\", /\\d/, /\\d/, \"/\", /\\d/, /\\d/, /\\d/, /\\d/];\n\n return (\n
\n \n
\n input.onChange(event.target.value)}\n />\n
\n
\n );\n};\n\nexport default DobMaskAdapter;\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport classNames from \"classnames\";\n\n\nconst MobileMaskAdapter = ({ input, meta, children, ...rest }) => {\n const mask = [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/\n ];\n return (\n
\n \n Mobile No.\n \n
\n input.onChange(event.target.value)}\n />\n {children}\n
\n
\n );\n};\n\nexport default MobileMaskAdapter;\n","import React, { Component } from \"react\";\nimport {\n\tINITIAL_FORM_STATE,\n\tGENDERS,\n\tTITLES,\n} from \"../../../../constants/patient.constants\";\nimport { Form, Field } from \"react-final-form\";\nimport classNames from \"classnames\";\nimport moment from \"moment\";\nimport axios from \"axios\";\n\nimport {\n\trequired,\n\tcomposeValidators,\n\tisEmail,\n\thasRequiredLength,\n\tisValidDate,\n} from \"../../../profile/helpers\";\nimport DobMaskAdapter from \"../../../../common/masks/DobMaskAdapter\";\nimport MobileMaskAdapter from \"../../../../common/masks/MobileMaskAdapter\";\nimport { dateFormatShort } from \"../../../../constants/global.constants\";\nimport { prepareAddressesInfo } from \"../../constants\";\nimport \"./index.css\";\n\nconst client = axios.create({\n\tbaseURL: process.env.REACT_APP_POSTCODE_API_URL,\n});\n\n// Also edits patient rename after done to CreateEditPatient\nclass CreateEditPatient extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.handlePatientCreation = this.handlePatientCreation.bind(this);\n\t\tthis.state = {\n\t\t\tsearchedAddress: null,\n\t\t\taddresses: [],\n\t\t\t...props.patient,\n\t\t\tdob:\n\t\t\t\tprops.patient && props.patient.dob\n\t\t\t\t\t? moment(props.patient.dob).format(dateFormatShort)\n\t\t\t\t\t: null,\n\t\t};\n\t}\n\n\tasync handlePatientCreation(values) {\n\t\tconst [day, month, year] = values.dob.split(\"/\");\n\t\tconst dateString = `${year}-${month}-${day}`;\n\t\tconst patientObj = {\n\t\t\t...values,\n\t\t\tdob: dateString,\n\t\t};\n try {\n if (this.props.mode === \"edit\") {\n await this.props.editPatient(patientObj);\n } else {\n const newPatientId = await this.props.createPatient(patientObj);\n this.props.onPatientCreated(newPatientId);\n }\n this.props.closeCreatePatient();\n } catch (e) {\n console.error(e);\n }\n\t}\n\n\tsearchAddressByPostCode = (searchedAddress, values) => {\n\t\tclient\n\t\t\t.get(\n\t\t\t\t`v1/autocomplete/addresses?api_key=${process.env.REACT_APP_POSTCODE_API_KEY}&query=${searchedAddress}`\n\t\t\t)\n\t\t\t.then((response) => {\n\t\t\t\tconst addresses = response.data.result.hits;\n\t\t\t\tif (Array.isArray(addresses) && addresses.length >= 0) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...values,\n\t\t\t\t\t\taddresses,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t};\n\n\tgetAddressByUdprn = (url, values) => {\n\t\tclient\n\t\t\t.get(\n\t\t\t\t`${url}?api_key=${process.env.REACT_APP_POSTCODE_API_KEY}`\n\t\t\t)\n\t\t\t.then((response) => {\n\t\t\t\tif (response.data && response.data.result) {\n\t\t\t\t\tconst { fullAddress, postcode, city } = prepareAddressesInfo(response.data.result);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...values,\n\t\t\t\t\t\taddresses: [],\n\t\t\t\t\t\tcity: city,\n\t\t\t\t\t\tpostCode: postcode,\n\t\t\t\t\t\taddress: fullAddress,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t};\n\n\trenderSuggestionList = (values) => {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t{this.state.addresses.length > 0 &&\n\t\t\t\t\tthis.state.addresses.map((address) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t this.getAddressByUdprn(address.urls.udprn, values)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{address.suggestion}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t
\n\t\t);\n\t};\n\n\trender() {\n\t\tconst capitalize = (val) =>\n\t\t\tval.charAt(0).toUpperCase() + val.slice(1).toLowerCase();\n\n\t\treturn (\n\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

{this.props.mode === \"edit\" ? \"Edit Patient\" : \"New patient\"}

\n\t\t\t\t\t (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{GENDERS.map((gender) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\t;\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{TITLES.map((title) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\t;\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t{/*
\n \n \n this.searchAddressByPostCode(e.target.value, values)\n }\n />\n
\n
{this.renderSuggestionList(values)}
\n\n (\n
\n \n \n
\n )}\n />\n\n (\n
\n \n \n
\n )}\n />\n\n (\n
\n \n \n
\n )}\n /> */}\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\thasRequiredLength(val.split(\"_\").join(\"\").trim(), 12, \"_\")\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tSMS reminders will be sent to this number.\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.props.closeCreatePatient();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tDiscard\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{this.props.mode === \"edit\" ? \"Edit\" : \"Create\"}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n}\n\nexport default CreateEditPatient;\n","export const API_CONSTANTS = {\n GET_RADIOLOGISTS: \"/report/radiologists\",\n DOWNLOAD_RADIOLOGIST_REPORT: \"/audit/download/radiologist\",\n DOWNLOAD_PATIENTS_SATISFACTION_REPORT: \"/feedback/download/report/date-range\",\n DOWNLOAD_AUDIT_REGISTRATION_REPORT: '/audit/download/registration',\n UPLOAD_RECEIPT: \"receipts/upload\"\n};","import React, { Fragment, useState } from \"react\";\nimport { Col } from \"reactstrap\";\nimport { DateRangePicker } from \"react-dates\";\nimport Select from \"react-select\";\nimport Moment from \"moment\";\nimport { handleRadiologistReportDownload } from \"../../../../services/api\";\nimport {\n backendDateFormat,\n dateFormatShort\n} from \"../../../../constants/global.constants\";\n\nexport default function DentistFilter({\n radiologistReportFilters,\n updateFilters,\n dentists\n}) {\n const [focused, setFocused] = useState(null);\n const [dates, setDates] = useState({\n startDate: Moment(radiologistReportFilters.startDate),\n endDate: Moment(radiologistReportFilters.endDate)\n });\n\n const handleFocusChange = focused => {\n setFocused(focused);\n };\n\n const onDatesChange = ({ startDate, endDate }) => {\n if (startDate && endDate && endDate.isAfter(startDate)) {\n updateFilters({\n startDate: Moment(startDate)\n .startOf(\"day\")\n .format(backendDateFormat),\n endDate: Moment(endDate)\n .endOf(\"day\")\n .format(backendDateFormat)\n });\n }\n setDates({ startDate, endDate });\n };\n\n return (\n \n \n \n updateFilters({\n radiologistIds: r ? r.reduce((acc, i) => [...acc, i.id], []) : []\n })\n }\n />\n \n \n dateFormatShort}\n focusedInput={focused}\n small={true}\n hideKeyboardShortcutsPanel\n isOutsideRange={date => date.isAfter(Moment())}\n startDate={dates.startDate}\n endDate={dates.endDate}\n />\n \n \n \n handleRadiologistReportDownload(e, radiologistReportFilters)\n }\n >\n Download\n \n \n \n );\n}\n","import React, { Fragment } from \"react\";\nimport { Col } from \"reactstrap\";\nimport Select from \"react-select\";\n\nexport default function DentistFilterWithName({\n updateFilters,\n dentistId,\n dentists,\n onClick = () => { }\n}) {\n return (\n \n \n dentist.id === dentistId)}\n options={dentists}\n onChange={(r) => {\n updateFilters({\n dentistId: r.id\n })\n }\n }\n />\n \n \n {\n e.preventDefault();\n onClick();\n }}\n >\n Save\n \n \n \n );\n}\n","import { createSelector } from \"reselect\";\n\nconst dentistsSelector = ({ dentists }) => dentists;\n\nexport const getDentists = createSelector(\n dentistsSelector,\n ({ dentistsListReducer }) =>\n dentistsListReducer.data.reduce(\n (acc, cur) => [\n ...acc,\n { value: cur.id, label: `${cur.lastName} ${cur.firstName}`, id: cur.id, role: cur.role }\n ],\n []\n )\n);\n\nexport const getDentistReports = createSelector(\n dentistsSelector,\n ({ dentistsListReducer }) =>\n dentistsListReducer.filters\n);\n\nexport const getAllDentists = createSelector(\n dentistsSelector,\n ({ dentistsListReducer }) => {\n if(dentistsListReducer.filters.searchString) {\n return dentistsListReducer.data.filter(item => {\n if(item.lastName.toLowerCase().includes(dentistsListReducer.filters.searchString) ||\n item.firstName.toLowerCase().includes(dentistsListReducer.filters.searchString) ||\n item.email.toLowerCase().includes(dentistsListReducer.filters.searchString)){\n return item\n } \n });\n } else {\n return dentistsListReducer.data\n }\n }\n);\n","export const API_CONSTANTS = {\n GET_DENTISTS: \"/receptionist/dentists\",\n GET_ALL_DENTISTS: \"/user/retrieve-all-dentists\",\n};","import axios from \"../../axios-client\";\nimport { toastr } from \"react-redux-toastr\";\nimport { FetchDataRoutine, SET_DENTIST_FILTERS, SET_ALL_DENTIST_FILTERS } from \"./action-types\";\nimport { API_CONSTANTS } from \"./constants\";\n\nexport const fetchDentists = () => async dispatch => {\n dispatch(FetchDataRoutine.request());\n try {\n const { data } = await axios.get(`${API_CONSTANTS.GET_DENTISTS}`);\n dispatch(FetchDataRoutine.success(data));\n return data;\n } catch (e) {\n toastr.error(\"Error\", e); // ToDo: move me to service to avoid writing 1st arg all the time\n dispatch(FetchDataRoutine.failure(e));\n }\n};\n\nexport const setDentistFilters = filters => {\n return { type: SET_DENTIST_FILTERS, payload: filters };\n}\n\nexport const fetchAllDentists = () => async dispatch => {\n dispatch(FetchDataRoutine.request());\n try {\n const { data } = await axios.get(API_CONSTANTS.GET_ALL_DENTISTS);\n dispatch(FetchDataRoutine.success(data));\n return data;\n } catch (e) {\n toastr.error(\"Error\", e);\n dispatch(FetchDataRoutine.failure(e));\n }\n};\n\nexport const setAllDentistFilters = (filters) => ({\n type: SET_ALL_DENTIST_FILTERS,\n filters,\n});","import * as components from './components'\nimport * as selectors from './selectors'\nimport * as actions from './actions'\n\nexport default {\n components,\n selectors,\n actions\n}\n","import React from \"react\";\nimport { Alert } from \"reactstrap\";\n\nexport default function NoData({ children = \"There is no data\" }) {\n return (\n \n {children}\n \n );\n}\n","import { useState } from \"react\";\n\nconst useModal = () => {\n const [showModal, toggleModalVisibility] = useState(false);\n const handleModalVisibilityToggle = () => toggleModalVisibility(!showModal);\n\n const onDiscard = () => {\n handleModalVisibilityToggle();\n };\n\n return {\n onDiscard,\n showModal,\n toggleModalVisibility,\n handleModalVisibilityToggle\n };\n};\n\nexport default useModal;\n","import moment from \"moment\";\nimport { isEmpty } from \"lodash\";\n\nexport const required = (value) => {\n if (Array.isArray(value)) {\n return !isEmpty(value) ? undefined : \"Required\";\n }\n return value ? undefined : \"Required\";\n};\nexport const composeValidators = (...validators) => (value) =>\n validators.reduce((error, validator) => error || validator(value), undefined);\n\nexport const isEmail = (email) => {\n const re = /\\S+@\\S+\\.\\S+/;\n return !re.test(email);\n};\n\nexport const isSecondaryEmail = (email) => {\n if (!email) return false;\n\n const re = /\\S+@\\S+\\.\\S+/;\n return !re.test(email);\n};\n\nexport const isValidPassword = (pass) => {\n const re = /^(?=.*\\d)(?=.*[A-Z])[0-9a-zA-Z]{6,}$/;\n return !re.test(pass);\n};\n\nexport const hasRequiredLength = (value, l, separator = \"\") => {\n return value.replace(separator, \"\").length < l;\n};\n\nexport const prepareExpData = (card) => {\n return `${card.expMonth < 10 ? `0${card.expMonth}` : card.expMonth}/${String(\n card.expYear\n ).substr(2)}`;\n};\n\nexport const isValidDate = (dateStr) => {\n const [day, month, year] = dateStr.split(\"/\");\n const dateString = `${year}-${month}-${day}`;\n const date = moment(new Date(dateString));\n\n return !date.isValid();\n};\n\nexport const isValidDateAmPm = (meridiam, value = \"\", date) => {\n if (value && value.replace(/:_/, \"\").length < 4) return true;\n //check if 15mins internal\n const [, min] = value.split(\":\");\n const minsNumber = Number(min);\n const allowedTimeSpans = [0, 15, 30, 45];\n \n if (value && !allowedTimeSpans.some((i) => i === minsNumber)) {\n return true;\n }\n if (!date || date.isoWeekday() === 7) return false;\n let afterTimeAmValue, afterTimePmValue, beforeTimeAmValue, beforeTimePmValue;\n\n if (date.isoWeekday() === 6) {\n afterTimeAmValue = \"09:00\";\n afterTimePmValue = \"00:00\";\n beforeTimeAmValue = \"11:59\";\n beforeTimePmValue = \"03:45\";\n } else {\n afterTimeAmValue = \"10:00\";\n afterTimePmValue = \"00:00\";\n beforeTimeAmValue = \"11:59\";\n beforeTimePmValue = \"04:50\";\n }\n\n if (value && meridiam) {\n const parsedM = meridiam.substr(0, 1);\n const format = `hh:mm ${parsedM.toUpperCase()}`;\n const time = moment(value, format);\n const isAm = parsedM === \"a\";\n if (!isAm && value.startsWith(\"12\") && value.replace(/:_/, \"\").length === 5)\n return false;\n const afterTime = isAm\n ? moment(afterTimeAmValue, `hh:mm A`)\n : moment(afterTimePmValue, `hh:mm P`);\n const beforeTime = isAm\n ? moment(beforeTimeAmValue, `hh:mm A`)\n : moment(beforeTimePmValue, `hh:mm P`);\n const isBetweenFlag =\n time.isBetween(afterTime, beforeTime) ||\n time.isSame(beforeTime) ||\n time.isSame(afterTime);\n\n return !isBetweenFlag;\n }\n return false;\n};\n\nexport const formatSpeciality = (spec) => {\n const specMap = {\n OTHER: \"Other\",\n ORAL_SURGERY: \"Oral Surgery\",\n ENDODONTICS: \"Endodontics\",\n IMPLANTOLOGY: \"Implantology\",\n ORTHODONTICS: \"Orthodontics\",\n GENERAL: \"General\",\n PERIODONTICS: \"Periodontics\",\n MAXILLOFACIAL: \"Maxillofacial\",\n ENT: \"ENT\",\n };\n return specMap[spec];\n};\n","import { get } from \"lodash\";\nimport {\n selectedCBCTFormatOptionsV2,\n selectedXRayJustificationOptionsV2,\n selectedExtraOptionsV2,\n selectedTeethOptions,\n selected2DImagingOptionsV2,\n selectedSkullPartsOptionsV2\n} from \"../constants/priceItems.constants\";\n\nexport const preparePrices = ({\n selected2DImagingOptions,\n selectedCBCTFormatOptions,\n selectedExtraOptions,\n selectedSkullOptions\n}) => {\n return {\n cbctFormats: {\n dicomFiles: buildPrices(selectedCBCTFormatOptions, \"cbct_f_dc_\"),\n // icanVision: buildPrices(selectedCBCTFormatOptions, \"cbct_f_cv_\"),\n romexisViewer: buildPrices(selectedCBCTFormatOptions, \"cbct_f_rv_\"),\n simplant: buildPrices(selectedCBCTFormatOptions, \"cbct_f_sp_\"),\n carestreamViewer: buildPrices(selectedCBCTFormatOptions, \"cbct_f_cs_\"),\n },\n twoDImage: {\n opg: buildPrices(selected2DImagingOptions, \"2d_i_po_\"),\n ceph: buildPrices(selected2DImagingOptions, \"2d_i_dpc_\"),\n digitalCeph: buildPrices(selected2DImagingOptions, \"2d_i_dlc_\"),\n cephReport: buildPrices(selected2DImagingOptions, \"2d_i_ctr_\")\n }, \n skull: {\n any: buildSkull(selectedSkullOptions),\n boneSpine: buildBoneSpine(selectedSkullOptions)\n },\n extras: {\n fullRadiologyReport: timeMapper(buildPrices(selectedExtraOptions, \"e_frr_\"), \"72 hours\", \"Full radiology report\"),\n sameDayProcessing: timeMapper(buildPrices(selectedExtraOptions, \"e_epr_\"), '24 hours', \"Express processing for radiology report\"),\n scans: buildPrices(selectedExtraOptions, \"e_pacs\"),\n extraCd: buildCd(selectedExtraOptions)\n }\n };\n};\n\nconst timeMapper = (arr, time, matcher) => arr.map(i => {\n return i.humanReadablePrice === matcher ? ({\n ...i, \n humanReadablePrice: `${i.humanReadablePrice} (${time})`\n }) : i\n})\n\nconst buildCd = (prices = []) => {\n const cdObject = prices.find(price => price.name.startsWith(\"e_cd_copy\"));\n return [cdObject, cdObject, cdObject];\n};\n\nconst buildSkull = (prices = []) => {\n const cdObject = prices.find(price => price.name.startsWith(\"maxillofacial\"));\n return [cdObject, cdObject, cdObject];\n };\n\n const buildBoneSpine = (prices = []) => {\n const cdObject = prices.find(price => price.name === \"bone_spine\");\n return [cdObject, cdObject, cdObject];\n }\n\nconst buildPrices = (prices = [], matcher) => {\n let holder = [];\n for (let price of prices) {\n if (price.name.startsWith(matcher)) {\n holder.push(price);\n }\n if (holder.length === 3) {\n break;\n }\n }\n return holder;\n};\n\nconst optionBuilder = (acc, item, visitDetails) => {\n const foundDto = visitDetails.bookingDetailsDto.bookingItemDtos.find(dto =>\n dto.itemPriceDto.name.startsWith(item)\n );\n\n if (foundDto) {\n acc.push({\n label: foundDto.itemPriceDto.humanReadablePrice,\n value: foundDto.itemPriceDto.name,\n price: foundDto.itemPriceDto.price,\n priceSnapshot: foundDto.priceSnapshot\n });\n }\n\n return acc;\n};\n\nexport const preparePricingData = (details, radiologists, totalAmount) => {\n const selectedCBCTFormat = selectedCBCTFormatOptionsV2.reduce(\n (acc, item) => optionBuilder(acc, item, details),\n []\n );\n const selectedXRayJustification = selectedXRayJustificationOptionsV2.reduce(\n (acc, item) => optionBuilder(acc, item, details),\n []\n );\n const selectedExtra = selectedExtraOptionsV2.reduce(\n (acc, item) => optionBuilder(acc, item, details),\n []\n );\n const selected2DImaging = selected2DImagingOptionsV2.reduce(\n (acc, item) => optionBuilder(acc, item, details),\n []\n );\n\n const selectedTeeth = details.bookingDetailsDto.bookingItemDtos.reduce(\n (acc, el) => {\n const mappedOption = selectedTeethOptions.find(option => {\n return option.htmlFor === el.itemPriceDto.name;\n });\n\n if (mappedOption) acc.push(mappedOption);\n return acc;\n },\n []\n );\n\n const selectedSkullParts = selectedSkullPartsOptionsV2.reduce(\n (acc, item) => optionBuilder(acc, item, details),\n []\n );\n\n const radiologist = get(\n details.bookingDetailsDto,\n \"radiologist.radiologistName\",\n \"\"\n );\n\n\nconst pricesBrakeDown = [\n ...selectedCBCTFormat,\n ...selectedExtra,\n ...selected2DImaging,\n ...selectedSkullParts\n]\n\n const calculatedPrice = totalAmount || Object.values(pricesBrakeDown).reduce((acc, cur) => acc+= cur.price, 0)\n const preparePriceBrakeDown = {\n calculatedPrice,\n pricesBrakeDown\n };\n\n return {\n selectedCBCTFormat,\n selectedXRayJustification,\n selectedExtra,\n selected2DImaging,\n selectedTeeth,\n radiologist,\n preparePriceBrakeDown,\n selectedSkullParts\n };\n};\n","import React, { Fragment, useCallback, useState } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport styled from \"styled-components\";\n\nconst DropZone = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 20px;\n border-width: 2px;\n border-radius: 2px;\n border-color: lightgray;\n border-style: dashed;\n outline: none;\n transition: border 0.24s ease-in-out;\n &:hover {\n background-color: lightblue;\n opacity: 0.5;\n }\n`;\n\nexport default function ScansUpload({ onFileUpload }) {\n\tconst [selectedFiles, setSelectedFiles] = useState([]);\n\tconst [progress, setProgress] = useState(0);\n\n\tconst onDrop = useCallback(\n\t\tacceptedFiles => {\n\t\t\tsetProgress(0);\n\t\t\tconst allFiles = [...selectedFiles, ...acceptedFiles];\n\t\t\tsetSelectedFiles(allFiles);\n\n\t\t\tonFileUpload(acceptedFiles, (event) => {\n\t\t\t\tsetProgress(Math.round((100 * event.loaded) / event.total))\n\t\t\t});\n\t\t},\n\t\t[onFileUpload]\n\t);\n\n\tconst { getRootProps, getInputProps } = useDropzone({ onDrop});\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t

\n\t\t\t\t\tDrag and drop or click here\n\t\t\t\t

\n\t\t\t
\n\n\t\t\t{selectedFiles && selectedFiles.length > 0 && (\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{progress}%\n\t\t\t\t\t\t
\n\t\t\t\t\t\n\n\t\t\t\t\t
\n\t\t\t\t\t\t
List of Files
\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{selectedFiles.map((file, index) => (\n\t\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t\t\t{file.name}\n\t\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\n\t\t
\n\t);\n}\n","export const TITLES = Object.freeze([\n \"MR\",\n \"MRS\",\n \"MISS\",\n \"MS\",\n \"DR\",\n \"PROF\",\n \"LADY\",\n \"LORD\"\n]);\n\nexport const COUNTRIES = Object.freeze([\n \"United Kingdom\"\n // \"Country\",\n // \"USA\",\n // \"France\",\n // \"Spain\"\n]);\n\nexport const SPECIALITIES = Object.freeze([\n \"OTHER\",\n \"ORAL_SURGERY\",\n \"ENDODONTICS\",\n \"IMPLANTOLOGY\",\n \"ORTHODONTICS\",\n \"GENERAL\",\n \"PERIODONTICS\",\n \"MAXILLOFACIAL\", \n \"ENT\"\n]);\n\nexport const INITIAL_EDIT_FORM_STATE = Object.freeze({\n address: \"\",\n city: \"London\",\n email: \"\",\n firstName: \"\",\n lastName: \"\",\n nameOfPractice: \"\",\n password: \"\",\n postCode: \"\",\n speciality: \"\",\n telephoneNumber: \"\",\n title: \"\",\n visitsEnabled: false,\n secondaryEmail: \"\",\n isEnabledEmailNotification: true,\n});\n\nexport const INITIAL_REGISTER_FORM_STATE = Object.freeze({\n address: \"\",\n city: \"London\",\n email: \"\",\n firstName: \"\",\n lastName: \"\",\n nameOfPractice: \"\",\n password: \"\",\n postCode: \"\",\n speciality: \"\",\n title: \"\",\n visitsEnabled: false,\n});\n\n","import { createSelector } from \"reselect\";\n\nconst radiologistsSelector = ({ radiologists }) => radiologists;\n\nexport const getRadiologists = createSelector(\n radiologistsSelector,\n ({ radiologistsListReducer }) =>\n radiologistsListReducer.data.reduce(\n (acc, cur) => [\n ...acc,\n { value: cur.id, label: `${cur.lastName} ${cur.firstName}`, id: cur.id }\n ],\n []\n )\n);\n","import axios from \"../../axios-client\";\nimport { toastr } from \"react-redux-toastr\";\nimport { FetchDataRoutine } from \"./action-types\";\nimport { API_CONSTANTS } from \"./constants\";\n\nexport const fetchRadiologists = () => async dispatch => {\n dispatch(FetchDataRoutine.request());\n try {\n const { data } = await axios.get(`${API_CONSTANTS.GET_RADIOLOGISTS}`);\n dispatch(FetchDataRoutine.success(data));\n } catch (e) {\n toastr.error(\"Error\", e); \n dispatch(FetchDataRoutine.failure(e));\n }\n};\n","import * as components from './components'\nimport * as selectors from './selectors'\nimport * as actions from './actions'\n\nexport default {\n components,\n selectors,\n actions\n}\n","import React from 'react'\n\nexport default function TeethSVG({toothSelectionHandler}) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import React, { useEffect, useState, useCallback } from \"react\";\nimport \"./styles.scss\";\n\nexport default function SkullSVG({\n handlePartSelectHandler,\n isDetails,\n options\n}) {\n\n const style = !isDetails\n ? {\n position: \"absolute\",\n right: \"-250px\",\n top: \"-100px\",\n width: \"250px\",\n zIndex: \"15\"\n }\n : {};\n\n const [, updateState] = useState();\n const forceUpdate = useCallback(() => updateState({}), []);\n\n const skullStyle = !isDetails\n ? {\n position: \"relative\",\n top: '300px',\n left: '265px'\n }\n : {\n position: \"relative\",\n left: '35px'\n };\n\n const skullHeight = !isDetails ? '162px' : '102px';\n\n useEffect(() => {\n if (isDetails) {\n for (let id of options) {\n const el = document.getElementById(id);\n if (el) {\n el.classList.add(\"active\");\n }\n }\n forceUpdate();\n }\n\n return () => {\n if (isDetails) {\n for (let id of options) {\n const el = document.getElementById(id);\n if (el) {\n el.classList.remove(\"active\");\n }\n }\n }\n };\n }, [forceUpdate, isDetails, options]);\n\n return (\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n skull\n \n \n \n \n \n\n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n\n \n\n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n}\n","import * as t from \"./action-types\";\nimport axios from \"../../axios-client\";\nimport { toastr } from \"react-redux-toastr\";\nimport { NAVIGATION_CONSTANTS } from \"../../constants/navigation.constants\";\n\nexport const setUserProfile = (profile) => ({\n type: t.SET_USER_PROFILE,\n profile,\n});\n\nexport const getUserProfile = () => (dispatch) =>\n axios\n .get(\"/my-profile\")\n .then((result) => dispatch(setUserProfile(result.data)))\n .catch((e) => toastr.error(\"Error\", e));\n\nexport const toggleEditMode = () => ({\n type: t.TOGGLE_EDIT_MODE,\n});\n\nexport const setCreditCardDetails = (card) => ({\n type: t.SET_CREDIT_CARD,\n card,\n});\n\nexport const updateUserInfo = (userInfo) => (dispatch) => {\n if (!userInfo.enabledEmailNotification && !userInfo.customEmails.length) {\n toastr.error('Either activate email notification to registration email or enter an alternative email address')\n return;\n }\n return axios\n .post(\"/user\", userInfo)\n .then((_) => {\n dispatch(setUserProfile(userInfo));\n dispatch(toggleEditMode());\n dispatch(getUserProfile());\n toastr.success(\"Success\", \"User info was updated\");\n })\n .catch((e) => toastr.error(\"Error\", e));\n};\n\nexport const updatePassword = ({ newPassword, oldPassword }) => (dispatch) =>\n axios\n .post(\"/user/update-password\", { newPassword, oldPassword })\n .then((_) => toastr.success(\"Success\", \"Password was updated\"))\n .catch((e) => toastr.error(\"Error\", e));\n\nexport const resetPassword = ({ email, history }) => (_) =>\n axios\n .post(`/user/reset-password`, { email })\n .then((_) => {\n history.push(NAVIGATION_CONSTANTS.LOGIN);\n toastr.success(\n \"Success\",\n `Further instructions have been sent to ${email}`\n );\n })\n .catch((e) => toastr.error(\"Error\", e));\n\nexport const changeResetPassword = ({ newPassword, token, history }) => (_) =>\n axios\n .post(`/user/update-reset-password`, {\n newPassword,\n token,\n })\n .then((_) => {\n history.push(NAVIGATION_CONSTANTS.LOGIN);\n toastr.success(\"Success\", `Password was changed. You can login now`);\n })\n .catch((e) => toastr.error(\"Error\", e));\n\nexport const activateUser = ({ confirmationToken, history }) => (_) =>\n axios\n .get(`/user/confirm?confirmationToken=${confirmationToken}`)\n .then((_) => {\n history.push(NAVIGATION_CONSTANTS.LOGIN);\n toastr.success(\"Success\", \"User was activated\");\n })\n .catch((e) => toastr.error(\"Error\", e));\n\nexport const getCreditCardDetails = () => (dispatch) =>\n axios\n .get(\"/payments/card\")\n .then((result) => dispatch(setCreditCardDetails(result.data)))\n .catch((e) => toastr.error(\"Error\", e));\n\nexport const updatePaymentInformation = ({ cardHolderFullName, cardPopulatedData, paymentMethod, customerId }) => (dispatch) => {\n return axios\n .post(\"/payments/token\", {\n cardholderFullName: cardHolderFullName,\n expYear: cardPopulatedData.exp_year,\n last4: cardPopulatedData.last4,\n expMonth: cardPopulatedData.exp_month,\n brand: cardPopulatedData.brand,\n paymentMethod: paymentMethod,\n customerId: customerId\n })\n .then((_) =>\n dispatch(getCreditCardDetails())\n .then((_) => {\n toastr.success(\"Success\", \"Credit card info saved\");\n dispatch(getUserProfile());\n })\n .catch((e) => toastr.error(\"Error\", e))\n )\n .catch((e) => toastr.error(\"Error\", e));\n};\n","export const GENDERS = Object.freeze([\n \"MALE\",\n \"FEMALE\",\n \"OTHER\"\n]);\n\nexport const TITLES = Object.freeze([\n \"MR\",\n \"MRS\",\n \"MISS\",\n \"MS\",\n \"DR\",\n \"PROF\",\n \"LADY\",\n \"LORD\"\n]);\n\nexport const INITIAL_FORM_STATE = Object.freeze({\n address: \"\",\n city: \"\",\n email: \"\",\n surname: \"\",\n forename: \"\",\n mobile: \"\",\n postcode: \"\",\n dob: \"\",\n telephoneNumber: \"\",\n title: \"\"\n});\n","export const API_CONSTANTS = Object.freeze({\n GET_RADIOLOGY_REPORTS: \"/order-report/retrieve-order-reports\",\n ORDER_REPORT: \"/order-report/create-order-report\",\n ORDER_REPORT_ESLEWHERE: \"/order-report/create-else-where-order-report\",\n});\n","export const GET_ALL_PATIENTS = '[Patients] GET_ALL_PATIENTS';\nexport const CREATE_PATIENT = '[Patients] CREATE_PATIENT';\n","// fetchers for routines\nimport { createThunkRoutine } from \"redux-thunk-routine\";\n\nexport const FetchDataRoutine = createThunkRoutine(\"linkedAccounts/FETCH_DATA\");\nexport const LINK_ACCOUNT = \"linkedAccounts/SET_DENTISTS_LIST\";\nexport const UNLINK_ACCOUNT = \"linkedAccounts/UNLINK_ACCOUNT\";\n","// fetchers for routines\nimport { createThunkRoutine } from \"redux-thunk-routine\";\n\nexport const FetchDataRoutine = createThunkRoutine(\"invoices/FETCH_DATA\");\nexport const SET_FILTERS = \"invoices/SET_FILTERS\";\nexport const SET_INVOICES_YEARS = \"invoices/SET_INVOICES_YEARS\";\n","import { isUserReceptionist } from \"./permission.service\";\n\nexport const populateLegalInfo = userProfile => {\n const placeholder = \"______________________\";\n return isUserReceptionist(userProfile.role)\n ? {\n address: placeholder,\n lastName: placeholder\n }\n : userProfile;\n};\n\nexport const printForm = (id = \"btnprint\") => {\n const buttonControl = document.getElementById(id);\n buttonControl.style.visibility = \"hidden\";\n window.print();\n buttonControl.style.visibility = \"visible\";\n};\n\nexport const style = {\n paddingTop: \"50px\",\n margin: \"0 auto\"\n};\n\nexport const styleForTitle = {\n paddingTop: \"50px\",\n margin: \"0 auto\",\n textAlign: \"center\"\n};\n\nexport const styleForDentistsList = {\n paddingTop: \"150px\",\n margin: \"0 auto\",\n display: \"flex\",\n flexDirection: \"column\"\n};\n\nexport const companyInfo = {\n address: \"86 Harley Street, London, W1G 7HP\",\n phone: \"0207 637 8227\",\n name: \"3Beam Limited\",\n defaultRadiologistId: 3,\n email: 'info@3beam.co.uk'\n};\n","// fetchers for routines\nimport { createThunkRoutine } from \"redux-thunk-routine\";\n\nexport const FetchDataRoutine = createThunkRoutine(\"visits/FETCH_DATA\");\nexport const FetchPastVisitsRoutine = createThunkRoutine(\n \"visitsPast/FETCH_DATA\"\n);\nexport const SET_FILTERS = \"visits/SET_FILTERS\";\nexport const UPDATE_REPORT = \"visits/UPDATE_REPORT\";\nexport const UPDATE_SCAN = \"visits/UPDATE_SCAN\";\nexport const UPDATE_SCAN_UPLOAD = \"visits/UPDATE_SCAN_UPLOAD\";\nexport const CLEAR_RECEIPT ='visits/CLEAR_RECEIPT';\n\nexport const UpdateDataRoutine = createThunkRoutine(\"visits/UPDATE_DATA\");\n\n// Audit reports\nexport const FetchReceiptRoutine = createThunkRoutine(\n \"reports/FETCH_RECEIPT_DATA\"\n);","import { createSelector } from \"reselect\";\n\nconst patientsSelector = ({ patients }) => patients;\n\nexport const getPatientsArray = createSelector(\n patientsSelector,\n ({ patientsReducer }) => {\n return patientsReducer.patientsArray;\n }\n);","import axios from \"../../axios-client\";\nimport { toastr } from \"react-redux-toastr\";\nimport { GET_ALL_PATIENTS, CREATE_PATIENT } from \"./action-types\";\nimport { fetchVisits } from \"../../modules/visits/actions\";\nimport {\n getBookingInfo,\n getAllBookingsWithoutDate,\n getAllBookingsForCurrentWeek\n} from \"../../modules/dashboard/actions\";\n\nexport const getAllPatients = () => dispatch => {\n axios.get(\"/patients\").then(result => {\n return dispatch({\n type: GET_ALL_PATIENTS,\n payload: result.data\n });\n });\n};\n\nexport const createPatient = patient => dispatch => {\n return axios\n .post(\"/patients\", patient)\n .then(result => {\n const newPatient = {\n ...patient,\n id: result.data\n };\n\n dispatch({\n type: CREATE_PATIENT,\n payload: newPatient\n });\n\n toastr.success(\"Success\", \"Patient was created\");\n\n return newPatient.id;\n })\n .catch(e => {\n toastr.error(\"Error\", e);\n throw e;\n });\n};\n\nexport const editPatient = (patient, isVisitPage, visitId) => dispatch => {\n axios\n .put(`/patients/${patient.id}`, patient)\n .then(result => {\n toastr.success(\"Success\", \"Patient was edited\");\n if (isVisitPage) {\n dispatch(fetchVisits());\n } else {\n dispatch(getAllBookingsWithoutDate());\n dispatch(getAllBookingsForCurrentWeek());\n }\n dispatch(getBookingInfo(visitId));\n })\n .catch(e => toastr.error(\"Error\", e));\n};\n","import * as components from \"./components\";\nimport * as selectors from \"./selectors\";\nimport * as actions from \"./actions\";\nexport default {\n components,\n selectors,\n actions\n};\n","import React from \"react\";\n\nexport default function VisitedLabel({ isVisited }) {\n return isVisited ? (\n \n \n Visited\n \n ) : (\n \n Not Visited\n \n );\n}\n","// script used from http://detectmobilebrowsers.com/ it should handle 99 of cases\n\n/* eslint-disable */\nexport const isMobile = agent => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n agent\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n agent.substr(0, 4)\n )\n ) {\n return true;\n }\n return false;\n};\n","import axios from \"../axios-client\";\nimport { LOGIN_ACTION, LOGOUT_ACTION } from \"./authActionTypes\";\nimport { toastr } from \"react-redux-toastr\";\nimport { setUserProfile } from \"../modules/profile/actions\";\nimport { LOCAL_STORAGE_CONSTANTS } from \"../constants/localStorage.constants\";\nimport { resolveAfterLoginRedirect } from \"../services/navigation.service\";\nimport { get } from \"lodash\";\n\nexport const loginAction = (email, password, history) => dispatch => {\n axios\n .post(\"/user/login\", {\n email,\n password\n })\n .then(result => {\n const token = get(\n result.headers,\n \"authorization\",\n result.data.authHeader\n );\n \n localStorage.setItem(LOCAL_STORAGE_CONSTANTS.AUTH_TOKEN, token);\n localStorage.setItem(LOCAL_STORAGE_CONSTANTS.ORIGINAL_AUTH_TOKEN, token);\n dispatch(setUserProfile(result.data));\n return result;\n })\n .then(result => {\n dispatch({\n type: LOGIN_ACTION,\n payload: result.headers[\"authorization\"]\n });\n resolveAfterLoginRedirect(history, result.data.role);\n })\n .catch(e => toastr.error(\"Error\", e));\n};\n\nexport const registerAction = ({ user, history }) => dispatch => {\n const { email, password } = user;\n axios\n .post(\"/user/sign-up\", {\n ...user\n })\n .then(_ => {\n toastr.success(\n \"Success\",\n \"Your account is now ready to use!\"\n );\n dispatch(loginAction(email, password, history));\n })\n .catch(e => {\n toastr.error(\"Error\", e);\n });\n};\n\nexport const logoutAction = () => dispatch => {\n localStorage.removeItem(LOCAL_STORAGE_CONSTANTS.AUTH_TOKEN);\n localStorage.removeItem(LOCAL_STORAGE_CONSTANTS.ORIGINAL_AUTH_TOKEN);\n localStorage.removeItem(LOCAL_STORAGE_CONSTANTS.ACTING_AS);\n return dispatch({\n type: LOGOUT_ACTION\n });\n};\n","export const LOGIN_ACTION = 'LOGIN_ACTION';\nexport const LOGOUT_ACTION = 'LOGOUT_ACTION';","import {\n isUserRadiologist,\n isUserDentist\n} from \"../services/permission.service\";\nimport { NAVIGATION_CONSTANTS } from \"../constants/navigation.constants\";\nimport { toastr } from \"react-redux-toastr\";\nimport { isMobile } from \"../utils\";\n\nexport const resolveAfterLoginRedirect = (history, role) => {\n if (\n isMobile(navigator.userAgent || navigator.vendor || window.opera) &&\n isUserDentist(role)\n ) {\n return history.push(NAVIGATION_CONSTANTS.VISITS_MOBILE);\n } else if (\n isMobile(navigator.userAgent || navigator.vendor || window.opera) &&\n !isUserDentist(role)\n ) {\n toastr.light(\n \"Your device is not supported\",\n \"3beam application currently supports mobile view only for dentists, please log in as dentist or use desktop based application\",\n { timeOut: 0, position: \"top-center\", icon: \"warning\" }\n );\n } else if (isUserRadiologist(role)) {\n return history.push(NAVIGATION_CONSTANTS.VISITS);\n } else {\n history.push(NAVIGATION_CONSTANTS.DASHBOARD);\n }\n};\n","//Project dependencies\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport Header from \"../../common/Header\";\nimport PropTypes from 'prop-types';\nimport axios from '../../axios-client'\nimport Modal from '../../common/modals/Modal'\nimport { toastr } from \"react-redux-toastr\";\n// import { loadLocalStoreData } from \"../../services/localStorage.service\";\n// import { LOCAL_STORAGE_CONSTANTS } from \"../../constants/localStorage.constants\";\n\nconst Loading = () => (\n
\n
\n
\n);\n\nconst DefaultLayout = ({\n children,\n history,\n fetchDentists,\n dentists,\n isUserReceptionist,\n isUserDentist,\n isUserRadiologist,\n isUserLeadRadiographer,\n logoutAction,\n contentLoading,\n ...rest\n}) => {\n // const isImpersonating = loadLocalStoreData(\n // LOCAL_STORAGE_CONSTANTS.ACTING_AS,\n // null,\n // false\n // );\n const [showSurveyModal, setShowSurveyModal] = useState(false)\n const completeSurvey = (e, surveyType) => {\n e.preventDefault();\n axios.post('/registration-surveys/create-registration-survey', {\n registrationSurveyItemId: surveyType\n }).then(response => {\n toastr.success('success', response.data)\n setShowSurveyModal(false)\n }).catch(error => {\n toastr.error(error)\n })\n }\n useEffect(() => {\n if (isUserDentist) {\n axios.get('my-profile').then(response => {\n setShowSurveyModal(!response.data.registrationSurveyPassed)\n })\n }\n }, [])\n\n return (\n \n \n {/* {isImpersonating && } */}\n
\n {contentLoading && }\n
\n
\n
{children}
\n
\n
\n
\n {showSurveyModal && }\n
\n );\n};\n\nDefaultLayout.propTypes = {\n contentLoading: PropTypes.bool\n}\n\nDefaultLayout.defaultProps = {\n contentLoading: false\n}\nexport default DefaultLayout;\n","export const USER_ROLES = Object.freeze({\n DENTIST: \"DENTIST\",\n RECEPTIONIST: \"RECEPTIONIST\",\n RADIOGRAPHER: \"RADIOGRAPHER\",\n LEAD_RADIOGRAPHER: \"LEAD_RADIOGRAPHER\",\n RADIOLOGIST: \"RADIOLOGIST\"\n});\n","import { USER_ROLES } from \"../constants/user-roles.constants\";\n\nexport const hasAllowedRole = role => Object.keys(USER_ROLES).includes(role);\nexport const isUserDentist = role => role === USER_ROLES.DENTIST;\nexport const isUserRadiographer = role => role === USER_ROLES.RADIOGRAPHER || role === USER_ROLES.LEAD_RADIOGRAPHER;\nexport const isUserLeadRadiographer = role => role === USER_ROLES.LEAD_RADIOGRAPHER;\nexport const isUserRadiologist = role => role === USER_ROLES.RADIOLOGIST;\nexport const isUserReceptionist = role => role === USER_ROLES.RECEPTIONIST;\n\nexport const rolePermittedNavigationItems = { \n DENTIST: [\"PROFILE_DETAILS\", \"PERSONAL_INFORMATION\", \"CHANGE_PASSWORD\", \"PAYMENT_DETAILS\", \"CREDIT_CARD_INFORMATION\", \"OTHER\", \"LINKED_ACCOUNTS_PRACTICE_VIEW\"],\n RECEPTIONIST: [\"PROFILE_DETAILS\", \"CHANGE_PASSWORD\"],\n RADIOGRAPHER: [\"PROFILE_DETAILS\", \"CHANGE_PASSWORD\"],\n LEAD_RADIOGRAPHER: [\"PROFILE_DETAILS\", \"CHANGE_PASSWORD\", \"OTHER\", \"SCHEDULES\"],\n RADIOLOGIST: [\"PROFILE_DETAILS\", \"CHANGE_PASSWORD\"]\n };","import React, { Fragment, useState, useRef } from \"react\";\nimport \"react-dates/initialize\";\nimport \"react-dates/lib/css/_datepicker.css\";\nimport { Row, Col, Button } from \"reactstrap\";\nimport Moment from \"moment\";\nimport { DateRangePicker } from \"react-dates\";\n\nimport { dateFormatShort } from \"../../../../constants/global.constants\";\nconst heightCss = {\n height: \"35px\",\n};\n\nexport default function RadiologyReportsFilter({ onFilter, fetchRadiologyReports }) {\n const [focused, setFocused] = useState(null);\n const [filters, setFilters] = useState({});\n const [dates, setDates] = useState({startDate: null, endDate: null });\n const inputRef = useRef(null);\n const handleFocusChange = (focused) => {\n setFocused(focused);\n };\n\n const selectionChange = (event, type) => {\n let formattedStartDate = null;\n let formattedEndDate = null;\n const { startDate, endDate } = dates;\n if(startDate && endDate){\n formattedStartDate = Moment(startDate).format('DD/MM/YYYY')\n formattedEndDate = Moment(endDate).format('DD/MM/YYYY')\n }\n setFilters({ [type]: event.target.value })\n onFilter({ [type]: event.target.value, startDate: formattedStartDate, endDate: formattedEndDate });\n fetchRadiologyReports({startDate: formattedStartDate, endDate: formattedEndDate, criteria: event.target.value })\n };\n\n const onDatesChange = ({ startDate, endDate }) => {\n setDates({ startDate, endDate });\n if(startDate && endDate){\n const formattedStartDate = Moment(startDate).format('DD/MM/YYYY')\n const formattedEndDate = Moment(endDate).format('DD/MM/YYYY')\n onFilter({ ...filters, startDate: formattedStartDate, endDate: formattedEndDate });\n fetchRadiologyReports({startDate: formattedStartDate, endDate: formattedEndDate, criteria: filters.searchString})\n }\n };\n\n const clearFilter = (e) => {\n setDates({startDate: null, endDate: null });\n inputRef.current.value = \"\";\n onFilter({});\n fetchRadiologyReports({})\n }\n\n return (\n \n \n \n
\n
\n
\n \n
\n
\n selectionChange(event, \"searchString\")}\n />\n
\n \n \n
\n dateFormatShort}\n focusedInput={focused}\n small={true}\n hideKeyboardShortcutsPanel\n isOutsideRange={(date) => date.isAfter(Moment())}\n startDate={dates.startDate}\n endDate={dates.endDate}\n minimumNights={0}\n />\n
\n \n \n clearFilter()}\n style={{\n display: \"flex\",\n }}\n >\n Clear{\" \"}\n filter\n \n \n
\n
\n );\n}\n","import React, { Fragment } from \"react\";\nimport BootstrapTable from \"react-bootstrap-table-next\";\nimport paginationFactory from \"react-bootstrap-table2-paginator\";\n\nimport {\n\tbuildRadiologyReportsTable,\n rowEvents,\n addSort,\n buildOptions,\n} from \"../../../../services/table.service\";\n\nexport default function RadiologyReportsTable({\n\tradiologyReports,\n\tonRowSelected,\n\tfetchRadiologyReports,\n\treportCount,\n\tfilters\n}) {\n\n\tconst columns = buildRadiologyReportsTable().map(addSort(filters, fetchRadiologyReports));\n\n\tconst options = buildOptions(fetchRadiologyReports, filters, reportCount);\n\n\tconst onTableChange = () => { }\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import React, { Component } from \"react\";\nimport { Row, Col } from \"reactstrap\";\nimport { selectedSkullPartsOptionsV2 } from \"../../../../constants/priceItems.constants\";\n\nimport { preparePricingData } from \"../../../../services/pricing.service\";\nimport SkullSVG from \"../../../dashboard/components/SkullSVG\";\nimport TeethSVG from \"../../../dashboard/components/TeethSVG\";\nimport visitDetails from \"../../../visit-details\";\n\nexport default class BriefScanInfo extends Component {\n constructor(props) {\n super(props);\n this.state = {\n verballyConsented: true\n };\n }\n\n formatScanType() {\n const { visitDetails } = this.props;\n const config = {\n TWO_D: \"2D Imaging\",\n CBCT: \"CBCT\",\n SKULL: \"Maxillofacial/ENT\",\n };\n return config[visitDetails.bookingDetailsDto.scanType];\n }\n\n get isCBCT() {\n const { visitDetails } = this.props;\n return visitDetails.bookingDetailsDto.scanType === \"CBCT\";\n }\n\n get isSkull() {\n const { visitDetails } = this.props;\n return visitDetails.bookingDetailsDto.scanType === \"SKULL\";\n }\n\n renderPainterSkull() {\n const { bookingItemDtos } = this.props.visitDetails.bookingDetailsDto;\n const getSkullPriceItems = bookingItemDtos\n .filter((i) => selectedSkullPartsOptionsV2.includes(i.itemPriceDto.name))\n .map((i) => i.itemPriceDto.name);\n\n return (\n \n );\n }\n\n render() {\n const { visitDetails } = this.props;\n\n const {\n selectedCBCTFormat,\n selectedXRayJustification,\n selectedExtra,\n selected2DImaging,\n selectedTeeth,\n selectedSkullParts,\n } = preparePricingData(visitDetails, null, 90);\n\n return (\n
\n
\n
    \n
  • \n \n Required service\n {this.formatScanType()} Scan\n \n
  • \n
\n
    \n {this.isCBCT && (\n
  • \n \n \n {this.formatScanType()} Area of Interest\n \n\n \n {selectedTeeth.map((option, i) => {\n return (\n \n );\n })}\n \n \n
  • \n )}\n
  • \n \n Clinical Indications/Relevant History/Clinical Question\n \n {visitDetails.bookingDetailsDto.clinicalIndications\n ? visitDetails.bookingDetailsDto.clinicalIndications\n : \" — \"}\n \n \n
  • \n {!!selectedCBCTFormat.length && (\n
  • \n \n {this.formatScanType()} Format\n \n {selectedCBCTFormat.map((value, i) => {\n return {value.label};\n })}\n \n \n
  • \n )}\n {!!selected2DImaging.length && (\n
  • \n \n {this.formatScanType()} Format\n \n {selected2DImaging.map((value, i) => {\n return {value.label};\n })}\n \n \n
  • \n )}\n {!!selectedSkullParts.length && (\n
  • \n \n Maxillofacial/ENT\n \n {selectedSkullParts\n .filter((i) => i.label !== \"Maxillofacial\")\n .map((value, i) => {\n return {value.label};\n })}\n \n \n
  • \n )}\n {!!selectedXRayJustification.length && (\n
  • \n \n Justification For X-ray\n \n {selectedXRayJustification.map((value, i) => {\n return {value.label};\n })}\n \n \n
  • \n )}\n
  • \n \n Include TMJs\n \n \n \n \n \n \n
  • \n
  • \n \n Verbally consented\n \n \n \n \n \n \n
  • \n
  • \n \n Authorised\n \n \n \n \n \n \n
  • \n {!!selectedExtra.length && (\n
  • \n \n Full radiology report\n \n {selectedExtra.map((value, i) => {\n if (value.value.startsWith(\"e_frr_\")) {\n return {value.label};\n } else {\n return {value.label};\n }\n })}\n \n \n
  • \n )}\n
\n
\n
\n
\n {selectedTeeth.map((option, index) => {\n return (\n \n );\n })}\n {this.isCBCT && }\n {this.isSkull && this.renderPainterSkull()}\n \n
\n
\n );\n }\n}\n","import React, { Fragment } from \"react\";\nimport moment from \"moment\";\nimport { presentationDateFormat } from \"../../../../constants/global.constants\";\nimport BriefScanInfo from \"./BriefScanInfo\";\n\nimport \"./styles.css\";\n\nexport default function ReportDetailsPopup({ close, report }) {\n\n const {\n dentist,\n dentistName,\n booking,\n orderReportDate,\n scanTakenDate,\n scanIndication,\n implandtPlanned,\n evaluateExisting,\n sinusEvaluation,\n tmjEvaluation,\n fullRadiologyReportUrl,\n fullRadiologyReportName,\n notes,\n patientMobile,\n patientEmail,\n patientTitle,\n patientName,\n patientSurname,\n patientDOB,\n patientData\n } = report;\n\n let patientFullName = patientTitle ? `${patientTitle}. ${patientName} ${patientSurname}` : `${patientName} ${patientSurname}`;\n const patientDob = booking ? booking.patient.dob : patientDOB;\n\n if (booking) {\n const { title, firstName, lastName } = booking.patient;\n patientFullName = title ? `${title}. ${firstName} ${lastName}` : `${firstName} ${lastName}`;\n }\n return (\n \n
close()} />\n
\n
\n
\n
\n

{patientFullName.replace(/undefined|undefined./g,'')}

\n
\n
\n
\n
\n {moment(patientDob).format(\"DD/MM/YYYY\")}\n
\n
\n
\n

\n {\" \"}\n {booking ? booking.patient.mobile : patientData.mobile}\n {\" \"}\n \n {booking ? booking.patient.email : patientData.email}\n \n

\n {booking && (\n

\n {\" \"}\n \n {booking.patient.city}, {booking.patient.address},{\" \"}\n {booking.patient.postCode}\n \n

\n )}\n\n

\n {\" \"}\n \n {moment(orderReportDate).format(presentationDateFormat)}\n \n

\n

\n {\" \"}\n \n Dr. {dentistName ? dentistName : `${dentist.firstName} ${dentist.lastName}`} \n \n

\n
\n
\n
\n {booking\n ? \"Patient is scanned at 3 Beam\"\n : \"Patient is scanned elswhere\"}\n
\n {booking && (\n
\n \n
\n )}\n
\n {!booking && (\n \n
\n

Date scan was taken

\n

{moment(scanTakenDate).format(\"DD/MM/YYYY\")}

\n
\n
\n

Indication for the scan and relevant history

\n

\n {scanIndication || (\n Not specified\n )}\n

\n
\n
\n )}\n\n
\n

Type of report

\n

\n {implandtPlanned && (\n Implant Planned\n )}\n {evaluateExisting && (\n Evaluate Existing\n )}\n {sinusEvaluation && (\n Sinus Evaluation\n )}\n {tmjEvaluation && (\n TMJ Evaluation\n )}\n {!implandtPlanned &&\n !evaluateExisting &&\n !sinusEvaluation &&\n !tmjEvaluation ? (\n Not selected\n ) : null}\n

\n
\n\n
\n

Comments and Special Requests

\n

{notes || Not specified}

\n
\n\n {fullRadiologyReportUrl && (\n
\n

Uploaded scan

\n

\n \n {fullRadiologyReportName}\n \n

\n
\n )}\n
\n
\n
\n );\n}\n","import React, { Fragment } from \"react\";\nimport Select from \"react-select\";\nimport MaskedInput from \"react-text-mask\";\nimport moment from \"moment\";\nimport classNames from \"classnames\";\n\nimport { TITLES } from \"../../../../../constants/patient.constants\";\n\nconst dateMask = [/\\d/, /\\d/, \"/\", /\\d/, /\\d/, \"/\", /\\d/, /\\d/, /\\d/, /\\d/];\n\nconst selectStyles = (hasError = false) => ({\n menu: (provided) => ({ ...provided, zIndex: 9999 }),\n control: (styles) => ({\n ...styles,\n ...(hasError && { borderColor: \"#f86c6b\" }),\n }),\n});\n\nconst capitalize = (val) =>\n val.charAt(0).toUpperCase() + val.slice(1).toLowerCase();\n\nexport default function PatientInfo({\n scannedAt3Beam,\n patients,\n handleChange,\n handleBlur,\n setFieldValue,\n setFieldTouched,\n values,\n errors,\n touched,\n}) {\n const patientsArray = patients || [];\n\n return scannedAt3Beam ? (\n
\n Patient's name:\n
\n ({\n label: patient.firstName + \" \" + patient.lastName,\n value: patient.id,\n }))}\n onChange={(option) => {\n setFieldValue(\"patientId\", option.value);\n }}\n onBlur={() => {\n setFieldTouched(\"patientId\", true);\n }}\n />\n {errors.patientId && touched.patientId ? (\n {errors.patientId}\n ) : null}\n
\n
\n ) : (\n \n
\n Patient's title:\n
\n ({\n value: title,\n label: capitalize(title),\n }))}\n onChange={(option) => {\n setFieldValue(\"patientTitle\", option.value);\n }}\n onBlur={() => {\n setFieldTouched(\"patientTitle\", true);\n }}\n />\n {errors.patientTitle && touched.patientTitle ? (\n {errors.patientTitle}\n ) : null}\n
\n
\n
\n Patient's name:\n
\n \n {errors.patientName && touched.patientName ? (\n {errors.patientName}\n ) : null}\n
\n
\n
\n Patient's surname:\n
\n \n {errors.patientSurname && touched.patientSurname ? (\n {errors.patientSurname}\n ) : null}\n
\n
\n
\n Patient's DOB:\n
\n
\n
\n
\n \n
\n
\n {\n setFieldValue(\n \"patientDOB\",\n moment(event.target.value, \"DD/MM/YYYY\").format(\"YYYY-MM-DD\")\n );\n }}\n onBlur={handleBlur}\n aria-label=\"Patient's Date of Birth\"\n />\n {errors.patientDOB && touched.patientDOB ? (\n
{errors.patientDOB}
\n ) : null}\n
\n
\n
\n
\n Gender:\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n Patient's email:\n
\n \n \n For verification (optional)\n \n
\n
\n
\n Date scan was taken:\n
\n
\n
\n
\n \n
\n
\n {\n setFieldValue(\n \"scanTakenDate\",\n moment(event.target.value, \"DD/MM/YYYY\").format(\"YYYY-MM-DD\")\n );\n }}\n onBlur={handleBlur}\n placeholder=\"DD/MM/YYYY\"\n className={classNames(\"form-control\", {\n \"is-invalid\": errors.scanTakenDate && touched.scanTakenDate,\n })}\n aria-label=\"Date scan was taken\"\n />\n {errors.scanTakenDate && touched.scanTakenDate ? (\n
{errors.scanTakenDate}
\n ) : null}\n
\n
\n
\n
\n \n Indication for the scan and relevant history:\n \n
\n \n {errors.scanIndication && touched.scanIndication ? (\n
{errors.scanIndication}
\n ) : null}\n
\n
\n
\n );\n}\n","import React, { useState, useRef } from \"react\";\nimport { Button } from \"reactstrap\";\nimport classNames from \"classnames\";\n\nexport default function UploadScan({\n setFieldValue,\n setFieldTouched,\n errors,\n touched,\n}) {\n const [selectedFile, setFile] = useState(null);\n const fileInputRef = useRef(null);\n\n function handleInputChange() {\n const file = fileInputRef.current.files[0];\n setFile(file);\n setFieldValue(\"scan\", file);\n setFieldTouched(\"scan\", true);\n }\n\n function removeFile() {\n setFile(null);\n fileInputRef.current.value = \"\";\n setFieldValue(\"scan\", null);\n }\n\n return (\n
\n Upload scan:\n
\n \n {\n setFieldTouched(\"scan\", true);\n }}\n />\n \n \n Upload your files\n \n
\n {errors.scan && touched.scan ? (\n {errors.scan}\n ) : (\n \n Please compress all patients files received from your imaging centre\n and upload directly\n \n )}\n {selectedFile && (\n \n \n {selectedFile.name} ({(selectedFile.size / 1024).toFixed(2)} Kb)\n \n \n \n )}\n
\n
\n );\n}\n","import React from \"react\";\nimport { NavLink } from \"react-router-dom\";\n\nimport PatientFields from \"./PatientFields\";\nimport UploadScan from \"./UploadScan\";\nimport { NAVIGATION_CONSTANTS } from \"../../../../../constants/navigation.constants\";\n\nexport default function NewReportForm({\n patients,\n userInfo,\n patientScannetAt3Beam,\n setPatientScannedAt3Beam,\n formik,\n selectedCreditCard,\n setSelectedCreditCard,\n}) {\n const {\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n setFieldValue,\n setFieldTouched,\n handleSubmit,\n } = formik;\n\n return (\n \n
\n \n Please select patient:\n \n
\n
\n {\n setPatientScannedAt3Beam(true);\n }}\n defaultChecked\n />\n \n
\n
\n {\n setPatientScannedAt3Beam(false);\n }}\n />\n \n
\n
\n
\n
\n \n
\n Type report:\n
\n
\n \n \n Full radiology report\n \n {errors.fullRadiologyReport && touched.fullRadiologyReport ? (\n
\n {errors.fullRadiologyReport}\n
\n ) : null}\n
\n
\n
\n
\n
\n
\n
\n \n \n Implant planned\n \n
\n
\n \n \n Evaluate existing\n \n
\n
\n \n \n TMJ Evaluation\n \n
\n
\n \n \n Sinus Evaluation\n \n
\n
\n
\n
\n
\n Payment:\n
\n
\n {\n setSelectedCreditCard(false);\n handleChange(e);\n }}\n onBlur={handleBlur}\n value=\"InvoiceMe\"\n defaultChecked\n />\n \n
\n
\n {\n setSelectedCreditCard(true);\n handleChange(e);\n }}\n onBlur={handleBlur}\n value=\"CreditCard\"\n />\n \n
\n
\n
\n {selectedCreditCard && !userInfo.hasCard ? (\n
\n
\n
\n \n Please, add your credit card information to your profile\n beforehand\n \n \n +Add credit card information\n \n
\n
\n
\n ) : null}\n
\n \n Comments and Special Requests:\n \n
\n \n \n
\n
\n {!patientScannetAt3Beam && (\n \n )}\n \n );\n}\n","import React, { useState, Fragment } from \"react\";\nimport { useFormik } from \"formik\";\nimport { Button } from \"reactstrap\";\nimport { toastr } from \"react-redux-toastr\";\nimport moment from \"moment\";\n\nimport NewReportForm from \"./Form\";\nimport Modal from \"../../../../common/modals/Modal\";\n\nimport \"./styles.css\";\n\nexport default function NewReportPopup({\n userInfo,\n patients,\n scanPrices,\n close,\n orderReport,\n orderReportElswhere,\n}) {\n const [patientScannetAt3Beam, setPatientScannedAt3Beam] = useState(true);\n const [selectedCreditCard, setSelectedCreditCard] = useState(false);\n const [showConfirmationPopup, toggleConfirmationPopup] = useState(false);\n\n const { title, firstName, lastName, city, address } = userInfo;\n\n const fullRadiologyReport = scanPrices.selectedExtraOptions.find(\n (scanPrice) => scanPrice.name === \"e_frr_q\"\n );\n\n const formik = useFormik({\n initialValues: {\n dentistId: userInfo.id,\n /** scanned at 3 Beam */\n patientId: null,\n /** scanned elsewhere */\n patientTitle: null,\n patientName: \"\",\n patientSurname: \"\",\n patientDOB: \"\",\n patientGender: \"MALE\",\n patientMobile: \"\",\n patientEmail: \"\",\n scanTakenDate: \"\",\n scanIndication: \"\",\n scan: null,\n /** END */\n paymentType: \"InvoiceMe\",\n notes: \"\",\n fullRadiologyReport: true,\n implandtPlanned: false,\n evaluateExisting: false,\n tmjEvaluation: false,\n sinusEvaluation: false,\n totalAmount: fullRadiologyReport.price,\n },\n onSubmit(values, { setSubmitting }) {\n setSubmitting(true);\n if (patientScannetAt3Beam) {\n orderReport(values)\n .then(() => {\n close();\n })\n .catch((e) => toastr.error(\"Error\", e))\n .finally(() => setSubmitting(false));\n } else {\n orderReportElswhere(values)\n .then(() => {\n close();\n })\n .catch((e) => toastr.error(\"Error\", e))\n .finally(() => setSubmitting(false));\n }\n },\n validate(values) {\n const errors = {};\n\n if (!values.fullRadiologyReport) {\n errors.fullRadiologyReport = \"Full radiology report should be checked\";\n }\n\n if (patientScannetAt3Beam && !values.patientId) {\n errors.patientId = \"Patient should be selected\";\n }\n\n if (selectedCreditCard && !userInfo.hasCard) {\n errors.paymentType = \"You don't have creadit card\";\n }\n\n /** patient is not scanne at 3 beam */\n if (!patientScannetAt3Beam && !values.scan) {\n errors.scan = \"You should upload patient's scan\";\n }\n\n if (!patientScannetAt3Beam && !values.patientTitle) {\n errors.patientTitle = \"Patient's title is required\";\n }\n\n if (!patientScannetAt3Beam && !values.patientName) {\n errors.patientName = \"Patient's name is required\";\n }\n\n if (!patientScannetAt3Beam && !values.patientSurname) {\n errors.patientSurname = \"Patient's surname is required\";\n }\n const patientDobMoment = moment(values.patientDOB);\n\n if (!patientScannetAt3Beam && !values.patientDOB) {\n errors.patientDOB = \"Patient's date of birth is required\";\n } else if (!patientScannetAt3Beam && !patientDobMoment.isValid()) {\n errors.patientDOB = \"Patient's date of birth is not valid\";\n }\n\n const scanTakenDateMoment = moment(values.scanTakenDate);\n\n if (!patientScannetAt3Beam && !values.scanTakenDate) {\n errors.scanTakenDate = \"Scan date is required\";\n } else if (!patientScannetAt3Beam && !scanTakenDateMoment.isValid()) {\n errors.scanTakenDate = \"Scan date is not valid\";\n }\n\n if (!patientScannetAt3Beam && !values.scanIndication) {\n errors.scanIndication = \"Scan indication is required\";\n }\n\n return errors;\n },\n });\n\n return (\n \n {showConfirmationPopup && (\n close()}\n onClose={() => toggleConfirmationPopup(false)}\n >\n Are you sure you want to discard your changes?\n
\n All of the progress will be lost.\n \n )}\n \n toggleConfirmationPopup(true)}\n />\n
\n
\n
\n
\n

New report

\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n

\n {title}. {firstName} {lastName}\n

\n Dentist\n
\n
\n Address\n
\n {city}, {address}\n
\n
\n
\n
\n
\n
\n\n \n\n
\n
\n
\n Estimated price:\n \n \n £ {fullRadiologyReport.price}\n \n \n
\n \n {formik.isSubmitting ? \"Sending...\" : \"Order\"}\n \n
\n
\n
\n \n
\n );\n}\n","import { createSelector } from \"reselect\";\nimport Moment from \"moment\";\nimport { orderBy, get } from \"lodash\";\n\nconst radiologyReportsSelector = ({ radiologyReports }) => radiologyReports;\n\nexport const getReportCount = createSelector(\n radiologyReportsSelector,\n ({ radiologyReportsListReducer }) => {\n return radiologyReportsListReducer.reportCount;\n }\n);\n\nexport const getReportFilter = createSelector(\n radiologyReportsSelector,\n ({ radiologyReportsListReducer }) => {\n return radiologyReportsListReducer.filters;\n }\n);\n\nexport const getRadiologyReports = createSelector(\n radiologyReportsSelector,\n ({ radiologyReportsListReducer }) => {\n return radiologyReportsListReducer.data;\n }\n);\n","import * as components from \"./components\";\nimport * as selectors from \"./selectors\";\nimport * as actions from \"./actions\";\nimport * as constants from \"./constants\";\nexport default {\n components,\n selectors,\n actions,\n constants\n};\n","import React, { useState, useEffect, useRef } from \"react\";\nimport Select from \"react-select\";\nimport styled from \"styled-components\";\nimport { saveLocalStoreData } from \"../../../../services/localStorage.service\";\nimport { LOCAL_STORAGE_CONSTANTS } from \"../../../../constants/localStorage.constants\";\nimport { impersonateDentist } from \"../../../../services/api\";\nimport { ImpersonatingService } from \"../../../../services/impersonating.service\";\n\nconst StyledSelect = styled(Select)`\n position: absolute !important;\n width: 200px;\n top: 10px;\n z-index: 999;\n`;\n\nconst { getPreselectedUser, isImpersonating } = ImpersonatingService();\n\nconst ImpersonateDentist = ({ fetchDentists, dentists, history }) => {\n const [selectedOption, setSelected] = useState(getPreselectedUser);\n const [selectVisible, setSelectVisibility] = useState(false);\n\n const ref = useRef(null);\n\n const handleClickOutside = (event) => {\n if (ref.current && !ref.current.contains(event.target)) {\n setSelectVisibility(false);\n }\n };\n\n useEffect(() => {\n !isImpersonating && fetchDentists && fetchDentists(); // for now not to brake dashboard\n document.addEventListener(\"click\", handleClickOutside, true);\n return () => {\n document.removeEventListener(\"click\", handleClickOutside, true);\n };\n }, [fetchDentists]);\n\n const actAs = () => {\n if (isImpersonating) return null;\n return selectedOption.label ? (\n Acting as {selectedOption.label}\n ) : (\n Act as...\n );\n };\n\n return (\n
  • \n {\n setSelectVisibility(!selectVisible);\n }}\n >\n {actAs()}\n \n {selectVisible && (\n ({ ...provided, zIndex: 9999 }),\n }}\n value={selectedOption}\n placeholder=\"Select user\"\n onChange={(e) => {\n setSelected(e);\n saveLocalStoreData(LOCAL_STORAGE_CONSTANTS.ACTING_AS, e);\n setSelectVisibility(false);\n impersonateDentist(e.id, history);\n }}\n options={dentists}\n />\n )}\n
  • \n );\n};\n\nexport default ImpersonateDentist;\n","import React, { Component } from \"react\";\nimport BootstrapTable from \"react-bootstrap-table-next\";\nimport { buildPastVisitsTable } from \"../../../../services/table.service\";\n\nexport default class PastVisits extends Component {\n componentDidMount() {\n let bookingDetails = this.props.bookingInfo;\n if (!!bookingDetails) {\n const patientId = bookingDetails.patient.id;\n this.props.retrievePreviousVisits(patientId);\n }\n }\n\n componentDidUpdate(prevProps){\n const prevPatientId = prevProps.bookingInfo.patient.id;\n const currentPatientId = this.props.bookingInfo.patient.id;\n\n if(currentPatientId !== prevPatientId) {\n this.props.retrievePreviousVisits(currentPatientId)\n }\n }\n\n buildPreviousVisitsTable() {\n const columns = buildPastVisitsTable();\n\n return (\n \n );\n }\n\n render() {\n return
    {this.buildPreviousVisitsTable()}
    ;\n }\n}\n","import React, { useState } from \"react\";\nimport {\n InputGroup,\n InputGroupAddon,\n Row,\n Col,\n Button,\n} from \"reactstrap\";\n\nexport default function ScansManualUpload({ handleAdd, label, btnLabel }) {\n const [url, setUrl] = useState(\"\");\n const handleClick = () => {\n handleAdd(url);\n };\n return (\n
    \n \n \n \n \n \n \n \n \n setUrl(e.target.value)}\n />\n \n \n {btnLabel}\n \n \n \n \n \n
    \n );\n}\n","import React, { Component } from \"react\";\nimport {\n TabContent,\n TabPane,\n Nav,\n NavItem,\n NavLink,\n Row,\n Col,\n} from \"reactstrap\";\nimport classnames from \"classnames\";\nimport PatientInfo from \"../PatientInfo\";\nimport ScanInfo from \"../ScanInfo\";\nimport PastVisits from \"../PastVisits\";\nimport Comments from \"../Comments\";\nimport ReportUploader from \"../ReportUploader\";\nimport ScansUpload from \"../ScansUpload\";\nimport ScansManualUpload from \"../ScansManualUpload\";\nimport PriceBreakDown from \"../../../dashboard/components/PriceBreakDown\";\nimport { isBooking } from \"../../helpers\";\nimport { preparePricingData } from \"../../../../services/pricing.service\";\nimport ApplyVoucherForm from \"../../../../common/ApplyVoucherForm\";\nimport { applyVoucher } from \"../../../../services/api\";\nimport{ omit } from 'lodash'\nimport \"./index.css\";\n\nexport default class VisitDetailsPopUp extends Component {\n constructor(props) {\n super(props);\n\n this.toggle = this.toggle.bind(this);\n this.handleApplyVoucher = this.handleApplyVoucher.bind(this);\n this.state = {\n activeTab: \"1\",\n voucherInfo: null,\n showVoucherForm: false,\n voucherCode: \"\",\n applyingVoucher: false,\n };\n }\n\n toggle(tab) {\n if (this.state.activeTab !== tab) {\n this.setState({\n activeTab: tab,\n });\n }\n }\n\n componentWillMount() {\n this.props.getBookingInfo(\n this.props.visitDetails.visitId || this.props.visitDetails.id\n );\n\n this.props.fetchRadiologists();\n }\n\n handleApplyVoucher() {\n const { voucherCode } = this.state;\n\n this.setState({ applyingVoucher: true });\n\n applyVoucher(this.props.bookingInfo.id, voucherCode)\n .then((discountAmount) => {\n this.setState({\n voucherInfo: {\n isValid: true,\n discountAmount,\n code: voucherCode,\n },\n });\n })\n .catch(() => {\n this.setState({\n voucherInfo: {\n isValid: false,\n discountAmount: 0,\n code: voucherCode,\n },\n });\n })\n .finally(() => {\n this.setState({ applyingVoucher: false });\n });\n }\n\n render() {\n const {\n requestReport,\n visitDetails,\n uploadReport,\n isUserRadiologist,\n isUserDentist,\n isUserReceptionist, \n isUserRadiographer,\n onFileUpload,\n onAddLinkForScan,\n onReportUpload,\n deleteScan,\n radiologists,\n type,\n } = this.props;\n\n const {\n showVoucherForm,\n applyingVoucher,\n voucherCode,\n voucherInfo,\n } = this.state;\n\n let currentVisitDetails = { ...visitDetails };\n\n if (this.props.bookingInfo) {\n currentVisitDetails = {\n ...this.props.bookingInfo,\n // ...visitDetails\n ...omit(visitDetails, 'patient'),\n };\n\n if (!visitDetails) {\n return null;\n }\n\n }\n\n if (!this.props.bookingInfo) {\n return null;\n }\n\n const preparedPricingData = preparePricingData(\n currentVisitDetails,\n radiologists,\n currentVisitDetails.totalAmount\n );\n\n return (\n this.props.bookingInfo &&\n currentVisitDetails && (\n \n this.props.onClose()}\n />\n
    \n \n \n \n \n \n\n {isUserRadiographer && (\n \n \n \n \n \n \n \n {/* \n \n */}\n \n )}\n\n {this.props.type === \"visit\" && (\n \n )}\n \n \n \n \n \n \n \n \n \n {(isUserDentist || isUserReceptionist) && (\n \n \n
    \n \n
    \n\n {voucherInfo && voucherInfo.isValid ? (\n \n \n Voucher applied!\n \n ) : (\n \n this.setState({ showVoucherForm: true })\n }\n handleInputChange={(e) =>\n this.setState({ voucherCode: e.target.value })\n }\n />\n )}\n
    \n \n )}\n {(isUserDentist || isUserReceptionist) &&\n !currentVisitDetails.visited &&\n isBooking(type) && (\n \n \n this.props.cancelBooking({\n name: currentVisitDetails.patient.name,\n date: currentVisitDetails.appointmentStartTime,\n id: currentVisitDetails.id,\n })\n }\n >\n Cancel Visit\n \n \n )}\n \n \n \n )\n );\n }\n}\n","export const isBooking = type => type === 'booking';","import React from \"react\";\nimport { Alert } from \"reactstrap\";\n\nconst detailsStyle = {\n padding: \"5px\",\n margin: \"2px 0\"\n};\n\nexport default function VisitPayment({ isVisited, isDetailsView }) {\n return (\n \n \n {isVisited ? (\n Visit is paid by patient\n ) : (\n Visit should be paid by patient\n )}\n \n );\n}\n","import React from \"react\";\nimport { Field } from \"react-final-form\";\n\nexport default function RadiologySelect({ radiologists }) {\n return (\n
    \n {/* */}\n
    \n {/* */}\n (\n
    \n \n \n
    \n )}\n />\n
    \n
    \n );\n}\n","import React from \"react\";\nimport { Input, Button, UncontrolledTooltip } from \"reactstrap\";\nimport classNames from \"classnames\";\n\nimport \"./styles.scss\";\n\nexport default function ApplyVoucherForm({\n showVoucherForm,\n loading,\n voucherInfo,\n voucherCode,\n toggleShowVoucherForm,\n handleApplyVoucher,\n handleInputChange,\n}) {\n return showVoucherForm ? (\n
    \n {voucherInfo && !loading && (\n \n \n {voucherInfo.isValid\n ? \"Voucher code is valid.\"\n : \"The voucher code is not valid.\"}\n \n\n \n \n )}\n\n {\n if (e.key === \"Enter\") {\n handleApplyVoucher();\n }\n }}\n onChange={handleInputChange}\n />\n \n {loading ? \"Checking...\" : \"Apply\"}\n \n
    \n ) : (\n \n );\n}\n","import React, { useState } from \"react\";\nimport { SingleDatePicker } from \"react-dates\";\nimport { dateFormatShort } from \"../../constants/global.constants\";\nimport moment from \"moment\";\n\nconst SingleDatePickerAdapter = ({ input }) => {\n const [focused, setFocused] = useState(false);\n return (\n dateFormatShort}\n numberOfMonths={1}\n small={true}\n date={input.value instanceof moment ? moment(input.value) : null}\n isOutsideRange={date => {\n return (\n date.isBefore(moment().startOf(\"day\")) ||\n date.isoWeekday() === 7\n );\n }}\n hideKeyboardShortcutsPanel\n onDateChange={input.onChange}\n onFocusChange={e => {\n setFocused(e.focused);\n }}\n readOnly\n />\n );\n};\n\nexport default SingleDatePickerAdapter;\n","import React from \"react\";\nimport {\n ListGroup,\n ListGroupItem,\n UncontrolledPopover,\n PopoverHeader,\n PopoverBody,\n} from \"reactstrap\";\nimport { chain, sumBy } from \"lodash\";\n\nconst wrapperStyle = {\n display: \"flex\",\n alignItems: \"center\",\n};\n\nconst popoverBodyStyle = {\n padding: \"0px\",\n};\n\nconst overlineStyle = {\n textDecoration: \"line-through\",\n marginRight: \"7px\",\n};\n\nfunction renderPrice(calculatedPrice, voucherInfo, visitDetails) {\n if (voucherInfo && voucherInfo.discountAmount > 0) {\n const finalPrice =\n calculatedPrice > voucherInfo.discountAmount\n ? calculatedPrice - voucherInfo.discountAmount\n : 0;\n\n return (\n
    \n \n Estimated price:{\" \"}\n £ {calculatedPrice}\n £ {finalPrice}\n \n \n Discounted price: £ {voucherInfo.discountAmount}\n \n
    \n );\n }\n\n return (\n
    \n Estimated price: £ {calculatedPrice}\n {visitDetails && (\n \n ({visitDetails.selectedPayment})\n \n )}\n
    \n );\n}\n\nexport default function PriceBreakDown({\n calculatedPrice,\n pricesBrakeDown,\n voucherInfo,\n visitDetails,\n}) {\n const groupedPricesBrakeDown = chain(pricesBrakeDown)\n .groupBy(\"label\")\n .map((items, key) => ({\n label: key,\n price: sumBy(items, \"price\"),\n }))\n .value();\n\n return (\n
    \n {renderPrice(calculatedPrice, voucherInfo, visitDetails)}\n \n \n Price breakdown\n \n \n {groupedPricesBrakeDown.map(({ label, price }, index) => (\n \n {label}: {price}(£)\n \n ))}\n \n \n \n
    \n );\n}\n","import React, { useEffect, useCallback } from \"react\";\nimport {\n ListGroup,\n ListGroupItem,\n UncontrolledPopover,\n PopoverHeader,\n PopoverBody\n} from \"reactstrap\";\nimport Moment from \"moment\";\nimport {uniqBy} from \"lodash\";\nimport { presentationDateFormatTable } from \"../../../../constants/global.constants\";\n\nconst popoverBodyStyle = {\n padding: \"0px\"\n};\n\nconst renderTimeSlot = (appointmentEndTime, appointmentStartTime) => {\n return `${Moment(appointmentStartTime).format(\n presentationDateFormatTable\n )} - ${Moment(appointmentEndTime).format(presentationDateFormatTable)}`;\n};\n\nexport default function OccupiedSlots({\n occupiedSlots,\n endDate,\n notifyHasConflict\n}) {\n const isSameDate = (appointmentStartTime, endDate) =>\n Moment(appointmentStartTime).isSame(endDate);\n\n const hasConflict = useCallback(\n () => occupiedSlots.some(i => isSameDate(i.appointmentStartTime, endDate)),\n [endDate, occupiedSlots]\n );\n\n useEffect(() => {\n notifyHasConflict(hasConflict());\n }, [hasConflict, notifyHasConflict, occupiedSlots]);\n\n return (\n \n \n \n Occupied slots\n \n \n {uniqBy(occupiedSlots, 'appointmentStartTime').map(\n ({ appointmentEndTime, appointmentStartTime }, index) => (\n \n {renderTimeSlot(appointmentEndTime, appointmentStartTime)}\n \n )\n )}\n \n \n \n \n );\n}\n","import React, { Component, Fragment } from \"react\";\nimport moment from \"moment\";\nimport \"./styles.scss\";\nimport _ from \"lodash\";\nimport VisitedLabel from \"../VisitedLabel\";\nimport VisitPayment from \"../VisitPayment\";\nimport Modal from \"../../../../common/modals/Modal\";\nimport { Form, Field } from \"react-final-form\";\nimport { Row, Col } from \"reactstrap\";\nimport { OnChange } from \"react-final-form-listeners\";\nimport SingleDatePickerAdapter from \"../../../../common/masks/SingleDatePickerAdapter\";\nimport TimeAdapter from \"../../../../common/masks/TimeAdapter\";\nimport { isValidDateAmPm } from \"../../../../modules/profile/helpers\";\nimport Countdown from \"react-countdown-now\";\nimport OccupiedSlots from \"../../../dashboard/components/OccupiedSlots\";\nimport {\n\tbookingCreationFormat,\n\tbackendDateFormat,\n\tpresentationDateFormat,\n\tdateFormatShort,\n\tslotDuration,\n} from \"../../../../constants/global.constants\";\nimport { AiFillSave } from \"react-icons/ai\";\n// import { createPostDICOMOrder } from \"../../../../plugins/postdicom/util\";\n\nexport default class PatientInfo extends Component {\n\tcountDownTimer = Date.now() + 60000 * 30; // 30 m\n\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tconst { visitDetails } = this.props;\n\n\t\tif (visitDetails.appointmentStartTime) {\n\t\t\tconst dateObj = moment(this.props.visitDetails.appointmentStartTime);\n\t\t\tthis.state = {\n\t\t\t\tdate: dateObj,\n\t\t\t\thoursMinutes: dateObj.format(\"hh:mm\"),\n\t\t\t\tmeridiem: dateObj.format(\"a\"),\n\t\t\t\tshowModal: false,\n\t\t\t};\n\t\t} else {\n\t\t\tthis.state = {\n\t\t\t\tdate: null,\n\t\t\t\tshowModal: false,\n\t\t\t};\n\t\t}\n\t}\n\n\tshouldComponentUpdate = (nextProp) => {\n\t\treturn (\n\t\t\tnextProp.visitDetails.appointmentStartTime !==\n\t\t\tthis.props.visitDetails.appointmentStartTime ||\n nextProp.visitDetails.patient !==this.props.visitDetails.patient\n\t\t);\n\t};\n\n\tonDiscard = () => {\n\t\tthis.props.onClose();\n\t};\n\n\tisBooking(type) {\n\t\treturn type === \"booking\";\n\t}\n\n\tisEdit(type) {\n\t\treturn type === \"edit\";\n\t}\n\n\tbuildDentistHeader() {\n\tconst { visitDetails, isUserDentist, type, onPatientEdit } = this.props;\n const patientName = _.startCase(_.toLower(`${visitDetails?.patient?.title}. ${visitDetails?.patient?.name}`));\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t{patientName}\n\t\t\t\t\t\t

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t onPatientEdit(visitDetails.patient)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tEdit Patient\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t{isUserDentist && this.isBooking(type) && (\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t)}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{moment(visitDetails.patient.dob).format(dateFormatShort)}\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t);\n\t}\n\n\tbuildReceptionistHeader() {\n\t\tconst { visitDetails, isUserReceptionist, type, updateVisit, updateVisitUnvisited} = this.props;\n\n const patientName = _.startCase(_.toLower(`${visitDetails?.patientData?.title}. ${visitDetails?.patientData?.name}`))\n\n\t\treturn (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t{patientName}\n\t\t\t\t\t\t

    \n\t\t\t\t\t
    \n\t\t\t\t\t{!visitDetails.visited && isUserReceptionist && this.isBooking(type) && (\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tvisitDetails.paidByPatient\n\t\t\t\t\t\t\t\t\t\t? this.setState({ showModal: true })\n\t\t\t\t\t\t\t\t\t\t: updateVisit(visitDetails.id);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tMark as Visited\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t)}\n\t\t\t\t\t{isUserReceptionist && visitDetails.visited && this.isBooking(type) && (\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t)}\n {visitDetails.visited && isUserReceptionist && this.isBooking(type) && (\n
    \n {\n updateVisitUnvisited(visitDetails.id);\n }}\n >Return to unvisited\n \n
    \n )}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{moment(visitDetails.patientData.dob).format(dateFormatShort)}\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t{this.state.showModal && (\n\t\t\t\t\t updateVisit(visitDetails.id)}\n\t\t\t\t\t\tonClose={() => this.setState({ showModal: false })}\n\t\t\t\t\t\tconfirmBtn=\"Mark as visited\"\n\t\t\t\t\t\ttitle=\"Patient Payment\"\n\t\t\t\t\t>\n\t\t\t\t\t\tBy clicking Mark as visited
    I confirm that patient\n\t\t\t\t\t\tpayment was successful\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
    \n\t\t);\n\t}\n\n\thandleLockUpdate(value, old, { hoursMinutes, meridiem, selectedDate }) {\n\t\tif (value === old) return;\n\n\t\tthis.setState((prevState) => {\n\t\t\tprevState.date = selectedDate;\n\t\t});\n\n\t\tconst endDate = this.calculateEndTime(hoursMinutes, meridiem, selectedDate);\n\t\tconst appointmentStartTime = endDate\n\t\t\t? endDate.format(bookingCreationFormat)\n\t\t\t: endDate;\n\t\tconst appointmentEndTime = endDate\n\t\t\t? endDate.add(slotDuration, \"minutes\").format(bookingCreationFormat)\n\t\t\t: endDate;\n\n\t\tif (\n\t\t\tappointmentStartTime &&\n\t\t\tappointmentEndTime &&\n\t\t\t!isValidDateAmPm(meridiem, hoursMinutes, selectedDate)\n\t\t) {\n\t\t\tthis.props.updateTemporallyOccupiedSlots({\n\t\t\t\tappointmentStartTime,\n\t\t\t\tappointmentEndTime,\n\t\t\t}) &&\n\t\t\t\tthis.props.fetchOccupiedSlotsByDateRange(\n\t\t\t\t\tmoment(appointmentStartTime)\n\t\t\t\t\t\t.startOf(\"week\")\n\t\t\t\t\t\t.format(backendDateFormat),\n\t\t\t\t\tmoment(appointmentEndTime).endOf(\"week\").format(backendDateFormat)\n\t\t\t\t);\n\t\t}\n\t}\n\n\tcalculateEndTime(hoursMinutes, meridiem, selectedDate) {\n\t\tlet selectedTime = {};\n\t\tlet endDate = null;\n\t\tif (hoursMinutes && meridiem && selectedDate) {\n\t\t\tselectedTime = moment(hoursMinutes + \" \" + meridiem, [\"h:mm A\"]);\n\t\t\tendDate = selectedDate.set({\n\t\t\t\thours: selectedTime.hours(),\n\t\t\t\tminutes: selectedTime.minutes(),\n\t\t\t});\n\t\t\treturn endDate;\n\t\t}\n\t\treturn null;\n\t}\n\n\teditBooking(values) {\n\t\tconst { selectedDate, hoursMinutes, meridiem } = values;\n\n\t\tlet endDate = this.calculateEndTime(hoursMinutes, meridiem, selectedDate);\n\t\tconst { id } = this.props.visitDetails;\n\t\tconst appointmentStartTime = endDate\n\t\t\t? endDate.format(bookingCreationFormat)\n\t\t\t: endDate;\n\t\tconst appointmentEndTime = endDate\n\t\t\t? endDate\n\t\t\t\t.add(Number(slotDuration), \"minutes\")\n\t\t\t\t.format(bookingCreationFormat)\n\t\t\t: endDate;\n\n\t\tthis.props.updateBooking({\n\t\t\tid,\n\t\t\tappointmentStartTime: moment(appointmentStartTime).format(\n\t\t\t\tbookingCreationFormat\n\t\t\t),\n\t\t\tappointmentEndTime: moment(appointmentEndTime).format(\n\t\t\t\tbookingCreationFormat\n\t\t\t),\n\t\t});\n\t\tthis.props.onClose();\n\t}\n\n\trenderCountdown({ meridiem, selectedDate, hoursMinutes }, clearFn) {\n\t\tif (\n\t\t\tmeridiem &&\n\t\t\tselectedDate &&\n\t\t\thoursMinutes &&\n\t\t\t!selectedDate.isSame(this.props.visitDetails.appointmentStartTime)\n\t\t) {\n\t\t\tconst {\n\t\t\t\toccupiedSlots = [],\n\t\t\t\ttemporallyOccupiedSlots = [],\n\t\t\t\toccupiedSlotsTimeRange = [],\n\t\t\t\tuserProfile = {},\n\t\t\t\tbookings = [],\n\t\t\t} = this.props;\n\n if(userProfile && !userProfile.id) {\n return null\n }\n\n\t\t\tconst endDate = this.calculateEndTime(\n\t\t\t\thoursMinutes,\n\t\t\t\tmeridiem,\n\t\t\t\tselectedDate\n\t\t\t);\n\n\t\t\tconst allSlots = [\n\t\t\t\t...occupiedSlots,\n\t\t\t\t...temporallyOccupiedSlots,\n\t\t\t\t...occupiedSlotsTimeRange,\n\t\t\t\t...bookings,\n\t\t\t].filter(\n\t\t\t\t(i) =>\n\t\t\t\t\tmoment(i.appointmentStartTime).isSame(endDate, \"day\") &&\n\t\t\t\t\ti.dentistId !== userProfile.id\n\t\t\t);\n\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t{\" \"}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({ hasTimeConflict: flag });\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\tthis.countDownTimer = Date.now() + 60000 * 30; // 30 mins\n\t}\n\n\tbuildVisitDate() {\n\t\tconst { meridiem, hoursMinutes, date } = this.state;\n\t\treturn (\n\t\t\t {\n\t\t\t\t\t\tutils.changeValue(state, \"selectedDate\", () => null);\n\t\t\t\t\t\tutils.changeValue(state, \"hoursMinutes\", () => null);\n\t\t\t\t\t},\n\t\t\t\t\tclearHours: (args, state, utils) => {\n\t\t\t\t\t\tutils.changeValue(state, \"hoursMinutes\", () => null);\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\trender={({ handleSubmit, values, form }) => (\n\t\t\t\t\t
    handleSubmit(values)}>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{(value, previous) =>\n\t\t\t\t\t\t\t\t\t\t\tthis.handleLockUpdate(value, previous, values)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tisValidDateAmPm(\n\t\t\t\t\t\t\t\t\t\t\tallValues.meridiem,\n\t\t\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\t\t\tallValues.selectedDate\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{(value, previous) =>\n\t\t\t\t\t\t\t\t\t\tthis.handleLockUpdate(value, previous, values)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{[\"am\", \"pm\"].map((title) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{(value, previous) =>\n\t\t\t\t\t\t\t\t\t\tthis.handleLockUpdate(value, previous, values)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t this.editBooking(values)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{this.renderCountdown(values, form.mutators.clearDates)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t)}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tvisitDetails,\n\t\t\tisUserRadiologist,\n\t\t\tisUserDentist,\n\t\t\tisUserReceptionist,\n\t\t} = this.props;\n\t\treturn (\n\t\t\t
    \n\t\t\t\t{isUserDentist && this.buildDentistHeader()}\n\t\t\t\t{!isUserDentist && this.buildReceptionistHeader()}\n\t\t\t\t
    \n\t\t\t\t\t

    \n\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\t{visitDetails?.patient?.mobile}\n\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{visitDetails?.patient?.email}\n\t\t\t\t\t\t\n\t\t\t\t\t

    \n\t\t\t\t\t{visitDetails?.patient?.address && (\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{visitDetails.patientData.city}, {visitDetails.patientData.address},{\" \"}\n\t\t\t\t\t\t\t\t{visitDetails.patientData.postCode}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t

    \n\t\t\t\t\t)}\n\t\t\t\t\t{visitDetails.appointmentStartTime &&\n\t\t\t\t\t\t!isUserDentist &&\n\t\t\t\t\t\t!isUserReceptionist && (\n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{moment(visitDetails.appointmentStartTime).format(\n\t\t\t\t\t\t\t\t\t\tpresentationDateFormat\n\t\t\t\t\t\t\t\t\t)}{\" \"}\n\t\t\t\t\t\t\t\t\t-{\" \"}\n\t\t\t\t\t\t\t\t\t{moment(visitDetails.appointmentStartTime)\n\t\t\t\t\t\t\t\t\t\t.add(Number(slotDuration), \"minutes\")\n\t\t\t\t\t\t\t\t\t\t.format(\"h:mm a\")}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t)}\n\t\t\t\t\t{visitDetails.appointmentStartTime &&\n\t\t\t\t\t\t(isUserDentist || isUserReceptionist) &&\n\t\t\t\t\t\tthis.buildVisitDate()}\n\t\t\t\t\t

    \n\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{\"Dr. \" +\n\t\t\t\t\t\t\t\tvisitDetails.dentist.firstName +\n\t\t\t\t\t\t\t\t\" \" +\n\t\t\t\t\t\t\t\tvisitDetails.dentist.lastName}\n\t\t\t\t\t\t\n\t\t\t\t\t

    \n\t\t\t\t\t{!!visitDetails.paidByPatient &&\n\t\t\t\t\t\t(isUserReceptionist || isUserDentist) && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t{!!visitDetails.possibilityOfPregnancy && !isUserRadiologist && (\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tPossibility of pregnancy.\n\t\t\t\t\t\t

    \n\t\t\t\t\t)}\n\t\t\t\t\t{!!visitDetails.bookingDetailsDto.subjectToSafeguarding &&\n\t\t\t\t\t\t!isUserRadiologist && (\n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tThis patient is subject to safeguarding.\n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t)}\n\t\t\t\t\t{!!visitDetails.bookingDetailsDto.patientComeWithTemplate &&\n\t\t\t\t\t\t!isUserRadiologist && (\n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tPatient comes with a radiographic template.\n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t)}\n\t\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t
    \n\t\t);\n\t}\n}\n","import axios from \"../../axios-client\";\nimport { toastr } from \"react-redux-toastr\";\nimport { FetchDataRoutine, SET_FILTERS } from \"./action-types\";\nimport { API_CONSTANTS } from \"./constants\";\n\nexport const fetchRadiologyReports = ({page = 1, size = 10, criteria, startDate, endDate, orderBy = 'orderReportDate', desc = true} = {}) => async (dispatch) => {\n dispatch(FetchDataRoutine.request());\n try {\n const { data } = await axios.get(API_CONSTANTS.GET_RADIOLOGY_REPORTS, {params: {page, size, criteria, startDate, endDate, orderBy, desc}});\n dispatch(FetchDataRoutine.success(data));\n } catch (e) {\n toastr.error(\"Error\", e);\n dispatch(FetchDataRoutine.failure(e));\n }\n};\n\nexport const orderReport = (order) => (dispatch) => {\n return axios.post(API_CONSTANTS.ORDER_REPORT, order).then(() => {\n dispatch(fetchRadiologyReports());\n toastr.success(\"Success\", \"report ordered\");\n });\n};\n\nexport const orderReportElswhere = (order) => (dispatch) => {\n const formData = new FormData();\n Object.keys(order).forEach((key) => {\n formData.append(key, order[key]);\n });\n\n return axios\n .post(API_CONSTANTS.ORDER_REPORT_ESLEWHERE, formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n })\n .then(() => {\n toastr.success(\"Success\", \"report ordered\");\n dispatch(fetchRadiologyReports());\n });\n};\n\nexport const setFilters = (filters) => ({\n type: SET_FILTERS,\n filters,\n});\n","export const API_CONSTANTS = Object.freeze({\n GET_VISITS: \"/visits\"\n});\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport {\n\tInput,\n\tInputGroup,\n\tFormGroup,\n\tInputGroupAddon,\n\tInputGroupText,\n} from \"reactstrap\";\nimport { IoIosSend } from \"react-icons/all\";\nimport { Preloader, TailSpin } from \"react-preloader-icon\";\nimport Moment from \"moment\";\n\nimport \"./index.css\";\n\nexport default function Comments({\n\tisUserReceptionist,\n\tisUserRadiographer,\n\tcomments,\n\tbookingId,\n\taddComment,\n}) {\n\tconst [isLoading, setLoading] = useState(false);\n\tconst [commentExist, setCommentExistOrNot] = useState(false);\n\tconst [comment, setComment] = useState(false);\n\n\tuseEffect(() => {\n\t\tisUserRadiographer && prepareAutoExpanded();\n\t}, []);\n\n\tconst prepareAutoExpanded = useCallback(() => {\n\t\tvar textarea = document.querySelector(\"#commentInput\");\n\n\t\ttextarea.addEventListener(\"keydown\", autosize);\n\n\t\tfunction autosize() {\n\t\t\tvar el = this;\n\t\t\tsetTimeout(function () {\n\t\t\t\tel.style.cssText = \"height:auto; padding:0\";\n\t\t\t\tel.style.cssText = \"height:\" + el.scrollHeight + \"px\";\n\t\t\t}, 0);\n\t\t}\n\t}, []);\n\n\tconst saveComment = () => {\n\t\tsetLoading(true);\n\t\taddComment(bookingId, comment).then((commentData) => {\n\t\t\tif (commentData) {\n\t\t\t\tcomments.push(commentData);\n\t\t\t\tdocument.getElementById(\"commentInput\").value = \"\";\n\t\t\t\tlet textarea = document.querySelector(\"#commentInput\");\n\t\t\t\ttextarea.style.height = \"4rem\";\n\t\t\t\tsetCommentExistOrNot(false);\n\t\t\t}\n\t\t\tsetLoading(false);\n\t\t});\n\t};\n\n\tconst onCommentAdded = (event) => {\n\t\tsetComment(event.target.value);\n\t\tsetCommentExistOrNot(event.target.value.trim() !== \"\");\n\t};\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t{comments &&\n\t\t\t\t\tcomments.length > 0 &&\n\t\t\t\t\tcomments.map((comment) => (\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{comment.user.role === 'RECEPTIONIST' ? comment.user.firstName : comment.user.firstName + \" \" + comment.user.lastName}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{Moment(comment.commentDate).format(\"DD/MM/YYYY / HH:mm\")}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t

    {comment.content}

    \n\t\t\t\t\t\t
    \n\t\t\t\t\t))}\n\t\t\t
    \n\t\t\t{(isUserRadiographer || isUserReceptionist) && (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{isLoading && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{!isLoading && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t)}\n\t\t
    \n\t);\n}\n","import { NAVIGATION_CONSTANTS } from \"../../constants/navigation.constants.js\";\n\nconst NAV_ITEMS = [\n {\n label: \"Profile details\",\n permission: \"PROFILE_DETAILS\"\n },\n {\n label: \"Personal Information\",\n id: \"personal-info-tab\",\n icon: \"icon-user\",\n navigateTo: NAVIGATION_CONSTANTS.PROFILE,\n permission: \"PERSONAL_INFORMATION\"\n },\n {\n label: \"Change Password\",\n id: \"\",\n icon: \"icon-lock\",\n navigateTo: NAVIGATION_CONSTANTS.CHANGE_PASSWORD,\n permission: \"CHANGE_PASSWORD\"\n },\n {\n label: \"Payment Details\",\n permission: \"PAYMENT_DETAILS\"\n },\n {\n label: \"Credit Card Information\",\n id: \"credit-card-tab\",\n icon: \"icon-credit-card\",\n navigateTo: NAVIGATION_CONSTANTS.CREDIT_CARD_DETAILS,\n permission: \"CREDIT_CARD_INFORMATION\"\n },\n {\n label: \"Other\",\n permission: \"OTHER\"\n },\n {\n label: \"Linked Accounts - Practice view\",\n id: \"joined-acc-tab\",\n icon: \"icon-people\",\n navigateTo: NAVIGATION_CONSTANTS.JOINED_ACCOUNTS,\n permission: \"LINKED_ACCOUNTS_PRACTICE_VIEW\"\n },\n {\n label: \"Schedules\",\n id: \"schedules\",\n icon: \"icon-clock\",\n navigateTo: NAVIGATION_CONSTANTS.SCHEDULES,\n permission: \"SCHEDULES\"\n }\n];\n\nNAV_ITEMS.forEach(Object.freeze);\n\nexport { NAV_ITEMS };\n\nexport const STRIPE_KEY = process.env.REACT_APP_STRIPE_KEY","// fetchers for routines\nimport { createThunkRoutine } from \"redux-thunk-routine\";\n\nexport const FetchDataRoutine = createThunkRoutine(\"patients/FETCH_DATA\");\n","import React, { Fragment } from 'react';\nimport { Label, Row, Container, Col } from 'reactstrap';\nimport {\n renderGroupedScansForRadiographer,\n renderGroupedScans,\n filterCloudScan,\n filterScan,\n} from '../../../../services/table.service';\n\nexport default function GroupedScansViewer({\n scans,\n isRadiographer,\n visitId,\n deleteScan,\n}) {\n const renderCorrectScans = (functor) =>\n isRadiographer\n ? renderGroupedScansForRadiographer(functor(scans), deleteScan, visitId)\n : renderGroupedScans(functor(scans));\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {renderCorrectScans(filterScan)}
    \n
    \n \n \n \n \n \n \n
    {renderCorrectScans(filterCloudScan)}
    \n
    \n
    \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Row, Col } from \"reactstrap\";\nimport { toastr } from \"react-redux-toastr\";\nimport \"./styles.scss\";\n// import MobileScansViewer from \"../../../visits/components-mobile/MobileScansViewer\";\nimport GroupedScansViewer from \"../../../visits/components/GroupedScansViewer\";\nimport TeethSVG from \"../../../dashboard/components/TeethSVG\";\nimport SkullSVG from \"../../../dashboard/components/SkullSVG\";\nimport { selectedSkullPartsOptionsV2 } from \"../../../../constants/priceItems.constants\";\nimport axios from \"../../../../axios-client\";\n\nexport default function ScanInfo({\n\tisUserRadiographer,\n\tdeleteScan,\n\tvisitDetails,\n\tpreparedVisitDetails: {\n\t\tselectedCBCTFormat,\n\t\tselectedXRayJustification,\n\t\tselectedExtra,\n\t\tselected2DImaging,\n\t\tselectedTeeth,\n\t\tselectedSkullParts,\n\t}\n}) {\n\tconst [verballyConsented, setVerballyConsented] = useState(true)\n\tconst [authorised, setAuthorised] = useState(true)\n\n\tuseEffect(() => {\n\t\tsetAuthorised(visitDetails.bookingDetailsDto.authorised)\n\t}, [visitDetails.bookingDetailsDto.authorised])\n\n\tuseEffect(() => {\n\t\tsetVerballyConsented(visitDetails.bookingDetailsDto.verballyConsented)\n\t}, [visitDetails.bookingDetailsDto.verballyConsented])\n\n\tfunction formatScanType() {\n\t\tconst config = {\n\t\t\tTWO_D: \"2D Imaging\",\n\t\t\tCBCT: \"CBCT\",\n\t\t\tSKULL: \"Maxillofacial/ENT\",\n\t\t};\n\t\treturn config[visitDetails.bookingDetailsDto.scanType];\n\t}\n\n\tfunction isCBCT() {\n\t\treturn visitDetails.bookingDetailsDto.scanType === \"CBCT\";\n\t}\n\n\tfunction isSkull() {\n\t\treturn visitDetails.bookingDetailsDto.scanType === \"SKULL\";\n\t}\n\n\tfunction renderPainterSkull() {\n\t\tconst { bookingItemDtos } = visitDetails.bookingDetailsDto;\n\t\tconst getSkullPriceItems = bookingItemDtos\n\t\t\t.filter((i) => selectedSkullPartsOptionsV2.includes(i.itemPriceDto.name))\n\t\t\t.map((i) => i.itemPriceDto.name);\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\tfunction handleVerballyConsentedChange(prevState) {\n\t\tif (!isUserRadiographer) return;\n\n\t\tconst updatedVerballyConsented = !prevState;\n\n\t\tsetVerballyConsented(updatedVerballyConsented);\n\n\t\taxios\n\t\t\t.put(\n\t\t\t\t`/bookings/update-verbally-consented/${visitDetails.id}?verballyConsented=${updatedVerballyConsented}`\n\t\t\t)\n\t\t\t.then(() => {\n\t\t\t\t/** everything is OK here */\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\ttoastr.error(\"Error\", \"Could not complete operation\");\n\t\t\t\tthis.setVerballyConsented(prevState);\n\t\t\t});\n\t};\n\n\tfunction handleAuthoriseChange(prevState) {\n\t\tif (!isUserRadiographer) return;\n\t\tconst updatedAuthorised = !prevState;\n\n\t\tsetAuthorised(updatedAuthorised);\n\n\t\taxios\n\t\t\t.put(\n\t\t\t\t`/bookings/update-authorised/${visitDetails.id}?authorised=${updatedAuthorised}`\n\t\t\t)\n\t\t\t.catch(() => {\n\t\t\t\ttoastr.error(\"Error\", \"Could not complete operation\");\n\t\t\t\tthis.setAuthorised(prevState);\n\t\t\t});\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t
      \n\t\t\t\t\t
    • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tRequired service\n\t\t\t\t\t\t\t{formatScanType()} Scan\n\t\t\t\t\t\t\n\t\t\t\t\t
    • \n\t\t\t\t
    \n\t\t\t\t
      \n\t\t\t\t\t{isCBCT() && (\n\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{formatScanType()} Area of Interest\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{selectedTeeth.map((option, i) => {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    • \n\t\t\t\t\t)}\n\t\t\t\t\t
    • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tClinical Indications/Relevant History/Clinical Question\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{visitDetails.bookingDetailsDto.clinicalIndications\n\t\t\t\t\t\t\t\t\t? visitDetails.bookingDetailsDto.clinicalIndications\n\t\t\t\t\t\t\t\t\t: \" — \"}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    • \n\t\t\t\t\t{!!selectedCBCTFormat.length && (\n\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{isSkull && (\n\t\t\t\t\t\t\t\t\tCBCT Format)}\n\t\t\t\t\t\t\t\t{!isSkull && (\n\t\t\t\t\t\t\t\t\t{formatScanType()} Format)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{selectedCBCTFormat.map((value, i) => {\n\t\t\t\t\t\t\t\t\t\treturn {value.label};\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    • \n\t\t\t\t\t)}\n\t\t\t\t\t{!!selected2DImaging.length && (\n\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{formatScanType()} Format\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{selected2DImaging.map((value, i) => {\n\t\t\t\t\t\t\t\t\t\treturn {value.label};\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    • \n\t\t\t\t\t)}\n\t\t\t\t\t{!!selectedSkullParts.length && (\n\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tMaxillofacial/ENT\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{selectedSkullParts\n\t\t\t\t\t\t\t\t\t\t.filter((i) => i.label !== \"Maxillofacial\")\n\t\t\t\t\t\t\t\t\t\t.map((value, i) => {\n\t\t\t\t\t\t\t\t\t\t\treturn {value.label};\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    • \n\t\t\t\t\t)}\n\t\t\t\t\t{!!selectedXRayJustification.length && (\n\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tJustification For X-ray\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{selectedXRayJustification.map((value, i) => {\n\t\t\t\t\t\t\t\t\t\treturn {value.label};\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    • \n\t\t\t\t\t)}\n\t\t\t\t\t
    • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tInclude TMJs\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    • \n\t\t\t\t\t
    • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tVerbally consented\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t handleVerballyConsentedChange(verballyConsented)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    • \n\t\t\t\t\t
    • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tAuthorised\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t handleAuthoriseChange(authorised)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    • \n\t\t\t\t\t{!!selectedExtra.length && (\n\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tFull radiology report\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{selectedExtra.map((value, i) => {\n\t\t\t\t\t\t\t\t\t\tif (value.value.startsWith(\"e_frr_\")) {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{value.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{/* ({radiologist}) */}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn {value.label};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    • \n\t\t\t\t\t)}\n\t\t\t\t
    \n\t\t\t\t{visitDetails.scans && (\n\t\t\t\t\t
      \n\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tScans from this visit\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{!visitDetails.scans.length && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t Upload pending...\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!visitDetails.scans.length && !isUserRadiographer && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!visitDetails.scans.length && isUserRadiographer && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    • \n\t\t\t\t\t
    \n\t\t\t\t)}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{selectedTeeth.map((option, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\t{isCBCT() && }\n\t\t\t\t\t{isSkull() && renderPainterSkull()}\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n}","import React from \"react\";\nimport { Alert } from \"reactstrap\";\n\nexport default function RequestReport({ requestReport }) {\n return (\n \n Currently there is no report, click{\" \"}\n {\n requestReport();\n }}\n >\n here\n {\" \"}\n to request it\n \n );\n}\n","import React, { Component } from \"react\";\nimport { Row, Col, Alert } from \"reactstrap\";\nimport { isNil } from \"lodash\";\nimport ScansUpload from \"../ScansUpload\";\nimport {\n\tscansStorageUri\n} from \"../../../../constants/global.constants\";\nimport RequestReport from \"../../../visits/components/RequestReport\";\nimport \"./styles.scss\";\nimport { store } from \"../../../../index\";\nimport { fetchVisits, updateScan } from \"../../../visits/actions\";\nimport axios from \"../../../../axios-client\";\nimport { toastr } from \"react-redux-toastr\";\n\nexport default class ReportInfo extends Component {\n\n\thandleReportUpdate(values) {\n\t\tthis.props.uploadReport({\n\t\t\treportContent: values.reportText,\n\t\t\tvisitId: this.props.visitDetails.id\n\t\t});\n\t\tthis.setState({\n\t\t\tisEditing: false\n\t\t});\n\t\tthis.props.onUpdatedReport();\n\t}\n\n\tisDisabled() {\n\t\treturn (\n\t\t\t!this.props.isUserRadiologist\n\t\t);\n\t}\n\n\trenderReport(report, deleteScan) {\n\n\t\tconst urlBuilder = file => scansStorageUri + file;\n if(report && !report.reportContentList) {\n return null\n }\n\t\treturn report.reportContentList.map((item, i) => e.stopPropagation()}\n\t\t>\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{item.file || report.fullRadiologyReportName}\n\t\t\t\t\n\t\t\t\t{!this.isDisabled() && (\n\t\t\t\t\t {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t// deleteScan(report.id, report.id, true);\n\t\t\t\t\t\t\tthis.deleteReport(report.id, item.file);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t×\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
    \n\t\t);\n\t}\n\n\tasync deleteReport(reportId, fileName) {\n\t\tawait axios.delete(`/reports/deleteReportFile/${reportId}/${fileName}`);\n\t\tstore.dispatch(fetchVisits());\n\t\tstore.dispatch(\n\t\t\tupdateScan({ reportId, fileName })\n\t\t);\n\t\ttoastr.success('Success', 'Report was deleted');\n\t}\n\n\trenderReportForm() {\n\n\t\tconst { report, orderReportDto } = this.props.visitDetails;\n\t\tconst { isUserRadiologist, requestReport, isUserDentist, onReportUpload, deleteScan } = this.props;\n\n\t\tif ((!report && !orderReportDto) && !isUserDentist) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\tReport was not requested yet.\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\tif (isUserDentist && isNil(report || orderReportDto)) {\n\t\t\treturn ;\n\t\t}\n\t\tif (!isUserRadiologist && report && orderReportDto && isNil(report.reportContent || orderReportDto.fullRadiologyReportName)) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\tReport was requested but not completed yet.\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tRadiology Report\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{report && (\n\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{!report.reportContent && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t Upload pending...\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{!!report.reportContentList.length && (\n\t\t\t\t\t\t\t\t\t\t\t
      {this.renderReport(report, deleteScan)}
      \n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{orderReportDto && (\n\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{!orderReportDto.fullRadiologyReportName && (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t Upload pending...\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{!!orderReportDto.fullRadiologyReportName && (\n\t\t\t\t\t\t\t\t\t\t\t
      {this.renderReport(orderReportDto, deleteScan)}
      \n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t{((report && report.reportContentList.length < 5) || (orderReportDto && !orderReportDto.fullRadiologyReportName)) && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!this.isDisabled() && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t
    \n\t\t);\n\t}\n\n\trender() {\n\t\treturn this.renderReportForm();\n\t}\n}","// Bookings\nexport const GET_ALL_BOOKINGS_FOR_CURRENT_WEEK =\n\t\"[Bookings] GET_ALL_BOOKINGS_FOR_CURRENT_WEEK\";\nexport const CREATE_BOOKING = \"[Bookings] CREATE_BOOKING\";\nexport const CREATE_BOOKING_WITHOUT_DATE =\n\t\"[Bookings] CREATE_BOOKING_WITHOUT_DATE\";\nexport const DELETE_BOOKING = \"[Bookings] DELETE_BOOKING\";\nexport const GET_BOOKING_INFO = \"[Bookings] GET_BOOKING_INFO\";\nexport const ASSIGN_VISIT_TIME_FOR_BOOKING =\n\t\"[Bookings] ASSIGN_VISIT_TIME_FOR_BOOKING\";\nexport const GET_BOOKINGS_BY_DATE_RANGE =\n\t\"[Bookings] GET_BOOKINGS_BY_DATE_RANGE\";\nexport const GET_ALL_BOOKINGS_WITHOUT_DATE =\n\t\"[Bookings] GET_ALL_BOOKINGS_WITHOUT_DATE\";\nexport const UPDATE_VISIT = \"[Bookings] UPDATE_VISIT\";\nexport const UPDATE_BOOKING_INFORMATION = \"[Bookings] UPDATE_BOOKING_INFORMATION\";\n\n// Prices\nexport const SET_SCAN_PRICES = \"[Bookings] SET_SCAN_PRICES\";\nexport const SET_SCAN_PRICES_STATIC = \"[Bookings] SET_SCAN_PRICES_STATIC\";\nexport const UPDATE_SCAN_PRICES_STATIC = \"[Bookings] UPDATE_SCAN_PRICES_STATIC\";\n//NEW\nexport const SET_SCAN_PRICES_STATIC_SAVING = \"[Bookings] SET_SCAN_PRICES_STATIC_SAVING\";\n\n//NEW END\n// Time Slots\nexport const SET_OCCUPIED_SLOTS = \"[Bookings] SET_OCCUPIED_SLOTS\";\nexport const SET_OCCUPIED_SLOTS_DATE_RANGE =\n\t\"[Bookings] SET_OCCUPIED_SLOTS_DATE_RANGE\";\nexport const SET_BLOCKED_SLOTS_DATE_RANGE =\n\t\"[Bookings] SET_BLOCKED_SLOTS_DATE_RANGE\";\nexport const SET_TEMPORALLY_OCCUPIED_SLOTS =\n\t\"[Bookings] SET_TEMPORALLY_OCCUPIED_SLOTS\";\nexport const UPDATE_TEMPORALLY_OCCUPIED_SLOTS =\n\t\"[Bookings] UPDATE_TEMPORALLY_OCCUPIED_SLOTS\";\nexport const SET_LAST_SELECTED_PAYMENT_TYPE =\n\t\"[Bookings] SET_LAST_SELECTED_PAYMENT_TYPE\";\n","import React from \"react\";\nimport {\n scansStorageUri,\n receiptStorageUri,\n presentationDateFormatTable,\n dateFormatShort,\n PAYMENT_CONSTANTS,\n VOUCHER_STATUSES,\n} from \"../constants/global.constants\";\nimport { NAVIGATION_CONSTANTS } from '../constants/navigation.constants';\nimport Moment from \"moment\";\nimport { Row, Col } from \"reactstrap\";\nimport { isEmpty, chain, get, upperFirst, toLower } from \"lodash\";\nimport { formatSpeciality } from \"../modules/profile/helpers\";\nimport { isUserDentist } from \"./permission.service\";\nimport { toast } from \"react-toastify\";\nimport { toastr } from \"react-redux-toastr\";\n// https://github.com/react-bootstrap-table/react-bootstrap-table2/issues/601\n// issue with same keys just ignore it and update version of table in future\n// for now just remapped data to ignore errors in console.\n\nimport axios from \"../axios-client\";\nimport { fetchRadiologyReports } from \"../modules/radiologyReports/actions\";\nimport { store } from \"../index\";\n// import { generateViewUrl } from \"../plugins/postdicom/util\";\nimport { fetchVisits } from \"../modules/visits/actions\";\n\nconst CUT_AFTER = 16;\n\n// Utils\nexport const filterCloudScan = (scans) => scans.filter((i) => i.scanUrl);\nexport const filterScan = (scans) => scans.filter((i) => !i.scanUrl);\nconst getAuthor = (i) => {\n return get(i, \"radiographer.name\", \"\");\n};\n\n// Formatters\nconst dateFormatter = (cell) => {\n if (!cell) {\n return \"\";\n }\n return `${Moment(cell).format(presentationDateFormatTable)}`;\n};\n\nconst dateFormatterShort = (cell) => {\n if (!cell) {\n return \"\";\n }\n return `${Moment(cell).format(dateFormatShort)}`;\n};\n\nconst servicesFormatter = (cell) => {\n if (!cell) {\n return \"\";\n }\n\n return cell.map((item, index) => {\n return (\n \n {item} {cell.length - 1 > index ? \",\" : \"\"}\n \n );\n });\n};\n\nconst urlBuilder = (item) =>\n item.scanUrl ? item.scanUrl : scansStorageUri + item.scanName;\n\n const ellipseText = (str = '', cutAfterChars = CUT_AFTER) => {\n if(!str) {\n return ''\n }\n return str.length > cutAfterChars ? `${str.substr(0, cutAfterChars)}...`: str\n}\n \nconst scanNameBuilder = ({scanName, scanUrl}) => {\n const cutAfterChars = CUT_AFTER;\n if(scanName) {\n return scanName?.length > cutAfterChars ? ellipseText(scanName) : scanName\n }\n if (scanUrl) {\n return scanUrl?.length > cutAfterChars ? ellipseText(scanUrl) : scanUrl\n }\n return '';\n}\n\nconst scanTitleNameBuilder = ({scanName, scanUrl }) =>\n scanName || scanUrl || \"no name\";\n\nconst renderScanDateCell = (item) => {\n if (item.creationAt) {\n return (\n \n \n {Moment(item.creationAt).format(presentationDateFormatTable)}\n \n \n );\n }\n\n return (\n \n N/A\n \n );\n};\n\n// Renderers\nexport const renderPendingSection = () => (\n \n \n Pending...\n \n);\n\nexport const renderSameDayProcessingCell = (isSameDayProcessing, row) => {\n return (\n \n {Moment(row.reportDate).format(presentationDateFormatTable)}\n {row.sameDayProcessing && (\n \n )}\n \n );\n};\n\nexport const renderRadiologistPatientNameCell = (row) => {\n return (\n \n {row.isVisit\n ? row.patientName\n : row.booking\n ? `${row.booking.patient.firstName} ${row.booking.patient.lastName}`\n : `${row.patientName} ${row.patientSurname}`}\n \n );\n};\n\nexport const renderRadiologistDentistCell = (row) => {\n return {row.dentistName};\n};\n\nexport const renderRadiologyReportCell = (row) => {\n const { fullRadiologyReportUrl, fullRadiologyReportName } = row.report;\n\n if (fullRadiologyReportUrl) {\n return (\n e.stopPropagation()}\n >\n {ellipseText(fullRadiologyReportName)}\n \n );\n }\n\n const userRole = store.getState().profile.profileReducer.profile.role;\n\n if (isUserDentist(userRole)) {\n return renderPendingSection();\n }\n\n if (!fullRadiologyReportUrl) {\n return (\n e.stopPropagation()}\n className=\"link-span\"\n >\n + Add file\n handleFileUpload(event, row.mainId)}\n />\n \n );\n }\n};\n\nexport const renderAttachedScans = (scans) => {\n if (isEmpty(scans)) {\n return renderPendingSection();\n }\n return scans.map((item, index) => {\n return (\n e.stopPropagation()}\n >\n {scanNameBuilder(item)}\n \n );\n });\n};\n\nexport const renderOrderReportAttachedScan = ({ scan }) => {\n if (!scan.scanUrl) {\n return (\n \n \n Not uploaded\n \n );\n }\n return (\n e.stopPropagation()}\n >\n {scan.scanName}\n \n );\n};\n\nexport const renderAttachedScansForRadiographer = (scans, fn, visitId) => {\n if (isEmpty(scans)) {\n return Upload scans;\n }\n return scans.map((item, index) => {\n return (\n e.stopPropagation()}\n >\n {scanNameBuilder(item)}\n {\n e.preventDefault();\n fn(item, visitId);\n }}\n >\n X\n \n \n );\n });\n};\n\nexport const renderGroupedScansForRadiographer = (scans, fn, visitId) => {\n if (isEmpty(scans)) {\n return N/A;\n }\n const remappedScans = chain(scans)\n .map((i) => ({\n ...i,\n uploader: getAuthor(i),\n }))\n .groupBy((i) => i.uploader)\n .value();\n\n return Object.keys(remappedScans).map((uploader, index) => {\n return (\n \n \n {uploader}\n \n \n {remappedScans[uploader].map((item, innerIndex) => (\n \n \n e.stopPropagation()}\n >\n \n {scanNameBuilder(item)}\n \n {\n e.preventDefault();\n fn(item, visitId);\n }}\n >\n X\n \n \n \n {renderScanDateCell(item)}\n \n ))}\n \n \n );\n });\n};\n\nexport const renderGroupedScans = (scans, fn, visitId) => {\n if (isEmpty(scans)) {\n return N/A;\n }\n const hardCoddedScans = chain(scans)\n .map((i, index) => ({\n ...i,\n uploader: getAuthor(i),\n }))\n .groupBy((i) => i.uploader)\n .value();\n\n return Object.keys(hardCoddedScans).map((uploader, index) => {\n return (\n \n \n {uploader}\n \n \n {hardCoddedScans[uploader].map((item, index) => (\n \n \n e.stopPropagation()}\n >\n \n {scanNameBuilder(item)}\n \n \n \n {renderScanDateCell(item)}\n \n ))}\n \n \n );\n });\n};\n\nconst renderReport = (report) => {\n if (!report) {\n return No report was requested;\n } else if (report && report.requestedReportDate && !report.reportContent) {\n return (\n \n \n Pending...\n \n );\n } else if (report && report.reportContent) {\n return (\n \n Done\n \n );\n }\n};\n\nconst renderReportForRadiologist = (report) => {\n if (report && report.requestedReportDate && report.reportContentList == 0) {\n return + Add file(s);\n } else if (report && report.reportContent) {\n return report.reportContentList.map((item, i) => (\n e.stopPropagation()}\n >\n
    \n \n {scanNameBuilder({ scanName: item.file })}\n \n {\n e.preventDefault();\n deleteReport(report.id, item.file);\n }}\n >\n ×\n \n
    \n \n ));\n }\n};\n\nconst deleteReport = async (reportId, fileName) => {\n if (!window.confirm(\"Are you sure?\")) return false;\n await axios.delete(`/reports/deleteReportFile/${reportId}/${fileName}`);\n store.dispatch(fetchVisits());\n toastr.success(\"Success\", \"Report was deleted\");\n};\n\nexport const renderReceiptInfo = (_, { paymentStatus, receiptFile }) => {\n switch (paymentStatus) {\n case PAYMENT_CONSTANTS.PAID:\n return (\n
    \n {\" \"}\n {receiptFile ? (\n e.stopPropagation()}\n >\n {receiptFile}\n \n ) : (\n No receipt\n )}\n
    \n );\n case PAYMENT_CONSTANTS.PAID_BY_PATIENT:\n return (\n
    \n Paid by patient\n
    \n );\n case PAYMENT_CONSTANTS.PAID_BY_DENTIST:\n return (\n
    \n Paid by dentist\n
    \n );\n case PAYMENT_CONSTANTS.PAYMENT_FAILED:\n return (\n
    \n Payment failed\n
    \n );\n default:\n break;\n }\n};\n\nconst nameFormatter = (cell) => {\n const { lastName, firstName } = cell;\n return `${lastName} ${firstName}`;\n};\n\nexport const emailFormatter = (cell) => {\n return ellipseText(cell);\n};\n\nconst hasCardFormatter = (hasCard) => {\n if (hasCard) {\n return (\n
    \n \n
    \n );\n } else {\n return (\n
    \n \n
    \n );\n }\n};\n\nconst specialityFormatter = (speciality) => {\n return
    {formatSpeciality(speciality)}
    ;\n};\n\nconst receiptFormatter = (receiptFile, cell) => {\n if (!receiptFile) {\n return \"\";\n }\n\n return receiptFile && !cell.paidByPatient ? (\n
    \n {\" \"}\n e.stopPropagation()}\n >\n {receiptFile}\n \n
    \n ) : (\n n/a\n );\n};\n\nconst invoiceFormatter = (cell, row) => {\n return (\n
    \n e.stopPropagation()}\n >\n Preview\n \n
    \n );\n};\n\nconst voucherStatusFormatter = (cell, row) => {\n let statusStyle = {\n display: \"inline-block\",\n borderRadius: \"4px\",\n padding: \"6px 12px 6px 12px\",\n };\n\n switch (row.status) {\n case VOUCHER_STATUSES[0].value:\n statusStyle.backgroundColor = \"#FFF5E0\";\n statusStyle.color = \"#DCB768\";\n break;\n case VOUCHER_STATUSES[1].value:\n statusStyle.backgroundColor = \"#D8F0DB\";\n statusStyle.color = \"#7DD187\";\n break;\n case VOUCHER_STATUSES[2].value:\n statusStyle.backgroundColor = \"#F7DAD8\";\n statusStyle.color = \"#DC6F6A\";\n break;\n default:\n break;\n }\n\n return (\n
    \n {VOUCHER_STATUSES[row.status].label}\n
    \n );\n};\n\nconst voucherAmountFormatter = (cell, row) => {\n return (\n {`${row.point && row.point !== null ? `${row.point}£` : \"\"}`}\n );\n};\n\n// Configs\nexport const commonTableConfig = (isRadiologist) => [\n {\n dataField: isRadiologist ? \"mainId\" : \"visitId\",\n text: \"ID\",\n sort: true,\n headerStyle: () => {\n return { width: \"5%\" };\n },\n },\n isRadiologist\n ? sameDayProcessingCell\n : {\n dataField: \"visitDate\",\n text: \"Visit\",\n sort: true,\n formatter: dateFormatter,\n },\n {\n dataField: \"patientName\",\n text: \"Patient\",\n sort: true,\n }\n].filter(Boolean);\n\n// Most likely confirmation modal\nconst configs = ({ hasLinkedAccounts, deleteScan, history }) => ({\n dentist: [\n hasLinkedAccounts ? dentistCell : null,\n scanCell,\n // postDicomUrlCell,\n reportCell(),\n paymentTypeCell,\n // paymentCell,\n ],\n receptionist: [\n dentistCell,\n scanCell,\n // postDicomUrlCell,\n paymentTypeCell,\n // paymentCell,\n receptDetailsCell(history),\n ],\n radiologist: [\n radiologistDentistCell,\n radiologistScanCell,\n reportCellForRadiologist(),\n deletePatient,\n // deleteReportPdf,\n ],\n radiographer: [\n dentistCell,\n // postDicomUrlCell,\n scanRadiographerCell(deleteScan),\n ],\n});\n\n// Cells\nconst scanCommonCell = {\n dataField: \"scans\",\n text: \"Attached Scans\",\n sort: false,\n headerStyle: () => {\n return { width: \"20%\" };\n },\n};\n\nconst sameDayProcessingCell = {\n dataField: \"reportDate\",\n text: \"Request Report\",\n sort: true,\n headerStyle: () => {\n return { width: \"15%\" };\n },\n formatter: renderSameDayProcessingCell,\n};\n\nconst radiologistPatientNameCell = {\n dataField: \"patientName\",\n text: \"Patient\",\n sort: true,\n formatter: (cell, row) => renderRadiologistPatientNameCell(row),\n};\n\nconst scanCell = {\n ...scanCommonCell,\n formatter: (cell) => renderAttachedScans(cell),\n};\n\nconst radiologistScanCell = {\n dataField: \"scans\",\n text: \"Attached Scans\",\n sort: false,\n headerStyle: () => {\n return { width: \"20%\" };\n },\n formatter: (cell, row) => {\n if (!row.isVisit && row.metaData.booking) {\n return renderAttachedScans(cell);\n }\n\n return row.isVisit\n ? renderAttachedScans(cell)\n : renderOrderReportAttachedScan(row);\n },\n};\n\nconst deletePatient = {\n dataField: \"id\",\n text: \"Delete patient\",\n sort: false,\n formatter: (cell, row) => {\n return (\n {\n e.stopPropagation();\n if (window.confirm(\"Are you sure you want to delete?\")) {\n deleteReportFromRadiology(row);\n }\n }}\n >\n Delete\n \n );\n },\n};\n\nconst deleteReportFromRadiology = async (row) => {\n try {\n const res = await axios.delete(`/reports/deleteReport/${row.report.id}`);\n store.dispatch(fetchVisits());\n toast.success(res.data, {\n position: toast.POSITION.BOTTOM_RIGHT,\n });\n } catch (err) {\n toastr.error(\"Error\", err);\n }\n};\n\nconst deleteReportPdf = {\n dataField: \"id\",\n text: \"Delete report\",\n sort: false,\n formatter: (cell, row) => {\n return (\n {\n e.stopPropagation();\n deleteReportPdfFromRadiology(row);\n }}\n >\n Delete\n \n );\n },\n};\n\nconst deleteReportPdfFromRadiology = async (row) => {\n try {\n const res = await axios.delete(`/reports/deleteReportPdf/${row.report.id}`);\n store.dispatch(fetchVisits());\n toast.success(res.data, {\n position: toast.POSITION.BOTTOM_RIGHT,\n });\n } catch (err) {\n toastr.error(\"Error\", err);\n }\n};\n\n// const cloudCell = {\n// ...scanCommonCell,\n// text: \"Web-based PACS\",\n// dataField: \"scanClouds\",\n// formatter: (cell) => renderAttachedScans(filterCloudScan(cell)),\n// };\n\nconst scanRadiographerCell = (handler) => ({\n ...scanCommonCell,\n formatter: (cell, row) =>\n renderAttachedScansForRadiographer(cell, handler, row.visitId),\n});\n\nconst scanCloudRadiographerCell = (handler) => ({\n ...scanCommonCell,\n text: \"Web-based PACS\",\n dataField: \"scanClouds\",\n formatter: (cell, row) =>\n renderAttachedScansForRadiographer(\n filterCloudScan(cell),\n handler,\n row.visitId\n ),\n});\n\nconst paymentCell = {\n dataField: \"paymentStatus\",\n text: \"Payment\",\n formatter: renderReceiptInfo,\n sort: true,\n};\n\nconst paymentTypeCell = {\n dataField: \"paymentType\",\n text: \"Payment type\",\n sort: true,\n};\n\nconst dentistCell = {\n dataField: \"dentistName\",\n text: \"Referrer\",\n sort: true,\n};\n\nconst radiologistDentistCell = {\n dataField: \"dentistName\",\n text: \"Referrer\",\n sort: true,\n formatter: (cell, row) => renderRadiologistDentistCell(row),\n};\n\nconst receptDetailsCell = (history) => {\n return {\n dataField: \"options\",\n text: \"Receipt details\",\n sort: false,\n formatter: (cell, row) => {\n return
    {\n e.stopPropagation();\n history.push(`${NAVIGATION_CONSTANTS.RECEIPT}/${row.visitId}`);\n }}>View
    \n }\n }\n}\n\n// export const postDicomUrlCell = {\n// dataField: \"postdicomPatientOrderId\",\n// text: \"PostDICOM URL\",\n// sort: false,\n// formatter: (cell, row) => {\n// if (!cell) {\n// return Not available;\n// }\n// return (\n// {\n// const toastId = toast(\"Generating url, please wait...\", {\n// position: toast.POSITION.TOP_CENTER,\n// autoClose: false,\n// hideProgressBar: false,\n// progress: 0.1,\n// style: {\n// color: \"#555\",\n// },\n// });\n// event.stopPropagation();\n// const viewUrl = await generateViewUrl(row.postdicomPatientOrderId)\n// window.open(viewUrl, '_blank')\n// toast.done(toastId)\n// }}\n// className=\"link-span\"\n// >\n// View\n// \n// );\n// },\n// };\n\n// const radiationDoseCell = {\n// dataField: \"dosageGiven\",\n// text: \"Dosage Given\",\n// sort: true\n// }\n\nconst reportCell = () => ({\n dataField: \"report\",\n text: \"Radiology report\",\n sort: false,\n sortValue: (cell) => {\n if (!cell) return false;\n return cell.reportContent && cell.reportContent.length;\n },\n formatter: (cell) => renderReport(cell),\n});\n\nconst reportCellForRadiologist = () => ({\n dataField: \"report\",\n text: \"Radiology report\",\n sort: false,\n headerStyle: () => {\n return { width: \"20%\" };\n },\n sortValue: (cell) => {\n if (!cell) return false;\n return cell.reportContent && cell.reportContent.length;\n },\n formatter: (cell, row) =>\n row.isVisit\n ? renderReportForRadiologist(cell)\n : renderRadiologyReportCell(row),\n});\n\n// Builders\nconst getExtraConfig = (type, handlers) =>\n configs(handlers)[type].filter((i) => i);\n\nexport const buildTable = (type, handlers, isRadiologist = false) => [\n ...commonTableConfig(isRadiologist),\n ...getExtraConfig(type, handlers),\n];\n\nexport const buildPastVisitsTable = (fn) => {\n return [\n {\n dataField: \"visitDate\",\n text: \"Visit Date\",\n sort: true,\n formatter: dateFormatter,\n },\n {\n dataField: \"scans\",\n text: \"Attached Scans\",\n formatter: renderAttachedScans,\n headerStyle: () => {\n return { width: \"30%\" };\n },\n },\n // {\n // dataField: \"report\",\n // text: \"Report\",\n // formatter: renderMiniReport\n // }\n ];\n};\n\nexport const buildInvoicesTableForReceptionist = (fn) => {\n return [\n {\n dataField: \"dentistFullName\",\n text: \"Dentist\",\n sort: true,\n },\n {\n dataField: \"month\",\n text: \"Month\",\n sort: true,\n },\n {\n dataField: \"year\",\n text: \"Year\",\n sort: true,\n },\n {\n dataField: \"\",\n text: \"\",\n sort: false,\n formatter: (cell, row) => invoiceFormatter(cell, row),\n },\n ];\n};\n\nexport const buildInvoicesTableForDentist = (fn) => {\n return [\n {\n dataField: \"month\",\n text: \"Month\",\n sort: true,\n },\n {\n dataField: \"year\",\n text: \"Year\",\n sort: true,\n },\n {\n dataField: \"\",\n text: \"\",\n sort: false,\n formatter: (cell, row) => invoiceFormatter(cell, row),\n },\n ];\n};\n\nexport const buildVouchersTable = (fn) => {\n return [\n {\n dataField: \"id\",\n text: \"ID\",\n sort: true,\n },\n {\n dataField: \"code\",\n text: \"Code\",\n sort: true,\n },\n {\n dataField: \"point\",\n text: \"Amount\",\n sort: true,\n formatter: (cell, row) => voucherAmountFormatter(cell, row),\n },\n {\n dataField: \"status\",\n text: \"Status\",\n sort: true,\n formatter: (cell, row) => voucherStatusFormatter(cell, row),\n },\n ];\n};\n\nfunction handleFileUpload(event, orderId) {\n console.log(\"loading....\");\n const toastId = toast(\"Uploading file, please, wait...\", {\n position: toast.POSITION.TOP_CENTER,\n autoClose: false,\n hideProgressBar: false,\n progress: 0.1,\n style: {\n color: \"#555\",\n },\n });\n\n const data = new FormData();\n\n data.append(\"fullRadiologyReportFile\", event.target.files[0]);\n data.append(\"orderId\", orderId);\n\n axios\n .request({\n method: \"POST\",\n url: \"/order-report/upload-fullradioloy-report-file\",\n data,\n onUploadProgress: (p) => {\n const progress = p.loaded / p.total;\n toast.update(toastId, {\n progress,\n });\n },\n })\n .then(() => {\n toast.done(toastId);\n toastr.success(\"Success\", \"Uploaded successfully\");\n store.dispatch(fetchRadiologyReports());\n })\n .catch((e) => {\n toastr.error(\"Error\", e);\n });\n}\n\nexport const buildRadiologyReportsTable = (fn) => {\n return [\n {\n dataField: \"id\",\n text: \"ID\",\n sort: true,\n },\n {\n dataField: \"orderReportDate\",\n text: \"Order Date\",\n sort: true,\n formatter: dateFormatter,\n },\n {\n dataField: \"patientName\",\n text: \"Patient name\",\n sort: true,\n formatter(cell, { booking, patientName, patientSurname }) {\n if (booking) {\n const { firstName, lastName } = booking.patient;\n return (\n \n {firstName} {lastName}\n \n );\n }\n\n return (\n \n {patientName} {patientSurname}\n \n );\n },\n },\n {\n dataField: \"scanUrl\",\n text: \"Scan file\",\n formatter(cell, { scanUrl, scanName }) {\n if (!scanUrl) {\n return (\n \n \n Not uploaded\n \n );\n }\n return (\n e.stopPropagation()}\n >\n {scanName}\n \n );\n },\n },\n {\n dataField: \"fullRadiologyReportUrl\",\n text: \"Radiologist report\",\n formatter(cell, { id, fullRadiologyReportUrl, fullRadiologyReportName }) {\n if (fullRadiologyReportUrl) {\n return (\n e.stopPropagation()}\n >\n \n {fullRadiologyReportName}\n \n \n );\n }\n\n const userRole = store.getState().profile.profileReducer.profile.role;\n\n if (isUserDentist(userRole)) {\n return renderPendingSection();\n }\n\n if (!fullRadiologyReportUrl) {\n return (\n e.stopPropagation()}\n className=\"link-span\"\n >\n + Add file\n handleFileUpload(event, id)}\n />\n \n );\n }\n },\n },\n ];\n};\n\nexport const buildRegisterAuditReportTable = [\n {\n dataField: \"id\",\n text: \"ID\",\n sort: true,\n headerStyle: () => {\n return { width: \"5%\" };\n },\n },\n {\n dataField: \"name\",\n text: \"Name\",\n sort: true,\n },\n {\n dataField: \"gdc\",\n text: \"GDC\",\n sort: true,\n },\n {\n dataField: \"hasCard\",\n text: \"Credit Card\",\n sort: true,\n formatter: hasCardFormatter,\n },\n {\n dataField: \"speciality\",\n text: \"Speciality\",\n sort: true,\n formatter: specialityFormatter,\n },\n {\n dataField: \"nameOfPractice\",\n text: \"Name of Practice\",\n sort: true,\n },\n {\n dataField: \"telephoneNumber\",\n text: \"Phone\",\n sort: true,\n headerStyle: () => {\n return { width: \"150px\" };\n },\n },\n {\n dataField: \"mobile\",\n text: \"Mobile\",\n sort: true,\n headerStyle: () => {\n return { width: \"150px\" };\n },\n },\n {\n dataField: \"email\",\n text: \"Email\",\n sort: true,\n formatter: emailFormatter\n },\n {\n dataField: \"city\",\n text: \"City\",\n sort: true,\n },\n {\n dataField: \"postCode\",\n text: \"Postal Code\",\n sort: true,\n },\n {\n dataField: \"address\",\n text: \"Address\",\n sort: true,\n },\n {\n dataField: \"linkedCode\",\n text: \"Linked Code\",\n sort: true,\n },\n {\n dataField: \"createdDate\",\n text: \"Registration Date\",\n sort: true,\n formatter: dateFormatterShort,\n },\n];\n\nexport const buildAuditReportTable = [\n {\n dataField: \"visitId\",\n text: \"ID\",\n sort: true,\n headerStyle: () => {\n return { width: \"5%\" };\n },\n },\n {\n dataField: \"date\",\n text: \"Visit Date\",\n sort: true,\n formatter: dateFormatterShort,\n },\n {\n dataField: \"dentistName\",\n text: \"Referrer\",\n sort: true,\n },\n {\n dataField: \"patientName\",\n text: \"Patient\",\n sort: true,\n },\n {\n dataField: \"servicesProvided\",\n text: \"Services provided\",\n sort: false,\n formatter: servicesFormatter,\n },\n {\n dataField: \"totalAmount\",\n text: \"Total, £\",\n sort: true,\n },\n {\n dataField: \"receiptName\",\n text: \"Receipt #\",\n formatter: (cell, row) => receiptFormatter(cell, row),\n sort: true,\n },\n];\n\nexport const buildRadiologistReportTable = (cb, isExpanded) => [\n {\n dataField: \"radiologistName\",\n text: \"Radiologist\",\n sort: true,\n headerStyle: () => {\n return { width: \"38%\" };\n },\n },\n {\n dataField: \"reportsInTimeRange\",\n text: \"Report during selected time\",\n sort: true,\n headerStyle: () => {\n return { width: \"33%\" };\n },\n },\n {\n dataField: \"options\",\n text: \"Expand/Collapse all\",\n sort: true,\n headerStyle: () => {\n return {\n width: \"33%\",\n textAlign: \"right\",\n };\n },\n headerFormatter: (column) => {\n return Expand/Collapse all;\n },\n headerEvents: {\n onClick: cb,\n },\n formatter: (cell, row) => (\n
    \n Expand/Collapse\n
    \n ),\n },\n];\n\nexport const buildPatientsSatisfactionReportTable = (cb) => [\n {\n dataField: \"bookingId\",\n text: \"BookingId\",\n sort: true,\n },\n {\n dataField: \"patientName\",\n text: \"Patient name\",\n sort: true,\n },\n {\n dataField: \"submittedDate\",\n text: \"Submitted Date\",\n sort: true,\n formatter: dateFormatter,\n },\n {\n dataField: \"visitedDate\",\n text: \"Visited date\",\n sort: true,\n formatter: dateFormatter,\n },\n {\n dataField: \"overallExperience\",\n text: \"Overall Experience\",\n sort: true,\n formatter: (cell) => (\n
    \n {upperFirst(toLower(cell.split(\"_\").join(\" \")))}\n
    \n ),\n },\n {\n dataField: \"options\",\n text: \"Options\",\n headerStyle: () => {\n return {\n width: \"33%\",\n textAlign: \"right\",\n };\n },\n formatter: (cell, row) => (\n
    \n cb(row)}>\n View\n \n
    \n ),\n },\n];\n\nexport const buildRadiologistReportTableMini = [\n {\n dataField: \"visitId\",\n text: \"Visit ID\",\n sort: true,\n headerStyle: () => {\n return { width: \"5%\" };\n },\n },\n {\n dataField: \"submittedDate\",\n text: \"Submitted Date\",\n sort: true,\n formatter: dateFormatter,\n },\n {\n dataField: \"patient\",\n text: \"Patient\",\n sort: true,\n sortValue: (cell) => cell.lastName,\n formatter: nameFormatter,\n },\n {\n dataField: \"dentist\",\n text: \"Referrer\",\n sort: true,\n sortValue: (cell) => cell.lastName,\n formatter: nameFormatter,\n },\n];\n\nexport const buildJoinedTable = (fn) => {\n return [\n {\n dataField: \"firstName\",\n text: \"Dentist\",\n sort: true,\n formatter: (cell, row) => nameFormatter(row),\n },\n {\n dataField: \"email\",\n text: \"Email\",\n sort: true,\n formatter: emailFormatter\n },\n {\n dataField: \"mobile\",\n text: \"Phone\",\n sort: true,\n },\n {\n dataField: \"options\",\n text: \"\",\n formatter: (cell, row) => {\n return (\n {\n e.preventDefault();\n fn(row);\n }}\n >\n Unlink\n \n );\n },\n },\n ];\n};\n\nconst orderByDTO = field => {\n if(field.endsWith('-visit') || field.endsWith('-order')) {\n return 'id';\n }\n const map = {\n mainId: 'id',\n visitId: 'id',\n patientName: 'patient',\n dentistName: 'referrer',\n visitDate: 'visit',\n reportDate: 'visit'\n }\n\n return map[field] || field;\n}\n\n export const addSort = (filters, fetchVisits, node) => c => ({\n ...c,\n onSort: sortFunctor(filters, fetchVisits, node)\n })\n\nexport const sortFunctor = (filters, fetchVisits, node) => (field, order) => {\n console.log(field, order, field, order, filters, fetchVisits);\n const desc = order.toLowerCase() === \"desc\"\n const orderBy = orderByDTO(field)\n if(node?.paginationContext) {\n node.paginationContext.currPage= 1; // reset pagination\n }\n \n fetchVisits({\n ...filters,\n criteria: filters.searchString, \n page: 1, \n size: filters.size,\n orderBy, \n desc\n });\n}\n\nexport const buildOptions =\t(fetchFn, filters, visitCount, setFilters) => ({\n totalSize: visitCount,\n onPageChange: (page, size) => fetchFn({ ...filters, criteria: filters.searchString, page, size }),\n onSizePerPageChange: (size, page) => {\n setFilters({ ...filters, size });\n fetchFn({ ...filters, criteria: filters.searchString, page, size })\n },\n paginationSize: 4,\n pageStartIndex: 1,\n firstPageText: 'First',\n prePageText: 'Back',\n nextPageText: 'Next',\n lastPageText: 'Last',\n nextPageTitle: 'First page',\n prePageTitle: 'Pre page',\n firstPageTitle: 'Next page',\n lastPageTitle: 'Last page',\n showTotal: true,\n disablePageTitle: true,\n});\n\nexport const rowEvents = onRowSelected => ({\n onClick: (e, row, rowIndex, type) => {\n onRowSelected(e, row, rowIndex, type);\n }\n});","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport classNames from \"classnames\";\n\nconst TimeAdapter = ({ input, meta, ...rest }) => {\n const mask = [/[0-1]/, /[0-9]/, \":\", /[0-5]/, /[0|5]/];\n return (\n
    \n
    \n
    \n \n
    \n
    \n {\n // input.onBlur(event);\n input.onChange(event.target.value);\n }}\n />\n
    \n );\n};\n\nexport default TimeAdapter;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport classNames from \"classnames\";\nexport default function ProfileSideMenuItem({\n label,\n icon,\n id,\n history,\n navigateTo,\n location: { pathname }\n}) {\n return icon ? (\n
  • \n \n \n {label}\n \n
  • \n ) : (\n
  • \n
    \n {label}\n
    \n
  • \n );\n}\n","import React from \"react\";\nimport ProfileSideMenuItem from \"../ProfileSideMenuItem\";\nimport { NAV_ITEMS } from \"../../constants\";\nimport { rolePermittedNavigationItems } from \"../../../../services/permission.service\"\n\nexport default function ProfileSideMenu({\n history: { location },\n userRole\n}) {\n const comp = i => rolePermittedNavigationItems[userRole].includes(i.permission);\n \n return (\n \n );\n}\n","import React, { Fragment, useEffect } from \"react\";\n\nimport { Link } from \"react-router-dom\";\nimport { NAVIGATION_CONSTANTS } from \"../constants/navigation.constants\";\nimport ImpersonateDentist from \"../modules/dentists/components/ImpersonateDentist\";\nimport { ImpersonatingService } from \"../services/impersonating.service\";\n// import { ReactComponent as Logo } from \"../assets/img/3beam_logo_white_bg.svg\";\nimport { UncontrolledDropdown, DropdownMenu, DropdownToggle } from \"reactstrap\";\nimport { LOCAL_STORAGE_CONSTANTS } from \"../constants/localStorage.constants\";\nimport { loadLocalStoreData } from \"../services/localStorage.service\";\nimport classNames from \"classnames\";\n// import styled from \"styled-components\";\n\n// const StyledLogo = styled(Logo)`\n// position: absolute;\n// max-height: 115px;\n// cursor: default;\n// `;\n\nexport default function Header({\n isUserDentist,\n history,\n logoutAction,\n isUserRadiologist,\n isUserReceptionist,\n isUserLeadRadiographer,\n fetchDentists,\n dentists,\n}) {\n const { isImpersonating } = ImpersonatingService();\n\n const overRideCss = {\n right: \" 0\",\n left: \"auto\",\n };\n\n const openTeamViewer = () =>\n window.open(\"https://get.teamviewer.com/6hktufm\");\n\n const logoutHandler = (e) => {\n e.preventDefault();\n logoutAction();\n history.push(NAVIGATION_CONSTANTS.LOGIN);\n };\n\n const loggedAs = loadLocalStoreData(\n LOCAL_STORAGE_CONSTANTS.ACTING_AS,\n {},\n true\n ).label;\n\n const handleLeaveSession = async () => {\n localStorage.removeItem(LOCAL_STORAGE_CONSTANTS.ACTING_AS);\n localStorage.removeItem(LOCAL_STORAGE_CONSTANTS.AUTH_TOKEN);\n window.location.reload();\n };\n\n useEffect(() => {\n var widget = document.getElementById('chat-widget-container')\n if (widget) {\n widget.style.display = 'block'\n return\n }\n\n if (!document.querySelector('script[src=\"http://cdn.livechatinc.com/tracking.js\"]')) {\n window.__lc = window.__lc || {};\n window.__lc.license = 12490635;\n var lc = document.createElement('script'); lc.type = 'text/javascript'; lc.async = true;\n lc.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'cdn.livechatinc.com/tracking.js';\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(lc, s);\n document.getElementById('root').append(lc)\n }\n })\n\n useEffect(() => () => {\n const chatWidgetContainer = document.getElementById('chat-widget-container');\n if (chatWidgetContainer) {\n chatWidgetContainer.style.display = 'none'\n }\n }, []);\n\n return (\n
    \n \n {/* */}\n \n \n {isImpersonating && (\n \n
      \n {(isUserDentist || isUserRadiologist) && (\n \n \n Order a report\n \n \n )}\n
    • \n \n   You are now logged in as {loggedAs}. You\n can Book, Edit patients as this dentist would.\n
    • \n
    • \n \n
    • \n {isUserRadiologist && (\n
    • \n \n Log Out\n \n
    • \n )}\n
    \n {isUserDentist && (\n
    \n \n \n My Profile\n \n \n \n Profile details\n \n \n Log Out\n \n \n \n
    \n )}\n
    \n )}\n {!isImpersonating && (\n
      \n {!isUserRadiologist && (\n \n \n Bookings\n \n \n )}\n \n \n {isUserRadiologist ? \"Report requests\" : \"Visits\"}\n \n \n {isUserReceptionist && (\n \n )}\n {isUserReceptionist && (\n \n \n Vouchers\n \n \n )}\n {isUserReceptionist && (\n \n \n Staff\n \n \n \n Radiographers\n \n \n Radiologists\n \n \n Dentists\n \n \n \n )}\n {(!isUserLeadRadiographer && !isUserRadiologist) && (\n \n \n Order a report\n \n \n )}\n {isUserDentist && (\n \n \n Educational rewards\n \n \n )}\n
    \n )}\n {!isImpersonating && (\n
    \n {isUserReceptionist && (\n
      \n \n \n Price List\n \n \n \n \n Reports\n \n \n \n Registration Audit Report\n \n \n Radiologist Report\n \n \n Audit Report\n \n \n Patient Satisfaction Report\n \n \n \n
    \n )}\n {isUserDentist && (\n \n \n TeamViewer\n \n )}\n {(isUserDentist || isUserReceptionist) && (\n \n \n Information\n \n \n {isUserDentist && (\n \n Service Level Agreement\n \n )}\n {isUserReceptionist && (\n \n Service Level Agreement\n \n )}\n \n Data Processing Agreement\n \n \n Standard Terms and Conditions\n \n \n Referral Guidelines\n \n {(isUserReceptionist || isUserDentist) &&\n \n Invoices\n }\n {isUserReceptionist && \n Educational Rewards\n }\n {isUserReceptionist && \n Registration Survey\n }\n \n Pricing\n \n \n \n )}\n \n \n My Profile\n \n \n {isUserDentist && (\n \n \n Profile details\n \n \n Credit card information\n \n \n )}\n \n Change password\n \n {isUserDentist && (\n \n Linked accounts - Practice view\n \n )}\n {isUserLeadRadiographer && (\n \n Schedules\n \n )}\n \n Log Out\n \n \n \n
    \n )}\n
    \n );\n}\n","import { useEffect, useRef } from \"react\";\n\nexport function useInterval(callback, delay) {\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n let id = setInterval(tick, delay);\n\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n","export const prepareAddressesInfo = (address) => {\n const addresses = [];\n\n const city = address.post_town.replace(/(\\w)(\\w*)/g, function (g0, g1, g2) {\n return g1.toUpperCase() + g2.toLowerCase();\n });\n\n if (address.line_1) addresses.push(address.line_1);\n if (address.line_2) addresses.push(address.line_2);\n if (address.line_3) addresses.push(address.line_3);\n addresses.push(city);\n addresses.push(address.postcode_outward);\n\n const addressesInfo = {\n fullAddress: addresses.join(\", \"),\n postcode: address.postcode,\n city: city,\n };\n\n return addressesInfo;\n};\n","import React, {useCallback, useEffect, useState} from \"react\";\nimport './index.css';\nimport { Form, Field } from \"react-final-form\";\nimport classNames from \"classnames\";\nimport {\n composeValidators,\n required,\n isEmail\n} from \"../../../profile/helpers\";\nimport Select from \"react-select\";\nimport axios from '../../../../axios-client';\nimport { toastr } from \"react-redux-toastr\";\nconst debounce = (func, wait) => {\n let timeout;\n return (...args) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(this, args), wait);\n };\n};\nexport default function ShareScans({ attachedScans, getAttachedScans, reports, getReports, onClose }) {\n const [patients, setPatients] = useState([]);\n const [page, setPage] = useState(0);\n const [search, setSearch] = useState('');\n const [loading, setLoading] = useState(false);\n\n const fetchPatients = useCallback((searchTerm = '', pageNum = 0) => {\n setLoading(true);\n axios.get(`/patients/retrieve-patients`, {\n params: {\n page: pageNum,\n size: 100,\n search: searchTerm\n }\n }).then(response => {\n const newPatients = response.data.content.map(p => ({\n value: p.id,\n label: `${p.firstName} ${p.lastName}`,\n email: p.email\n }));\n if (pageNum === 0) {\n setPatients(newPatients);\n } else {\n setPatients(prevPatients => [...prevPatients, ...newPatients]);\n }\n setLoading(false);\n }).catch(error => {\n console.error('Error fetching patients:', error);\n setLoading(false);\n });\n }, []);\n\n const handleSearchChange = useCallback(debounce((value) => {\n setSearch(value);\n setPage(0);\n fetchPatients(value, 0);\n }, 300), [fetchPatients]);\n\n useEffect(() => {\n fetchPatients();\n }, []);\n\n const handleSubmit = values => {\n let scanIds = values.selectedAttachedScans ? values.selectedAttachedScans.map(selectedAttachedScan => selectedAttachedScan.value) : [];\n let reportIds = values.selectedReports ? values.selectedReports.map(selectedReport => selectedReport.value) : [];\n axios.post('/visits/share-scan-or-report-with-dentist-by-email', {\n scanIds: scanIds,\n reportIds: reportIds,\n email: values.emailAddress\n }).then(response => {\n toastr.success('success', response.data);\n onClose();\n })\n .catch(error => {\n toastr.error('error', error);\n })\n }\n\n const validateOneOfScansOrReport = (values) => {\n const selectedAttachedScans = values.selectedAttachedScans || [];\n const selectedReports = values.selectedReports || [];\n if (selectedAttachedScans.length === 0 && selectedReports.length === 0) {\n return { selectedAttachedScans: 'Either attached scans or reports must be selected', selectedReports: 'Either attached scans or reports must be selected' };\n }\n return {};\n };\n\n return (\n
    \n
    onClose()} />\n\n
    \n
    \n

    Share

    \n
    \n\n {\n utils.changeValue(state, 'selectedAttachedScans', () => [])\n },\n resetSelectedReports: (args, state, utils) => {\n utils.changeValue(state, 'selectedReports', () => [])\n },\n }}\n validate={validateOneOfScansOrReport}\n render={({ handleSubmit, invalid, form }) => (\n
    handleSubmit(values)}>\n
    \n \n Patient Name\n \n
    \n (\n {\n if (action === 'input-change') {\n handleSearchChange(inputValue);\n }\n }}\n onChange={patient => {\n input.onChange(patient);\n getAttachedScans(patient.value);\n getReports(patient.value);\n form.mutators.resetSelectedAttachedScans();\n form.mutators.resetSelectedReports();\n }}\n />\n )}\n />\n
    \n
    \n\n
    \n \n Attached scans\n \n
    \n (\n {\n input.onChange(patient);\n }}\n />\n )}\n />\n
    \n
    \n\n
    \n \n Report\n \n
    \n (\n {\n input.onChange(patient);\n }}\n />\n )}\n />\n
    \n
    \n\n (\n
    \n \n Email Address\n \n
    \n \n
    \n
    \n )}\n />\n\n
    \n \n Share\n \n
    \n \n )}\n />\n
    \n
    \n )\n}","import React, {useCallback, useEffect, useState} from \"react\";\nimport './index.css';\nimport { Form, Field } from \"react-final-form\";\nimport classNames from \"classnames\";\nimport {\n composeValidators,\n required,\n isEmail\n} from \"../../../profile/helpers\";\nimport Select from \"react-select\";\nimport axios from '../../../../axios-client';\nimport { toastr } from \"react-redux-toastr\";\n\nconst debounce = (func, wait) => {\n let timeout;\n return (...args) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(this, args), wait);\n };\n};\n\nexport default function ReceptionistShareScans({ attachedScans, getAttachedScans, reports, getReports, onClose }) {\n const [emailAddress, setEmailAddress] = useState('');\n const [selectedPatient, setSelectedPatient] = useState('');\n const [patients, setPatients] = useState([]);\n const [page, setPage] = useState(0);\n const [search, setSearch] = useState('');\n const [loading, setLoading] = useState(false);\n\n const fetchPatients = useCallback((searchTerm = '', pageNum = 0) => {\n setLoading(true);\n axios.get(`/patients/retrieve-all-patients`, {\n params: {\n page: pageNum,\n size: 100,\n search: searchTerm\n }\n }).then(response => {\n const newPatients = response.data.content.map(p => ({\n value: p.id,\n label: `${p.firstName} ${p.lastName}`,\n email: p.email\n }));\n if (pageNum === 0) {\n setPatients(newPatients);\n } else {\n setPatients(prevPatients => [...prevPatients, ...newPatients]);\n }\n setLoading(false);\n }).catch(error => {\n console.error('Error fetching patients:', error);\n setLoading(false);\n });\n }, []);\n\n const handleSearchChange = useCallback(debounce((value) => {\n setSearch(value);\n setPage(0);\n fetchPatients(value, 0);\n }, 300), [fetchPatients]);\n\n useEffect(() => {\n fetchPatients();\n }, []);\n\n const handleSubmit = values => {\n\n let reportIds = values.selectedReports ? values.selectedReports.map(selectedAttachedScan => selectedAttachedScan.value) : [];\n let scanIds = values.selectedAttachedScans ? values.selectedAttachedScans.map(selectedReport => selectedReport.value) : [];\n let patientEmail = values.emailAddress;\n let patientId = values.selectedPatient.value;\n let url = `/patients/share-attached-scans-or-report-with-patient/${patientId}?patientEmail=${encodeURIComponent(patientEmail)}`;\n if (scanIds.length > 0) {\n url += `&scanIds=${encodeURIComponent(scanIds.join(','))}`;\n }\n\n if (reportIds.length > 0) {\n url += `&reportIds=${encodeURIComponent(reportIds.join(','))}`;\n }\n axios.put(url, {\n patientId,\n patientEmail\n }).then(response => {\n toastr.success('success', response.data);\n onClose();\n })\n .catch(error => {\n toastr.error('error', error);\n })\n }\n\n const validateOneOfScansOrReport = (values) => {\n const selectedAttachedScans = values.selectedAttachedScans || [];\n const selectedReports = values.selectedReports || [];\n if (selectedAttachedScans.length === 0 && selectedReports.length === 0) {\n return { selectedAttachedScans: 'Either attached scans or reports must be selected', selectedReports: 'Either attached scans or reports must be selected' };\n }\n return {};\n };\n\n return (\n
    \n
    onClose()} />\n\n
    \n
    \n

    Share

    \n
    \n\n {\n utils.changeValue(state, 'selectedAttachedScans', () => [])\n },\n resetSelectedReports: (args, state, utils) => {\n utils.changeValue(state, 'selectedReports', () => [])\n },\n }}\n validate={validateOneOfScansOrReport}\n render={({ handleSubmit, invalid, form }) => (\n
    handleSubmit(values)}>\n
    \n \n Patient Name\n \n
    \n (\n {\n if (action === 'input-change') {\n handleSearchChange(inputValue);\n }\n }}\n onChange={patient => {\n setEmailAddress(patient.email);\n setSelectedPatient(patient);\n input.onChange(patient);\n getAttachedScans(patient.value);\n getReports(patient.value);\n form.mutators.resetSelectedAttachedScans();\n form.mutators.resetSelectedReports();\n }}\n options={patients}\n onMenuScrollToBottom={() => {\n setPage(prevPage => {\n const newPage = prevPage + 1;\n fetchPatients(search, newPage);\n return newPage;\n });\n }}\n isLoading={loading}\n />\n )}\n />\n
    \n
    \n\n (\n
    \n \n Email Address\n \n
    \n \n
    \n
    \n )}\n />\n\n
    \n \n Attached scans\n \n
    \n (\n {\n input.onChange(patient);\n }}\n />\n )}\n />\n
    \n
    \n\n
    \n \n Report\n \n
    \n (\n {\n input.onChange(patient);\n }}\n />\n )}\n />\n
    \n
    \n\n
    \n \n Share\n \n
    \n \n )}\n />\n
    \n
    \n )\n}","//Project dependencies\nimport React, { Fragment, useEffect, useState } from \"react\";\n//Module dependencies\nimport visitsAPI from \"../../modules/visits\";\nimport radiologyReportsAPI from \"../../modules/radiologyReports\";\nimport visitDetailsAPI from \"../../modules/visit-details\";\nimport { Container, Row, Col } from \"reactstrap\";\nimport useModal from \"../../hooks/useModal\";\nimport Modal from \"../../common/modals/Modal\";\nimport { isEmpty } from \"lodash\";\nimport NoData from \"../../common/NoData\";\nimport { useInterval } from \"../../hooks/useInterval\";\nimport { recheckTimer } from \"../../constants/global.constants\";\nimport CreateEditPatient from \"../../modules/patient/components/CreateEditPatient\";\nimport { companyInfo } from \"../../services/legal.service\";\nimport './index.css'\n\nimport {\n\tisUserReceptionist,\n\tisUserDentist,\n\tisUserRadiologist,\n\tisUserRadiographer,\n\tisUserLeadRadiographer\n} from \"../../services/permission.service\";\nimport DefaultLayout from \"../../layouts/DefaultLayout\";\nimport ShareScans from \"../../modules/visits/components/ShareScans\";\nimport ReceptionistShareScans from \"../../modules/visits/components/ReceptionistShareScans\";\nimport axios from '../../axios-client';\nimport moment from 'moment';\n\nconst {\n\tVisitsFilter,\n\tDentistTable,\n\tReceptionistTable,\n\tRadiologistTable,\n\tRadiographerTable,\n} = visitsAPI.components;\n\nconst {\n\tVisitDetailsPopUp,\n\tVisitDetailsRadiologistPopUp,\n} = visitDetailsAPI.components;\n\nconst { ReportDetailsPopup } = radiologyReportsAPI.components;\n\nconst Visits = ({\n\tuserRole,\n\tuserInfo,\n\thasLinkedAccounts,\n\tdentistActions: { fetchDentists },\n\tvisitsActions: {\n\t\tfetchVisits,\n\t\tuploadScans,\n\t\taddScanLink,\n\t\tsetFilters,\n\t\trequestReport,\n\t\tuploadReport,\n\t\tdeleteScan,\n\t\taddLinkDosageForScan,\n fetchReceiptDetails,\n\t},\n\tradiologyReportsActions: { fetchRadiologyReports },\n\tlogoutAction,\n\tvisitDetailsActions: { retrievePreviousVisits, addComment },\n\tdashboardActions: { getBookingInfo },\n\tprofileActions: { getUserProfile },\n\tradiologistsActions: { fetchRadiologists },\n\tpatientActions: { editPatient },\n\tdentists,\n\tradiologists,\n\thistory,\n\tbookingInfo,\n\tvisitsByPatient,\n\tvisits,\n\tvisitCount,\n\tfilters\n}) => {\n\tconst [selectedVisit, setSelectedVisit] = useState(null);\n\tconst [editPatientPopUp, setEditPatientPopUp] = useState(false);\n\tconst [shareScans, setShareScans] = useState(false);\n\tconst [receptionistShareScans, setReceptionistShareScans] = useState(false);\n\tconst { handleModalVisibilityToggle, showModal } = useModal();\n\tconst [patientToEdit, setPatientToEdit] = useState({});\n\tconst [attachedScans, setAttachedScans] = useState([]);\n const [reports, setReports] = useState([]);\n\n\tuseEffect(() => {\n\t\tfetchVisits()\n\t\tgetUserProfile();\n\t\tif (isUserRadiologist(userRole)) {\n\t\t\tfetchRadiologyReports()\n\t\t}\n\t\treturn () => setFilters({});\n\t}, [\n\t\tfetchVisits,\n\t\tfetchRadiologyReports,\n\t\tgetUserProfile,\n\t\tsetFilters,\n\t\tuserRole,\n\t]);\n\n\tuseEffect(() => {\n\t\tshowModal && fetchRadiologists();\n\t}, [fetchRadiologists, showModal]);\n\n\tuseInterval(() => {\n\t\tfetchVisits();\n\t}, recheckTimer);\n\n\tconst handleConfirmRequest = (data) => {\n\t\thandleModalVisibilityToggle();\n\t\trequestReport({\n\t\t\tvisitId: selectedVisit.visitId,\n\t\t\tradiologistId: companyInfo.defaultRadiologistId,\n\t\t\tsameDayProcessing: data.sameDayProcessing,\n\t\t});\n\t\tsetSelectedVisit(null);\n\t};\n\n\tconst handlePatientEdit = (editedPatient) => {\n\t\tsetEditPatientPopUp(false);\n\t\teditPatient(\n\t\t\t{ id: patientToEdit.id, ...editedPatient },\n\t\t\ttrue,\n\t\t\tselectedVisit.visitId\n\t\t);\n\t};\n\n\tconst handleReportDelete = ({ id: scanId }, visitId, isReport) => {\n\t\tdeleteScan({\n\t\t\tvisitId,\n\t\t\tscanId,\n\t\t\tisReport,\n\t\t});\n\n\t\tsetSelectedVisit(null);\n\t};\n\n\tconst renderCorrectTable = () => {\n\t\tif (isEmpty(visits))\n\t\t\treturn No results which match the criteria;\n\t\tif (isUserDentist(userRole)) {\n\t\t\treturn (\n\t\t\t\t {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tsetSelectedVisit(row);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\tif (isUserRadiologist(userRole)) {\n\t\t\treturn (\n\t\t\t\t {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tsetSelectedVisit(row);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\tif (isUserRadiographer(userRole)) {\n\t\t\treturn (\n\t\t\t\t {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tsetSelectedVisit(row);\n\t\t\t\t\t}}\n\t\t\t\t\tdeleteScan={handleReportDelete}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\tif (isUserReceptionist(userRole)) {\n\t\t\treturn (\n\t\t\t\t {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tsetSelectedVisit(row);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tconst getAttachedScans = (patientId) => {\n\t\taxios.get(`/visits/patient/attached-scans/${patientId}`).then(response => {\n\t\t\tlet attachedScans = [];\n\t\t\tresponse.data.map(s => attachedScans.push({\n\t\t\t\tvalue: s.id,\n\t\t\t\tlabel: s.scanName + ' / ' + moment.utc(s.creationAt).format('DD.MM.YYYY')\n\t\t\t}))\n\t\t\tsetAttachedScans(attachedScans);\n\t\t})\n\t}\n\n const getReports = (patientId) => {\n axios.get(`/visits/patient/reports/${patientId}`).then(response => {\n let reports = [];\n response.data.map(r => reports.push({\n value: r.id,\n label: r.reportContent + ' / ' + moment.utc(r.submittedReportDate).format('DD.MM.YYYY')\n }))\n setReports(reports);\n })\n }\n\n\tconst renderCorrectPopup = () => {\n\t\tif (!selectedVisit || showModal) return null;\n\t\tif (isUserRadiologist(userRole) && selectedVisit.isVisit) {\n\t\t\treturn (\n\t\t\t\t setSelectedVisit(null)}\n\t\t\t\t\tgetBookingInfo={getBookingInfo}\n\t\t\t\t\tretrievePreviousVisits={retrievePreviousVisits}\n\t\t\t\t\tbookingInfo={bookingInfo}\n\t\t\t\t\tvisitsByPatient={visitsByPatient}\n\t\t\t\t\ttype=\"visit\"\n\t\t\t\t\tuploadReport={uploadReport}\n\t\t\t\t\tonReportUpload={(files, onUploadProgress) => {\n\t\t\t\t\t\tuploadScans({\n\t\t\t\t\t\t\tfiles,\n\t\t\t\t\t\t\tbookingId: selectedVisit.mainId,\n\t\t\t\t\t\t\tisReport: true,\n\t\t\t\t\t\t\tonUploadProgress,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t\tisUserRadiologist={isUserRadiologist(userRole)}\n\t\t\t\t\tisUserRadiographer={isUserRadiographer(userRole)}\n\t\t\t\t\tonClose={() => setSelectedVisit(null)}\n\t\t\t\t\tdeleteScan={handleReportDelete}\n\t\t\t\t\taddComment={addComment}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif (isUserRadiologist(userRole) && !selectedVisit.isVisit) {\n\t\t\treturn (\n\t\t\t\t setSelectedVisit(null)}\n\t\t\t\t\treport={selectedVisit.metaData}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t setSelectedVisit(null)}\n\t\t\t\tfetchRadiologists={fetchRadiologists}\n\t\t\t\tonPatientEdit={(patientToEdit) => {\n\t\t\t\t\tsetEditPatientPopUp(true);\n\t\t\t\t\tsetPatientToEdit(patientToEdit);\n\t\t\t\t}}\n\t\t\t\tonFileUpload={(files, onUploadProgress) => {\n\t\t\t\t\tuploadScans({\n\t\t\t\t\t\tfiles,\n\t\t\t\t\t\tbookingId: selectedVisit.visitId,\n\t\t\t\t\t\tisReport: false,\n\t\t\t\t\t\tonUploadProgress,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonReportUpload={(files, onUploadProgress) => {\n\t\t\t\t\tuploadScans({\n\t\t\t\t\t\tfiles,\n\t\t\t\t\t\tbookingId: selectedVisit.visitId,\n\t\t\t\t\t\tisReport: true,\n\t\t\t\t\t\tonUploadProgress,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonAddLinkForScan={(scanUrl) => {\n\t\t\t\t\taddScanLink({ scanUrl, visitId: selectedVisit.visitId });\n\t\t\t\t\tsetSelectedVisit(visits.find((i) => i.id === selectedVisit.visitId));\n\t\t\t\t}}\n\t\t\t\tonAddLinkDosageForScan={(dosage) => {\n\t\t\t\t\taddLinkDosageForScan({ dosage, visitId: selectedVisit.visitId });\n\t\t\t\t\tsetSelectedVisit(visits.find((i) => i.id === selectedVisit.visitId));\n\t\t\t\t}}\n\t\t\t\tdeleteScan={handleReportDelete}\n\t\t\t\taddComment={addComment}\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t{isUserRadiologist(userRole) ? \"Report requests\" : \"Visits\"}\n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{isUserDentist(userRole) && \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t{isUserReceptionist(userRole) && \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{renderCorrectTable()}\n\t\t\t\t\t\n\t\t\t\t\t{renderCorrectPopup()}\n\t\t\t\t\t{editPatientPopUp && (\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetEditPatientPopUp(false);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tmode=\"edit\"\n\t\t\t\t\t\t\tpatient={patientToEdit}\n\t\t\t\t\t\t\teditPatient={handlePatientEdit}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{showModal && (\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\thandleModalVisibilityToggle();\n\t\t\t\t\t\t\t\tsetSelectedVisit(null);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tradiologists={radiologists}\n\t\t\t\t\t\t\tmode=\"request\"\n\t\t\t\t\t\t\tvisitDetails={selectedVisit}\n\t\t\t\t\t\t\tonConfirm={handleConfirmRequest}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{shareScans && (\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetShareScans(false);\n\t\t\t\t\t\t\t\tsetAttachedScans([]);\n setReports([]);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{receptionistShareScans && (\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetReceptionistShareScans(false);\n\t\t\t\t\t\t\t\tsetAttachedScans([]);\n setReports([]);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n};\n\nVisits.propTypes = {};\n\nexport default Visits;\n","//Project dependencies\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { createStructuredSelector } from \"reselect\";\nimport visitsAPI from \"../../modules/visits\";\nimport radiologyReportsApi from \"../../modules/radiologyReports\";\nimport visitDetailsAPI from \"../../modules/visit-details\";\nimport profileAPI from \"../../modules/profile\";\nimport radiologistsApi from \"../../modules/radiologists\";\nimport VisitsContainer from \"./container\";\nimport { withRouter } from \"react-router\";\nimport dentistAPI from \"../../modules/dentists\";\nimport dashboardAPI from \"../../modules/dashboard\";\nimport patientsApi from \"../../modules/patient\";\nimport { logoutAction } from \"../../actions/authActions\";\n\nconst mapStateToProps = state =>\n createStructuredSelector({\n dentists: dentistAPI.selectors.getDentists,\n radiologists: radiologistsApi.selectors.getRadiologists,\n userRole: profileAPI.selectors.getUserRole,\n userInfo: profileAPI.selectors.getUserProfileInfo,\n hasLinkedAccounts: profileAPI.selectors.getHasLinkedAccounts,\n visits: visitsAPI.selectors.getVisits,\n visitCount: visitsAPI.selectors.getVisitCount,\n filters: visitsAPI.selectors.getVisitFilter,\n visitsByPatient: visitDetailsAPI.selectors.getPastVisits,\n bookingInfo: dashboardAPI.selectors.getBookingInfo\n });\n\nconst mapDispatchToProps = dispatch => ({\n profileActions: bindActionCreators(profileAPI.actions, dispatch),\n dentistActions: bindActionCreators(dentistAPI.actions, dispatch),\n visitsActions: bindActionCreators(visitsAPI.actions, dispatch),\n radiologyReportsActions: bindActionCreators(radiologyReportsApi.actions, dispatch),\n visitDetailsActions: bindActionCreators(visitDetailsAPI.actions, dispatch),\n dashboardActions: bindActionCreators(dashboardAPI.actions, dispatch),\n radiologistsActions: bindActionCreators(radiologistsApi.actions, dispatch),\n logoutAction: () => {\n dispatch(logoutAction());\n },\n patientActions: bindActionCreators(patientsApi.actions, dispatch)\n});\n\nexport default withRouter(\n connect(\n mapStateToProps,\n mapDispatchToProps\n )(VisitsContainer)\n);\n","//Project dependencies\nimport React, { Fragment, useState } from \"react\";\n//Module dependencies\nimport dashboardAPI from \"../../modules/dashboard\";\nimport {\n\tisUserReceptionist,\n\tisUserDentist,\n\tisUserRadiologist,\n\tisUserRadiographer,\n\tisUserLeadRadiographer\n} from \"../../services/permission.service\";\nimport DefaultLayout from \"../../layouts/DefaultLayout\";\n\nconst {\n\tDashboardContainer,\n} = dashboardAPI.components;\n\nconst Dashboard = ({\n\tuserRole,\n\tbookings,\n\tbookingsWithoutDate,\n\tuserProfile,\n\tbookingInfo,\n\tpatientsArray,\n\tscanPrices,\n\tscanPricesForPayment,\n\thasCreditCard,\n\tdashboardActions: {\n\t\tfetchOccupiedSlotsByTimeRange,\n\t\tfetchOccupiedSlots,\n\t\tfetchOccupiedSlotsByDateRange,\n\t\tfetchTemporallyOccupiedSlots,\n\t\tupdateTemporallyOccupiedSlots,\n\t\tgetAllBookingsForCurrentWeek,\n\t\tgetBookingsByDateRange,\n\t\tupdateVisit,\n updateVisitUnvisited,\n assignVisitTime,\n\t\tunAssignVisitTime,\n\t\tgetAllBookingsWithoutDate,\n\t\tdeleteBooking,\n\t\tgetBookingInfo,\n\t\tgetScanPrices,\n\t\tgetScanPricesForBooking,\n\t\tcreateBooking,\n\t\tupdateBooking,\n\t\tgetLastSelectedPaymentType,\n\t\tcheckFirstCBCTIsOrNot,\n\t\tgetBlockedDatesList\n\t},\n\toccupiedSlotsTimeRange,\n\toccupiedSlots,\n\ttemporallyOccupiedSlots,\n\tblockedSlotsDateRange,\n\tselectedPaymentType,\n\tradiologistsActions: { fetchRadiologists },\n\tradiologists,\n\tpatientActions: { getAllPatients, createPatient, editPatient },\n\tvisitDetailsActions: { retrievePreviousVisits, addComment },\n\tvisitsByPatient,\n\tdentistActions: { fetchDentists },\n\tdentists,\n\tlogoutAction,\n\thistory\n}) => {\n\tconst [selectedBooking, setSelectedBooking] = useState(null);\n\tconst [patientToEdit, setPatientToEdit] = useState({});\n\n\tconst handlePatientEdit = editedPatient => {\n\t\tsetPatientToEdit(editedPatient);\n\t\teditPatient(\n\t\t\t{ id: patientToEdit.id, ...editedPatient },\n\t\t\tfalse,\n\t\t\tselectedBooking.id\n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tsetSelectedBooking(data);\n\t\t\t\t\t}}\n\t\t\t\t\tisUserReceptionist={isUserReceptionist(userRole)}\n\t\t\t\t\tisUserRadiographer={isUserRadiographer(userRole)}\n\t\t\t\t\tisUserDentist={isUserDentist(userRole)}\n\t\t\t\t/>\n\t\t\t\n\t\t\n\t);\n};\n\nDashboard.propTypes = {};\n\nexport default Dashboard;\n","//Project dependencies\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { createStructuredSelector } from \"reselect\";\nimport dashboardAPI from \"../../modules/dashboard\";\nimport profileAPI from \"../../modules/profile\";\nimport visitsAPI from \"../../modules/visits\";\nimport visitDetailsAPI from \"../../modules/visit-details\";\nimport patientsAPI from \"../../modules/patient\";\nimport Dashboard from \"./container\";\nimport { withRouter } from \"react-router\";\nimport dentistAPI from \"../../modules/dentists\";\nimport radiologistsApi from '../../modules/radiologists'\nimport { logoutAction } from \"../../actions/authActions\";\n\nconst mapStateToProps = () =>\n\tcreateStructuredSelector({\n\t\tdentists: dentistAPI.selectors.getDentists,\n\t\tuserRole: profileAPI.selectors.getUserRole,\n\t\tuserProfile: profileAPI.selectors.getUserProfileInfo,\n\t\tbookings: dashboardAPI.selectors.getBookings,\n\t\tbookingInfo: dashboardAPI.selectors.getBookingInfo,\n\t\tscanPricesForPayment: dashboardAPI.selectors.getScanPricesForPayment,\n\t\tvisitsByPatient: visitDetailsAPI.selectors.getPastVisits,\n\t\thasCreditCard: profileAPI.selectors.hasCreditCard,\n\t\tbookingsWithoutDate: dashboardAPI.selectors.getBookingsWithoutDate,\n\t\tpatientsArray: patientsAPI.selectors.getPatientsArray,\n\t\tscanPrices: dashboardAPI.selectors.getScanPrices,\n\t\tradiologists: radiologistsApi.selectors.getRadiologists,\n\t\toccupiedSlotsTimeRange: dashboardAPI.selectors.getOccupiedSlotsTimeRange,\n\t\toccupiedSlots: dashboardAPI.selectors.getOccupiedSlotsAll,\n\t\ttemporallyOccupiedSlots: dashboardAPI.selectors.getTemporallyOccupiedSlots,\n\t\tblockedSlotsDateRange: dashboardAPI.selectors.getBlockedDatesList,\n\t\tselectedPaymentType: dashboardAPI.selectors.getSelectedPaymentType\n\t});\n\nconst mapDispatchToProps = dispatch => ({\n\tdashboardActions: bindActionCreators(dashboardAPI.actions, dispatch),\n\tpatientActions: bindActionCreators(patientsAPI.actions, dispatch),\n\tprofileActions: bindActionCreators(profileAPI.actions, dispatch),\n\tdentistActions: bindActionCreators(dentistAPI.actions, dispatch),\n\tvisitsActions: bindActionCreators(visitsAPI.actions, dispatch),\n\tvisitDetailsActions: bindActionCreators(visitDetailsAPI.actions, dispatch),\n\tradiologistsActions: bindActionCreators(radiologistsApi.actions, dispatch),\n\tlogoutAction: () => {\n\t\tdispatch(logoutAction());\n\t}\n});\n\nexport default withRouter(\n\tconnect(\n\t\tmapStateToProps,\n\t\tmapDispatchToProps\n\t)(Dashboard)\n);\n","module.exports = __webpack_public_path__ + \"static/media/3Beam-01.d85d41f4.png\";","// fetchers for routines\nimport { createThunkRoutine } from \"redux-thunk-routine\";\n\n// Audit reports\nexport const FetchDataRoutine = createThunkRoutine(\n \"reports/FETCH_AUDIT_REPORT_DATA\"\n);\nexport const SET_AUDIT_REPORT_FILTERS = \"reports/SET_AUDIT_REPORT_FILTERS\";\n\n// Radiologist reports\nexport const FetchRadiologistReportRoutine = createThunkRoutine(\n \"reports/FETCH_RADIOLOGIST_REPORT_DATA\"\n);\n\nexport const SET_RADIOLOGIST_REPORT_FILTERS =\n \"reports/SET_RADIOLOGIST_REPORT_FILTERS\";\n\n// Patients satisfaction reports\nexport const FetchPatientsSatisfactionRoutine = createThunkRoutine(\n \"reports/FETCH_PATIENTS_SATISFACTION_REPORT_DATA\"\n);\nexport const SET_PATIENTS_SATISFACTION_REPORT_FILTERS =\n \"reports/SET_PATIENTS_SATISFACTION_REPORT_FILTERS\";\n\n // Audit registration\n export const FetchAuditRegistrationRoutine = createThunkRoutine(\n \"reports/FETCH_REGISTRATION_AUDIT_REPORT_DATA\"\n );\n ","export const LOCAL_STORAGE_CONSTANTS = {\n AUTH_TOKEN: \"auth_token\",\n ORIGINAL_AUTH_TOKEN: \"original_auth_token\",\n ACTING_AS: \"acting_as\",\n POSTDICOM_ACCOUNT_ID: \"postdicom_accountuid\",\n POSTDICOM_USER_LIST: \"postdicom_user_list\",\n};\n","import React from \"react\";\n\nexport default function DiscardModal({\n onDiscard,\n onClose,\n children,\n title = \"Unsaved Changes\",\n confirmBtn = \"Discard\"\n}) {\n return (\n
    \n
    \n
    \n
    \n {title}\n \n ×\n \n
    \n
    \n

    {children}

    \n
    \n
    \n \n Cancel\n \n \n {confirmBtn}\n \n
    \n
    \n
    \n
    \n );\n}\n","import React, { useState } from \"react\";\n\nexport default function JoinModal({ onClose, onJoin, linkCode }) {\n const [code, setCode] = useState(\"\");\n return (\n
    \n
    \n
    \n
    \n Link account\n \n
    \n
    \n
    \n \n setCode(e.target.value)}\n />\n
    \n
    \n
    \n \n Cancel\n \n onJoin(code)}\n >\n Link account\n \n
    \n
    \n
    \n
    \n );\n}\n","import React from \"react\";\nimport Moment from \"moment\";\nimport RadiologySelect from \"../../modules/radiologists/components/RadiologySelect\";\nimport { Form } from \"react-final-form\";\nimport { dateFormat } from \"../../constants/global.constants\";\n\nexport default function RequestModal({\n onClose,\n onConfirm,\n visitDetails,\n radiologists\n}) {\n const { patientName, visitDate } = visitDetails;\n const formatPatientVisit = () =>\n `${patientName} on ${Moment(visitDate).format(dateFormat)}`;\n return (\n
    \n
    \n
    \n
    \n New Repost Request\n \n
    \n
    \n {}}\n render={({ handleSubmit, values, invalid }) => (\n
    \n
    \n \n Visit:\n \n
    {formatPatientVisit()}
    \n
    \n \n
    \n \n Cancel\n \n onConfirm(values)}\n >\n Request\n \n
    \n \n )}\n />\n
    \n
    \n
    \n
    \n );\n}\n","import React from \"react\";\nimport { Button } from \"reactstrap\";\nimport { dateFormat } from \"../../constants/global.constants\";\nimport Moment from \"moment\";\n\nexport default function ReportModal({\n onClose,\n report: { reportContent, requestedReportDate }\n}) {\n return (\n
    \n
    \n
    \n
    \n Report was requested on{\" \"}\n {Moment(requestedReportDate).format(dateFormat)}\n \n
    \n
    {reportContent}
    \n
    \n \n
    \n
    \n
    \n
    \n );\n}\n","import React from \"react\";\nimport Moment from \"moment\";\nimport { Form, Field } from \"react-final-form\";\nimport { Row, Col } from 'reactstrap'\nimport { dateFormat } from \"../../constants/global.constants\";\nimport { required } from \"../../modules/profile/helpers\";\nimport ReactSelectAdapter from \"../../common/masks/ReactSelectAdapter\";\nimport NoData from \"../../common/NoData\";\nimport {\n VOUCHER_AMOUNTS,\n VOUCHER_QUANTITIES\n} from \"../../constants/global.constants\";\n\nexport default function VoucherModal({\n onClose,\n onGenerateVoucherCodes\n}) {\n\n const generateVoucherCodes = (values) => {\n const { selectedAmount, selectedQuantity } = values;\n onGenerateVoucherCodes(selectedAmount.value, selectedQuantity.value);\n onClose();\n }\n\n return (\n
    \n
    \n
    \n
    \n Generate voucher codes\n \n
    \n
    \n
    \n Choose relevant data to get voucher codes\n
    \n {}}\n render={({ handleSubmit, values, invalid }) => (\n
    handleSubmit(values)}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n generateVoucherCodes(values)}\n >\n Generate codes\n \n \n \n
    \n )}\n />\n
    \n
    \n
    \n
    \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport axios from '../../axios-client'\n\nexport default function SurveyModal({\n completeSurvey\n}) {\n const [surveyType, setSurveyType] = useState(0);\n const [surveys, setSurveys] = useState([])\n\n const changeSurveyType = (event) => {\n setSurveyType(event.target.value)\n }\n\n useEffect(() => {\n axios.get('/registration-surveys/retrieve-registration-survey-items').then(response => {\n setSurveys(response.data)\n })\n }, [])\n\n return (\n
    \n
    \n
    \n
    \n

    Please, answer the question

    \n
    \n

    How did you hear about us?

    \n
    \n
    completeSurvey(e, surveyType)}>\n
    changeSurveyType(event)}>\n {surveys.map(survey =>\n
    \n \n \n
    \n )}\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n );\n}","import React, { useEffect, useState } from \"react\";\nimport axios from '../../axios-client';\nimport './index.css';\n\nexport default function SurveyDetailsModal({\n registrationSurveyItem,\n onClose\n}) {\n const [registrationSurveyDetails, setRegistrationSurveyDetails] = useState([])\n useEffect(() => {\n axios.get(`/registration-surveys/retrieve-registration-surveys?registrationSurveyItemId=${registrationSurveyItem.id}`)\n .then(response => {\n setRegistrationSurveyDetails(response.data)\n })\n }, []);\n\n return (\n
    \n
    \n
    \n
    \n
    \n

    {registrationSurveyItem.name}

    \n \n \n \n \n
    \n
    \n
    \n {registrationSurveyDetails.map((registrationSurveyDetail, i) =>\n
    0 ? \"survey-details-block-item\" : \"\"}>\n

    \n {registrationSurveyDetail.dentist.firstName + \" \" + registrationSurveyDetail.dentist.lastName}\n

    \n
    \n )}\n
    \n
    \n
    \n
    \n
    \n );\n}","import React, { Component } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport DiscardModal from \"./DiscardModal\";\nimport JoinModal from \"./JoinModal\";\nimport RequestModal from \"./RequestModal\";\nimport ReportModal from \"./ReportModal\";\nimport VoucherModal from \"./VoucherModal\";\nimport SurveyModal from \"./SurveyModal\";\nimport SurveyDetailsModal from \"./SurveyDetailsModal\";\n\nconst modalRoot = document.getElementById(\"modal-root\");\n\nclass Modal extends Component {\n constructor(props) {\n super(props);\n this.el = document.createElement(\"div\");\n }\n\n componentDidMount() {\n modalRoot.appendChild(this.el);\n }\n\n componentWillUnmount() {\n modalRoot.removeChild(this.el);\n }\n\n render() {\n switch (this.props.mode) {\n case \"report\":\n return createPortal(, this.el);\n case \"discard\":\n return createPortal(, this.el);\n case \"join\":\n return createPortal(, this.el);\n case \"request\":\n return createPortal(, this.el);\n case \"voucher\":\n return createPortal(, this.el);\n case \"survey\":\n return createPortal(, this.el);\n case \"surveyDetails\":\n return createPortal(, this.el);\n // no default\n }\n }\n}\n\nModal.defaultProps = {\n mode: \"discard\",\n};\n\nexport default Modal;\n","import React, { Component } from \"react\";\nimport NoData from \"../../../../common/NoData\";\nimport { capitalize } from \"lodash\";\nimport { presentationDateFormatAm } from \"../../../../constants/global.constants\";\nimport Moment from 'moment';\nclass BookingsWithoutTime extends Component {\n state = {\n searchString: null,\n };\n\n buildTitle(event) {\n const { patient } = event;\n\n return `${capitalize(patient.title)} ${patient.name}`;\n }\n\n buildDoctorName(event) {\n const { dentist } = event;\n return `Dr. ${dentist.firstName} ${dentist.lastName}`;\n }\n\n selectionChange(event, type) {\n this.setState({ [type]: event.target.value });\n }\n\n render() {\n const { bookingsWithoutDate } = this.props;\n const { searchString } = this.state;\n\n let resultedArray = [...bookingsWithoutDate];\n\n if (searchString && searchString !== \"\") {\n const query = searchString.toLowerCase();\n resultedArray = resultedArray.filter((item) => {\n return (\n item.patient.name.toLowerCase().includes(query) ||\n item.dentist.lastName.toLowerCase().includes(query) ||\n item.dentist.firstName.toLowerCase().includes(query) ||\n item.patient.dob.replace(/-/g, \"/\").includes(query)\n );\n });\n }\n\n return (\n
    \n ))}\n
    \n \n );\n }\n}\n\nexport default BookingsWithoutTime;\n","import React from \"react\";\nimport Moment from \"moment\";\nimport VisitedLabel from \"../../../visit-details/components/VisitedLabel\";\nimport VisitPayment from \"../../../visit-details/components/VisitPayment\";\nimport {\n\tpresentationDateFormat,\n\tslotDuration,\n} from \"../../../../constants/global.constants\";\nimport Modal from \"../../../../common/modals/Modal\";\nimport useModal from \"../../../../hooks/useModal\";\nimport \"./styles.scss\";\n// import { createPostDICOMOrder } from \"../../../../plugins/postdicom/util\";\n\nexport default function BookingDetailsShort({\n\tvisitDetails,\n\tisUserReceptionist,\n\tisUserDentist,\n\tdetailsPopupPosition,\n\tonRemove,\n\tshowVisitDetails,\n\tmarkAsVisited,\n markAsUnvisited,\n\tonClose,\n\tloading,\n\thandleLoading\n}) {\n\tconst { showModal, handleModalVisibilityToggle } = useModal();\n\tconst isVisited = visitDetails.event.extendedProps.visited;\n\tconst isPaidByPatient = visitDetails.event.extendedProps.paidByPatient;\n\n\tconst canCancel = () => {\n\t\treturn (isUserReceptionist || isUserDentist) && !isVisited;\n\t};\n\tconst patientName = visitDetails.event.extendedProps.patient.name;\n\tconst patientDate =\n\t\tMoment(visitDetails.event.start).format(presentationDateFormat) +\n\t\t\" – \" +\n\t\tMoment(visitDetails.event.start)\n\t\t\t.add(Number(slotDuration), \"minutes\")\n\t\t\t.format(\"h:mm a\");\n\n\tconst bookingId = visitDetails.event.id;\n\n\tfunction renderStatus(status) {\n\t\tlet className = \"text-warning\",\n\t\t\ttext = \"Not filled out\";\n\n\t\tif (status === 1) {\n\t\t\t// negative\n\t\t\tclassName = \"text-success\";\n\t\t\ttext = \"Negative\";\n\t\t} else if (status === 2) {\n\t\t\t// positive\n\t\t\tclassName = \"text-danger\";\n\t\t\ttext = \"Positive\";\n\t\t}\n\n\t\treturn {text};\n\t}\n\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t

    {visitDetails.event.title}

    \n\t\t\t\t\t{canCancel() && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tonRemove({\n\t\t\t\t\t\t\t\t\tname: patientName,\n\t\t\t\t\t\t\t\t\tdate: patientDate,\n\t\t\t\t\t\t\t\t\tid: bookingId,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t onClose()}>\n\t\t\t\t\t\t×\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t{visitDetails.event.extendedProps.tel && (\n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t  {visitDetails.event.extendedProps.tel}\n\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t)}\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t{patientDate}\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\" \"}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{visitDetails.event.extendedProps.doctor}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\" \"}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tCOVID-19 survey result:{\" \"}\n\t\t\t\t\t\t\t\t{renderStatus(\n\t\t\t\t\t\t\t\t\tvisitDetails.event.extendedProps.selectedCovidStatus\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t

    \n\t\t\t\t\t\t{isPaidByPatient && (isUserReceptionist || isUserDentist) && (\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t showVisitDetails()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tView details\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{!isUserReceptionist && !visitDetails.event.extendedProps.visited && (\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!visitDetails.event.extendedProps.visited && isUserReceptionist && (\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\thandleLoading(true)\n\t\t\t\t\t\t\t\t\t\t// create patient order in PostDICOM asynchronously\n\t\t\t\t\t\t\t\t\t\t// createPostDICOMOrder({\n\t\t\t\t\t\t\t\t\t\t// id: +visitDetails.event.id,\n\t\t\t\t\t\t\t\t\t\t// ...visitDetails.event.extendedProps,\n\t\t\t\t\t\t\t\t\t\t// });\n\t\t\t\t\t\t\t\t\t\tisPaidByPatient\n\t\t\t\t\t\t\t\t\t\t\t? (function () { handleModalVisibilityToggle(); handleLoading(false) })()\n\t\t\t\t\t\t\t\t\t\t\t: markAsVisited(bookingId);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tMark as Visited\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t)}\n\n {visitDetails.event.extendedProps.visited && (\n
    \n \n Visited\n \n
    \n )}\n {visitDetails.event.extendedProps.visited && isUserReceptionist && (\n
    \n {\n handleLoading(true);\n markAsUnvisited(bookingId);\n handleLoading(false);\n }}\n >Return to unvisited\n \n
    \n )}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{showModal && (\n\t\t\t\t\n\t\t\t\t\tBy clicking Mark as visited\n\t\t\t\t\t
    I confirm that patient payment was successful\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n}\n","import { slotDuration } from \"../../../../constants/global.constants\";\n\nconst businessHours = [\n\t{\n\t\tstartTime: \"10:00\",\n\t\tendTime: \"18:00\",\n\t\tdaysOfWeek: [1, 2, 3, 4, 5]\n\t},\n\t{\n\t\tstartTime: \"09:00\",\n\t\tendTime: \"18:00\",\n\t\tdaysOfWeek: [6]\n\t}\n];\n\nconst calendarConfig = {\n\tminTime: \"08:00:00\",\n\tmaxTime: \"20:00:00\",\n\tdefaultTimedEventDuration: `00:${slotDuration}:00`,\n\tslotDuration: `00:${slotDuration}:00`,\n\tslotLabelInterval: `00:${slotDuration}:00`,\n\tfirstDay: 1\n};\n\nconst slotLabelFormat = {\n\thour: \"numeric\",\n\tminute: \"2-digit\",\n\tomitZeroMinute: false,\n\tmeridiem: \"short\"\n};\n\nexport { businessHours, calendarConfig, slotLabelFormat };\n","import React, { Component, Fragment } from \"react\";\nimport Modal from \"../../../../common/modals/Modal\";\n\nclass CancelBookingModal extends Component {\n onDiscard = () => {\n const { id } = this.props.patientInfo;\n this.handleModalVisibilityToggle();\n //this.setState({ showBookingDetailsShort: false });\n this.props.deleteBooking(id);\n };\n\n handleModalVisibilityToggle(e) {\n e && e.preventDefault();\n this.props.closeCancelBooking();\n }\n\n render() {\n const { name, date } = this.props.patientInfo;\n\n return (\n this.onDiscard()}\n onClose={e => this.handleModalVisibilityToggle(e)}\n title=\"Cancel Booking?\"\n confirmBtn=\"Confirm\"\n >\n Are you sure you want to cancel a scan booking for:\n
    \n {name}\n {date && (\n \n {\" \"}\n on {date}\n \n )}\n \n );\n }\n}\n\nexport default CancelBookingModal;\n","import React from 'react'\n\nconst ToothItem = ({ tooth: { name } }) => {\n return ;\n };\n \n export default ToothItem","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst LabelItem = ({ tooth: { name }, number, className }) => {\n return (\n \n );\n};\n\nexport default styled(LabelItem)`\n border: 1px solid #ccc;\n border-radius: 4px;\n padding: 2px;\n`;\n","import React, { Component } from \"react\";\nimport TeethSVG from \"../TeethSVG\";\nimport ToothItem from \"../ToothItem\";\nimport StyledLabelItem from \"../ToothLabel\";\n\nclass TeethSelector extends Component {\n selectAllTeethInJaw(leftAnchor, rightAnchor) {\n const allTeeth = document.querySelectorAll(\"input.ap-tooth-checkbox\");\n const teethToWorkWith = Array.from(allTeeth).filter(i => {\n return i.id.startsWith(leftAnchor) || i.id.startsWith(rightAnchor);\n });\n const atLeastOneChecked = teethToWorkWith.some(i => i.checked);\n const allChecked = teethToWorkWith.every(i => i.checked);\n for (let tooth of teethToWorkWith) {\n if (atLeastOneChecked) {\n tooth.checked = atLeastOneChecked;\n } else {\n tooth.checked = false;\n }\n\n if (allChecked) {\n tooth.checked = !tooth.checked;\n } else {\n tooth.checked = true;\n }\n }\n this.props.notifyToothSelection();\n }\n\n handleToothCheckboxClick(event) {\n if (event.target.className === \"ap-tooth-checkbox\") {\n this.props.notifyToothSelection();\n }\n }\n\n toothSelectionHandler(event) {\n const toothName = event.target.getAttribute(\"for\");\n if (toothName) {\n let checkbox = document.getElementById(toothName);\n checkbox.checked = !checkbox.checked;\n }\n this.props.notifyToothSelection();\n }\n\n render() {\n const { teeth } = this.props;\n return teeth ? (\n
    \n

    \n CBCT Area of Interest*\n
    \n \n Select teeth that need to be scanned\n \n

    \n
    this.handleToothCheckboxClick(event)}>\n {teeth.ul.map((tooth, index) => (\n \n ))}\n     \n {teeth.ur.map((tooth, index) => (\n \n ))}\n {teeth.ll.map((tooth, index) => (\n \n ))}\n     \n {teeth.lr.map((tooth, index) => (\n \n ))}\n

    \n Maxilla (upper jaw){\" \"}\n this.selectAllTeethInJaw(\"ul\", \"ur\")}\n >\n Select all\n \n

    \n
    \n
    \n {teeth.ur.map((tooth, index) => (\n \n ))}\n
    \n this.selectAllTeethInJaw(\"ur\")}\n >\n Select upper right quadrant\n \n
    \n
    \n {teeth.ul.map((tooth, index) => {\n return (\n \n );\n })}\n
    \n this.selectAllTeethInJaw(\"ul\")}\n >\n Select upper left quadrant\n \n
    \n
    \n

    \n Mandible (lower jaw){\" \"}\n this.selectAllTeethInJaw(\"ll\", \"lr\")}\n >\n Select all\n \n

    \n
    \n
    \n {teeth.lr.map((tooth, index) => (\n \n ))}\n
    \n this.selectAllTeethInJaw(\"lr\")}\n >\n Select lower right quadrant\n \n
    \n
    \n {teeth.ll.map((tooth, index) => (\n \n ))}\n
    \n this.selectAllTeethInJaw(\"ll\")}\n >\n Select lower left quadrant\n \n
    \n
    \n \n
    \n
    \n ) : null;\n }\n}\n\nexport default TeethSelector;\n","import React, { Component } from \"react\";\nimport SkullSVG from \"../SkullSVG\";\nimport { Row, Col, Button } from \"reactstrap\";\n\nclass SkullSelector extends Component {\n \n handlePartSelectHandler(clicked, e) {\n const el = e.target;\n this.buttonPainter(el)\n this.thisPainter(clicked.name);\n }\n\n handleSkullClickHandler(ev) {\n if(ev.target.classList.contains(\"cls-32\")) {\n // this is tooth go out\n return \n }\n ev.stopPropagation();\n ev.nativeEvent.stopImmediatePropagation();\n const buttonEl = document.getElementById(`${ev.currentTarget.id}-button`);\n this.buttonPainter(buttonEl)\n this.thisPainter(ev.currentTarget.id);\n }\n\n buttonPainter(buttonEl) {\n if(buttonEl) {\n buttonEl.classList.contains(\"btn-primary\")\n ? buttonEl.classList.remove(\"btn-primary\")\n : buttonEl.classList.add(\"btn-primary\");\n }\n }\n\n thisPainter(id) {\n const el = document.getElementById(id);\n if (el) {\n el.classList.contains(\"active\")\n ? el.classList.remove(\"active\")\n : el.classList.add(\"active\");\n el.checked = !el.checked;\n }\n\n this.props.notifySkullSelection();\n }\n\n render() { \n return (\n \n \n

    \n Maxillofacial/ENT Area of Interest*\n
    \n \n Select areas that need to be scanned\n \n

    \n
    \n {this.props.options.map(i => {\n return (\n i.name !== \"maxillofacial\" && (\n this.handlePartSelectHandler(i, e)}\n >\n {i.humanReadablePrice}\n \n )\n );\n })}\n
    \n \n \n \n \n
    \n );\n }\n}\n\nexport default SkullSelector;\n","import React from 'react';\nimport Select from 'react-select';\n \nconst groupStyles = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n};\nconst groupBadgeStyles = {\n backgroundColor: '#EBECF0',\n borderRadius: '2em',\n color: '#172B4D',\n display: 'inline-block',\n fontSize: 12,\n fontWeight: 'normal',\n lineHeight: '1',\n minWidth: 1,\n padding: '0.16666666666667em 0.5em',\n textAlign: 'center',\n};\n\nconst formatGroupLabel = data => (\n
    \n {data.label}\n {data.options.length}\n
    \n);\n\nconst ReactSelectGroupedAdapter = ({ input, options, ...rest }) => {\n return (\n ({ ...base, zIndex: 9999 }) }}\n menuPlacement=\"auto\"\n onChange={(...args) => {\n args[0] = args[0] ? args[0] : [];\n input.onChange(...args);\n }}\n options={options}\n formatGroupLabel={formatGroupLabel}\n />\n );\n };\n\n export default ReactSelectGroupedAdapter","import React from \"react\";\nimport Select from \"react-select\";\nimport { Field } from \"react-final-form\";\nimport { required } from \"../../../../modules/profile/helpers\";\nimport { orderBy } from \"lodash\";\n\nconst AutoCompleteAdapter = ({ input, meta, ...rest }) => {\n const selectProps = {\n styles: {\n menu: provided => ({ ...provided, zIndex: 9999 })\n },\n ...input,\n ...rest,\n onChange: e => {\n input.onChange(e);\n }\n };\n\n if (input.value.id) {\n selectProps.value = rest.options.find(option => option.value === input.value.id);\n }\n\n return (\n \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{(value, previous) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.handleLockUpdate(value, previous, values)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{this.renderCountdown(values, form.mutators.clearDates)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t*If no visit time is selected, 3Beam receptionists will\n\t\t\t\t\t\t\t\t\t\t\tcontact the patient to schedule.\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tPatient*\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tPossibility of pregnancy\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t{values.selectedPatient && (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t this.props.openCreatePatient()}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t+ Add new patient\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tform.mutators.typeToggler();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.switchScanPrices(SCAN_TYPES.CBCT);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCBCT Scan\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tform.mutators.typeToggler();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.switchScanPrices(SCAN_TYPES.TWO_D);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t2D Imaging\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tform.mutators.typeToggler();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.switchScanPrices(SCAN_TYPES.SKULL);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tMaxillofacial/ENT\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tPatient comes with a radiographic template\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{this.isCBCT && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.notifyToothSelection(values)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tteeth={teeth}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{this.isSkull && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tInclude TMJs\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t{(this.isCBCT || this.isSkull) && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{this.isTwoD && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!i.name.startsWith(\"e_epr\") &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!i.name.startsWith(\"e_cd\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t{this.renderRadiologistSelect(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tform.mutators.clearSameDayCheckBox\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*The patient consents under the referral process\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto have an x-ray exposure and understands what\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tit involves. I have provided the patient with\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tadequate information relating to the benefits\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tand risks associated with the radiation dose.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFor children under the age of 16 the parent or\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tguardian agrees. I have read and agree to abide by{\" \"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{companyInfo.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tStandard Terms and Conditions\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tThis patient is subject to safeguarding.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t{!this.canAffordBooking(values.selectedPayment) && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tPlease attach your credit card or select payment option\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{({ values }) => this.displayPrice(values)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\t\t\t\t\t\t{(this.state.existCBCT || !this.isCBCT) && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({ showVoucherForm: true })\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleInputChange={(e) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setState({ voucherCode: e.target.value })\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t\t\t{!this.state.existCBCT && this.isCBCT && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tYour first CBCT appointment is free\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t this.createBooking(values)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={!this.canBook(invalid, values)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tBook\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport default BookScan;\n","import React, { Component, Fragment } from \"react\";\nimport FullCalendar from \"@fullcalendar/react\";\nimport timeGridPlugin from \"@fullcalendar/timegrid\";\nimport interactionPlugin, { Draggable } from \"@fullcalendar/interaction\";\nimport Moment from \"moment\";\nimport _ from \"lodash\";\nimport BookingsWithoutTime from \"../BookingWithoutTime\";\nimport BookingDetailsShort from \"../BookingDetailsShort\";\nimport moment from \"moment\";\nimport {\n backendDateFormat,\n bookingCreationFormat,\n recheckTimer,\n slotDuration,\n} from \"../../../../constants/global.constants\";\nimport { businessHours, calendarConfig, slotLabelFormat } from \"./config\";\nimport \"./styles.scss\";\nimport CancelBookingModal from \"../CancelBookingModal\";\nimport BookScan from \"../BookScan\";\nimport CreateEditPatient from \"../../../patient/components/CreateEditPatient\";\nimport VisitDetailsPopUp from \"../../../visit-details/components/VisitDetailsPopUp\";\nimport axios from \"../../../../axios-client\";\nimport { toast } from \"react-toastify\";\n\nclass DashboardContainer extends Component {\n calendarComponentRef = React.createRef();\n\n state = {\n patientToEdit: null,\n editPatientPopUp: false,\n createPatientPopUp: false,\n showBookingPopup: false,\n patientInfo: null,\n showBookingPopup: false,\n boolTrue: true,\n calendarWeekends: true,\n calendarEvents: [\n // initial event data\n { title: \"Event Now\", start: new Date() },\n ],\n patientDetails: false,\n bookingDetailsPopupPosition: { x: 0, y: 0 },\n visitDetails: false,\n selectedDate: null,\n showModal: false,\n dateTitle: null,\n viewInfo: {},\n booking: null,\n loading: false,\n blockedDates: [],\n selectedPatientId: null,\n };\n\n handleLoading = (arg) => {\n this.setState({ loading: arg });\n };\n\n handlePatientCreated = (newPatientId) => {\n this.setState({ selectedPatientId: newPatientId });\n };\n\n handleEventClick = (arg) => {\n if (\n !arg.el.classList.contains(\"forbidden\") &&\n !arg.el.classList.contains(\"blocked\")\n ) {\n this.setState({ visitDetails: arg });\n this.setState({ showBookingDetailsShort: true });\n this.setState({\n bookingDetailsPopupPosition: {\n x: arg.jsEvent.pageX,\n y: arg.jsEvent.pageY,\n },\n });\n }\n };\n\n handleMouseMove(event, props) {\n // console.log(event);\n if (!event.target) {\n return false;\n }\n const tooltip = document.querySelector(\"#custom-tooltip\");\n const fcContainer = document.querySelector(\".fc-slats\");\n\n const isOnForbiddenSlot = event.target.classList.contains(\"forbidden\");\n const isOnBlockedSlot = event.target.classList.contains(\"blocked\");\n const isOnActiveSlot = event.target.classList.contains(\"fc-widget-content\");\n const isOnEvent = event.target.classList.contains(\"fc-event\");\n const isOutsideGrid = !fcContainer.contains(event.target);\n\n tooltip.style.top = `${event.clientY + 20}px`;\n tooltip.style.left = `${event.clientX + 20}px`;\n\n if (isOnForbiddenSlot || (isOnBlockedSlot && !props.isUserReceptionist)) {\n tooltip.innerHTML = \"Not available\";\n tooltip.style.backgroundColor = 'rgb(243, 134, 134)';\n tooltip.style.display = \"block\";\n } else if (isOnBlockedSlot && props.isUserReceptionist) {\n tooltip.innerHTML = \"Click to activate the slot\";\n tooltip.style.display = \"block\";\n } else if (isOnActiveSlot && props.isUserDentist) {\n tooltip.innerHTML = \"Click to create new booking\";\n tooltip.style.display = \"block\";\n tooltip.style.backgroundColor = '#4dbd74';\n } else if (isOnActiveSlot && props.isUserReceptionist) {\n tooltip.innerHTML = \"Click to block the slot\";\n tooltip.style.backgroundColor = '#4dbd74';\n tooltip.style.display = \"block\";\n } else if (isOnEvent || isOutsideGrid) {\n tooltip.style.display = \"none\";\n }\n }\n\n handleDateClick = async (arg) => {\n // If user is Receptionist\n if (\n !arg.jsEvent.target.classList.contains(\"forbidden\") &&\n this.props.isUserReceptionist\n ) {\n const req = await axios.post(\"/bookings/addOrDeleteOccupiedDate\", {\n appointmentStartTime: Moment(arg.dateStr).format(bookingCreationFormat),\n appointmentEndTime: Moment(arg.dateStr)\n .add(15, \"minutes\")\n .format(bookingCreationFormat),\n });\n if (req.status === 200) {\n toast.success(req.data, {\n position: toast.POSITION.BOTTOM_RIGHT,\n });\n this.blockedDates();\n } else {\n toast.error(req.data, {\n position: toast.POSITION.BOTTOM_RIGHT,\n });\n }\n }\n\n // If user is Dentist\n if (arg.jsEvent.target.classList.contains(\"blocked\")) {\n return false;\n }\n if (\n !arg.jsEvent.target.classList.contains(\"forbidden\") &&\n this.canBookScan()\n ) {\n this.setState({\n selectedDate: arg.date,\n showBookingPopup: true,\n });\n }\n };\n\n componentDidMount() {\n let draggableEl = document.getElementsByClassName(\"ap-clients-list\")[0];\n if (draggableEl) {\n new Draggable(draggableEl, {\n itemSelector: \".ap-client-item\",\n eventData: function (eventEl) {\n let title = eventEl.getAttribute(\"title\");\n let id = eventEl.getAttribute(\"data\");\n let tel = eventEl.getAttribute(\"tel\");\n let doctor = eventEl.getAttribute(\"doctor\");\n let comment = eventEl.getAttribute(\"comment\");\n return {\n title: title,\n id: id,\n tel: tel,\n doctor: doctor,\n comment: comment,\n };\n },\n });\n }\n this.getDate();\n setTimeout(() => this.refreshData(), 500);\n this.timerID = setInterval(() => this.refreshData(), recheckTimer);\n document\n .getElementsByClassName(\"fc fc-ltr fc-unthemed\")[0]\n .addEventListener(\"mousemove\", (e) =>\n this.handleMouseMove(e, this.props)\n );\n document\n .getElementsByClassName(\"container-fluid\")[0]\n .addEventListener(\"mouseover\", (e) => {\n let tooltip = document.getElementById(\"custom-tooltip\");\n if (tooltip.style.display == \"block\") {\n tooltip.style.display = \"none\";\n }\n });\n }\n\n componentWillUnmount() {\n clearInterval(this.timerID);\n document\n .getElementsByClassName(\"fc fc-ltr fc-unthemed\")[0]\n .removeEventListener(\"mousemove\", (e) =>\n this.handleMouseMove(e, this.props)\n );\n }\n\n refreshData() {\n let activeStart =\n this.calendarComponentRef.current.getApi().view.activeStart,\n activeEnd = this.calendarComponentRef.current.getApi().view.activeEnd;\n const {\n getAllBookingsWithoutDate,\n getBookingsByDateRange,\n fetchOccupiedSlotsByDateRange,\n fetchTemporallyOccupiedSlots,\n } = this.props;\n\n getAllBookingsWithoutDate();\n fetchTemporallyOccupiedSlots();\n\n if (activeStart && activeEnd) {\n getBookingsByDateRange(\n Moment(activeStart).format(backendDateFormat),\n Moment(activeEnd).format(backendDateFormat)\n );\n\n fetchOccupiedSlotsByDateRange(\n Moment(activeStart).format(backendDateFormat),\n Moment(activeEnd).format(backendDateFormat)\n );\n }\n\n // if (this.calendarComponentRef && this.calendarComponentRef.current) {\n // const calendarApi = this.calendarComponentRef.current.getApi();\n\n // setTimeout(() => {\n // calendarApi.refetchEvents();\n // }, 500);\n // }\n }\n\n async handleBookingUpdate(bookingDetails) {\n const id = bookingDetails.oldEvent.id;\n const { start, end } = bookingDetails.event;\n await this.props.updateBooking({\n id,\n appointmentStartTime: Moment(start).format(bookingCreationFormat),\n appointmentEndTime: Moment(end).format(bookingCreationFormat),\n });\n this.refreshData();\n }\n\n async handleDrop(dropInfo) {\n const id = dropInfo.draggedEl.id;\n const { bookingsWithoutDate } = this.props;\n const draggedItem = bookingsWithoutDate.find(\n (item) => item.id.toString() === id\n );\n const dateObj = moment(dropInfo.event.start);\n\n await this.props.assignVisitTime({\n id: draggedItem.id,\n appointmentStartTime: dateObj.local().format(bookingCreationFormat),\n appointmentEndTime: dateObj\n .local()\n .add(Number(slotDuration), \"minutes\")\n .format(bookingCreationFormat),\n });\n const calendarApi = this.calendarComponentRef.current.getApi();\n calendarApi.refetchEvents();\n dropInfo.event.remove();\n this.refreshData();\n }\n\n goNextWeek() {\n let calendarApi = this.calendarComponentRef.current.getApi();\n calendarApi.next();\n this.getDate();\n this.refreshData();\n this.blockedDates();\n }\n\n goPrevWeek() {\n let calendarApi = this.calendarComponentRef.current.getApi();\n calendarApi.prev();\n this.getDate();\n this.refreshData();\n this.blockedDates();\n }\n\n goToday() {\n let calendarApi = this.calendarComponentRef.current.getApi();\n calendarApi.today();\n this.getDate();\n this.refreshData();\n }\n\n async blockedDates() {\n let { currentDate } = this.calendarComponentRef.current.calendar.state;\n\n let fromDate = Moment(currentDate).format(\"Y-MM-DD\");\n let toDate = Moment(currentDate).add(6, \"days\").format(\"Y-MM-DD\");\n let list = await this.props.getBlockedDatesList(fromDate, toDate);\n this.setState({\n ...this.state,\n blockedDates: list,\n });\n }\n\n getDate() {\n this.blockedDates();\n let current = this.calendarComponentRef.current;\n if (current) {\n let calendarApi = current.getApi().view;\n this.setState({ dateTitle: calendarApi.title });\n }\n }\n\n canBookScanOrUpdateBooking() {\n return this.props.isUserDentist || this.props.isUserReceptionist;\n }\n\n canBookScan() {\n return this.props.isUserDentist;\n }\n\n renderHeaderDate(date) {\n let currentDateObj = Moment();\n let dateObj = Moment(date);\n let highlightedClass = \"\";\n if (currentDateObj.format(\"DD MM YYYY\") === dateObj.format(\"DD MM YYYY\")) {\n highlightedClass = `className=\"highlighted\"`;\n }\n\n return `\n \n ${dateObj.format(\"ddd\")}\n \n \n ${dateObj.format(\"D\")}\n \n `;\n }\n\n markAsVisited = async (bookingId) => {\n await this.props.updateVisit(bookingId);\n this.setState({ showBookingDetailsShort: false });\n this.setState({ loading: false });\n this.refreshData();\n };\n\n markAsUnvisited = async (bookingId) => {\n await this.props.updateVisitUnvisited(bookingId);\n this.setState({ showBookingDetailsShort: false });\n this.setState({ loading: false });\n this.refreshData();\n };\n\n canStartDrag = (_, e) => {\n const id = +e.id;\n return !this.props.bookings.filter((i) => i.visited && i.id === id).length;\n };\n\n generateDisabledSlots(info) {\n const startDate = Moment(info.start);\n const endDate = Moment(info.end);\n // const sunday = endDate.subtract(1, \"days\").format(\"YYYY-MM-DDTHH:mm:ss\");\n const saturday = endDate.subtract(1, \"days\").format(\"YYYY-MM-DDTHH:mm:ss\");\n\n const disabledSlotConfig = {\n rendering: \"background\",\n backgroundColor: \"#d1dbe1\",\n editable: false,\n overlap: false,\n classNames: [\"forbidden\"],\n };\n\n const blockedSlotConfig = {\n rendering: \"background\",\n backgroundColor: \"rgb(243, 134, 134)\",\n editable: false,\n overlap: false,\n classNames: [\"blocked\"],\n };\n\n const disabledSlotsArray = [\n // {\n // ...disabledSlotConfig,\n // allDay: true,\n // start: sunday\n // },\n {\n ...disabledSlotConfig,\n allDay: true,\n start: saturday,\n },\n ];\n\n for (let i = 0; i < 6; i++) {\n startDate.add(!i ? 0 : 1, \"days\");\n\n if (i === 5) {\n disabledSlotsArray.push({\n ...disabledSlotConfig,\n start: startDate.format(\"YYYY-MM-DDT\") + \"08:00:00\",\n end: startDate.format(\"YYYY-MM-DDT\") + \"09:00:00\",\n });\n disabledSlotsArray.push({\n ...disabledSlotConfig,\n start: startDate.format(\"YYYY-MM-DDT\") + \"16:00:00\",\n end: startDate.format(\"YYYY-MM-DDT\") + \"20:00:00\",\n });\n } else {\n disabledSlotsArray.push({\n ...disabledSlotConfig,\n start: startDate.format(\"YYYY-MM-DDT\") + \"08:00:00\",\n end: startDate.format(\"YYYY-MM-DDT\") + \"10:00:00\",\n });\n\n disabledSlotsArray.push({\n ...disabledSlotConfig,\n start: startDate.format(\"YYYY-MM-DDT\") + \"17:00:00\",\n end: startDate.format(\"YYYY-MM-DDT\") + \"20:00:00\",\n });\n }\n }\n\n for (let occupiedSlot of [\n // ...this.props.occupiedSlots,\n ...this.props.temporallyOccupiedSlots,\n ...this.props.occupiedSlotsTimeRange,\n ]) {\n disabledSlotsArray.push({\n ...disabledSlotConfig,\n end: occupiedSlot.appointmentEndTime,\n start: occupiedSlot.appointmentStartTime,\n });\n }\n\n for (let blockedSlot of [...this.state.blockedDates]) {\n disabledSlotsArray.push({\n ...blockedSlotConfig,\n end: blockedSlot.appointmentEndTime,\n start: blockedSlot.appointmentStartTime,\n });\n }\n\n return disabledSlotsArray;\n }\n\n getEvents(info, successCallback) {\n const disabledSlots = this.generateDisabledSlots(info);\n return successCallback(disabledSlots.concat(this.props.bookings));\n }\n\n handleEventRender(calEvent, elem, view) {\n if (calEvent.el) {\n if (\n !calEvent.event.end ||\n (calEvent.event.end && Moment(calEvent.event.end).isAfter(Moment()))\n ) {\n calEvent.el.classList.add(\"mod-feature\");\n }\n if (Moment().diff(calEvent.event.end, \"minutes\") > 0) {\n calEvent.el.classList.add(\"mod-passed\");\n if (!calEvent.event.extendedProps.visited) {\n calEvent.el.classList.add(\"mod-not-visited\");\n } else {\n calEvent.el.classList.add(\"mod-visited\");\n }\n }\n if (window.activeEvent) {\n if (window.activeEvent.id === calEvent.event.id) {\n calEvent.el.classList.add(\"mod-active\");\n }\n }\n if (calEvent.el.isLocked) {\n calEvent.el.classList.add(\"mod-locked\");\n }\n }\n }\n\n cancelEvent(patientInfo) {\n this.setState({ patientInfo: patientInfo });\n }\n\n addBookingToDraft = async (info) => {\n const bookingListWithoutDate = document.getElementById(\"external-events\");\n const { x, y, width, height } =\n bookingListWithoutDate.getBoundingClientRect();\n const droppedClientX = info.jsEvent.clientX;\n const droppedClientY = info.jsEvent.clientY;\n if (\n droppedClientX >= x &&\n droppedClientX <= x + width &&\n droppedClientY >= y &&\n droppedClientY <= y + height\n ) {\n const id = info.event.id;\n await this.props.unAssignVisitTime(id);\n this.refreshData();\n }\n };\n\n render() {\n return (\n \n \n\n
    \n
    \n
    \n
    \n
    \n

    Bookings

    \n
    \n
    \n

    \n {this.state.dateTitle}\n

    \n
    \n
    \n \n \n \n \n \n \n \n Today\n \n {this.canBookScan() && (\n this.setState({ showBookingPopup: true })}\n >\n Book scan\n \n )}\n
    \n
    \n this.renderHeaderDate(date)}\n nowIndicator={this.state.boolTrue}\n plugins={[timeGridPlugin, interactionPlugin]}\n allDaySlot={!this.state.boolTrue}\n events={(info, successCallback, failureCallback) =>\n this.getEvents(info, successCallback, failureCallback)\n }\n eventAllow={this.canStartDrag.bind(this)}\n editable={this.canBookScanOrUpdateBooking()}\n eventReceive={(dropInfo) => this.handleDrop(dropInfo)}\n droppable={this.state.boolTrue}\n eventDurationEditable={!this.state.boolTrue}\n {...calendarConfig}\n slotLabelFormat={slotLabelFormat}\n eventOverlap={false}\n themeSystem=\"standard\"\n eventClick={this.handleEventClick}\n eventConstraint={businessHours}\n dateClick={this.handleDateClick}\n ref={this.calendarComponentRef}\n eventRender={this.handleEventRender.bind(this)}\n eventDrop={this.handleBookingUpdate.bind(this)}\n eventDragStop={(info) => this.addBookingToDraft(info)}\n />\n
    \n
    \n {!this.props.isUserRadiographer && (\n {\n this.props.onHandleBookingWithoutDateClick(data);\n this.setState({ booking: data });\n }}\n />\n )}\n
    \n\n
    \n
    \n
    \n
    \n has been deleted.\n
    \n
    \n Undo\n
    \n
    \n
    \n
    \n {this.state.showBookingDetailsShort && (\n {\n this.cancelEvent(patientInfo);\n }}\n onClose={() => this.setState({ showBookingDetailsShort: false })}\n showVisitDetails={() => {\n this.props.onViewBookingDetailsClicked(\n this.state.visitDetails.event\n );\n this.setState({\n showBookingDetailsShort: false,\n booking: this.state.visitDetails.event,\n });\n }}\n markAsVisited={() =>\n this.markAsVisited(this.state.visitDetails.event.id)\n }\n markAsUnvisited={() =>\n this.markAsUnvisited(this.state.visitDetails.event.id)\n }\n isUserReceptionist={this.props.isUserReceptionist}\n isUserDentist={this.props.isUserDentist}\n loading={this.state.loading}\n handleLoading={this.handleLoading}\n />\n )}\n {this.state.patientInfo && (\n {\n this.setState({ patientInfo: null, booking: null });\n }}\n deleteBooking={async (id) => {\n await this.props.deleteBooking(id);\n this.refreshData();\n }}\n />\n )}\n {this.state.showBookingPopup && (\n {\n this.setState({ createPatientPopUp: true });\n }}\n onClose={() => {\n this.setState({ showBookingPopup: false, selectedDate: null, selectedPatientId: null });\n }}\n />\n )}\n {this.state.createPatientPopUp && (\n {\n this.setState({ createPatientPopUp: false });\n }}\n createPatient={this.props.createPatient}\n onPatientCreated={this.handlePatientCreated}\n />\n )}\n {this.state.booking && (\n {\n await this.props.updateVisit(e);\n this.setState({ booking: null });\n this.refreshData();\n }}\n updateVisitUnvisited={async (e) => {\n await this.props.updateVisitUnvisited(e);\n this.setState({ booking: null });\n this.refreshData();\n }}\n updateBooking={async (patient) => {\n await this.props.updateBooking(patient);\n this.refreshData();\n }}\n isUserRadiologist={this.props.isUserRadiologist}\n isUserDentist={this.props.isUserDentist}\n isUserReceptionist={this.props.isUserReceptionist}\n isUserRadiographer={this.props.isUserRadiographer}\n type=\"booking\"\n onClose={() => this.setState({ booking: null })}\n cancelBooking={(data) => {\n this.setState({ patientInfo: data });\n }}\n onPatientEdit={(patientToEdit) => {\n this.setState({\n editPatientPopUp: true,\n patientToEdit: patientToEdit,\n });\n }}\n addComment={this.props.addComment}\n />\n )}\n {this.state.editPatientPopUp && (\n {\n this.setState({ editPatientPopUp: false });\n }}\n mode=\"edit\"\n patient={this.state.patientToEdit}\n editPatient={async (patientToEdit) => {\n await this.props.handlePatientEdit(patientToEdit);\n this.refreshData();\n }}\n />\n )}\n
    \n );\n }\n}\n\nexport default DashboardContainer;\n","import { createSelector } from \"reselect\";\nimport { orderBy } from \"lodash\";\n\nconst bookingsSelector = ({ bookings }) => bookings;\n\nexport const getBookings = createSelector(\n\tbookingsSelector,\n\t({ bookingsReducer }) => {\n\t\treturn bookingsReducer.bookings;\n\t}\n);\n\nexport const getBookingInfo = createSelector(\n\tbookingsSelector,\n\t({ bookingsReducer }) => {\n\t\treturn bookingsReducer.bookingInfo;\n\t}\n);\n\nexport const getBookingsWithoutDate = createSelector(\n\tbookingsSelector,\n\t({ bookingsReducer }) => {\n\t\treturn orderBy(bookingsReducer.bookingsWithoutDate, [\"id\"], [\"desc\"]);\n\t}\n);\n\nexport const getSelectedPaymentType = createSelector(\n\tbookingsSelector,\n\t({ bookingsReducer }) => {\n\t\treturn bookingsReducer.selectedPaymentType;\n\t}\n);\n\nexport const getScanPrices = createSelector(\n\tbookingsSelector,\n\t({ pricesReducer }) => {\n\t\treturn pricesReducer.scanPrices;\n\t}\n);\n\nexport const getScanPricesStatic = createSelector(\n\tbookingsSelector,\n\t({ pricesReducer }) => {\n\t\treturn pricesReducer.scanPricesStatic;\n\t}\n);\n\nexport const getScanPricesForPayment = createSelector(\n\tbookingsSelector,\n\t({ pricesReducer }) => {\n\t\treturn pricesReducer.scanPricesForPayment;\n\t}\n);\n\nexport const getOccupiedSlotsAll = createSelector(\n\tbookingsSelector,\n\t({ occupiedSlotsReducer }) => {\n\t\treturn occupiedSlotsReducer.occupiedSlots;\n\t}\n);\n\nexport const getOccupiedSlotsTimeRange = createSelector(\n\tbookingsSelector,\n\t({ occupiedSlotsReducer }) => {\n\t\treturn occupiedSlotsReducer.occupiedSlotsDateRange;\n\t}\n);\n\nexport const getTemporallyOccupiedSlots = createSelector(\n\tbookingsSelector,\n\t({ occupiedSlotsReducer }) => {\n\t\treturn occupiedSlotsReducer.temporallyOccupiedSlots;\n\t}\n);\n\n//NEW\nexport const getScanPricesStaticSaving = createSelector(\n\tbookingsSelector,\n\t({ pricesReducer }) => {\n\t\treturn pricesReducer.scanPricesStaticSaving;\n\t}\n);\n\n//NEW END\n\nexport const getBlockedDatesList = createSelector(\n\tbookingsSelector,\n\t({ occupiedSlotsReducer }) => {\n\t\treturn occupiedSlotsReducer.blockedSlotsDateRange;\n\t}\n);","import * as components from './components'\nimport * as selectors from './selectors'\nimport * as actions from './actions'\n\nexport default {\n components,\n selectors,\n actions\n}\n","// fetchers for routines\nimport { createThunkRoutine } from \"redux-thunk-routine\";\n\nexport const FetchDataRoutine = createThunkRoutine(\"dentists/FETCH_DATA\");\nexport const SET_DENTISTS_LIST = \"dentists/SET_DENTISTS_LIST\";\nexport const SET_DENTIST_FILTERS = \"dentists/SET_DENTISTS_FILTERS\";\nexport const SET_ALL_DENTIST_FILTERS = \"dentists/SET_ALL_DENTIST_FILTERS\";\n"],"sourceRoot":""}